{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.ggsM7wLd/b1/linuxcnc_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.ggsM7wLd/b2/linuxcnc_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n- 98ed73c81b2d1dbf83cf875132b3bdda 26378480 misc optional linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n- 9cfead5a69c7867757eeb8e549a9d179 26833980 misc optional linuxcnc-doc-en_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n- cccf5ab7436b5cbc4538c9445297b736 26046960 misc optional linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n- cb28cc95e0ae105c67c583f5f2c1d6b9 25961296 misc optional linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n- fd148a09b1a81d891a09c0b0581933fd 26003584 misc optional linuxcnc-doc-zh-cn_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n+ eafa8c9244789941ffd919dca7cf51c5 26374948 misc optional linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n+ 32c2bede73d2e88ba351297fd9afe569 26833968 misc optional linuxcnc-doc-en_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n+ acbae69b3f483514c25d9a1c4f175371 26047500 misc optional linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n+ 96e18d0445c2c0ba9a737333e4511023 25960012 misc optional linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n+ 57159515f4da1012403a4f50c0e33a42 26003068 misc optional linuxcnc-doc-zh-cn_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb\n 1f29d4e4ec81ac2e2b098d9fb094f72f 11203892 debug optional linuxcnc-uspace-dbgsym_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb\n 7ffb1417c96a1a222a8a78c8e18a93d6 251204 devel optional linuxcnc-uspace-dev_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb\n- 2767404450985dc97a92a0de333bb5e3 21589024 misc optional linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb\n+ 10992b9c223d25ddfb9340df5c24248e 21587092 misc optional linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb\n"}, {"source1": "linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "source2": "linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary\n -rw-r--r-- 0 0 0 1096 2023-02-10 04:33:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 26377192 2023-02-10 04:33:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 26373660 2023-02-10 04:33:18.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: linuxcnc-doc-de\n Source: linuxcnc\n Version: 2.9.0~pre1+git20230208.f1270d6ed7-1\n Architecture: all\n Maintainer: LinuxCNC Developers \n-Installed-Size: 27143\n+Installed-Size: 27141\n Recommends: xdg-utils\n Suggests: pdf-viewer\n Provides: linuxcnc-doc\n Section: misc\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://linuxcnc.org/\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -4,16 +4,16 @@\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 340 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_de.desktop\n -rw-r--r-- 0 root (0) root (0) 367 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_de.desktop\n -rw-r--r-- 0 root (0) root (0) 381 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_de.desktop\n -rw-r--r-- 0 root (0) root (0) 370 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_de.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 854990 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf\n--rw-r--r-- 0 root (0) root (0) 26186714 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf\n+-rw-r--r-- 0 root (0) root (0) 854986 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf\n+-rw-r--r-- 0 root (0) root (0) 26184293 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf\n -rw-r--r-- 0 root (0) root (0) 513408 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_de.pdf\n -rw-r--r-- 0 root (0) root (0) 155414 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_de.pdf\n -rw-r--r-- 0 root (0) root (0) 14868 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_de.html\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-de/\n -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-de/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-de/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/\n"}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Entwickler-Handbuch\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Inhaltsverzeichnis\n 1 Einf\u00fchrung\n \n 1\n@@ -117,15 +117,15 @@\n \n 16\n \n 3.8.3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.8.3.2 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n@@ -279,15 +279,15 @@\n \n 21\n \n 3.8.16.1Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 3.8.16.2Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n@@ -449,15 +449,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n 3.21.3Prozesslinie\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 3.21.4Kommentare zur Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 30\n \n@@ -621,15 +621,15 @@\n \n 43\n \n 4.14Andere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 43\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vi\n \n 5 Quellcode-Stil\n \n 45\n \n@@ -779,15 +779,15 @@\n \n 57\n \n 8.4.1 LinuxCNC offizielles Git Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 57\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 8.4.2 Verwendung von Git im LinuxCNC-Projekt . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 58\n \n@@ -876,15 +876,15 @@\n \n 11 Index\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 74\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 75\n \n Kapitel 1\n \n Einf\u00fchrung\n \n@@ -907,15 +907,15 @@\n LINUX\u00ae ist das eingetragene Warenzeichen von Linus Torvalds in den USA und anderen L\u00e4ndern.\n Die eingetragene Marke Linux\u00ae wird im Rahmen einer Unterlizenz von LMI, dem exklusiven Lizenznehmer von Linus Torvalds, dem Eigent\u00fcmer der Marke auf weltweiter Basis, verwendet.\n Das LinuxCNC-Projekt ist nicht mit Debian\u00ae verbunden. Debian_ ist ein eingetragenes Warenzeichen\n im Besitz von Software in the Public Interest, Inc.\n Das LinuxCNC-Projekt ist nicht mit UBUNTU\u00ae verbunden. UBUNTU ist eine eingetragene Marke im\n Besitz von Canonical Limited.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 75\n \n Kapitel 2\n \n HAL Allgemeine Referenz\n 2.1 HAL-Entit\u00e4tsnamen\n@@ -943,15 +943,15 @@\n und Dingen, die sich einfach entwickelt haben. Infolgedessen gibt es viele Inkonsistenzen. Dieser\n Abschnitt versucht, dieses Problem zu l\u00f6sen, indem er einige Konventionen definiert, aber es wird\n wahrscheinlich noch eine Weile dauern, bis alle Module so konvertiert sind, dass sie ihnen folgen.\n 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\n mehrere Funktionsbl\u00f6cke, jeder Block kann mehrere Kan\u00e4le haben, und jeder Kanal hat einen oder\n mehrere Pins. Dies f\u00fchrt zu einer Struktur, die einem Verzeichnisbaum \u00e4hnelt. Auch wenn halcmd die\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 75\n \n Baumstruktur nicht erkennt, kann es durch die richtige Wahl der Namenskonventionen verwandte Elemente zusammenfassen (da es die Namen sortiert). Dar\u00fcber hinaus k\u00f6nnen Werkzeuge auf h\u00f6herer\n Ebene so gestaltet werden, dass sie eine solche Struktur erkennen, wenn die Namen die notwendigen\n Informationen liefern. Um dies zu erreichen, sollten alle HAL-Komponenten diese Regeln befolgen:\n \u2022 Punkte (\u201d.\u201d) trennen die einzelnen Ebenen der Hierarchie. Dies ist vergleichbar mit dem Schr\u00e4gstrich (\u201d/\u201d) in einem Dateinamen.\n@@ -986,15 +986,15 @@\n zum Beispiel pid.0.Pgain anstelle von pid.0.p-gain.\n 2 Einige Hardwares verwenden Jumper oder andere Ger\u00e4te, um eine spezifische Identifikation f\u00fcr jedes Ger\u00e4t zu definieren.\n Im Idealfall bietet der Treiber dem Benutzer die M\u00f6glichkeit zu sagen: Ger\u00e4tenummer 0 ist spezifisch f\u00fcr das Ger\u00e4t mit der ID\n XXX, seine Untergruppen tragen alle eine Nummer, die mit 0 beginnt. Zurzeit verwenden einige Treiber jedoch die ID direkt\n als Peripherienummer. Das bedeutet, dass es m\u00f6glich ist, ein Ger\u00e4t mit der Nummer 2 zu haben, ohne eines mit der Nummer\n 0. Dies ist ein Fehler, der in Version 2.1 verschwinden sollte.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 75\n \n (engl. channel-number, kurz chan-num)\n Praktisch jedes E/A-Ger\u00e4t verf\u00fcgt \u00fcber mehrere Kan\u00e4le, und die Kanalnummer identifiziert einen dieser Kan\u00e4le. Wie die Ger\u00e4tenummern beginnen auch die Kanalnummern bei Null und erh\u00f6hen sich. Fu\u00dfnote:[Eine Ausnahme von der Regel \u201dKanalnummern beginnen bei Null\u201d ist der\n Parallelport. Seine HAL-Pins sind mit der entsprechenden Pin-Nummer auf dem DB-25-Stecker\n nummeriert. Dies ist praktisch f\u00fcr die Verdrahtung, aber inkonsistent mit anderen Treibern. Es\n@@ -1028,15 +1028,15 @@\n (engl. device-name)\n Das gleiche wie f\u00fcr Pins und Parameter.\n (engl. device-num)\n Das spezifische Ger\u00e4t, auf das die Funktion zugreift.\n (engl. io-type)\n Optional. Eine Funktion kann auf alle E/A auf einer Karte zugreifen oder nur auf einen bestimmten Typ. So kann es beispielsweise unabh\u00e4ngige Funktionen zum Lesen von Encoderz\u00e4hlern und\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 75\n \n zum Lesen von digitalen E/A geben. F\u00fcr solche unabh\u00e4ngigen Funktionen gibt das Feld die Art der E/A an, auf die sie zugreifen. Wenn eine einzige Funktion alle von der Karte\n bereitgestellten E/A liest, wird nicht verwendet. 3\n \n Optional. Wird nur verwendet, wenn die E/A in Gruppen unterteilt ist und verschiedene\n@@ -1052,15 +1052,15 @@\n Schreibt alle Ausg\u00e4nge (Schrittgeneratoren, PWM, DACs und Digital) auf die erste Pico Systems\n ppmc-Karte.\n \n 3 Hinweis f\u00fcr Treiberprogrammierer: Implementieren Sie KEINE separaten Funktionen f\u00fcr verschiedene E/A-Typen, es\n sei denn, sie sind unterbrechbar und k\u00f6nnen in unabh\u00e4ngigen Threads arbeiten. Wenn die Unterbrechung eines EncoderLesevorgangs, das Lesen digitaler Eing\u00e4nge und die anschlie\u00dfende Wiederaufnahme des Encoder-Lesevorgangs zu Problemen\n f\u00fchren, dann implementieren Sie eine einzige Funktion, die alles erledigt.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 75\n \n Kapitel 3\n \n Code Anmerkungen\n 3.1 Zielgruppe\n@@ -1085,15 +1085,15 @@\n 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\n Freiheitsgraden der Maschine zu unterscheiden. In diesem Dokument werden letztere als Gelenke und nicht als Achsen bezeichnet. Die grafischen Benutzeroberfl\u00e4chen und einige andere Teile\n des Quellcodes folgen dieser Unterscheidung vielleicht nicht immer, aber die Interna des \u201dMotion\n Controllers\u201d schon.\n \u2022 GELENK (engl. JOINT)- Ein Gelenk ist eines der beweglichen Teile der Maschine. Gelenke unterscheiden sich von Achsen, obwohl die beiden Begriffe manchmal (f\u00e4lschlicherweise) f\u00fcr dieselbe\n 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\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 75\n \n Tisch einer Bridgeport-Fr\u00e4se alles Gelenke. Die Schulter, der Ellbogen und das Handgelenk eines\n Roboterarms sind Gelenke, ebenso wie die Linearaktuatoren eines Hexapods. Jedem Gelenk ist ein\n Motor oder Aktuator zugeordnet. Gelenke entsprechen nicht unbedingt den X-, Y- und Z-Achsen,\n 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\n@@ -1124,19 +1124,19 @@\n gedacht.\n \n 3.4 Architektur\u00fcbersicht\n Die LinuxCNC-Architektur besteht aus vier Komponenten: einem Motion-Controller (EMCMOT), einem diskreten IO-Controller (EMCIO), einem Task-Executor, der diese koordiniert (EMCTASK) und\n 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\n (wo findet man ben\u00f6tigte Daten, wie kann man Dinge einfach erweitern/ver\u00e4ndern, usw.).\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 75\n \n 3.4.1 LinuxCNC-Softwarearchitektur\n Auf der gr\u00f6bsten Ebene ist LinuxCNC eine Hierarchie von drei Controllern: der Task-Level-Befehlshandler\n 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\u00fcr Spindel, K\u00fchlmittel- und Hilfs-Subsysteme (z. B. Notaus, Schmierung). Der Task-Controller koordiniert die\n Aktionen der Bewegungssteuerung und der diskreten E/A-Steuerung. Deren Aktionen werden in konventionellen numerischen Steuerungs- \u201dG- und M-Code\u201d Programmen programmiert, die von der Aufgabensteuerung in NML-Nachrichten interpretiert und zu den entsprechenden Zeitpunkten entweder\n@@ -1163,19 +1163,19 @@\n durch\n LinuxCNC wird durch das linuxcnc Skript gestartet, welches eine Konfigurations-.ini-Datei liest und\n alle ben\u00f6tigten Prozesse startet. F\u00fcr die Echtzeit-Bewegungssteuerung l\u00e4dt das Skript zun\u00e4chst die\n Standard-Module tpmod und homemod und l\u00e4dt dann die Kinematik- und Bewegungsmodule entsprechend den Einstellungen in halfiles, die in der .ini-Datei angegeben sind.\n Benutzerdefinierte Referenzfahrt- oder Flugbahnplanungsmodule k\u00f6nnen anstelle der Standardmodule \u00fcber .ini-Datei-Einstellungen oder Befehlszeilenoptionen verwendet werden. Benutzerdefinierte\n Module m\u00fcssen alle von den Standardmodulen verwendeten Funktionen implementieren. Das Dienstprogramm halcompile kann verwendet werden, um ein benutzerdefiniertes Modul zu erstellen.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 75\n \n 3.6 Blockdiagramme und Datenfluss\n Die folgende Abbildung ist das Blockdiagramm einer Gelenksteuerung. F\u00fcr jedes Gelenk gibt es genau\n eine Gelenksteuerung. Die Gelenksteuerungen arbeiten auf einer niedrigeren Ebene als die Kinematik, einer Ebene, auf der alle Gelenke v\u00f6llig unabh\u00e4ngig sind. Alle Daten f\u00fcr ein Gelenk befinden sich\n in einer einzigen Gelenkstruktur. Einige Elemente dieser Struktur sind im Blockdiagramm sichtbar,\n@@ -1188,15 +1188,15 @@\n wird mit der Traj-Rate aktualisiert, nicht mit der Servo-Rate. Im koordinierten Modus wird sie durch\n den Traj-Planer bestimmt. Im Teleop-Modus wird sie durch den Traj-Planer bestimmt? Im freien\n Modus sie entweder von actualPos kopiert oder durch Anwendung von Vorw\u00e4rtskinematik auf (2)\n oder (3) erzeugt.\n \u2022 emcmotStatus->joints[n].coarse_pos - Dies ist die gew\u00fcnschte Position, in Gelenkkoordinaten, aber\n 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\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 75\n \n sie durch Anwendung von inversen Kinematiken auf (1) erzeugt. Im freien Modus wird sie von (3)\n kopiert, glaube ich.\n \u2022 \u2019emcmotStatus->joints[n].pos_cmd - Dies ist die gew\u00fcnschte Position, in Gelenkkoordinaten, nach\n 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\n@@ -1219,26 +1219,26 @@\n vorzut\u00e4uschen, oder B) zuzugeben, dass wir die kartesischen Koordinaten nicht wirklich kennen,\n und actualPos einfach nicht zu aktualisieren. Unabh\u00e4ngig davon, welcher Ansatz verwendet wird,\n sehe ich keinen Grund, es nicht auf die gleiche Weise zu tun, unabh\u00e4ngig von der Betriebsart. Ich\n w\u00fcrde das Folgende vorschlagen: Wenn es Vorw\u00e4rts-Kins gibt, verwenden Sie sie, es sei denn, sie\n 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\n aktualisiert werden w\u00fcrde.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3.7 Referenzfahrt (engl. homing)\n 3.7.1 Zustandsdiagramm der Referenzfahrt\n \n 14 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 75\n \n 3.7.2 Ein weiteres Homing-Diagramm\n \n 3.8 Befehle\n Die Befehle werden durch eine gro\u00dfe Fallunterscheidung (Switch-Anweisung) in der Funktion emcmotCommandHandler() implementiert, die bei der Servo-Rate aufgerufen wird. Mehr zu dieser Funktion sp\u00e4ter.\n@@ -1251,15 +1251,15 @@\n \n 3.8.1 Abbrechen\n Der Befehl ABORT (engl. f\u00fcr Abbruch) stoppt einfach alle Bewegungen. Er kann jederzeit erteilt werden und wird immer akzeptiert. Er deaktiviert den Motion Controller nicht und \u00e4ndert auch keine\n Zustandsinformationen, sondern bricht lediglich eine laufende Bewegung ab.1\n 1 Es scheint, dass der Code auf h\u00f6herer Ebene (TASK und h\u00f6her) ABORT auch zum L\u00f6schen von Fehlern verwendet. Wann\n immer ein anhaltender Fehler auftritt (z. B. wenn die Hardware-Endschalter \u00fcberschritten werden), sendet der \u00fcbergeordnete\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 75\n \n 3.8.1.1 Anforderungen\n Keine. Der Befehl wird immer angenommen und sofort ausgef\u00fchrt.\n 3.8.1.2 Ergebnisse\n Im freien Modus sind die Trajektorienplaner f\u00fcr den freien Modus deaktiviert. Das f\u00fchrt dazu, dass\n@@ -1292,15 +1292,15 @@\n Bewegung der Maschine auf kartesischen Koordinaten unter Verwendung der Kinematik und nicht auf\n 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\n Teleop-Modus \u00e4hnelt dem Joggen, mit dem Unterschied, dass sie im kartesischen Raum und nicht im\n 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\u00e4chen f\u00fcr diese\n Code einen st\u00e4ndigen Strom von ABORTs an den Bewegungsregler, um den Fehler zu beheben. Tausende von ihnen\u2026. Das\n bedeutet, dass die Bewegungssteuerung anhaltende Fehler vermeiden sollte. Dies muss untersucht werden.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 75\n \n Maschinen geben diesen Befehl m\u00f6glicherweise nicht einmal aus. Bei nicht-trivialen Maschinen wie\n Robotern und Hexapoden wird der Teleop-Modus jedoch f\u00fcr die meisten vom Benutzer befohlenen\n Jog-Bewegungen verwendet.\n 3.8.3.1 Anforderungen\n@@ -1331,15 +1331,15 @@\n Wenn sich die Maschine bereits im Koordinatenmodus befindet, geschieht nichts. Andernfalls wird die\n Maschine in den Koordinatenmodus versetzt. Der Kinematikcode wird aktiviert, die Interpolatoren\n werden entleert und geleert, und die Warteschlangen des Bahnplaners sind leer. Der Trajektorienplaner ist aktiv und wartet auf einen LINE-, CIRCLE- oder PROBE-Befehl.\n \n 3.8.5 ENABLE (AKTIVIEREN)\n Der Befehl ENABLE aktiviert den Motion Controller.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 75\n \n 3.8.5.1 Anforderungen\n Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert.\n 3.8.5.2 Ergebnisse\n Wenn der Controller bereits aktiviert ist, passiert nichts. Ansonsten wird der Controller aktiviert. Warteschlangen und Interpolatoren werden geleert. Alle Bewegungs- oder Referenzfahrtvorg\u00e4nge werden\n@@ -1364,15 +1364,15 @@\n Derzeit nichts. (Ein Aufruf der alten extAmpEnable-Funktion ist derzeit auskommentiert.) Eventuell\n wird der Amp-Enable-HAL-Pin auf true gesetzt.\n \n 3.8.8 DISABLE_AMPLIFIER\n Der Befehl DISABLE_AMPLIFIER schaltet den Amp-Enable-Ausgang f\u00fcr einen einzelnen Verst\u00e4rker\n aus, ohne etwas anderes zu \u00e4ndern. Auch dies ist n\u00fctzlich f\u00fcr Spindeldrehzahlregler.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 75\n \n 3.8.8.1 Anforderungen\n Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert.\n 3.8.8.2 Ergebnisse\n Derzeit nichts. (Ein Aufruf der alten extAmpEnable Funktion ist derzeit auskommentiert.) Eventuell\n@@ -1396,15 +1396,15 @@\n nicht.\n \n 3.8.11 ENABLE_WATCHDOG\n Der Befehl ENABLE_WATCHDOG aktiviert einen hardwarebasierten Watchdog (falls vorhanden).\n 3.8.11.1 Anforderungen\n Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 75\n \n 3.8.11.2 Ergebnisse\n Derzeit nichts. Der alte Watchdog war ein seltsames Ding, das eine bestimmte Soundkarte verwendete. M\u00f6glicherweise wird in Zukunft eine neue Watchdog-Schnittstelle entwickelt.\n \n 3.8.12 DISABLE_WATCHDOG\n@@ -1427,15 +1427,15 @@\n Der Befehl RESUME startet den Trajektorienplaner neu, wenn er angehalten wurde. Er hat keine\n Auswirkung im freien oder Teleop-Modus, oder wenn der Planer nicht angehalten ist.\n 3.8.14.1 Anforderungen\n Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert.\n 3.8.14.2 Ergebnisse\n Der Trajektorienplaner arbeitet weiter.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 75\n \n 3.8.15 STEP\n Der STEP-Befehl (engl. f\u00fcr Schritt) startet den Trajektorienplaner neu, wenn er angehalten wurde, und\n weist ihn an, wieder anzuhalten, wenn er einen bestimmten Punkt erreicht. Er hat keine Wirkung im\n freien oder Teleop-Modus. Zu diesem Zeitpunkt wei\u00df ich nicht genau, wie das funktioniert. Ich werde\n@@ -1464,15 +1464,15 @@\n 3.8.17.1 Anforderungen\n Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. (Ich denke, es sollte nur\n im freien Modus funktionieren.)\n 3.8.17.2 Ergebnisse\n Die Begrenzungen f\u00fcr alle Gelenke werden bis zum Ende des n\u00e4chsten JOG-Befehls au\u00dfer Kraft gesetzt. (Dies ist derzeit nicht m\u00f6glich\u2026 sobald ein OVERRIDE_LIMITS-Befehl empfangen wird, werden\n die Begrenzungen ignoriert, bis ein weiterer OVERRIDE_LIMITS-Befehl sie wieder aktiviert.)\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 75\n \n 3.8.18 HOME\n Der HOME-Befehl leitet eine Referenzfahrt an einem bestimmten Gelenk ein. Die tats\u00e4chliche Referenzierungssequenz wird durch eine Reihe von Konfigurationsparametern bestimmt und kann vom\n einfachen Setzen der aktuellen Position auf Null bis hin zu einer mehrstufigen Suche nach einem\n Referenzschalter und einem Indeximpuls, gefolgt von einer Bewegung zu einer beliebigen Referenzposition, reichen. Weitere Informationen \u00fcber die Referenzfahrt-Sequenz finden Sie im Abschnitt Referenzfahrt des Integrator-Handbuchs.\n@@ -1498,15 +1498,15 @@\n 3.8.20 JOG_INCR\n Der JOG_INCR-Befehl initiiert einen inkrementellen Tippbetrieb f\u00fcr ein einzelnes Gelenk. Inkrementelle Verfahrbewegungen sind kumulativ, d.h. wenn Sie zwei JOG_INCR-Befehle geben, die jeweils\n eine Bewegung von 0,100 Zoll erfordern, ergibt dies eine Bewegung von 0,200 Zoll, auch wenn der\n zweite Befehl gegeben wird, bevor der erste beendet ist. Normalerweise stoppen Inkremental-Jogs,\n wenn sie die gew\u00fcnschte Strecke zur\u00fcckgelegt haben, aber sie stoppen auch, wenn sie an eine Grenze\n sto\u00dfen, oder bei einem ABORT-Befehl.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 75\n \n 3.8.20.1 Anforderungen\n Der Befehlshandler lehnt den JOG_INCR-Befehl stillschweigend ab, wenn sich die Maschine nicht im\n freien Modus befindet, wenn ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE)\n oder wenn die Bewegung nicht aktiviert ist. Der Befehl wird auch ignoriert, wenn das Gelenk bereits\n@@ -1538,15 +1538,15 @@\n und die Maschine f\u00e4hrt zur befohlenen Endposition. Der Planer im freien Modus beschleunigt zu\n Beginn der Bewegung mit der Gelenkbeschleunigungsgrenze und bremst mit der Gelenkbeschleunigungsgrenze ab, um an der Zielposition anzuhalten.\n \n 3.8.22 SET_LINE\n Der Befehl SET_LINE f\u00fcgt eine gerade Linie in die Warteschlange des Trajektorienplaners ein.\n (Mehr dazu sp\u00e4ter)\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 75\n \n 3.8.23 SET_CIRCLE\n Der Befehl SET_CIRCLE f\u00fcgt eine kreisf\u00f6rmige Bewegung in die Warteschlange des Trajektorienplaners ein.\n (Mehr dazu sp\u00e4ter)\n \n@@ -1576,15 +1576,15 @@\n + Umkehrspiel- und Schraubenfehlerkompensation\n \n 3.10 Task-Controller (EMCTASK)\n 3.10.1 Zustand\n Die Aufgabe hat drei m\u00f6gliche interne Zust\u00e4nde: Notaus (E-Stop), Notaus-Reset (E-Stop Reset) und\n Maschine Ein (Machine On).\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 75\n \n 3.11 IO-Controller (EMCIO)\n Die E/A-Steuerung (engl. I/O controller) ist ein separates Modul, das NML-Befehle von TASK annimmt.\n Es interagiert mit externen E/A \u00fcber HAL-Pins. iocontrol.cc wird \u00fcber das linuxcnc-Skript vor TASK\n geladen. Derzeit gibt es zwei Versionen von iocontrol. Die zweite Version behandelt Hardware-Fehler\n@@ -1608,15 +1608,15 @@\n #define EMC_TOOL_ABORT_TYPE ((NMLTYPE) 1103)\n #define EMC_TOOL_PREPARE_TYPE ((NMLTYPE) 1104)\n #define EMC_TOOL_LOAD_TYPE ((NMLTYPE) 1105)\n #define EMC_TOOL_UNLOAD_TYPE ((NMLTYPE) 1106)\n #define EMC_TOOL_LOAD_TOOL_TABLE_TYPE ((NMLTYPE) 1107)\n #define EMC_TOOL_SET_OFFSET_TYPE ((NMLTYPE) 1108)\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 75\n \n #define EMC_TOOL_SET_NUMBER_TYPE ((NMLTYPE) 1109)\n // die folgende Nachricht wird gleich zu Beginn eines M6 an io gesendet\n // noch bevor emccanon die Bewegung zur Werkzeugwechselposition ausgibt\n #define EMC_TOOL_START_CHANGE_TYPE ((NMLTYPE) 1110)\n@@ -1647,15 +1647,15 @@\n Stellt einen Block von gemeinsamem Speicher zusammen mit einer Semaphore (geerbt von der Klasse\n Semaphore) bereit. Die Erstellung und Zerst\u00f6rung der Semaphore wird durch den SharedMemoryKonstruktor und -Destruktor gehandhabt.\n \n 3.17 ShmBuffer\n Klasse zur Weitergabe von NML-Nachrichten zwischen lokalen Prozessen unter Verwendung eines\n gemeinsamen Speicherpuffers. Ein Gro\u00dfteil der internen Arbeitsweise wird von der CMS-Klasse geerbt.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 75\n \n 3.18 Timer\n Die Klasse Timer bietet einen periodischen Timer, der nur durch die Aufl\u00f6sung der Systemuhr begrenzt ist. Wenn zum Beispiel ein Prozess alle 5 Sekunden ausgef\u00fchrt werden muss, unabh\u00e4ngig von\n der Zeit, die f\u00fcr die Ausf\u00fchrung des Prozesses ben\u00f6tigt wird. Der folgende Codeschnipsel zeigt wie :\n main()\n@@ -1685,15 +1685,15 @@\n NML verwendeten Funktionen enth\u00e4lt. Viele der internen Funktionen sind \u00fcberladen, um spezifische\n hardwareabh\u00e4ngige Methoden der Daten\u00fcbergabe zu erm\u00f6glichen. Letztlich dreht sich alles um einen zentralen Speicherblock (der als Nachrichtenpuffer oder einfach Puffer bezeichnet wird). Dieser\n Puffer kann ein gemeinsam genutzter Speicherblock sein, auf den andere CMS/NML-Prozesse zugreifen, oder ein lokaler und privater Puffer f\u00fcr Daten, die \u00fcber Netzwerk- oder serielle Schnittstellen\n \u00fcbertragen werden.\n Der Puffer wird zur Laufzeit dynamisch zugewiesen, um eine gr\u00f6\u00dfere Flexibilit\u00e4t des CMS/NMLSubsystems zu erm\u00f6glichen. Die Puffergr\u00f6\u00dfe muss gro\u00df genug sein, um die gr\u00f6\u00dfte Nachricht aufzunehmen, eine kleine Menge f\u00fcr den internen Gebrauch und die M\u00f6glichkeit, die Nachricht zu kodieren, wenn diese Option gew\u00e4hlt wird (auf kodierte Daten wird sp\u00e4ter eingegangen). Die folgende\n Abbildung zeigt eine interne Ansicht des Pufferspeichers.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 75\n \n CMS-Puffer Die CMS-Basisklasse ist in erster Linie f\u00fcr die Erstellung der Kommunikationswege und\n der Schnittstellen zum Betriebssystem verantwortlich.\n \n 3.21 Format der Konfigurationsdatei\n@@ -1711,15 +1711,15 @@\n \u2022 neut - ein boolescher Wert, der angibt, ob die Daten im Puffer in einem maschinenunabh\u00e4ngigen\n Format oder im Rohformat kodiert sind.\n \u2022 RPC# - Obsolet - Platzhalter nur noch aus Gr\u00fcnden der Abw\u00e4rtskompatibilit\u00e4t.\n \u2022 buffer# - Eine eindeutige ID-Nummer, die verwendet wird, wenn ein Server mehrere Puffer kontrolliert.\n \u2022 max_procs - ist die maximale Anzahl von Prozessen, die sich mit diesem Puffer verbinden d\u00fcrfen.\n \u2022 key - ist ein numerischer Bezeichner f\u00fcr einen gemeinsamen Speicherpuffer\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 75\n \n 3.21.2 Typspezifische Konfigurationen\n Der Puffertyp impliziert zus\u00e4tzliche Konfigurationsoptionen, w\u00e4hrend das Host-Betriebssystem bestimmte Kombinationen ausschlie\u00dft. In dem Bem\u00fchen, die ver\u00f6ffentlichte Dokumentation in ein koh\u00e4rentes Format zu bringen, wird nur der Puffertyp SHMEM behandelt.\n \u2022 mutex=os_sem - Standardmodus f\u00fcr die Bereitstellung von Semaphore-Sperren des Pufferspeichers.\n \u2022 mutex=none - Nicht verwendet\n@@ -1751,15 +1751,15 @@\n \u2022 host - gibt an, wo im Netzwerk dieser Prozess ausgef\u00fchrt wird.\n \u2022 ops - gibt dem Prozess nur Lese-, nur Schreib- oder Lese-/Schreibzugriff auf den Puffer.\n \u2022 server - gibt an, ob dieser Prozess einen Server f\u00fcr diesen Puffer betreiben wird.\n \u2022 timeout - legt die Timeout-Eigenschaften f\u00fcr Zugriffe auf den Puffer fest.\n \u2022 master - gibt an, ob dieser Prozess f\u00fcr die Erstellung und L\u00f6schung des Puffers verantwortlich ist.\n \u2022 c_num - eine Ganzzahl zwischen Null und (max_procs -1)\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 75\n \n 3.21.4 Kommentare zur Konfiguration\n Einige der Konfigurationskombinationen sind ung\u00fcltig, w\u00e4hrend andere bestimmte Beschr\u00e4nkungen\n mit sich bringen. Auf einem Linux-System ist GLOBMEM \u00fcberfl\u00fcssig, w\u00e4hrend PHANTOM nur in der\n Testphase einer Anwendung wirklich n\u00fctzlich ist, gleiches gilt f\u00fcr FILEMEM. LOCMEM ist f\u00fcr eine\n@@ -1798,15 +1798,15 @@\n 3.22 NML-Basisklasse\n Mehr zu Listen und die Beziehung zwischen NML, NMLmsg und den untergeordneten cms-Klassen.\n Nicht zu verwechseln mit NMLmsg, RCS_STAT_MSG, oder RCS_CMD_MSG.\n NML ist verantwortlich f\u00fcr das Parsen der Konfigurationsdatei, die Konfiguration der cms-Puffer und\n die Weiterleitung von Nachrichten an die richtigen Puffer. Zu diesem Zweck erstellt NML mehrere\n Listen f\u00fcr:\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 75\n \n \u2022 cms-Puffer, die erstellt oder die verbunden wurden.\n \u2022 Prozesse und die Puffer, mit denen sie verbunden sind\n \u2022 eine lange Liste von Formatfunktionen f\u00fcr jeden Nachrichtentyp\n Dieser letzte Punkt ist wahrscheinlich der Kern eines Gro\u00dfteils der schlechten Bewertung von libnml/rcslib und NML im Allgemeinen. Jede Nachricht, die \u00fcber NML weitergegeben wird, erfordert neben\n@@ -1833,15 +1833,15 @@\n \u00fcbergibt. In format_xxx() findet die Arbeit des Aufbaus oder Abbaus der Nachricht statt. Eine Liste\n verschiedener Funktionen wird nacheinander aufgerufen, um verschiedene Teile des NML-Headers\n (nicht zu verwechseln mit dem cms-Header) in die richtige Reihenfolge zu bringen - die letzte aufgerufene Funktion ist emcFormat() in emc.cc.\n 3.22.1.3 NMLmsg und NML-Beziehungen\n NMLmsg ist die Basisklasse, von der alle Nachrichtenklassen abgeleitet sind. F\u00fcr jede Nachrichtenklasse muss eine eindeutige ID definiert (und an den Konstruktor \u00fcbergeben) werden sowie eine\n 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\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 75\n \n im NML-Konstruktor deklariert worden sein. Durch die von NML erstellten verkn\u00fcpften Listen ist es\n m\u00f6glich, den cms-Zeiger auszuw\u00e4hlen, der an den Formatierer \u00fcbergeben wird, und damit den zu\n verwendenden Puffer.\n \n@@ -1873,15 +1873,15 @@\n Beispiele f\u00fcr nicht-zuf\u00e4llige Werkzeugwechsler sind der \u201dmanuelle\u201d Werkzeugwechsler, Drehautomaten und Regalwechsler.\n Wenn f\u00fcr einen nicht-zuf\u00e4lligen Werkzeugwechsler konfiguriert, \u00e4ndert LinuxCNC die Platznummer in\n der Werkzeugtabellen-Datei nicht wenn Werkzeuge geladen bzw. entladen werden. LinuxCNC-intern\n werden bei einem Werkzeugwechsel die Werkzeug-Informationen von der Werkzeugtabelle kopiert\n von der jeweiligen Taschennummer der Quelle (der Ablage) zur Tasche mit der Nummer 0 (welche\n die Spindel darstellt). Dies ersetzt die vorherigen dort abgelegten Werkzeuginformationen.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 75\n \n Anmerkung\n In einem f\u00fcr nicht-zuf\u00e4llige Werkzeugwechsler konfigurierten LinuxCNC hat Werkzeug 0 (T0) eine\n besondere Bedeutung: \u201dkein Werkzeug\u201d. T0 kann nicht in der Werkzeugtabelle Datei erscheinen,\n und der Wechsel zu T0 wird in LinuxCNC verstehen, dass die Spindel kein Werkzeug f\u00fchrt.\n@@ -1912,15 +1912,15 @@\n \u2022 Wenn LinuxCNC f\u00fcr einen nicht-zuf\u00e4lligen Werkzeugwechsler konfiguriert ist, muss diese Zahl\n positiv sein. T0 bekommt eine Sonderbehandlung und darf nicht in der Werkzeugtabelle erscheinen.\n \u2022 Wenn LinuxCNC f\u00fcr einen zuf\u00e4lligen Werkzeugwechsler konfiguriert ist, muss diese Zahl nichtnegativ sein. T0 ist in der Werkzeugtabelle erlaubt, und wird in der Regel verwendet, um \u201dkein\n Werkzeug\u201d, d.h. die leere Tasche darstellen.\n Taschennummer\n Eine ganze Zahl zur Identifikation der Tasche oder des Steckplatz in der WerkzeugwechslerHardware, in der sich das Werkzeug befindet. Pocket-Nummern werden unterschiedlich von LinuxCNC behandelt, abh\u00e4ngig davon ob f\u00fcr zuf\u00e4llige und nicht-zuf\u00e4llige Werkzeugwechsler konfiguriert:\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 75\n \n \u2022 Wenn LinuxCNC f\u00fcr einen nicht-zuf\u00e4lligen 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\u00e4dt, so kann es\n einen Unterschied zwischen den Platznummern in der Werkzeugdatei und den internen Platznummern von LinuxCNC geben.\n \u2022 Wenn LinuxCNC f\u00fcr einen zuf\u00e4lligen Werkzeugwechsler konfiguriert ist, m\u00fcssen die Platznummern in der Werkzeugdatei zwischen 0 und 1000, einschlie\u00dflich sein. Pockets 1-1000 sind im\n Werkzeugwechsler, Tasche 0 ist die Spindel.\n@@ -1947,15 +1947,15 @@\n setzt IO emcioStatus.tool.pocketPrepped auf die angeforderte Werkzeugplatz-/taschennummer.\n 2. Zur\u00fcck in interp, wird settings->selected_pocket dem tooldata-Index (engl. f\u00fcr WerkzeugdatenIndex) des angeforderten Werkzeugs xxx zugewiesen.\n Anmerkung\n Die inzwischen nicht mehr verwendeten Namen selected_pocket und current_pocket verweisen\n auf einen sequentiellen Werkzeugdatenindex f\u00fcr Werkzeugelemente, die aus einer Werkzeugtabelle\n ([EMCIO]TOOL_TABLE) oder \u00fcber eine Werkzeugdatenbank ([EMCIO]DB_PROGRAM) geladen werden.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 75\n \n 3.24.3.2 M6\n Weist den Werkzeugwechsler an, zum aktuell ausgew\u00e4hlten Werkzeug zu wechseln (ausgew\u00e4hlt durch\n den vorherigen Befehl Txxx).\n Wird von Interp::convert_tool_change() behandelt.\n@@ -1990,15 +1990,15 @@\n b. (emccanon) Erstellt eine Nachricht EMC_TRAJ_SET_OFFSET mit den Offsets und sendet sie an\n Task. Task kopiert die Offsets nach emcStatus->task.toolOffset und sendet sie \u00fcber einen\n EMCMOT_SET_OFFSET-Befehl an Motion weiter. Motion kopiert die Offsets nach emcmotStatus->tool\n wo sie zum Offset f\u00fcr zuk\u00fcnftige Bewegungen verwendet werden.\n 3. Zur\u00fcck 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\n wird.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 75\n \n 3.24.3.4 G10 L1/L10/L11\n \u00c4ndert die Werkzeugtabelle.\n Wird von Interp::convert_setup_tool() behandelt.\n 1. W\u00e4hlt die Werkzeugnummer aus dem P-Wort im Block aus und findet die Tasche f\u00fcr dieses Werkzeug:\n@@ -2031,15 +2031,15 @@\n (Diese zweite Aktualisierung der Werkzeugtabelle wird bei Maschinen mit Zufallswerkzeugwechsler nicht ben\u00f6tigt, da die Werkzeuge dort keinen Stammplatz haben und wir stattdessen nur das\n Werkzeug in Platz 0 direkt aktualisieren.)\n 3.24.3.5 M61\n Setze aktuelle Werkzeugnummer. Dies wechselt LinuxCNC\u2019s interne Darstellung, welches Werkzeug\n in der Spindel ist, ohne tats\u00e4chlich bewegen den Werkzeugwechsler oder Austausch von Werkzeugen.\n Wird von Interp::convert_tool_change() behandelt.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 75\n \n Canon: CHANGE_TOOL_NUMBER()\n settings->current_pocket wird dem Werkzeugdaten-Index zugewiesen, der das durch das Q-WortArgument angegebene Werkzeug enth\u00e4lt.\n 3.24.3.6 G41/G41.1/G42/G42.1\n Aktiviert die Fr\u00e4serradiuskompensation (engl. kurz cutter comp genannt).\n@@ -2065,15 +2065,15 @@\n Werkzeugnummer des aktuell in der Spindel installierten Werkzeugs. Wird \u00fcber den HAL-Pin\n iocontrol.0.tool-number (s32) exportiert.\n emcioStatus.tool.toolTable[]\n Ein Array von CANON_TOOL_TABLE Strukturen, CANON_POCKETS_MAX lang. Wird beim Starten aus\n der Werkzeugtabellendatei geladen und danach beibehalten. Index 0 ist die Spindel, die Indizes 1-(CANON_POCKETS_MAX-1) sind die Pl\u00e4tze im Werkzeugwechsler. Dies ist eine vollst\u00e4ndige Kopie der Werkzeuginformationen, die getrennt von Interp\u2019s settings.tool_table gepflegt\n wird.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 75\n \n 3.24.4.2 interp\n \n settings ist vom Typ settings, definiert als struct setup_struct ist in src/emc/rs274ngc/interp_inter\n settings.selected_pocket\n@@ -2107,15 +2107,15 @@\n settings.tool_table\n Dies ist ein Array von CANON_TOOL_TABLE Strukturen (definiert in src/emc/nml_intf/emctool.h),\n mit CANON_POCKETS_MAX Eintr\u00e4gen. Indiziert durch \u201dTaschen-Nummer\u201d, auch bekannt als \u201dSlotNummer\u201d. Index 0 ist die Spindel, die Indizes 1 bis (CANON_POCKETS_MAX-1) sind die Pl\u00e4tze\n im Werkzeugwechsler. Bei einem Zufallswerkzeugwechsler sind die Platznummern sinnvoll. Bei\n einem nicht-zuf\u00e4lligen Werkzeugwechsler sind die Platznummern bedeutungslos; die Platznummern in der Werkzeugtabellendatei werden ignoriert und die Werkzeuge werden den tool_table\n Pl\u00e4tzen nacheinander zugewiesen.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 75\n \n settings.tool_change_at_g30 , settings.tool_change_quill_up , settings.tool_change_with_spindle_\n Diese werden \u00fcber INI-Variablen im Abschnitt [EMCIO] gesetzt und bestimmen, wie Werkzeugwechsel durchgef\u00fchrt werden.\n \n 3.25 Parameter-Bestimmung von Gelenken und Achsen\n@@ -2150,15 +2150,15 @@\n Die Echtzeitkomponente des Motion Controllers erh\u00e4lt zun\u00e4chst die Anzahl der Joints aus dem LoadTime-Parameter num_joints. Dieser bestimmt, wie viele Gelenke mit HAL-Pins beim Start erzeugt\n werden.\n Die Anzahl der Gelenke einer Bewegung kann zur Laufzeit mit dem Befehl EMCMOT_SET_NUM_JOINTS\n aus dem Task heraus ge\u00e4ndert werden.\n Der Motion Controller arbeitet immer mit EMCMOT_MAX_AXIS-Achsen. Er erstellt immer neun S\u00e4tze von\n \u201dAchsen..\u201d-Pins.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Kapitel 4\n \n NML-Nachrichten\n Liste der NML-Nachrichten.\n F\u00fcr Einzelheiten siehe src/emc/nml_intf/emc.hh.\n \n@@ -2190,15 +2190,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3 ACHSE\n \n 40 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_AXIS_STAT_TYPE\n \n 4.4 JOG\n EMC_JOG_CONT_TYPE\n EMC_JOG_INCR_TYPE\n EMC_JOG_ABS_TYPE\n@@ -2244,15 +2244,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6 MOTION (engl. f\u00fcr Bewegung)\n \n 41 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 75\n \n EMC_MOTION_INIT_TYPE\n EMC_MOTION_HALT_TYPE\n EMC_MOTION_ABORT_TYPE\n EMC_MOTION_SET_AOUT_TYPE\n@@ -2297,15 +2297,15 @@\n EMC_TOOL_STAT_TYPE\n \n 4.9 AUX (engl. Kurzform f\u00fcr \u201dandere Hilfsfunktionen\u201d)\n EMC_AUX_ESTOP_ON_TYPE\n EMC_AUX_ESTOP_OFF_TYPE\n EMC_AUX_ESTOP_RESET_TYPE\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 75\n \n EMC_AUX_INPUT_WAIT_TYPE\n EMC_AUX_STAT_TYPE\n \n 4.10 SPINDLE (engl. f\u00fcr Spindel)\n@@ -2340,28 +2340,28 @@\n EMC_IO_ABORT_TYPE\n EMC_IO_SET_CYCLE_TIME_TYPE\n EMC_IO_STAT_TYPE\n EMC_IO_PLUGIN_CALL_TYPE\n \n 4.14 Andere\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_NULL_TYPE\n EMC_SET_DEBUG_TYPE\n EMC_SYSTEM_CMD_TYPE\n EMC_INIT_TYPE\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 44 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 75\n \n Kapitel 5\n \n Quellcode-Stil\n Dieses Kapitel beschreibt den vom LinuxCNC-Team bevorzugten Quellcode-Stil.\n@@ -2385,15 +2385,15 @@\n \n 5.4 Setzen von Klammern\n Setzen Sie die \u00f6ffnende Klammer zuletzt auf die Linie, und setzen Sie die schlie\u00dfende Klammer zuerst:\n if (x) {\n // macht irgendetwas der Situation Angepasstes\n }\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 75\n \n Die schlie\u00dfende Klammer steht in einer eigenen Zeile, es sei denn, es folgt eine Fortsetzung derselben\n Anweisung, z. B. ein while in einer do-Anweisung oder ein else in einer if-Anweisung, wie hier:\n do {\n // etwas Wichtiges\n@@ -2427,15 +2427,15 @@\n 5.6 Funktionen\n Funktionen sollten kurz und knapp sein und nur einen Zweck erf\u00fcllen. Sie sollten auf einen oder zwei\n Bildschirme voller Text passen (die ISO/ANSI-Bildschirmgr\u00f6\u00dfe betr\u00e4gt 80x24, wie wir alle wissen)\n und nur eine Aufgabe erf\u00fcllen, und diese gut.\n Die maximale L\u00e4nge einer Funktion ist umgekehrt proportional zur Komplexit\u00e4t und zum Grad der\n Einr\u00fcckung dieser Funktion. Wenn Sie also eine konzeptionell einfache Funktion haben, die nur aus\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 75\n \n einer einzigen langen (aber einfachen) Fallanweisung besteht, bei der Sie viele kleine Dinge f\u00fcr viele\n verschiedene F\u00e4lle tun m\u00fcssen, ist es in Ordnung, eine l\u00e4ngere Funktion zu haben.\n Wenn Sie jedoch eine komplexe Funktion haben und Sie vermuten, dass ein weniger begabter Anf\u00e4nger nicht einmal versteht, worum es in der Funktion geht, sollten Sie sich um so mehr an die\n H\u00f6chstgrenzen halten. Verwenden Sie Hilfsfunktionen mit aussagekr\u00e4ftigen Namen (Sie k\u00f6nnen den\n@@ -2471,15 +2471,15 @@\n awk-Aufruf als gawk oder mawk.\n \n 5.9 C++-Konventionen\n C++-Codierungsstile sind wiederholt Anlass f\u00fcr hitzige Debatten (\u00e4hnlich wie der Streit zwischen\n emacs und vi). Eines ist jedoch sicher: Ein gemeinsamer Stil, der von allen an einem Projekt Beteiligten\n verwendet wird, f\u00fchrt zu einheitlichem und lesbarem Code.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 75\n \n Namenskonventionen: Konstanten entweder aus #defines oder aus Enumerationen sollten durchgehend in Gro\u00dfbuchstaben geschrieben werden. Begr\u00fcndung: Erleichtert das Erkennen von durch den\n Pr\u00e4prozessor substituierten Ausdr\u00fccke im Quellcode, z.B. EMC_MESSAGE_TYPE.\n Klassen und Namensr\u00e4ume (engl. namespace) sollten den ersten Buchstaben eines jeden Wortes\n gro\u00df schreiben und Unterstriche vermeiden. Begr\u00fcndung: Identifiziert Klassen, Konstruktoren und\n@@ -2515,15 +2515,15 @@\n Implizite Tests auf Null sollten mit Ausnahme von booleschen Variablen nicht verwendet werden, z.B.\n if (spindle_speed != 0), NICHT if (spindle_speed).\n In einem for()-Konstrukt d\u00fcrfen nur Anweisungen zur Schleifenkontrolle enthalten sein, z.B. sum = 0;\n for (i = 0; i < 10; i++) { sum += value[i]; } \u0300+ NICHT: \u0300\n for (i=0, sum=0; i<10; i++) sum\n += value[i];.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 75\n \n Ebenso m\u00fcssen ausf\u00fchrbare Anweisungen in Konditionalen vermieden werden, z.B. ist if (fd =\n open(file_name)) b\u00f6se.\n Komplexe bedingte Anweisungen sollten vermieden werden - f\u00fchren Sie stattdessen tempor\u00e4re boolesche Variablen ein.\n Klammern sollten in mathematischen Ausdr\u00fccken reichlich verwendet werden - Verlassen Sie sich\n@@ -2536,15 +2536,15 @@\n Use the PEP 8 style for Python code.\n \n 5.11 Comp-Codierungs-Standards\n Im Deklarationsteil einer .comp-Datei beginnen Sie jede Deklaration mit der ersten Spalte. F\u00fcgen Sie\n zus\u00e4tzliche Leerzeilen ein, wenn sie zur Gruppierung verwandter Elemente beitragen.\n Im Code-Teil einer .comp-Datei ist der normale C-Codierungsstil zu beachten.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 75\n \n Kapitel 6\n \n Kompilieren (\u201dbauen\u201d) von LinuxCNC\n 6.1 Einf\u00fchrung\n@@ -2572,15 +2572,15 @@\n Nachdem Sie erfolgreich LinuxCNC gebaut haben, ist es nun Zeit, die Tests durchzuf\u00fchren:\n >$ source ../scripts/rip-environment\n >$ runtests\n \n Auch das kann fehlschlagen! Lesen Sie das gesamte Dokument, insbesondere aber den Abschnitt\n Einrichten der Testumgebung.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 75\n \n 6.2 Unterst\u00fctzte Plattformen\n Das LinuxCNC-Projekt orientiert sich an moderne Debian-basierte Distributionen, einschlie\u00dflich Debian, Ubuntu und Mint.\n Wir testen kontinuierlich auf den unter http://buildbot.linuxcnc.org aufgef\u00fchrten Plattformen.\n LinuxCNC baut auf die meisten anderen Linux-Distributionen, obwohl die Verwaltung von Abh\u00e4ngigkeiten mehr manuell und weniger automatisch sein wird. Patches zur Verbesserung der Portabilit\u00e4t\n@@ -2610,15 +2610,15 @@\n n\u00fctzlich f\u00fcr die Simulation der Ausf\u00fchrung von G-Code und f\u00fcr die Pr\u00fcfung der Nicht-Echtzeit-Teile\n des Systems (wie die Benutzeroberfl\u00e4chen, und einige Arten von Komponenten und Ger\u00e4tetreiber).\n \n 6.3 Build-Modi\n Es gibt zwei M\u00f6glichkeiten, LinuxCNC zu bauen: den entwicklerfreundlichen \u201drun in place\u201d Modus\n und den benutzerfreundlichen Debian-Packaging-Modus.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 75\n \n 6.3.1 Kompilieren (bauen) f\u00fcr eine Ausf\u00fchrung ohne Installation (\u201drun-inplace\u201d)\n In einem Run-In-Place-Build werden die LinuxCNC-Programme aus den Quellen kompiliert und dann\n direkt aus dem Build-Verzeichnis ausgef\u00fchrt. Nichts wird au\u00dferhalb des Build-Verzeichnisses installiert.\n Dies ist schnell und einfach und eignet sich f\u00fcr schnelle Iterationen von \u00c4nderungen.\n@@ -2648,15 +2648,15 @@\n Der Befehl make akzeptiert zwei n\u00fctzliche optionale Argumente.\n Parallele Kompilierung\n make nimmt ein optionales Argument -jN (wobei N eine Zahl ist). Dies erm\u00f6glicht die parallele\n Kompilierung mit N gleichzeitigen Prozessen, was Ihre Erstellung erheblich beschleunigen kann.\n Ein n\u00fctzlicher Wert f\u00fcr N ist die Anzahl der CPUs in Ihrem Build-System. Sie k\u00f6nnen die Anzahl\n der CPUs ermitteln, indem Sie nproc ausf\u00fchren.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 75\n \n Bauen nur eines bestimmten Ziels\n Wenn Sie nur einen bestimmten Teil von LinuxCNC bauen wollen, k\u00f6nnen Sie das, was Sie bauen\n wollen, in der Kommandozeile make nennen. Wenn Sie zum Beispiel an einer Komponente namens\n \u201dfroboz\u201d arbeiten, k\u00f6nnen Sie seine ausf\u00fchrbare Datei zu bauen, indem Sie:\n@@ -2696,15 +2696,15 @@\n 6.3.2.1 debian/configure Argumente\n \n Das Skript debian/configure konfiguriert das Debian-Paket. Es muss ausgef\u00fchrt werden, bevor dpkg-check\n und dpkg-buildpackage ausgef\u00fchrt werden k\u00f6nnen.\n Es erwartet ein einziges Argument, das die Echtzeit- oder Nicht-Echtzeit-Plattform angibt, f\u00fcr die\n gebaut werden soll. Die normalen Werte f\u00fcr dieses Argument sind:\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 75\n \n uspace\n Konfigurieren Sie das Debian-Paket f\u00fcr Preempt-RT-Echtzeit oder f\u00fcr Nicht-Echtzeit (diese beiden sind kompatibel).\n noauto , rtai , xenomai\n Normalerweise wird die Liste der RTOS, die uspace Echtzeit unterst\u00fctzen soll, automatisch erkannt. Wenn Sie m\u00f6chten, k\u00f6nnen Sie jedoch eine oder mehrere dieser Optionen nach uspace\n@@ -2743,15 +2743,15 @@\n $ dpkg-checkbuilddeps\n \n Es wird eine Liste von Paketen ausgegeben, die erforderlich sind, um LinuxCNC auf Ihrem System zu\n bauen, die aber noch nicht installiert sind. Installieren Sie sie alle mit sudo apt-get install, gefolgt\n von den Paketnamen.\n Sie k\u00f6nnen dpkg-checkbuilddeps jederzeit erneut ausf\u00fchren, um alle fehlenden Pakete aufzulisten.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 55 / 75\n \n 6.5 Einrichten der Umgebung\n Dieser Abschnitt beschreibt die speziellen Schritte, die ben\u00f6tigt werden, um eine Maschine einzurichten, um die LinuxCNC-Programme auszuf\u00fchren, einschlie\u00dflich der Tests.\n \n 6.5.1 Erh\u00f6hen Sie das Limit f\u00fcr den gesperrten Speicher\n@@ -2785,15 +2785,15 @@\n hosting service and code sharing website. You can easily (and for no cost) create a fork of our git repo\n at github, and use that to track and publish your changes.\n 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\u00fcnschten \u00c4nderungen (gerne\n auch \u201dhacking\u201d genannt) fort.\n Wir vom LinuxCNC-Projekt hoffen, dass Sie Ihre \u00c4nderungen mit uns teilen werden, damit die Gemeinschaft von Ihrer Arbeit profitieren kann. Github macht dieses Teilen sehr einfach: Nachdem Sie Ihre\n \u00c4nderungen aufpoliert und in Ihren Github-Fork gepusht haben, schicken Sie uns einen Pull Request.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 75\n \n Kapitel 7\n \n Hinzuf\u00fcgen von Konfigurationsauswahl\n elementen\n@@ -2803,15 +2803,15 @@\n /usr/share/linuxcnc/aux_examples\n \n \u2022 Laufzeiteinstellungen \u2014 der Konfigurationsselektor kann auch Konfigurationsunterverzeichnisse anbieten, die zur Laufzeit mit einer exportierten Umgebungsvariablen (LINUXCNC_AUX_CONFIGS)\n angegeben werden. Diese Variable sollte eine Pfadliste von einem oder mehreren Konfigurationsverzeichnissen sein, die durch ein (:) getrennt sind. Typischerweise wird diese Variable in einer\n Shell gesetzt, die linuxcnc startet, oder in einem Startskript des Benutzers ~/.profile. Beispiel:\n export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 57 / 75\n \n Kapitel 8\n \n Mitwirkung an LinuxCNC\n 8.1 Einf\u00fchrung\n@@ -2832,15 +2832,15 @@\n All of the LinuxCNC source is maintained in the Git revision control system.\n \n 8.4.1 LinuxCNC offizielles Git Repository\n The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/\n Jeder kann eine schreibgesch\u00fctzte Kopie des LinuxCNC-Quellbaums \u00fcber git erhalten:\n git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 58 / 75\n \n Wenn Sie ein Entwickler mit Schreibrechten (genannt \u201dpush\u201d in Anlehnung an das git-Kommando)\n sind, folgen Sie den Anweisungen in github, um ein Repository einzurichten, von dem aus Sie pushen\n k\u00f6nnen.\n Beachten Sie, dass der Clone-Befehl das lokale LinuxCNC Repo in ein Verzeichnis namens linuxcnc-dev\n@@ -2873,15 +2873,15 @@\n \u2022 git tutorial 2: https://www.kernel.org/pub/software/scm/git/docs/gittutorial-2.html\n \n \u2022 Allt\u00e4gliches Git mit 20 Befehlen oder so: https://www.kernel.org/pub/software/scm/git/docs/giteveryday.ht\n \u2022 Git-Benutzerhandbuch: https://www.kernel.org/pub/software/scm/git/docs/user-manual.html\n For a more thorough documentation of git see the \u201dPro Git\u201d book: https://git-scm.com/book\n Ein weiteres Online-Tutorial, das empfohlen wurde, ist \u201dGit for the Lazy\u201d: https://wiki.spheredev.org/index.php/Git_for_the_lazy\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 75\n \n 8.5 \u00dcberblick \u00fcber den Prozess\n Ein \u00dcberblick dar\u00fcber, wie man \u00c4nderungen am Quelltext vornimmt, sieht folgenderma\u00dfen aus:\n \u2022 Kommunizieren Sie mit den Projektentwicklern und lassen Sie uns wissen, woran Sie hacken\n \u2022 Klonen des Git-Repositories\n@@ -2914,15 +2914,15 @@\n Benutzen Sie Ihren richtigen Namen und eine direkt nutzbare E-Mail Adresse.\n \n 8.7 Effektive Nutzung von Git\n 8.7.1 Commit-Inhalte\n Halten Sie Ihre Commits klein und auf den Punkt. Jeder Commit sollte eine logische \u00c4nderung am\n Projektarchiv bewirken.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 60 / 75\n \n 8.7.2 Schreiben Sie gute Commit-Nachrichten\n Halten Sie die Commit-Meldungen etwa 72 Spalten breit (damit sie in einem Terminalfenster mit\n Standardgr\u00f6\u00dfe nicht umbrechen, wenn sie von git log angezeigt werden).\n Verwenden Sie die erste Zeile als Zusammenfassung der Absicht der \u00c4nderung (fast wie die Betreffzeile einer E-Mail). Danach folgt eine Leerzeile und dann eine l\u00e4ngere Nachricht, in der die \u00c4nderung\n@@ -2954,15 +2954,15 @@\n Entwicklern teilen\n Mit Git ist es m\u00f6glich, jede Bearbeitung und jeden Fehlstart als separaten Commit aufzuzeichnen.\n Dies ist sehr praktisch, um w\u00e4hrend der Entwicklung Kontrollpunkte zu setzen, aber oft m\u00f6chte man\n diese Fehlstarts nicht mit anderen teilen.\n Git bietet zwei M\u00f6glichkeiten, die Historie zu bereinigen, die beide frei durchgef\u00fchrt werden k\u00f6nnen,\n bevor Sie die \u00c4nderung freigeben:\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 61 / 75\n \n Mit git commit --amend k\u00f6nnen Sie zus\u00e4tzliche \u00c4nderungen an dem letzten Commit vornehmen und\n optional auch die Commit-Nachricht \u00e4ndern. Benutzen Sie dies, wenn Sie sofort merken, dass Sie\n etwas in der Commit-Nachricht vergessen haben, oder wenn Sie sich in der Commit-Nachricht vertippt\n haben.\n@@ -3001,30 +3001,30 @@\n Verwenden Sie git pull --rebase anstelle von git pull, um eine sch\u00f6ne lineare Historie zu erhalten. Wenn Sie rebasen, behalten Sie Ihre Arbeit immer als Revisionen, die vor origin/master liegen, so\n dass Sie Dinge wie git format-patch ausf\u00fchren k\u00f6nnen, um Entwicklungen mit anderen zu teilen,\n ohne sie in das zentrale Repository zu pushen.\n \n 8.8 \u00dcbersetzungen\n Das LinuxCNC-Projekt verwendet gettext, um die Software in viele Sprachen zu \u00fcbersetzen. Wir begr\u00fc\u00dfen Beitr\u00e4ge und Hilfe in diesem Bereich! Das Verbessern und Erweitern der \u00dcbersetzungen ist\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 75\n \n einfach: Sie m\u00fcssen keine Programmierkenntnisse haben und Sie m\u00fcssen keine speziellen \u00dcbersetzungsprogramme oder andere Software installieren.\n Der einfachste Weg, bei \u00dcbersetzungen zu helfen, ist die Nutzung von Weblate, einem Open-SourceWebdienst. Unser \u00dcbersetzungsprojekt finden Sie hier: https://hosted.weblate.org/projects/linuxcnc/\n Die Dokumentation zur Verwendung von Weblate finden Sie hier: https://docs.weblate.org/en/latest/user/basic.html\n Wenn Webdienste nicht Ihr Ding sind, k\u00f6nnen Sie auch mit einer Reihe lokaler Gettext-\u00dcbersetzerApps wie gtranslator, poedit und vielen anderen an \u00dcbersetzungen arbeiten.\n \n 8.9 Andere M\u00f6glichkeiten, einen Beitrag zu leisten\n Es gibt viele M\u00f6glichkeiten, zu LinuxCNC beizutragen, die in diesem Dokument nicht behandelt werden. Diese Wege umfassen:\n \u2022 Beantwortung von Fragen im Forum, auf Mailinglisten und im IRC\n \u2022 Melden von Fehlern im Bug-Tracker, im Forum, auf Mailinglisten oder im IRC\n \u2022 Hilfe beim Testen experimenteller Funktionen\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 75\n \n Kapitel 9\n \n Glossar\n Eine Auflistung von Begriffen und deren Bedeutung. Einige Begriffe haben eine allgemeine Bedeutung\n@@ -3049,15 +3049,15 @@\n Bewegungen, oder im Falle von Bewegungen, die durch \u00e4u\u00dfere Kr\u00e4fte verursacht werden (z. B.\n Schneidewerkzeug, das am Werkst\u00fcck zieht), k\u00f6nnen Schneidewerkzeuge brechen. Dies kann\n passieren, weil die Spanbelastung des Fr\u00e4sers pl\u00f6tzlich ansteigt, wenn das Werkst\u00fcck durch das\n Schneidwerkzeug \u00fcber die Spielstrecke gezogen wird.\n Umkehrspiel-Kompensation\n Jede Technik, mit der versucht wird, die Auswirkungen des Spiels zu verringern, ohne es tats\u00e4chlich aus dem mechanischen System zu entfernen. Dies geschieht in der Regel durch Software in\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 64 / 75\n \n der Steuerung. Auf diese Weise kann die endg\u00fcltige Ruhestellung des Teils w\u00e4hrend der Bewegung korrigiert werden, aber Probleme im Zusammenhang mit Richtungs\u00e4nderungen w\u00e4hrend\n der Bewegung (z. B. Kreisinterpolation) und Bewegungen, die durch \u00e4u\u00dfere Kr\u00e4fte (z. B. Ziehen\n des Schneidwerkzeugs am Werkst\u00fcck) verursacht werden, sind nicht gel\u00f6st.\n Kugelumlaufspindel\n@@ -3096,15 +3096,15 @@\n Referenzposition anzuzeigen. DROs sind bei handgef\u00fchrten Werkzeugmaschinen sehr beliebt, da\n sie die tats\u00e4chliche Werkzeugposition spielfrei messen, selbst wenn die Maschine sehr lockere\n Acme-Schrauben hat. Einige DROs verwenden lineare Quadratur-Drehgeber, um Positionsinformationen von der Maschine zu erhalten, und einige verwenden Methoden, die einem Resolver\n \u00e4hneln, der immer wieder uml\u00e4uft.\n EDM\n Die Funkenerosion ist ein Verfahren zum Abtragen von Metall in harten oder schwer zu bearbeitenden oder z\u00e4hen Metallen oder in F\u00e4llen, in denen rotierende Werkzeuge nicht in der Lage\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 75\n \n w\u00e4ren, die gew\u00fcnschte Form auf kosteng\u00fcnstige Weise herzustellen. Ein hervorragendes Beispiel\n sind rechteckige Stanzformen, bei denen scharfe Innenecken gew\u00fcnscht sind. Bei Fr\u00e4svorg\u00e4ngen k\u00f6nnen mit Werkzeugen mit begrenztem Durchmesser keine scharfen Innenecken erzeugt\n werden. Eine Drahterodiermaschine kann Innenecken mit einem Radius herstellen, der nur geringf\u00fcgig gr\u00f6\u00dfer als der Radius des Drahtes\u2019 ist. Eine Senkerodiermaschine kann Innenecken\n mit einem Radius herstellen, der nur geringf\u00fcgig gr\u00f6\u00dfer ist als der Radius an der Ecke der Senkelektrode.\n@@ -3139,15 +3139,15 @@\n Allgemeines\n Eine Art von Schnittstelle zur Kommunikation zwischen einem Computer und einem Menschen (in den meisten F\u00e4llen) \u00fcber die Manipulation von Symbolen und anderen Elementen\n (Widgets) auf einem Computerbildschirm.\n LinuxCNC\n Eine Anwendung, die dem Maschinenbediener einen grafischen Bildschirm pr\u00e4sentiert zur\n Bedienung der Maschine und des Steuerungsprogramms.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 75\n \n HAL\n Hardware-Abstraktionsschicht. Auf der h\u00f6chsten Ebene ist es einfach eine M\u00f6glichkeit, eine Reihe von Bausteinen zu laden und miteinander zu verbinden, um ein komplexes System zusammenzustellen. Viele der Bausteine sind Treiber f\u00fcr Hardwareger\u00e4te. HAL kann jedoch mehr als nur\n Hardwaretreiber konfigurieren.\n Pos1\n@@ -3183,15 +3183,15 @@\n Manuelle Dateneingabe (engl. Abk\u00fcrzung f\u00fcr Manual Data Input). Dies ist eine Betriebsart, bei\n der das Steuerger\u00e4t einzelne Zeilen des G-Codes ausf\u00fchrt, wie sie vom Bediener eingegeben\n werden.\n NIST\n das US Institut \u201dNationales Institut f\u00fcr Normung und Technologie\u201d (engl. Abkurzung f\u00fcr National Institute of Standards and Technology). Eine Einrichtung des Handelsministeriums der\n Vereinigten Staaten.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 75\n \n NML\n Die Neutral Message Language bietet einen Mechanismus f\u00fcr die Handhabung mehrerer Nachrichtentypen im selben Puffer sowie eine Vereinfachung der Schnittstelle f\u00fcr die Kodierung und\n Dekodierung von Puffern im neutralen Format und des Konfigurationsmechanismus.\n Vers\u00e4tze\n@@ -3230,15 +3230,15 @@\n LinuxCNC verwendet wurde, um Echtzeitleistung zu erreichen. Veraltet, ersetzt durch RTAI.\n RTAPI\n Eine portable Schnittstelle zu Echtzeitbetriebssystemen einschlie\u00dflich RTAI und POSIX pthreads\n mit Echtzeit-Erweiterungen.\n RS-274/NGC\n Der formale Name f\u00fcr die Sprache, die von LinuxCNC-Werkst\u00fcck-Programmen verwendet wird.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 68 / 75\n \n Servomotor\n Im Allgemeinen ein Motor, der \u00fcber Fehlererkennung die Korrektur der Position eines Stellglieds\n vornimmt. Auch ein Motor, der speziell f\u00fcr eine verbesserte Leistung in solchen Anwendungen\n ausgelegt ist.\n@@ -3273,15 +3273,15 @@\n Einheiten\n Siehe \u201dMaschineneinheiten\u201d, \u201dAnzeigeeinheiten\u201d, oder \u201dProgrammeinheiten\u201d.\n Ganzzahl ohne Vorzeichen\n 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.)\n Weltkoordinaten\n 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.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 69 / 75\n \n Kapitel 10\n \n Juristischer Abschnitt\n Die \u00dcbersetzungen dieser Datei im Quellbaum sind nicht rechtsverbindlich.\n@@ -3310,15 +3310,15 @@\n f\u00fcr freie Software ist.\n Wir haben diese Lizenz entworfen, um sie f\u00fcr Handb\u00fccher f\u00fcr freie Software zu verwenden, weil freie\n Software freie Dokumentation braucht: ein freies Programm sollte mit Handb\u00fcchern geliefert werden,\n welche die gleichen Freiheiten bieten wie die Software. Aber diese Lizenz ist nicht auf SoftwareHandb\u00fccher beschr\u00e4nkt; sie kann f\u00fcr jedes textliche Werk verwendet werden, unabh\u00e4ngig vom Thema\n oder ob es als gedrucktes Buch ver\u00f6ffentlicht wird. Wir empfehlen diese Lizenz in erster Linie f\u00fcr\n Werke, deren Zweck die Anleitung oder das Nachschlagen ist.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 70 / 75\n \n 1. ANWENDBARKEIT UND DEFINITIONEN\n Diese Lizenz gilt f\u00fcr jedes Handbuch oder andere Werk, das einen Hinweis des Urheberrechtsinhabers\n enth\u00e4lt, der besagt, dass es unter den Bedingungen dieser Lizenz verbreitet werden darf. Das \u201dDokument\u201d, unten, bezieht sich auf ein solches Handbuch oder Werk. Jedes Mitglied der \u00d6ffentlichkeit ist\n ein Lizenznehmer und wird als \u201dSie\u201d angesprochen.\n@@ -3352,15 +3352,15 @@\n oder nicht kommerziell, vorausgesetzt, dass diese Lizenz, die Urheberrechtsvermerke und der Lizenzvermerk, der besagt, dass diese Lizenz f\u00fcr das Dokument gilt, in allen Kopien wiedergegeben\n werden, und dass Sie keine weiteren Bedingungen zu denen dieser Lizenz hinzuf\u00fcgen. Sie d\u00fcrfen keine technischen Ma\u00dfnahmen anwenden, um das Lesen oder weitere Kopieren der von Ihnen erstellten\n oder verbreiteten Kopien zu behindern oder zu kontrollieren. Sie d\u00fcrfen jedoch eine Verg\u00fctung im\n Austausch f\u00fcr Kopien annehmen. Wenn Sie eine ausreichend gro\u00dfe Anzahl von Kopien verbreiten,\n m\u00fcssen Sie auch die Bedingungen in Abschnitt 3 einhalten.\n Sie k\u00f6nnen auch Kopien unter den oben genannten Bedingungen ausleihen und \u00f6ffentlich ausstellen.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 71 / 75\n \n 3. MASSENHAFTES KOPIEREN\n Wenn Sie mehr als 100 gedruckte Exemplare des Dokuments ver\u00f6ffentlichen und der Lizenzhinweis\n des Dokuments Umschlagtexte verlangt, m\u00fcssen Sie die Exemplare in Umschl\u00e4ge einlegen, die deutlich und lesbar alle diese Umschlagtexte enthalten: Vorderseitentexte auf dem vorderen Umschlag\n und R\u00fcckseitentexte auf dem hinteren Umschlag. Auf beiden Umschl\u00e4gen m\u00fcssen Sie au\u00dferdem deutlich und leserlich als Verleger dieser Exemplare ausgewiesen sein. Der vordere Umschlag muss den\n@@ -3398,15 +3398,15 @@\n bei. I. Behalten Sie den Abschnitt mit dem Titel Geschichte\u201d und seinen Titel bei und f\u00fcgen Sie\n 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\n mit dem Titel \u201dGeschichte\u201d in dem Dokument gibt, erstellen Sie einen, der den Titel, das Jahr,\n die Autoren und den Herausgeber des Dokuments angibt, wie auf der Titelseite angegeben, und\n f\u00fcgen Sie dann einen Punkt hinzu, der die ge\u00e4nderte Version beschreibt, wie im vorherigen Satz\n angegeben. J. Bewahren Sie den im Dokument angegebenen Netzwerkstandort, falls vorhanden,\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 72 / 75\n \n f\u00fcr den \u00f6ffentlichen Zugang zu einer transparenten Kopie des Dokuments auf, und ebenso die im\n Dokument angegebenen Netzwerkstandorte f\u00fcr fr\u00fchere Versionen, auf denen es basierte. Diese\n k\u00f6nnen im Abschnitt \u201dHistorie\u201d abgelegt werden. Sie k\u00f6nnen eine Netzwerkadresse f\u00fcr ein Werk\n weglassen, das mindestens vier Jahre vor dem Dokument selbst ver\u00f6ffentlicht wurde, oder wenn\n@@ -3446,15 +3446,15 @@\n You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that\n is included in the collection, provided that you follow the rules of this License for verbatim copying of\n each of the documents in all other respects.\n You may extract a single document from such a collection, and distribute it individually under this\n License, provided you insert a copy of this License into the extracted document, and follow this License\n in all other respects regarding verbatim copying of that document.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 73 / 75\n \n 7. AGGREGATION WITH INDEPENDENT WORKS\n A compilation of the Document or its derivatives with other separate and independent documents or\n works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified\n Version of the Document, provided no compilation copyright is claimed for the compilation. Such a\n@@ -3496,15 +3496,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Kapitel 11\n \n Index\n A\n Achse), 63\n Acme-Schraube, 63\n@@ -3578,15 +3578,15 @@\n Spindel, 68\n T\n TASK, 68\n Tk, 68\n \n 74 / 75\n \n-\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fEntwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Traverse Bewegung, 68\n U\n Umkehrspiel, 63\n Umkehrspiel-Kompensation, 63\n V\n Versatz, 67\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n LinuxCNC\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Inhaltsverzeichnis\n \n I Erste Schritte & Konfiguration\n \n@@ -118,15 +118,15 @@\n \n 1.3.3 Testen von LinuxCNC\n \n 9\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 1.3.4 LinuxCNC installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 10\n \n@@ -282,15 +282,15 @@\n \n 29\n \n 1.5.6 HAL \u00c4nderungen (Aktualisierungen f\u00fcr joints_axes 2.8.x) . . . . . . . . . . . . . . .\n \n 29\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 1.5.6.1 halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n@@ -452,15 +452,15 @@\n \n 40\n \n 1.5.14.7Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 40\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 1.5.15\u00c4nderungen nach 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 40\n \n@@ -615,15 +615,15 @@\n \n 2.3.1 Trajectory Control\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 58\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2.3.1.1 Trajectory Planning\n \n vi\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n@@ -787,15 +787,15 @@\n \n 69\n \n 2.5.2.12Werkzeugwechsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 69\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 2.5.2.13Paletten-Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 69\n \n@@ -955,15 +955,15 @@\n \n 87\n \n 2.7.7.3 Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . .\n \n 87\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n viii\n \n 2.7.7.4 Beispiel HAL-Code f\u00fcr Hypersensing . . . . . . . . . . . . . . . . . . . . . . .\n \n 88\n \n@@ -1097,15 +1097,15 @@\n 3.1.1 Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100\n 3.1.2 Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101\n 3.1.3 Grundlegende Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102\n 3.1.4 Latenz-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103\n 3.1.5 Einrichtung der parallelen Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . 105\n 3.1.6 Einrichtung des zweiten parallelen Ports . . . . . . . . . . . . . . . . . . . . . . . . . . 106\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ix\n \n 3.1.7 Achsenkonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107\n 3.1.7.1 Bestimmen der maximalen Geschwindigkeit . . . . . . . . . . . . . . . . . . . 109\n 3.1.7.2 Bestimmen der maximalen Beschleunigung . . . . . . . . . . . . . . . . . . . 110\n 3.1.8 Spindel-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111\n@@ -1155,15 +1155,15 @@\n . . . . . . . . . . . . . . . . . . . . . . 149\n \n 4.1.3.1 Basiszeitraum (engl. base period) . . . . . . . . . . . . . . . . . . . . . . . . . 149\n 4.1.3.2 Schritt-Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150\n 4.1.4 Servosysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150\n 4.1.4.1 Grundbetrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n x\n \n 4.1.4.2 Proportionaler Ausdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152\n 4.1.4.3 Integraler Begriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152\n 4.1.4.4 Differenzierender-Anteil (D-Anteil) . . . . . . . . . . . . . . . . . . . . . . . . 153\n 4.1.4.5 Schleifenabstimmung\n@@ -1219,15 +1219,15 @@\n \n 4.4.2.6 [TASK] Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174\n 4.4.2.7 [HAL] Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174\n 4.4.2.8 [HALUI] Abschnitt\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4.4.2.9 [APPLICATIONS] Abschnitt\n 4.4.2.10Abschnitt [TRAJ]\n \n xi\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176\n@@ -1294,15 +1294,15 @@\n \n 4.6.5 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 4.7 Konfiguration der Drehmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 4.7.1 Standard-Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 4.7.2 INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 4.8 Stepper Schnellstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xii\n \n 4.8.1 Latenz-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n 4.8.4 Maschineninformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n@@ -1340,15 +1340,15 @@\n 5.1.1.3 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.1.1.4 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.1.1.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.1.2 HAL-Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217\n 5.1.3 HAL-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219\n 5.1.4 Timing-Probleme in HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiii\n \n 5.2 HAL-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220\n 5.2.1 HAL-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n@@ -1410,15 +1410,15 @@\n 5.4.2.3 Die RTAPI-Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235\n 5.4.3 Ein einfaches Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235\n 5.4.3.1 Laden einer Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235\n 5.4.3.2 Untersuchung der HAL\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiv\n \n 5.4.3.3 Echtzeitcode zum Laufen bringen . . . . . . . . . . . . . . . . . . . . . . . . . 237\n 5.4.3.4 \u00c4ndern von Parametern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238\n 5.4.3.5 Speichern der HAL-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 239\n 5.4.3.6 Halrun beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239\n@@ -1469,15 +1469,15 @@\n 5.6.2 Spindel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268\n 5.6.2.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268\n 5.6.3 Achs- und Gelenkpins und Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270\n 5.6.4 iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270\n 5.6.4.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270\n 5.6.5 INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xv\n \n 5.6.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271\n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272\n 5.7.1 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272\n 5.7.1.1 Benutzerschnittstellen (Userspace) . . . . . . . . . . . . . . . . . . . . . . . . 272\n@@ -1535,15 +1535,15 @@\n 5.8.5.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297\n 5.8.6 Entprellung (engl. debounce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.8.6.2 Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvi\n \n 5.8.6.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.8.7 Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.8.7.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299\n 5.8.7.2 Parameter\n@@ -1588,15 +1588,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n \n 5.10HALTCL-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.10.1Kompatibilit\u00e4t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.10.2Haltcl-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvii\n \n 5.10.3Haltcl INI-Datei-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315\n 5.10.4Konvertieren von HAL-Dateien in Tcl-Dateien . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.10.5Haltcl Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.10.6Haltcl Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n@@ -1655,15 +1655,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323\n \n 5.11.6.22\n stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323\n 5.11.6.23\n stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xviii\n \n 5.11.6.24\n set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323\n 5.11.7Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323\n 5.11.8System-Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324\n@@ -1702,15 +1702,15 @@\n 5.13.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331\n 5.13.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 5.13.5Sim-Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 5.13.6simulate_probe (Sonde simulieren) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n 5.13.7HAL Histogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334\n 5.13.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xix\n \n 6 Hardware-Treiber\n \n 338\n \n@@ -1770,15 +1770,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n \n 6.3.6 Status-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xx\n \n 6.3.6.4 Booten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.3.6.5 Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.3.7 RS485 E/A-Erweiterungsmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.3.7.1 Relais-Ausgangsmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362\n@@ -1835,15 +1835,15 @@\n 6.5.14.2Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377\n \n 6.5.14.3Ausgangsparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n 6.5.15Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxi\n \n 6.5.15.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n 6.5.15.2Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379\n@@ -1903,15 +1903,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394\n \n 6.8.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n 6.9 Opto22 Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n 6.9.1 Die Adapterkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n 6.9.2 Der Treiber (engl. driver) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxii\n \n 6.9.3 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396\n 6.9.4 Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396\n@@ -1959,15 +1959,15 @@\n 6.13.2Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n 6.13.3Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411\n \n 6.13.4Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiii\n \n 6.14Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412\n 6.14.1Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412\n 6.14.2Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412\n 6.14.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412\n@@ -2011,15 +2011,15 @@\n 8.1 ClassicLadder Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428\n 8.1.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428\n 8.1.2 Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428\n 8.1.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429\n 8.1.4 Grundlegende selbsthaltende Ein-Aus-Schaltung . . . . . . . . . . . . . . . . . . . . . 430\n 8.2 ClassicLadder / Kontaktplan Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . 431\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiv\n \n 8.2.1 SPS / Kontaktplan Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431\n 8.2.2 Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431\n 8.2.3 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431\n 8.2.3.1 Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432\n@@ -2064,15 +2064,15 @@\n 8.2.12.2Hinzuf\u00fcgen der Kontaktplanlogik . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 8.3 ClassicLadder Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467\n 8.3.1 Umlaufender (engl. wrapping) Z\u00e4hler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467\n 8.3.2 Extra-Impulse zur\u00fcckweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467\n 8.3.3 Externer Notaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468\n 8.3.4 Beispiel f\u00fcr Timer/Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxv\n \n 9 Fortgeschrittene Themen\n \n 473\n \n@@ -2116,15 +2116,15 @@\n 9.3.7 Kundenspezifische Kinematik-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 516\n 9.3.8 Abbildungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517\n 9.3.9 VERWEISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519\n 9.4 Schaltbare Kinematik (switchkins)\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvi\n \n 9.4.1 Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519\n 9.4.2 Schaltbare Kinematik-Module\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520\n@@ -2168,15 +2168,15 @@\n 9.6.3.1 Die REMAP-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533\n 9.6.3.2 Useful REMAP option combinations . . . . . . . . . . . . . . . . . . . . . . . . 534\n 9.6.3.3 The argspec parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534\n 9.6.4 Aktualisieren einer bestehenden Konfiguration f\u00fcr die Neuzuordnung . . . . . . . . 538\n 9.6.5 Codes f\u00fcr den Wechsel des Remapping-Werkzeugs: T, M6, M61 . . . . . . . . . . . . 538\n 9.6.5.1 \u00dcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvii\n \n 9.6.5.2 Verstehen der Rolle von \u201diocontrol\u201d mit neu zugeordneten Werkzeugwechselcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539\n 9.6.5.3 Specifying the M6 replacement\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 540\n@@ -2213,15 +2213,15 @@\n 9.6.12.1NGC procedure call environment during remaps . . . . . . . . . . . . . . . . 558\n 9.6.12.2Nested remapped codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558\n 9.6.12.3Sequence number during remaps . . . . . . . . . . . . . . . . . . . . . . . . . 558\n 9.6.12.4Debugging-Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558\n 9.6.12.5Fehlersuche in eingebettetem Python-Code . . . . . . . . . . . . . . . . . . . 558\n 9.6.13Axis Preview and Remapped code execution . . . . . . . . . . . . . . . . . . . . . . . . 560\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxviii\n \n 9.6.14Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560\n 9.6.14.1Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 560\n 9.6.14.2Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 561\n 9.6.14.3Derzeit nicht zugewiesene M-Codes: . . . . . . . . . . . . . . . . . . . . . . . 564\n@@ -2264,15 +2264,15 @@\n 9.8 Eigenst\u00e4ndiger Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 9.8.1 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 9.8.2 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 9.9 Offsets der externen Achse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 9.9.1 INI File Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 9.9.2 HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxix\n \n 9.9.2.1 Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 9.9.2.2 Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 9.9.3 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 9.9.3.1 Offset-Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n@@ -2319,15 +2319,15 @@\n \n 10.1.3AXIS Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591\n 10.1.3.1Men\u00fcpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591\n 10.1.3.2Schaltfl\u00e4chen der Symbolleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . 595\n 10.1.3.3Grafischer Anzeigebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596\n 10.1.3.4Textanzeigebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxx\n \n 10.1.3.5Manuelle Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598\n 10.1.3.6MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601\n 10.1.3.7Vorschub Neufestsetzung (engl. override) . . . . . . . . . . . . . . . . . . . . 601\n 10.1.3.8Spindeldrehzahl-Anpassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601\n@@ -2396,15 +2396,15 @@\n 10.1.14.9\n Neue HAL-Komponente und Pins erstellen . . . . . . . . . . . . . . . . . . . . 617\n 10.1.14.10\n Tabs wechseln mit HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617\n 10.1.14.11\n Hinzuf\u00fcgen einer GOTO Referenzpunkt (engl. Home)-Taste . . . . . . . . . 617\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxi\n \n 10.1.14.12\n Button zum manuellen Rahmen hinzuf\u00fcgen . . . . . . . . . . . . . . . . . . . 618\n 10.1.14.13\n Interne Variablen lesen\n@@ -2456,15 +2456,15 @@\n \n 10.2.6.1Werkzeugmess-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645\n 10.2.6.2\u00c4nderungen an der INI-Datei f\u00fcr Werkzeugmessungen . . . . . . . . . . . . 646\n 10.2.6.3Ben\u00f6tigte Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646\n 10.2.6.4Ben\u00f6tigte HAL-Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647\n 10.2.7Die Einstellungsseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxii\n \n 10.2.7.1Erscheinungsbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648\n 10.2.7.2Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653\n 10.2.7.3Erweiterte Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656\n 10.2.8Icon Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658\n@@ -2511,15 +2511,15 @@\n 10.4.3Erstellen eines einfachen benutzerdefinierten Bildschirms . . . . . . . . . . . . . . . 675\n 10.4.4Beispiel f\u00fcr eine Handler-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677\n 10.4.4.1Hinzuf\u00fcgen von Funktionen f\u00fcr Tastenkombinationen . . . . . . . . . . . . . 678\n 10.4.4.2LinuxCNC-Status Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679\n 10.4.4.3Jogging-Tasten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679\n 10.4.5Gscreen Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiii\n \n 10.4.6INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681\n 10.4.7Benutzerdialog-Meldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682\n 10.4.7.1Kopieren Sie die Datei \u201dStock Handler/Glade\u201d zur Bearbeitung . . . . . . . 683\n 10.5QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n@@ -2581,15 +2581,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698\n \n 10.5.14.1\n Werkst\u00fcckh\u00f6he Antasten\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiv\n \n 10.5.14.2\n Werkzeugmess-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702\n 10.5.14.3\n \u00c4nderungen an der INI-Datei f\u00fcr Werkzeugmessungen . . . . . . . . . . . . 702\n@@ -2661,15 +2661,15 @@\n 10.6.5.1NGCGUI in AXIS einbetten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716\n 10.6.5.2PyNGCGUI als GladeVCP-Registerkarte in ein GUI einbetten . . . . . . . . 717\n 10.6.5.3Zus\u00e4tzliche INI-Datei-Elemente, die f\u00fcr NGCGUI oder PyNGCGUI erforderlich sind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718\n 10.6.5.4Truetype Tracer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719\n 10.6.5.5INI File Path Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720\n 10.6.5.6Zusammenfassung der Details der INI-Datei f\u00fcr die Verwendung von NGCGUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxv\n \n 10.6.6Dateianforderungen f\u00fcr NGCGUI-Kompatibilit\u00e4t . . . . . . . . . . . . . . . . . . . . . 723\n 10.6.6.1Anforderungen an eine G-code-Unterroutine (.ngc) in einer Datei\n \n . . . . . 723\n@@ -2719,15 +2719,15 @@\n 10.8.5.6Erstmalige Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747\n 10.8.6Migrating to QtPlasmac From PlasmaC (AXIS or GMOCCAPY)\n \n . . . . . . . . . . . . 750\n \n 10.8.6.1Quick Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvi\n \n 10.8.6.2Neue Basis-Konfigurationsmethode . . . . . . . . . . . . . . . . . . . . . . . . 752\n 10.8.7Other QtPlasmaC Setup Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . 753\n 10.8.7.1Lowpass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753\n 10.8.7.2Contact Bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754\n@@ -2776,15 +2776,15 @@\n 10.8.9.20\n Initial Height Sense (IHS) Skip . . . . . . . . . . . . . . . . . . . . . . . . . . . 792\n 10.8.9.21\n Sondieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792\n 10.8.9.22\n Offset Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvii\n \n 10.8.9.23\n Cut Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793\n 10.8.9.24\n Hole Cutting - Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794\n@@ -2859,15 +2859,15 @@\n 10.8.15\n QtPlasmaC Fortgeschrittene Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n 10.8.15.1\n Benutzerdefinierte Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n 10.8.15.2\n Peripheral Offsets (Laser, Camera, Scribe, Offset Probe) . . . . . . . . . . . 828\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxviii\n \n 10.8.15.3\n Keep Z Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830\n 10.8.15.4\n Externe HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830\n@@ -2925,15 +2925,15 @@\n 10.9.2.1INI-Datei Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849\n 10.9.2.2Kommandozeilen-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850\n 10.9.2.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850\n 10.9.3MDRO Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850\n 10.9.4Index-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851\n 10.9.5Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxix\n \n 11 G-Code Programmierung\n \n 852\n \n@@ -2975,15 +2975,15 @@\n 11.3.4Eigenst\u00e4ndige Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872\n 11.4G-Code \u00dcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873\n 11.4.1\u00dcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873\n 11.4.2Format einer Zeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874\n 11.4.2.1/: Block l\u00f6schen (engl. block delete) . . . . . . . . . . . . . . . . . . . . . . . . 874\n 11.4.2.2Zeilennummer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xl\n \n 11.4.2.3Wort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874\n 11.4.2.4Nummern(Nummern)\n 11.4.3Parameter\n \n@@ -3050,15 +3050,15 @@\n 11.5.2G-Code-Kurz\u00fcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n 11.5.3G0 Eilgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898\n 11.5.3.1Eilgangs-Geschwindigkeitsrate . . . . . . . . . . . . . . . . . . . . . . . . . . . 898\n 11.5.4G1 Lineare Bewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898\n 11.5.5G2, G3 Bogenbewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899\n 11.5.5.1B\u00f6gen durch ihr Zentrum beschrieben . . . . . . . . . . . . . . . . . . . . . . 900\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xli\n \n 11.5.5.2Beispiele f\u00fcr Center-Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902\n 11.5.5.3B\u00f6gen im Radiusformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903\n 11.5.6G4 Verweilzeit (engl. Dwell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904\n 11.5.7G5 Kubischer Spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904\n@@ -3136,15 +3136,15 @@\n 11.5.40\n G73 Bohrzyklus mit Spanbrecher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925\n 11.5.41\n G74 Linksh\u00e4ndiger Gewindeschneidzyklus mit Verweilzeit . . . . . . . . . . . . . . . 926\n 11.5.42\n G76 Gewindeschneidzyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlii\n \n 11.5.43\n G80-G89 Canned Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929\n 11.5.43.1\n Gel\u00e4ufige Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930\n@@ -3234,15 +3234,15 @@\n 11.6.6.2Werkzeugwechsler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948\n 11.6.7M7, M8, M9 K\u00fchlmittelsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948\n 11.6.8M19 Spindel Orientierung (engl. orient spindle) . . . . . . . . . . . . . . . . . . . . . 949\n 11.6.9M48, M49 Geschwindigkeits- und Vorschub-Override-Steuerung . . . . . . . . . . . 950\n 11.6.10\n M50 Vorschub-Neufestsetzungs-Steuerung (engl. feed override control) . . . . . . 950\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliii\n \n 11.6.11\n M51 Spindeldrehzahl-Neufestsetzuung (engl. override) Steuerung . . . . . . . . . . 950\n 11.6.12\n M52 Adaptive Vorschubregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950\n@@ -3307,15 +3307,15 @@\n 11.9.1Beispiele f\u00fcr eine Fr\u00e4smaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967\n 11.9.1.1Fr\u00e4sen von Spiralbohrungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967\n 11.9.1.2Schlitzen (engl. slotting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967\n 11.9.1.3Rastersonde (engl. grid probe) . . . . . . . . . . . . . . . . . . . . . . . . . . . 968\n 11.9.1.4Intelligente Sonde (engl. smart probe) . . . . . . . . . . . . . . . . . . . . . . 969\n 11.9.1.5Werkzeugl\u00e4ngen-Messtaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliv\n \n 11.9.1.6Lochsonde (engl. hole probe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970\n 11.9.1.7Fr\u00e4serkompensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970\n 11.9.2Beispiele f\u00fcr Drehmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971\n 11.9.2.1Gewinde-Drehen (engl. threading) . . . . . . . . . . . . . . . . . . . . . . . . . 971\n@@ -3383,15 +3383,15 @@\n 12.1PyVCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978\n 12.1.1Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978\n 12.1.2Panel Konstruktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979\n 12.1.3Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980\n 12.1.4AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980\n 12.1.4.1Beispiel-Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlv\n \n 12.1.5Eigenst\u00e4ndig (engl. stand alone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982\n 12.1.6Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n 12.1.6.1Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n 12.1.6.2Allgemeine Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n@@ -3436,15 +3436,15 @@\n 12.3.3.3Testen eines Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021\n 12.3.3.4Vorbereiten der HAL-Befehlsdatei . . . . . . . . . . . . . . . . . . . . . . . . . 1021\n 12.3.3.5Einbindung in AXIS, wie PyVCP . . . . . . . . . . . . . . . . . . . . . . . . . . 1021\n 12.3.3.6Einbetten als Registerkarte (engl. tab) . . . . . . . . . . . . . . . . . . . . . . 1022\n 12.3.3.7Integration in Touchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023\n 12.3.4GladeVCP-Befehlszeilenoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvi\n \n 12.3.5Den GladeVCP-Startvorgang verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024\n 12.3.6HAL Widget-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025\n 12.3.6.1Benennung von Widgets und HAL-Pins . . . . . . . . . . . . . . . . . . . . . . 1026\n 12.3.6.2Python-Attribute und Methoden von HAL Widgets . . . . . . . . . . . . . . . 1026\n@@ -3505,15 +3505,15 @@\n 12.3.7.1VCP Action-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061\n 12.3.7.2VCP Action Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061\n 12.3.7.3VCP ToggleAction-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062\n 12.3.7.4Die Action_MDI Toggle und Action_MDI Widgets . . . . . . . . . . . . . . . . 1062\n 12.3.7.5Ein einfaches Beispiel: Ausf\u00fchren eines MDI-Befehls bei Button-Druck . . 1063\n 12.3.7.6Parameter\u00fcbergabe mit Action_MDI- und ToggleAction_MDI-Widgets . . . 1063\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvii\n \n 12.3.7.7Ein fortgeschrittenes Beispiel: \u00dcbergabe von Parametern an eine O-WortUnterroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064\n 12.3.7.8Vorbereitung einer MDI-Aktion und anschlie\u00dfendes Aufr\u00e4umen . . . . . . . 1064\n 12.3.7.9Verwendung des LinuxCNC Stat-Objekts zum Umgang mit Status\u00e4nderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065\n 12.3.8GladeVCP-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066\n@@ -3568,15 +3568,15 @@\n 12.5.2\u00dcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088\n 12.5.2.1QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089\n 12.5.2.2INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089\n 12.5.2.3Qt Designer UI Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090\n 12.5.2.4Handler-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091\n 12.5.2.5Bibliotheken Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlviii\n \n 12.5.2.6Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091\n 12.5.2.7Lokale Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092\n 12.5.2.8Ver\u00e4nderung mitglieferter Bildschirmmasken . . . . . . . . . . . . . . . . . . 1092\n 12.5.3VCP-Paneele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093\n@@ -3614,15 +3614,15 @@\n 12.6.1.3test_button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.6.1.4test_led . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116\n 12.6.1.5test_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116\n 12.6.1.6cam_align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.6.1.7sim_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119\n 12.6.1.8tool_dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlix\n \n 12.6.2vismach 3D Simulation Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121\n 12.6.2.1QtVCP vismach_mill_xyz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121\n 12.6.2.2QtVCP vismach_scara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122\n 12.6.2.3QtVCP vismach_millturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123\n@@ -3675,15 +3675,15 @@\n 12.7.2.11\n StatusLabel - Anzeige-Widget f\u00fcr Controller-Variablen-Zustandsbeschriftung1148\n 12.7.2.12\n StatusImageSwitcher - Controller Status Image Switcher . . . . . . . . . . 1150\n 12.7.2.13\n StatusStacked - Mode Status Display Switching Widget . . . . . . . . . . . 1152\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n l\n \n 12.7.2.14\n JogIncrements - Jog Increments Value Selection Widget . . . . . . . . . . . 1152\n 12.7.2.15\n ScreenOption - General Options Setting widget . . . . . . . . . . . . . . . . 1152\n@@ -3751,15 +3751,15 @@\n 12.7.3.12\n MachineLogDialog - Machine and Debugging Logs Dialog Widget . . . . . 1181\n 12.7.4Other Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181\n 12.7.4.1NurbsEditor - NURBS Editing Widget . . . . . . . . . . . . . . . . . . . . . . 1182\n 12.7.4.2JoyPad - 5 button D-pad Widget . . . . . . . . . . . . . . . . . . . . . . . . . . 1182\n 12.7.5BaseClass/Mixin-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n li\n \n 12.7.5.1IndicatedPushButtons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185\n 12.7.6Import-Only Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188\n 12.7.6.1Automatische H\u00f6he . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188\n 12.7.6.2G-Code Dienstprogramm\n@@ -3799,15 +3799,15 @@\n 12.8.8.1Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199\n 12.8.9Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200\n 12.8.9.1Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200\n 12.8.9.2Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201\n 12.8.10\n Notify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lii\n \n 12.8.10.1\n Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202\n 12.8.11\n Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202\n@@ -3870,15 +3870,15 @@\n 12.9.11\n Grundstruktur eines QtVismach-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . 1216\n 12.9.12\n Builtin Vismach Sample Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217\n 12.10\n QtVCP: Building Custom Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liii\n \n 12.10.1\n \u00dcbersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218\n 12.10.1.1\n Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218\n@@ -3959,15 +3959,15 @@\n Builtin Locations\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249\n \n 12.12.3\n QtVCP vom Startup bis zum Herunterfahren . . . . . . . . . . . . . . . . . . . . . . . 1249\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liv\n \n 12.12.3.1\n QtVCP Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249\n 12.12.3.2\n QtVCP Herunterfahren (engl. shutdown) . . . . . . . . . . . . . . . . . . . . . 1249\n@@ -4026,15 +4026,15 @@\n 13.3.4.6Referenzfahrt (engl. homing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266\n 13.3.4.7Schmiermittel (engl. lube) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266\n 13.3.4.8Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266\n 13.3.4.9Max. Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266\n 13.3.4.10\n MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lv\n \n 13.3.4.11\n Gelenk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1267\n 13.3.4.12\n Gelenk-Joggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268\n@@ -4089,15 +4089,15 @@\n \n . . . . . . . . . . . . . . . . . . . . 1291\n \n 13.6.3Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292\n 13.6.4Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297\n 13.6.5Bekannte Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lvi\n \n 13.7Vismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300\n 13.7.1Start the script\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302\n@@ -4140,23 +4140,23 @@\n 17.1.1Namens\u00e4nderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321\n 17.1.2Zus\u00e4tzliche Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321\n \n 18 Index\n \n 1322\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Teil I\n \n Erste Schritte & Konfiguration\n \n 1 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 1327\n \n Kapitel 1\n \n Erste Schritte mit LinuxCNC\n 1.1 \u00dcber LinuxCNC\n@@ -4178,15 +4178,15 @@\n Konfiguration f\u00fcr Ihre Maschine\n \u2013 eine mit Leiterdiagrammen programmierbare Software-SPS\n \u2022 Es bietet keine Zeichnungsfunktionen (CAD - Computer Aided Design) oder G-Code-Generierung\n aus der Zeichnung (CAM - Computer Automated Manufacturing).\n \u2022 Er kann bis zu 9 Achsen gleichzeitig bewegen und unterst\u00fctzt eine Vielzahl von Schnittstellen.\n \u2022 Die Steuerung kann echte Servos (analog oder PWM) mit der Feedback-Schleife durch die LinuxCNCSoftware auf dem Computer, oder Open-Loop mit Schritt-Servos oder Schrittmotoren betreiben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 1327\n \n \u2022 Zu den Funktionen der Bewegungssteuerung geh\u00f6ren: Fr\u00e4serradius- und L\u00e4ngenkompensation, auf\n eine bestimmte Toleranz begrenzte Bahnabweichung, Gewindedrehen, synchronisierte Achsenbewegung, adaptiver Vorschub, Vorschub\u00fcbersteuerung durch den Bediener und konstante Geschwindigkeitsregelung.\n \u2022 Unterst\u00fctzung f\u00fcr nicht-kartesische Bewegungssysteme wird \u00fcber benutzerdefinierte Kinematikmodule bereitgestellt. Zu den verf\u00fcgbaren Architekturen geh\u00f6ren Hexapoden (Stewart-Plattformen\n und \u00e4hnliche Konzepte) und Systeme mit Drehgelenken f\u00fcr die Bewegung wie PUMA- oder SCARARoboter.\n@@ -4215,15 +4215,15 @@\n f\u00fcr beide Seiten Zeit spart.\n Dateien teilen\n Die g\u00e4ngigste Art, Dateien im IRC auszutauschen, besteht darin, die Datei auf einen der folgenden oder einen \u00e4hnlichen Dienst hochzuladen und den Link einzuf\u00fcgen:\n \u2022 For text: https://pastebin.com/, http://pastie.org/, https://gist.github.com/\n \u2022 For pictures: https://imagebin.org/, https://imgur.com/, https://bayimg.com/\n \u2022 For files: https://filedropper.com/, https://filefactory.com/, https://1fichier.com/\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 1327\n \n 1.1.3.2 Mailingliste\n Eine Internet-Mailingliste ist eine M\u00f6glichkeit, Fragen zu stellen, die jeder auf dieser Liste sehen und\n nach Belieben beantworten kann. Auf einer Mailingliste k\u00f6nnen Sie Ihre Fragen besser stellen als\n im IRC, aber die Antworten dauern l\u00e4nger. Kurz gesagt: Sie senden eine Nachricht an die Liste und\n@@ -4254,15 +4254,15 @@\n Additional information is on the LinuxCNC Wiki site: Hardware Requirements\n LinuxCNC und Debian Linux sollte einigerma\u00dfen gut auf einem Computer mit den folgenden minimalen Hardware-Spezifikationen laufen. Diese Zahlen sind nicht das absolute Minimum, sondern wird\n eine angemessene Leistung f\u00fcr die meisten Stepper-Systeme geben.\n \u2022 700 MHz x86-Prozessor (1,2 GHz x86-Prozessor empfohlen) oder Raspberry Pi 4 oder besser.\n \u2022 Um LinuxCNC 2.8 und Debian Buster von der LiveCD auszuf\u00fchren, sollte das System 64-Bit-f\u00e4hig\n sein.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 1327\n \n \u2022 512 MB oder mehr RAM\n \u2022 8 GB Festplatte\n \u2022 Grafikkarte mit einer Aufl\u00f6sung von mindestens 1024x768, die nicht die propriet\u00e4ren NVidia- oder\n ATI-Treiber verwendet. Moderne Onboard-Grafikchips\u00e4tze scheinen im Allgemeinen in Ordnung zu\n@@ -4294,15 +4294,15 @@\n systems using the Mesa ethernet-connected hardware driver cards. In general preempt-rt has the\n worst latency of the available systems, but there are exceptions.\n 1.2.2.2 RTAI mit linuxcnc-Paket\n RTAI ist seit vielen Jahren die Hauptst\u00fctze der LinuxCNC-Distributionen. Es wird in der Regel die\n beste Echtzeit-Leistung in Bezug auf niedrige Latenz, aber m\u00f6glicherweise schlechtere PeripherieUnterst\u00fctzung und nicht so viele Bildschirmaufl\u00f6sungen haben. Ein RTAI-Kernel ist im LinuxCNCPaket-Repository verf\u00fcgbar. Wenn Sie aus dem Live/Install-Image installiert haben, wird der Wechsel\n zwischen Kernel und LinuxCNC-Flavour in [Installing-RTAI] beschrieben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 1327\n \n 1.2.2.3 Xenomai mit linuxcnc-uspace Paket\n Xenomai wird auch unterst\u00fctzt, aber Sie m\u00fcssen den Kernel finden oder bauen und LinuxCNC aus\n den Quellen kompilieren, um es zu nutzen.\n 1.2.2.4 RTAI mit linuxcnc-uspace-Paket\n@@ -4332,15 +4332,15 @@\n Festplatte Ihres Computers zu installieren).\n Der Prozesses sieht grob umrissen wie folgt aus:\n 1. Laden Sie das Live/Installations-Image herunter.\n 2. Schreiben Sie das Image auf ein USB-Speicherger\u00e4t oder eine DVD.\n 3. Booten Sie das Live-System, um LinuxCNC zu testen.\n 4. Booten Sie das Installationsprogramm, um LinuxCNC zu installieren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 1327\n \n 1.3.1 Das Festplattenabbild (engl. kurz image) herunterladen\n In diesem Abschnitt werden einige Methoden zum Herunterladen des Live/Install Image beschrieben.\n 1.3.1.1 Normales Herunterladen\n F\u00fcr x86-PCs laden Sie die Live/Installations-CD herunter, indem Sie hier klicken:\n@@ -4371,15 +4371,15 @@\n \n zsync unter Windows Es gibt eine Windows-Portierung von zsync. Sie funktioniert als Konsolenanwendung. Sie kann heruntergeladen werden von:\n https://www.assembla.com/spaces/zsync-windows/documents\n 1.3.1.3 \u00dcberpr\u00fcfen des Abbilds\n (Dieser Schritt ist nicht erforderlich, wenn Sie zsync verwendet haben)\n 1. \u00dcberpr\u00fcfen Sie nach dem Herunterladen die Pr\u00fcfsumme des Bildes, um die Integrit\u00e4t sicherzustellen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 1327\n \n md5sum linuxcnc-2.8.4-buster.iso\n \n oder\n sha256sum linuxcnc-2.8.4-buster.iso\n@@ -4414,15 +4414,15 @@\n 2. Stecken Sie den USB-Stick ein und notieren Sie sich den Namen der neuen Festplatte, die angezeigt wird, z. B. /dev/disk5\n 3. trennen Sie den USB-Anschluss. Die oben gefundene Zahl sollte anstelle des N ersetzt werden\n diskutil unmountDisk /dev/diskN\n \n 4. \u00dcbertragen Sie die Daten mit dd, wie oben f\u00fcr Linux beschrieben. Beachten Sie, dass der Datentr\u00e4gername ein \u201dr\u201d am Anfang hat\n sudo dd if=/path-to.iso of=/dev/rdiskN bs=1m\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 1327\n \n 5. Bitte beachten Sie, dass dieser Vorgang sehr lange dauern kann und dass Sie w\u00e4hrend des Vorgangs keine R\u00fcckmeldung erhalten.\n Schreiben des Abbilds auf eine DVD unter Linux\n 1. Legen Sie einen DVD-Rohling in Ihren Brenner ein. Ein Fenster \u201dCD/DVD Creator\u201d oder \u201dDisc-Typ\n ausw\u00e4hlen\u201d wird angezeigt. Schlie\u00dfen Sie es, da wir es nicht verwenden werden.\n@@ -4451,15 +4451,15 @@\n Sobald der Computer hochgefahren ist, k\u00f6nnen Sie LinuxCNC ausprobieren, ohne es zu installieren.\n Sie k\u00f6nnen keine benutzerdefinierten Konfigurationen erstellen oder \u00e4ndern die meisten Systemeinstellungen in einer Live-Sitzung, aber Sie k\u00f6nnen (und sollten) den Latenz-Test durchf\u00fchren.\n Um LinuxCNC auszuprobieren: W\u00e4hlen Sie aus dem Men\u00fc Anwendungen/CNC den Eintrag LinuxCNC.\n Es \u00f6ffnet sich ein Dialogfeld, aus dem Sie eine von vielen Beispielkonfigurationen ausw\u00e4hlen k\u00f6nnen.\n An diesem Punkt ist es nur wirklich sinnvoll, eine \u201dsim\u201d Konfiguration zu w\u00e4hlen. Einige der Beispielkonfigurationen enthalten auf dem Bildschirm 3D simulierte Maschinen, suchen Sie nach \u201dVismach\u201d,\n um diese zu sehen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 1327\n \n Um festzustellen, ob Ihr Computer f\u00fcr die Erzeugung von Software-Schrittimpulsen geeignet ist, f\u00fchren Sie den Latenztest wie folgt aus: here.\n Zum Zeitpunkt des Schreibens der Live-Image ist nur mit dem preempt-rt Kernel und einem passenden LinuxCNC verf\u00fcgbar. Auf mancher Hardware bietet dies m\u00f6glicherweise keine ausreichende\n Latenzzeit. Es gibt eine experimentelle Version, die den RTAI-Echtzeit-Kernel verwendet, der oft eine\n bessere Latenzzeit bietet.\n@@ -4524,15 +4524,15 @@\n \n Maschinensteuerung\n und -simulation\n Maschinensteuerung\n (bekannte\n Probleme)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Distribution\n \n Architektur\n \n Kernel\n \n@@ -4628,15 +4628,15 @@\n exit. While running the system appears to be stable. But should nevertheless be considered\n experimental at this point.\n \n Anmerkung\n If you decide to use the RTAI 5.2 kernel and see a problem outside the circumstances described\n above, then please report it immediately to the project developers.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 1327\n \n 1.3.7.1 Installation auf Debian Buster (mit Preempt-RT-Kernel)\n \n 1. Install Debian Buster (Debian 10), amd64 version. You can download the installer here: https://www.deb\n releases/buster/ .\n@@ -4677,15 +4677,15 @@\n \n 8. Installieren Sie uspace (vor der Installation von uspace kann ein Neustart erforderlich sein)\n sudo apt-get install linuxcnc-uspace\n \n 9. Optional k\u00f6nnen Sie Mesaflash installieren, wenn Sie eine Mesa-Karte verwenden.\n sudo apt install mesaflash\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 1327\n \n 1.3.7.2 Installation unter Debian Buster (mit experimentellem RTAI-Kernel)\n \n Warnung\n This kernel has known stability problems. It appears to run reliably once LinuxCNC is loaded.\n@@ -4720,15 +4720,15 @@\n 3. Add the LinuxCNC Archive Signing Key to your apt keyring.\n # Alternativer Schl\u00fcsselserver: keyserver.ubuntu.com\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n \n 4. F\u00fcgen Sie das apt-Repository hinzu:\n echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee /etc/apt/sources. \u2190list.d/linuxcnc.list\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 1327\n \n 5. Aktualisieren Sie die Paketliste von linuxcnc.org\n sudo apt-get update\n \n 6. den Echtzeit-Kernel installieren\n@@ -4767,15 +4767,15 @@\n 8. Starten Sie neu und vergewissern Sie sich, dass Sie mit dem rtai-Kernel booten. Wenn Sie sich\n anmelden, stellen Sie sicher, dass der Kernel-Name 3.4-9-rtai-686-pae lautet.\n uname -r\n \n 9. Ausf\u00fchren\n sudo apt-get install linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 1327\n \n 1.4 Ausf\u00fchren von LinuxCNC\n 1.4.1 Aufrufen von LinuxCNC\n Nach der Installation startet LinuxCNC wie jedes andere Linux-Programm: F\u00fchren Sie es aus dem\n terminal aus, indem Sie den Befehl linuxcnc eingeben, oder w\u00e4hlen Sie es im Men\u00fc Anwendungen ->\n@@ -4807,15 +4807,15 @@\n \u2022 pyvcp_demo\u2019 - Virtuelle Kontrolltafeln Python\n \u2022 qtvcp_screens - Mit Qt5 und Python erstellte Anleitungen\n \u2022 tklinuxcnc - Tastatur- und Maus-Gui (wird nicht mehr gepflegt)\n \u2022 touchy - Touchscreen-GUI\n Ein GUI-Konfigurationsverzeichnis kann Unterverzeichnisse mit Konfigurationen enthalten, die spezielle Situationen oder die Einbettung anderer Anwendungen veranschaulichen.\n Die by_interface-Konfigurationen sind um g\u00e4ngige, unterst\u00fctzte Schnittstellen herum organisiert:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 1327\n \n \u2022 allgemeine Mechatronik\n \u2022 mesa\n \u2022 parport\n \u2022 pico\n@@ -4846,15 +4846,15 @@\n \u2022 parport - Anwendungen zum Testen von parport.\n \u2022 pyvcp - Beispiele f\u00fcr pyvcp-Anwendungen.\n \u2022 xhc-hb04 \u2013 Anwendungen zum Testen eines drahtlosen USB-MPG xhc-hb04\n Anmerkung\n Im Verzeichnis Apps werden nur Anwendungen zum Kopieren in das Benutzerverzeichnis angeboten,\n die vom Benutzer sinnvollerweise ge\u00e4ndert werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 1327\n \n Abbildung 1.1: LinuxCNC-Konfigurationsauswahl\n 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\n starten.\n W\u00e4hlen Sie \u201dDesktop-Verkn\u00fcpfung erstellen\u201d und klicken Sie dann auf \u201dOK\u201d, um ein Symbol auf dem\n@@ -4869,15 +4869,15 @@\n Konfiguration finden Sie im Integrator-Handbuch.\n \n 1.4.4 Simulator-Konfigurationen\n Alle unter Beispielkonfigurationen/Sim aufgef\u00fchrten Konfigurationen k\u00f6nnen auf jedem Computer\n ausgef\u00fchrt werden. Es ist keine spezielle Hardware erforderlich und Echtzeitunterst\u00fctzung ist nicht\n notwendig.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 1327\n \n Diese Konfigurationen sind n\u00fctzlich, um einzelne F\u00e4higkeiten oder Optionen zu untersuchen. Die\n Sim-Konfigurationen sind nach der in der Demonstration verwendeten grafischen Benutzeroberfl\u00e4che geordnet. Das Verzeichnis f\u00fcr die Achse enth\u00e4lt die meisten Auswahlm\u00f6glichkeiten und Unterverzeichnisse, da es sich um die am h\u00e4ufigsten getestete grafische Benutzeroberfl\u00e4che handelt. Die\n F\u00e4higkeiten, die mit einer bestimmten grafischen Benutzeroberfl\u00e4che demonstriert werden, sind m\u00f6glicherweise auch in anderen grafischen Benutzeroberfl\u00e4chen verf\u00fcgbar.\n \n@@ -4909,15 +4909,15 @@\n This section describes how to upgrade LinuxCNC from version 2.8 to the new 2.9.0 version. It assumes\n that you have an existing 2.8 install that you want to update.\n To upgrade LinuxCNC from a version older than 2.8, you have to first upgrade your old install to 2.8,\n then follow these instructions to upgrade to the new version.\n Wenn Sie keine alte Version von LinuxCNC zu aktualisieren haben, dann sind Sie am besten aus\n machen eine frische Installation der neuen Version, wie im Abschnitt LinuxCNC erhalten beschrieben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 1327\n \n Dar\u00fcber hinaus ist es unter Ubuntu Precise oder Debian Wheezy eine \u00dcberlegung wert, ein Backup\n des \u201dlinuxcnc\u201d-Verzeichnisses auf einem Wechselmedium vorzunehmen und eine Neuinstallaion des\n neuesn Betriebsystems und der LinuxCNC version durchzuf\u00fchren, da diese Versionen des OS 2017\n bzw. 2018 ausliefen. Wenn Sie Ubuntu Lucid nutzen, dann werden Sie dies tun m\u00fcssen, da Lucid nicht\n@@ -4957,15 +4957,15 @@\n \u2217 Klicken Sie auf das Men\u00fc \u201dSystem\u201d, dann auf \u201dVerwaltung\u201d und dann auf \u201dSynaptic Package\n Manager\u201d.\n \u2217 Klicken Sie in Synaptic auf das Men\u00fc Einstellungen und dann auf Repositories, um das\n Fenster Softwarequellen zu \u00f6ffnen.\n \u2022 W\u00e4hlen Sie im Fenster \u201dSoftware-Quellen\u201d die Registerkarte \u201dAndere Software\u201d.\n \u2022 L\u00f6schen oder deaktivieren Sie alle alten linuxcnc.org-Eintr\u00e4ge (lassen Sie alle nicht-linuxcnc.orgZeilen unver\u00e4ndert).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 1327\n \n \u2022 Klicken Sie auf die Schaltfl\u00e4che \u201dHinzuf\u00fcgen\u201d und f\u00fcgen Sie eine neue apt-Zeile hinzu. Die Zeile\n wird auf den verschiedenen Plattformen etwas anders aussehen:\n Plattform\n Debian Stretch\n@@ -4999,15 +4999,15 @@\n Da Ihr Computer nun wei\u00df, wo er die neue Version der Software erh\u00e4lt, m\u00fcssen wir sie nun installieren.\n Der Prozess unterscheidet sich wiederum je nach Plattform.\n Debian Wheezy und Stretch verwenden beide den Synaptic Package Manager.\n \u2022 \u00d6ffnen Sie Synaptic gem\u00e4\u00df den Anweisungen in Festlegen der apt sources oben.\n \u2022 Klicken Sie auf die Schaltfl\u00e4che \u201dNeu laden\u201d.\n \u2022 Verwenden Sie die Suchfunktion, um nach linuxcnc zu suchen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 1327\n \n \u2022 Das Paket hei\u00dft \u201elinuxcnc\u201c f\u00fcr RTAI-Kernel und \u201elinuxcnc-uspace\u201c f\u00fcr preempt-rt.\n \u2022 Klicken Sie auf das Kontrollk\u00e4stchen, um die neuen Pakete linuxcnc und linuxcnc-doc-* f\u00fcr ein Upgrade zu markieren. Der Paketmanager kann eine Reihe zus\u00e4tzlicher Pakete ausw\u00e4hlen, die installiert werden sollen, um die Abh\u00e4ngigkeiten zu erf\u00fcllen, die das neue linuxcnc-Paket hat.\n \u2022 Klicken Sie auf die Schaltfl\u00e4che \u201dAnwenden\u201d, und lassen Sie Ihren Computer das neue Paket installieren. Das alte linuxcnc-Paket wird automatisch auf das neue Paket aktualisiert.\n 1.5.1.3 Ubuntu Precise\n@@ -5040,15 +5040,15 @@\n \n 1.5.3 Updating Configuration Files for 2.9\n 1.5.3.1 Stricter handling of pluggable interpreters\n If you just run regular G-code and you don\u2019t know what a pluggable interpreter is, then this section\n does not affect you.\n A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 1327\n \n Versions of LinuxCNC before 2.9.0 used to handle an incorrect [TASK]INTERPRETER setting by automatically falling back to using the default G-code interpreter.\n As of 2.9.0, an incorrect [TASK]INTERPRETER value will cause LinuxCNC to refuse to start up. Fix this\n condition by deleting the [TASK]INTERPRETER setting from your INI file, so that LinuxCNC will use\n the default G-code interpreter.\n@@ -5079,15 +5079,15 @@\n wird das update_ini Skript einen Dialog \u00f6ffnen, um anzubieten, die Benutzerdateien zu bearbeiten,\n um eine aktualisierte Konfiguration zu erstellen. Wenn der Benutzer zustimmt, wird die Konfiguration\n aktualisiert.\n Wenn die Benutzerkonfiguration beispielsweise bigmill.ini hei\u00dft, werden die Datei bigmill.ini und die\n mit ihr verbundenen lokalen HAL-Dateien bearbeitet, um die \u00c4nderungen an joints_axes zu \u00fcbernehmen. Alle Dateien der urspr\u00fcnglichen Konfiguration werden in einem neuen Verzeichnis gespeichert,\n das nach der urspr\u00fcnglichen Konfiguration mit dem Suffix \u201d.old\u201d benannt ist (im Beispiel bigmill.old).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 1327\n \n Das Skript update_ini behandelt alle g\u00e4ngigen Benutzerelemente, die in einfachen Maschinen mit\n Identit\u00e4tskinematik zu finden sind. Weniger g\u00e4ngige Elemente aus komplexeren Maschinen werden\n m\u00f6glicherweise nicht automatisch konvertiert. Beispiele f\u00fcr komplexe Maschinenkonfigurationen sind:\n \u2022 Portale mit zwei Gelenken f\u00fcr eine Achse\n@@ -5115,15 +5115,15 @@\n \n 1.5.4.5 Kinematik-Module\n Die Kinematikmodule gentrivkins und gantrykins wurden entfernt, da ihre Funktionalit\u00e4t nun im aktualisierten Modul trivkins verf\u00fcgbar ist.\n Das Modul gentrivkins war nur in fr\u00fcheren joints_axes-Zweigen verf\u00fcgbar. F\u00fcr die Konvertierung ist\n es notwendig, den Namen zu \u00e4ndern.\n Beispiele f\u00fcr HAL-Dateien:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 1327\n \n war: loadrt gentrivkins\n ist: loadrt trivkins\n war: loadrt gentrivkins koordinaten=xyyz\n ist: loadrt trivkins koordinaten=xyyz\n@@ -5163,15 +5163,15 @@\n JOINTS = 2\n [TRAJ]\n COORDINATES = XZ\n ...\n [AXIS_X]\n ...\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 1327\n \n [AXIS_Z]\n ...\n [JOINT_0]\n ...\n@@ -5217,15 +5217,15 @@\n [KINS]KINEMATICS = lineardeltakins\n [KINS]JOINTS\n = 4\n [TRAJ]COORDINATES = XYZA\n \n Note: Einige universelle Kinematikmodule (wie trivkins) implementieren Identit\u00e4tskinematik mit Unterst\u00fctzung f\u00fcr Koordinatenangaben (Achsenbuchstaben). Achsenbuchstaben k\u00f6nnen weggelassen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 1327\n \n werden. Achsenbuchstaben k\u00f6nnen dupliziert werden. Gelenke werden den Achsenbuchstaben auf\n definierte Weise zugewiesen (\u201d$ man trivkins\u201d).\n Note: F\u00fcr das Laden von trivkins-Modulen d\u00fcrfen Sie keine Leerzeichen um das =-Zeichen oder Buchstaben einf\u00fcgen:\n This:\n@@ -5264,15 +5264,15 @@\n [EMCMOT]\n EMCMOT = motmod unlock_joints_mask=BITMASK\n \n 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\u00f6nnen weggelassen werden). In diesem Beispiel: X==>Gelenk0, Y==>Gelenk1, Z==>Gelenk2,\n B==>Gelenk3. Die Maske zur Angabe von Gelenk 3 ist 000001000 (bin\u00e4r) == 0x08 (hexadezimal)\n Die erforderlichen INI-Datei-Eintr\u00e4ge f\u00fcr dieses trivkins XYZB-Beispiel sind:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 1327\n \n [KINS]\n JOINTS = 4\n KINEMATICS = trivkins coordinates=XYZB\n ...\n@@ -5310,15 +5310,15 @@\n \n Zwischenzeitlich wurden Arbeiten f\u00fcr unterschiedliche lineare und winklige Elemente vorbereitet,\n indem diese Elemente umbenannt wurden:\n [TRAJ]\n DEFAULT_LINEAR_ACCEL\n MAX_LINEAR_ACCEL\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 1327\n \n Da diese abgek\u00fcrzten Namen nicht mit anderen Namenskonventionen und der Implementierung des\n update_ini-Skripts \u00fcbereinstimmten, wurde die vorl\u00e4ufige Namensgebung korrigiert und verwendet:\n [TRAJ]\n DEFAULT_LINEAR_ACCELERATION\n@@ -5387,15 +5387,15 @@\n (Die Signalnamen jora_1_y_* sind Beispiele, die Namen vor der Konvertierung f\u00fcr joints_axes h\u00e4ngen\n von den spezifischen Konfigurationsdetails ab.)\n Konfigurationen mit nicht identischer Kinematik und Konfigurationen, die doppelte Achsenbuchstaben\n verwenden (z. B. Portale, die mehr als ein Gelenk f\u00fcr eine Achsenkoordinate verwenden), erfordern\n eine geeignete unabh\u00e4ngige Steuerlogik, um sowohl die Gelenk- als auch die Teleop-(Welt-)Bewegung\n zu unterst\u00fctzen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 1327\n \n 1.5.5.2 INI HAL-Pins\n HAL-Pins werden f\u00fcr INI-Dateielemente sowohl f\u00fcr Gelenke ([JOINT_N]) als auch f\u00fcr Achsen ([AXIS_L])\n erstellt:\n F\u00fcr N = 0 \u2026 [KINS](GELENKE-1):\n@@ -5443,15 +5443,15 @@\n Die Anzahl der names=-Instanzen war fr\u00fcher auf 16 begrenzt. Jetzt werden die Instanzen f\u00fcr Echtzeitkomponenten (loadrt) dynamisch zugewiesen, ohne dass eine Begrenzung eingebaut ist. Die Begrenzung auf 16 gilt weiterhin f\u00fcr names=-Elemente f\u00fcr Userspace-Komponenten (loadusr).\n F\u00fcr Komponenten, die \u201dpersonality\u201d verwenden, kann die maximale Anzahl nun durch eine Kommandozeilenoption -P|--personalities eingestellt werden.\n 1.5.6.2 Parameter zu Pin \u00c4nderungen\n Die folgenden HAL-Ausgangspins wurden von Parametern in Pins umgewandelt, so dass sie mit Signalen verbunden werden k\u00f6nnen:\n motion.servo.last-period (letzte Periode des Servos in clks)\n motion.servo.last-period_ns (Kernel-abh\u00e4ngige Verf\u00fcgbarkeit)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 1327\n \n 1.5.7 Schnittstellen\u00e4nderungen f\u00fcr joint_axes 2.8.x\n 1.5.7.1 Python LinuxCNC-Modul\n Die jog()-Schnittstelle enth\u00e4lt ein joint-flag zur Angabe von joint (True) oder teleop (False) jogging:\n jog(command, joint-flag, axis-or-joint-number, velocity[, distance])\n@@ -5480,15 +5480,15 @@\n Referenzpunkt-Schalter durchgef\u00fchrt wird und/oder die verschiedenen Referenzfahrt-Methoden von\n LinuxCNC zur Verf\u00fcgung gestellt werden. Man schaltet einfach die Maschine ein, gibt den Befehl\n Referenzfahrt-Alle, die Maschine referenziert und wechselt automatisch in den Weltmodus. Siehe\n Referenzfahrt-Konfiguration.\n 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\u00f6glich, die\n sofortige Referenzfahrt (siehe Referenzfahrt-Dokumente) f\u00fcr Gelenke zu verwenden, die keine Referenzfahrt zu einer festen Position erfordern.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 1327\n \n Obwohl ein GUI die Unterscheidung zwischen Gelenken und Achsen f\u00fcr \u201dIDENTITY\u201d-Kinematikmaschinen\n ausblenden kann, ist es in der Regel wichtig, die Referenzfahrt abzuschlie\u00dfen, um Programme auszuf\u00fchren oder von einer Benutzeroberfl\u00e4che bereitgestellte Funktionen zu nutzen.\n Standardm\u00e4\u00dfig 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\u00e4che von AXIS sichtbar gemacht werden, indem der Kinematik-Typ mit \u201dkinstype=both\u201d auf einen \u201dNicht-IDENTITY\u201d-Typ gesetzt wird. Die Einstellung both zeigt an, dass sowohl\n Vorw\u00e4rts- als auch Inverskinematikfunktionen verf\u00fcgbar sind und dass solche GUI-Bestimmungen,\n@@ -5528,15 +5528,15 @@\n Pins ausgew\u00e4hlte Gelenk ist.\n Die HAL-Pins f\u00fcr \u201dausgew\u00e4hlte\u201d Gelenke wurden umbenannt, damit sie mit verwandten Pins konsistent sind.\n war: halui.joint.selected.is_homed\n ist: halui.joint.selected.is-homed\n war: halui.joint.selected.on-soft-limit\n ist: halui.joint.selected.on-soft-min-limit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 1327\n \n 1.5.8.3 AXIS GUI\n Die AXIS GUI unterst\u00fctzt weiterhin Identit\u00e4tskinematik-Konfigurationen. Diese Steuerung verbirgt\n die Unterscheidung von Achsen und Gelenken, um die Anzeige und Verwendung von einfachen Maschinen zu vereinfachen.\n Einige Maschinen, typischerweise Gantrys, k\u00f6nnen 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 INIEinstellungen wie folgt konfiguriert ist:\n@@ -5571,15 +5571,15 @@\n zugewiesen. F\u00fcr 3-Achsen-Maschinen, XYZA-Maschinen und Drehmaschinen ist die Voreinstellung\n die gleiche wie in 2.7. Bei anderen Maschinen werden die 4 Tipptastenpaare den ersten 4 Achsen\n zugewiesen, die in der Reihenfolge XYZ ABC UVW existieren. Diese Zuweisungen k\u00f6nnen durch neue\n INI-Datei-Direktiven im Abschnitt [DISPLAY] der INI-Datei gesteuert werden.\n Beachten Sie, dass die f\u00fcr das Jogging verwendeten Parameter bei Maschinen mit nicht identischer\n Kinematik m\u00f6glicherweise nicht f\u00fcr beide Modi geeignet sind.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 1327\n \n 1.5.8.4 TkLinuxCNC\n Die TkLinuxCNC-GUI unterst\u00fctzt sowohl Identit\u00e4ts- als auch Nicht-Identit\u00e4tskinematiken, enth\u00e4lt\n GUI-Radiobuttons und eine Tastenbindung ($) zum Umschalten zwischen Gelenk- und Teleop-Modus.\n Externe \u00c4nderungen des Gelenk- oder Teleop-Bewegungsmodus werden erkannt. Jogging wird sowohl\n@@ -5608,15 +5608,15 @@\n Integration von joints_axes unterst\u00fctzt hat. Joggen wird im Teleop-Modus ausgef\u00fchrt.\n 1.5.8.8 shuttlexpress-Treiber umbenannt in shuttle\n Der HAL-Treiber f\u00fcr das Contour Designs ShuttleXpress-Ger\u00e4t wurde von \u201dshuttlexpress\u201d in einfach\n \u201dshuttle\u201d umbenannt. Wenn Ihre HAL-Dateien eine Variante von \u201dloadusr shuttlexpress\u201d enthalten,\n ersetzen Sie \u201dshuttlexpress\u201d durch \u201dshuttle\u201d.\n Der ShuttlePRO, eine gr\u00f6\u00dfere Version des ShuttleXpress, wird nun unterst\u00fctzt, so dass der alte Treibername nicht mehr korrekt ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 1327\n \n 1.5.8.9 linuxcncrsh\n \u201dReferenzfahrt aller Achsen\u201d (engl. home all) wird jetzt mit dem Unterbefehl \u201dSet Home\u201d (Referenzpunkt setzen) unterst\u00fctzt, indem -1 f\u00fcr die Gelenknummer verwendet wird.\n Die Jogging-Befehle wurden ge\u00e4ndert, um sowohl das gemeinsame (freie) als auch das Teleop-Jogging\n (Welt) zu erm\u00f6glichen.\n@@ -5657,15 +5657,15 @@\n Anmerkung\n Die [TUNE]-Zeilengruppe kann zum Angeben von abstimmbaren (engl. tunable) Elementen verwendet werden, die f\u00fcr die anderen unterst\u00fctzten Zeilengruppen nicht relevant sind.\n \n 1.5.10 Veraltete GUIs (entfernt f\u00fcr 2.8.x)\n Die GUIs mini, keystick und xlinuxcnc wurden in Verbindung mit Updates f\u00fcr joints_axes entfernt. Der\n gesamte zugeh\u00f6rige Quellcode, die Beispiele und die Dokumentation sind im Git-Repository verf\u00fcgbar.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 1327\n \n 1.5.11 Veraltete GUIs (markiert bei 2.8.x)\n Die Benutzeroberfl\u00e4che linuxcnclcd ist ein Kandidat f\u00fcr die Entfernung. Sollte diese Komponente entfernt werden, bleiben alle zugeh\u00f6rigen Quellcodes, Beispiele und Dokumentationen im Git-Repository\n verf\u00fcgbar.\n \n@@ -5701,15 +5701,15 @@\n verbunden. Die Homing-Bedingungen werden durch die \u00fcblichen [JOINT_n]HOME_* INI-Dateielemente\n spezifiziert.\n 3. use_hal_manualtoolchange \u2013 der Benutzerbereich hal_manualtoolchange Komponente wird geladen und verbunden.\n \n 4. sim_spindle \u2014 die sim_spindle-Komponente wird geladen und mit zus\u00e4tzlich geladenen HAL-Komponent\n verbunden, um die Tr\u00e4gheit einer rotierenden Spindelmasse zu simulieren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 1327\n \n Die Funktionen sind standardm\u00e4\u00dfig aktiviert, k\u00f6nnen aber mit folgenden Optionen ausgeschlossen\n werden: -no_make_ddts, -no_simulated_home, -no_use_hal_manualtoolchange, -no_sim_spindle.\n Um beispielsweise die Erstellung von ddts wegzulassen:\n HALFILE = LIB:basic_sim.tcl -no_make_ddts\n@@ -5746,15 +5746,15 @@\n 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\n verwendet.\n \n 1.5.13 Verschiedene Updates f\u00fcr 2.8.x\n Commits zu unver\u00f6ffentlichten Entwicklungs-Zweigen (engl. branches) k\u00f6nnen \u00c4nderungen vornehmen, von denen Tester und early adopters der unver\u00f6ffentlichten Software profitieren (oder Fehler\n feststellen).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 1327\n \n 1.5.13.1 Bewegungs-Pins (engl. motion pins)\n Neue Pins (weitere Informationen finden Sie in der Motion-Manpage):\n --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction --1.5.13.2 HAL-Pins\n Namens\u00e4nderungen:\n@@ -5782,15 +5782,15 @@\n Siehe die Dokumentation f\u00fcr die Komponente xhc-whb04b-6.\n 1.5.13.6 bldc3_hall\n Die Komponente bldc_hall3 wurde entfernt. Die Komponente bldc ist flexibler und besser getestet.\n 1.5.13.7 [JOINT_n] HOME_SEQUENCE Startwerte\n Die Werte der Startsequenz k\u00f6nnen nur 0, 1 (oder -1) sein. Weitere Informationen finden Sie in der\n Dokumentation zur \u201dReferenzfahrt-Konfiguration\u201d.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 1327\n \n 1.5.13.8 [JOINT_n]HOME_SEQUENCE Negative Werte\n Gelenke mit einer negativen HOME_SEQUENCE d\u00fcrfen nicht im Gelenkmodus verfahren werden, um\n eine Fehlausrichtung (Racking) in \u00fcblichen Gantry-Konfigurationen zu verhindern. Wie immer m\u00fcssen\n Maschinen mit einem beliebigen Kinematik-Typ vor der Aktivierung des konventionellen WeltmodusJogging referenziert werden.\n@@ -5819,15 +5819,15 @@\n G43.2 (zus\u00e4tzliche Offsets) akzeptiert nun transiente Offsets, die sowohl durch Achsenw\u00f6rter als auch\n aus der Werkzeugtabelle hinzugef\u00fcgt werden sollen.\n 1.5.14.4 Konfigurations-Updates\n Neu: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET \u2014 unterst\u00fctzt Encoder mit einem Index, der bei\n Empfang eines Indeximpulses nach Aktivierung von index_enable nicht zur\u00fcckgesetzt wird.\n axis.py Vorgabe f\u00fcr [DISPLAY]GEOMETRY war: \u201dXYZBCUVW\u201d,ist: \u201dXYZABCUVW\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 1327\n \n 1.5.14.5 Code-Aktualisierungen\n Die Verwaltung der internen Speicherung von Werkzeugdaten und die Kommunikation derselben zwischen EMCIO und TASK wurde \u00fcberarbeitet, so dass nun Memory-Mapped Storage verwendet wird.\n Die fr\u00fchere Verwendung von nml-Nachrichten f\u00fcr Tooldaten ist veraltet und wird m\u00f6glicherweise vor\n einer neuen Version entfernt.\n@@ -5860,15 +5860,15 @@\n 2. xyzbc-trt-kins table-rotary-tilting (ersetzt xyzbc-trt-kins)\n 3. genserkins verallgemeinerte Kinematik mit seriellen Gliedern\n 4. genhexkins verallgemeinerte parallele Hexapod-Kinematik\n 5. Scarakins Scara Roboter\n 6. pumakins puma roboter\n 7. 5axiskins bridgemill (xyzbcw 6 Achsen)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 1327\n \n Die obigen switchkins-Module (und trivkins) unterst\u00fctzen einen coordinates=-Parameter, der optional\n eine geordnete Menge von Koordinatenbuchstaben angibt, die nacheinander Gelenknummern zugeordnet werden (beginnend mit joint0).\n Die obigen switchkins-Module enthalten Vorkehrungen f\u00fcr die Kompilierzeitunterst\u00fctzung eines zus\u00e4tzlichen benutzerspezifischen Kinematik-Typs, der in der make-Befehlszeile durch die Umgebungsvariable userkfuncs identifiziert wird. (Siehe src/Makefile)\n Das Userspace-Testprogramm bin/genserkins wurde in eine einzige Datei (ugenserkins.c) isoliert, da\n@@ -5898,15 +5898,15 @@\n 1.5.15 \u00c4nderungen nach 2.8.x\n K\u00fcnftige Versionen dieses Dokuments werden die \u00c4nderungen ber\u00fccksichtigen, die nach der letzten\n Version 2.8.x am Entwicklungszweig vorgenommen wurden.\n \n 1.6 Linux FAQ\n Dies sind einige grundlegende Linux-Befehle und -Techniken f\u00fcr Linux-Neulinge. Ausf\u00fchrlichere Informationen finden Sie im Internet oder in den Man Pages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 1327\n \n 1.6.1 Automatische Anmeldung\n 1.6.1.1 Debian\n Debian Stretch verwendet standardm\u00e4\u00dfig die Xfce-Desktopumgebung mit dem lightDM-Displaymanager\n lightDM. Um eine automatische Anmeldung bei Debian Stretch zu erhalten:\n@@ -5943,15 +5943,15 @@\n mit dmesg. Ubuntu und Linux Mint haben ein Tastaturk\u00fcrzel Strg + Alt + t. Debian Stretch hat keine\n Tastaturk\u00fcrzel definiert. Sie k\u00f6nnen aber leicht mit dem Configuration Manager erstellt werden. Die\n meisten modernen Dateimanager unterst\u00fctzen die rechte Taste zum \u00d6ffnen eines Terminals. Stellen\n Sie nur sicher, dass Sie mit der rechten Maustaste auf einen leeren Bereich oder ein Verzeichnis\n und nicht auf einen Dateinamen klicken. Die meisten Betriebssysteme haben das Terminal als einen\n Men\u00fcpunkt, normalerweise unter Zubeh\u00f6r.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 1327\n \n 1.6.4 Man Pages\n Eine Manpage (kurz f\u00fcr Manual Page) ist eine Form der Software-Dokumentation, die man normalerweise unter Unix oder Unix-\u00e4hnlichen Betriebssystemen wie Linux findet.\n Um eine Manpage anzuzeigen, \u00f6ffnen Sie ein Terminal, um etwas \u00fcber den Befehl find im Terminalfenster herauszufinden:\n man find\n@@ -5981,15 +5981,15 @@\n Allgemeinen k\u00f6nnen Sie die meisten root-Dateien \u00f6ffnen und anzeigen, aber sie bleiben schreibgesch\u00fctzt.\n 1.6.6.1 Der Weg \u00fcber die Befehlszeile\n \u00d6ffnen Sie ein Terminal und geben Sie ein\n sudo gedit\n \n \u00d6ffnen Sie die Datei mit Datei > \u00d6ffnen > Bearbeiten\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 1327\n \n 1.6.6.2 Der GUI-Weg\n 1. Klicken Sie mit der rechten Maustaste auf den Desktop und w\u00e4hlen Sie Startprogramm erstellen\n (engl. Create Launcher)\n 2. Geben Sie einen Namen ein wie sudo edit\n@@ -6024,15 +6024,15 @@\n 1.6.7.3 Auflisten von Dateien in einem Verzeichnis\n Um eine Liste aller Dateien und Unterverzeichnisse im Terminalfenster anzuzeigen, geben Sie ein:\n dir\n \n oder\n ls\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 1327\n \n 1.6.7.4 Suchen einer Datei\n Der Befehl find kann f\u00fcr einen neuen Linux-Benutzer etwas verwirrend sein. Die grundlegende Syntax\n ist:\n find starting-directory Parameter Aktionen\n@@ -6071,15 +6071,15 @@\n \n Dies kann kurz vor dem Start von LinuxCNC hilfreich sein, so dass es nur eine Aufzeichnung von\n Informationen im Zusammenhang mit dem aktuellen Start von LinuxCNC gibt.\n Um die eingebaute Parallelport-Adresse zu finden, verwenden Sie grep, um die Informationen aus\n dmesg herauszufiltern.\n \u00d6ffnen Sie nach dem Hochfahren ein Terminal und geben Sie ein:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 1327\n \n dmesg|grep parport\n \n 1.6.8 Bequemlichkeiten\n 1.6.8.1 Terminal Launcher\n@@ -6106,15 +6106,15 @@\n ../f1 bezieht sich auf eine Datei f1 im \u00fcbergeordneten Verzeichnis\n ../../f2 bezieht sich auf eine Datei f2 im \u00fcbergeordneten Verzeichnis des\n \u00fcbergeordneten Verzeichnisses\n ../../../f3 usw.\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 1327\n \n Kapitel 2\n \n Allgemeine Benutzerinformationen\n 2.1 User Foreword\n@@ -6144,15 +6144,15 @@\n by making them connectable. We achieve connectability by setting up standard interfaces to sets of\n modules and following those standards.\n The Separation rule requires that we make distinct parts that do little things. By separating functions\n debugging is much easier and replacement modules can be dropped into the system and comparisons\n easily made.\n 1 Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 1327\n \n What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make\n choices about how you will use the system. Many of these choices are a part of machine integration,\n but many also affect the way you will use your machine. As you read you will find many places where\n you will need to make comparisons. Eventually you will make choices, \u201dI\u2019ll use this interface rather\n@@ -6187,15 +6187,15 @@\n \u2022 the high level controllers that coordinate the generation and execution of motion control of the CNC\n machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO)\n and the task executor (EMCTASK).\n The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper\n motors might look like:\n 2 Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 1327\n \n Abbildung 2.1: Simple LinuxCNC Controlled Machine\n A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives,\n each of which has one stepper motor connected to it. Each drive receives two independent signals;\n one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise\n@@ -6217,15 +6217,15 @@\n The INI file contains all the basic hardware information regarding the operation of the CNC mill,\n such as the number of steps each stepper motor must turn to complete one full revolution, the\n maximum rate at which each stepper may operate at, the limits of travel of each axis or the\n configuration and behaviour of limit switches on each axis.\n \u2013 My_CNC.hal\n This HAL file contains information that tells LinuxCNC how to link the internal virtual signals to\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 1327\n \n physical connections beyond the computer. For example, specifying pin 4 on the parallel port to\n send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis motor\n when a limit switch is triggered on parallel port pin 13.\n \u2013 custom.HAL\n@@ -6252,77 +6252,77 @@\n 2.2.3 Graphical User Interfaces\n A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with.\n LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain\n fields contained in the INI file:\n ACHSE\n AXIS, the standard keyboard GUI interface. This is also the default GUI launched when a Configuration Wizard is used to create a desktop icon launcher:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 50 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n 51 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 1327\n \n Abbildung 2.4: Gscreen, a configurable base touch screen GUI\n \n GMOCCAPY\n GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally\n well in applications where a keyboard and mouse are the preferred methods of controlling the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 1327\n \n Abbildung 2.5: GMOCCAPY, a touch screen GUI based on Gscreen\n \n NGCGUI\n NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be\n run as a standalone program or embedded into another GUI as a series of tabs. The following\n screenshot shows NGCGUI embedded into AXIS:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 1327\n \n Abbildung 2.6: NGCGUI, a graphical interface integrated into AXIS\n \n TkLinuxCNC\n TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 2.7: TkLinuxCNC graphical interface\n \n Xemc\n an X-Window program\n halui\n A HAL based user interface allowing to control LinuxCNC using buttons and switches\n linuxcncrsh\n A telnet based user interface allowing to send commands from remote computers.\n \n 55 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 1327\n \n 2.2.4 Virtuelle Schalttafeln\n As mentioned above, many of LinuxCNC\u2019s GUIs may be customized by the user. This may be done to\n add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased\n flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC:\n@@ -6336,15 +6336,15 @@\n GladeVCP\n GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs.\n GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL\n virtual signals, but can include other external interfaces outside LinuxCNC such as window or\n network events. GladeVCP is also more flexible in how it may be configured to appear on the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 57 / 1327\n \n Abbildung 2.9: GladeVCP Example Embedded Into AXIS GUI\n \n 2.2.5 Sprachen\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -6366,15 +6366,15 @@\n \n 2.2.7 Modes of Operation\n When LinuxCNC is running, there are three different major modes used for inputting commands.\n These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes\n a big difference in the way that the LinuxCNC control behaves. There are specific things that can be\n done in one mode that cannot be done in another. An operator can home an axis in manual mode but\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 58 / 1327\n \n not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes\n in the auto mode but not in manual or MDI.\n In manual mode, each command is entered separately. In human terms a manual command might be\n \u201dturn on coolant\u201d or \u201djog X at 25 inches per minute\u201d. These are roughly equivalent to flipping a switch\n@@ -6411,15 +6411,15 @@\n to be made. In the INI file the specified machine constraints, such as maximum axis velocity and axis\n acceleration, must be obeyed by the trajectory planner.\n F\u00fcr weitere Informationen zu den Trajektorie-Panner INI-Optionen siehe den Abschnitt zu Trajektorien im INI Kapitel.\n 2.3.1.2 Bahnverfolgung\n A less straightforward problem is that of path following. When you program a corner in G-code, the\n trajectory planner can do several things, all of which are right in some cases:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 1327\n \n \u2022 Es kann genau an den Koordinaten der Kurve bis zum Stillstand abbremsen und dann in die neue\n Richtung beschleunigen.\n \u2022 Sie kann auch das so genannte Blending durchf\u00fchren, d. h. die Vorschubgeschwindigkeit beim\n Durchfahren der Ecke aufrechterhalten, so dass die Ecke abgerundet werden muss, um die Maschinenvorgaben einzuhalten.\n@@ -6460,15 +6460,15 @@\n never move at such a speed that it cannot come to an exact stop at the end of the current movement (or next movement, if you pause when blending has already started). The distance from\n the end point of the move is as large as it needs to be to keep up the best contouring feed.\n Naive CAM Detector\n Successive G1 moves that involve only the XYZ axes that deviate less than Q- from a straight\n line are merged into a single straight line. This merged movement replaces the individual G1\n movements for the purposes of blending with tolerance. Between successive movements, the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 60 / 1327\n \n controlled point will pass no more than P- from the actual endpoints of the movements. The\n controlled point will touch at least one point on each movement. The machine will never move at\n such a speed that it cannot come to an exact stop at the end of the current movement (or next\n movement, if you pause when blending has already started). On G2/3 moves in the G17 (XY) plane,\n@@ -6504,15 +6504,15 @@\n For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches.\n \n 2.3.2 G-code\n 2.3.2.1 Defaults\n When LinuxCNC first starts up many G- and M-codes are loaded by default. The current active G- and\n M-codes can be viewed on the MDI tab in the Active G-Codes: window in the AXIS interface. These\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 61 / 1327\n \n G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each\n one does before running LinuxCNC. The defaults can be changed when running a G-Code file and\n left in a different state than when you started your LinuxCNC session. The best practice is to set the\n defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have\n@@ -6547,15 +6547,15 @@\n Coordinate Systems is in the Coordinate System section of this manual.\n 2.3.5.1 G53 Machine Coordinate\n When you home LinuxCNC you set the G53 Machine Coordinate System to 0 for each axis homed.\n No other coordinate systems or tool offsets are changed by homing.\n The only time you move in the G53 machine coordinate system is when you program a G53 on the\n same line as a move. Normally you are in the G54 coordinate system.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 1327\n \n 2.3.5.2 G54-59.3 User Coordinates\n Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate\n system a small blue ball with lines will be at the machine origin when your DRO is displaying Position: Relative Actual in AXIS. If your offsets are temporary use the Zero Coordinate System from the\n Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number\n@@ -6582,22 +6582,22 @@\n in relation to the material.\n Note also the position of the limit switches and the direction of activation of their cams. Several\n combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed\n limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will\n be reversed, +X will be on the right of the table and -X on the left. This inversion does not change\n anything from the point of view of the direction of movement of the tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 1327\n \n Abbildung 2.11: Typical Mill Configuration\n The following diagram shows a typical lathe showing direction of travel of the tool and limit switches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 2.12: Typical Lathe Configuration\n \n 2.4 Starting LinuxCNC\n 2.4.1 Running LinuxCNC\n LinuxCNC is started with the script file linuxcnc.\n linuxcnc [options] []\n@@ -6612,15 +6612,15 @@\n $ linuxcnc [Options] path/to/your_ini_file\n Name the configuration INI file using its path\n $ linuxcnc [Options] -l\n Use the previously used configuration inifile\n \n 64 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 1327\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -k: Continue in the presence of errors in HAL files\n@@ -6642,15 +6642,15 @@\n or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to\n those pins. See the [HAL] section of the INI configuration for more information.\n 2.4.1.1 Configuration Selector\n If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and\n save a sample configuration. Once a sample configuration has been saved it can be modified to suit\n your application. The configuration files are saved in linuxcnc/configs directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 1327\n \n 2.5 CNC-Maschinen\u00fcbersicht\n In diesem Abschnitt wird kurz beschrieben, wie eine CNC-Maschine von der Eingangs- und Ausgangsseite des Interpreters aus betrachtet wird.\n \n 2.5.1 Mechanische Bestandteile\n@@ -6678,15 +6678,15 @@\n RotationsachsenAchsenrotierend rotierend 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\n Y und C um eine Linie parallel zu Z.\n 2.5.1.2 Spindel\n Eine CNC-Maschine hat in der Regel eine Spindel, die ein Zerspanungswerkzeug, einen Messtaster\n oder im Falle einer Drehmaschine das Material h\u00e4lt. Die Spindel kann, muss aber nicht von der CNCSoftware gesteuert werden. LinuxCNC bietet Unterst\u00fctzung f\u00fcr bis zu 8 Spindeln, die individuell\n gesteuert werden k\u00f6nnen und gleichzeitig mit unterschiedlichen Geschwindigkeiten und in unterschiedlichen Richtungen laufen k\u00f6nnen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 1327\n \n 2.5.1.3 K\u00fchlmittel\n Flutk\u00fchlmittel und Nebelk\u00fchlmittel k\u00f6nnen unabh\u00e4ngig voneinander eingeschaltet werden. Die Sprache RS274/NGC schaltet sie gemeinsam aus, siehe Abschnitt M7 M8 M9.\n 2.5.1.4 Vorschub- und Drehzahl-Override\n Eine CNC-Maschine kann \u00fcber separate Vorschub- und Geschwindigkeitssteuerungen verf\u00fcgen, mit\n@@ -6714,15 +6714,15 @@\n Wenn das Werkst\u00fcck an einem Drehtisch befestigt ist, der sich um eine Drehachse dreht, wird eine\n Drehung gegen den Uhrzeigersinn aus Sicht des Werkst\u00fccks dadurch erreicht, dass der Drehtisch in\n eine Richtung gedreht wird, die (bei den meisten g\u00e4ngigen Maschinenkonfigurationen) aus Sicht einer\n neben der Maschine stehenden Person im Uhrzeigersinn aussieht. Fu\u00dfnote:[Wenn die Anforderung\n der Parallelit\u00e4t verletzt wird, muss der Systemersteller angeben, wie zwischen Uhrzeigersinn und\n Gegenuhrzeigersinn unterschieden wird.]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 68 / 1327\n \n 2.5.2.3 Gesteuerter Punkt (engl. controlled point)\n Der gesteuerte Punkt ist der Punkt, dessen Position und Bewegungsgeschwindigkeit gesteuert werden. Wenn der Werkzeugl\u00e4ngenversatz Null ist (der Standardwert), ist dies ein Punkt auf der Spindelachse (h\u00e4ufig als Messpunkt bezeichnet), der sich in einem festen Abstand hinter dem Ende der\n Spindel befindet, normalerweise nahe dem Ende eines passenden Werkzeughalters in die Spindel.\n Die Position des gesteuerten Punkts kann entlang der Spindelachse verschoben werden, indem ein\n@@ -6753,15 +6753,15 @@\n und stoppen.\n 3. Andernfalls handelt es sich um eine reine Drehbewegung, und das F-Wort wird in Dreheinheiten\n im pseudokartesischen ABC-System angegeben.\n 2.5.2.6 K\u00fchlung\n Die K\u00fchlung von Flut- oder Tr\u00f6pfchen kann separat aktiviert werden. RS274 / NGC-Sprache stoppt\n sie zusammen. Siehe Abschnitt \u00fcber K\u00fchlsteuerung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 69 / 1327\n \n 2.5.2.7 Verweilen (engl. dwell)\n Ein Bearbeitungszentrum kann angewiesen werden, f\u00fcr eine bestimmte Zeit zu verweilen (d.h. alle\n Achsen unbeweglich zu halten). Die h\u00e4ufigste Anwendung des Verweilens ist das Brechen und Entfernen von Sp\u00e4nen, so dass sich die Spindel w\u00e4hrend des Verweilens normalerweise dreht. Unabh\u00e4ngig\n vom Bahnsteuerungsmodus (siehe Abschnitt Path Control) h\u00e4lt die Maschine genau am Ende der vorhergehenden programmierten Bewegung an, so als ob sie im exakten Bahnmodus w\u00e4re.\n@@ -6786,15 +6786,15 @@\n 2.5.2.11 Werkzeug-Karussell\n Jedem Steckplatz im Werkzeugkarussell wird ein oder null Werkzeuge zugewiesen.\n 2.5.2.12 Werkzeugwechsel\n Einem Bearbeitungszentrum kann der Befehl zum Werkzeugwechsel gegeben werden.\n 2.5.2.13 Paletten-Shuttle\n Die beiden Paletten k\u00f6nnen auf Befehl ausgetauscht werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 70 / 1327\n \n 2.5.2.14 Geschwindigkeits-Neufestsetzung (engl. override)\n Die Tasten f\u00fcr die Geschwindigkeits-Neufestsetzung k\u00f6nnen aktiviert (sie funktionieren normal) oder\n deaktiviert werden (sie haben keine Wirkung mehr). In der Sprache RS274/NGC gibt es einen Befehl,\n der alle Tasten aktiviert, und einen anderen, der sie deaktiviert. Siehe Sperrung und Aktivierung\n@@ -6828,15 +6828,15 @@\n Wenn der Schalter f\u00fcr das L\u00f6schen von Bl\u00f6cken aktiviert ist, werden G-Code-Zeilen, die mit einem\n Schr\u00e4gstrich (dem Blockl\u00f6schzeichen) beginnen, nicht interpretiert. Wenn der Schalter ausgeschaltet\n ist, werden solche Zeilen interpretiert. Normalerweise sollte der Blockl\u00f6schschalter vor dem Start des\n NGC-Programms gesetzt werden.\n 2.5.3.3 Optionaler Programm-Stopp-Schalter\n Wenn dieser Schalter eingeschaltet ist und ein M1-Code auftritt, wird die Programmausf\u00fchrung angehalten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 71 / 1327\n \n 2.5.4 Werkzeugtabelle\n F\u00fcr die Verwendung des Interpreters ist eine Werkzeugtabelle erforderlich. In dieser Datei ist festgelegt, welche Werkzeuge sich in welchen Werkzeugwechslerpl\u00e4tzen befinden und welche Gr\u00f6\u00dfe und\n welchen Typ die einzelnen Werkzeuge haben. Der Name der Werkzeugtabelle wird in der INI-Datei\n definiert:\n@@ -6874,15 +6874,15 @@\n Gleitkommazahl mit doppelter Genauigkeit dargestellt, aber ein Dezimalpunkt ist in der Datei nicht\n erforderlich. Alle in der folgenden Tabelle aufgef\u00fchrten Parameter sind obligatorisch und m\u00fcssen in\n jeder Parameterdatei enthalten sein, mit der Ausnahme, dass jeder Parameter, der einen Drehachsenwert f\u00fcr eine nicht verwendete Achse darstellt, weggelassen werden kann. Wenn ein erforderlicher\n 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\u00fcssen in\n aufsteigender Reihenfolge angeordnet sein. Ist dies nicht der Fall, wird ein Fehler gemeldet. Jeder\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 72 / 1327\n \n neuen Datei als Sicherungsdatei gespeichert. Kommentare werden beim Schreiben der Datei nicht\n beibehalten.\n Tabelle 2.1: Parameter-Dateiformat\n ParameterNummer\n@@ -6927,15 +6927,15 @@\n \n 2.6.2 Drehmaschinen-Werkzeugtabelle\n Die \u201dWerkzeugtabelle\u201d ist eine Textdatei, die Informationen \u00fcber jedes Werkzeug enth\u00e4lt. Die Datei\n befindet sich in demselben Verzeichnis wie Ihre Konfiguration und hei\u00dft standardm\u00e4\u00dfig \u201dtool.tbl\u201d. Die\n Werkzeuge k\u00f6nnen sich in einem Werkzeugwechsler befinden oder einfach manuell ge\u00e4ndert werden.\n Die Datei kann mit einem Texteditor bearbeitet oder mit G10 L1,L10,L11 aktualisiert werden. Es gibt\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 73 / 1327\n \n auch einen eingebauten Werkzeugtabelleneditor in dem AXIS GUI. Die maximale Anzahl der Eintr\u00e4ge\n in der Werkzeugtabelle betr\u00e4gt 56. Die maximale Anzahl von Werkzeugen und Pl\u00e4tzen betr\u00e4gt 99999.\n Fr\u00fchere Versionen von LinuxCNC hatten zwei verschiedene Werkzeugtabellenformate f\u00fcr Fr\u00e4se n und\n Drehmaschinen, aber seit der Version 2.4.x wird ein Werkzeugtabellenformat f\u00fcr alle Maschinen verwendet. Ignorieren Sie einfach die Teile der Werkzeugtabelle, die nicht zu Ihrer Maschine geh\u00f6ren\n@@ -6946,15 +6946,15 @@\n Ausrichtung und Informationen zu VORDERWINKEL und HINTERWINKEL.\n FRONTANGLE und BACKANGLE sind im Uhrzeigersinn beginnend an einer Linie parallel zu Z+.\n \n Abbildung 2.13: Ausrichtung des Drehwerkzeugs\n In AXIS zeigen die folgenden Abbildungen, wie die Werkzeugpositionen aussehen, wie sie in der Werkzeugtabelle eingegeben wurden.\n Werkzeugpositionen 1, 2, 3 & 4Werkzeugpositionen 123 & 4 23 & 4 3 & 4\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 74 / 1327\n \n Werkzeugpositionen 5, 6, 7 & 8Werkzeugpositionen 567 & 8 67 & 8 7 & 8\n \n 2.6.4 Werkzeug Touch Off\n Wenn Sie in AXIS im Drehmaschinenmodus arbeiten, k\u00f6nnen Sie die X- und Z-Werte in der Werkzeugtabelle mit Hilfe des Touch Off-Fensters einstellen. Wenn Sie \u00fcber einen Werkzeugrevolver verf\u00fcgen,\n@@ -6969,15 +6969,15 @@\n Werkzeug nach oben, bis es die Farbe gerade ber\u00fchrt, und stellen Sie seinen X-Offset auf den Durchmesser des Teils ein, das Sie mit dem Werkzeug-Anlegefenster verwenden. Stellen Sie sicher, dass\n 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\n hinzugef\u00fcgt, so dass das aktuelle Werkzeug den aktuellen Versatz darstellt.\n Eine typische Sitzung k\u00f6nnte so aussehen:\n 1. Jede Achse referenzieren (engl. home), wenn sie nicht ausgerichtet ist.\n 2. Setzen Sie das aktuelle Werkzeug mit Tn M6 G43, wobei n die Werkzeugnummer ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 75 / 1327\n \n 3. W\u00e4hlen Sie die X-Achse im Fenster \u201dManuelle Steuerung\u201d.\n 4. Bringen Sie das X in eine bekannte Position oder machen Sie einen Testschnitt und messen Sie\n den Durchmesser.\n 5. W\u00e4hlen Sie Touch Off und w\u00e4hlen Sie Werkzeugtabelle, dann geben Sie die Position oder den\n@@ -7011,15 +7011,15 @@\n geben Sie 0.125 Zoll in das Absetzfenster ein.\n 2.6.4.3 Der Z-Maschinenversatz (engl. machine offset)\n Sobald f\u00fcr alle Werkzeuge die Z-Korrektur in die Werkzeugtabelle eingegeben wurde, k\u00f6nnen Sie mit\n jedem Werkzeug die Maschinen-Korrektur \u00fcber das Maschinenkoordinatensystem einstellen.\n Eine typische Sitzung k\u00f6nnte so aussehen:\n 1. Jede Achse referenzieren (engl. home), wenn sie nicht ausgerichtet ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 76 / 1327\n \n 2. Stellen Sie das aktuelle Werkzeug mit Tn M6 ein, wobei n die Werkzeugnummer ist.\n 3. Geben Sie ein G43 aus, damit die aktuelle Werkzeugkorrektur wirksam wird.\n 4. F\u00fchren Sie das Werkzeug an das Werkst\u00fcck heran und stellen Sie den Z-Offset der Maschine ein.\n Wenn Sie vergessen, den G43 f\u00fcr 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.\n@@ -7050,15 +7050,15 @@\n befindet, sind die X-Werte positiv.\n Bei einigen Drehb\u00e4nken mit Werkzeugen auf der R\u00fcckseite zeigt die imagin\u00e4re Y-Achse (+) nach oben.\n G2/G3 Die Richtungen der Bogen basieren auf der Achse, um die sie sich drehen. Bei Drehb\u00e4nken ist\n das die imagin\u00e4re Y-Achse. Wenn die Y-Achse (+) auf den Boden zeigt, m\u00fcssen Sie nach oben schauen,\n damit der Bogen in die richtige Richtung zu gehen scheint. Wenn Sie also von oben schauen, kehren\n Sie die G2/G3 um, damit der Bogen in die richtige Richtung zu gehen scheint.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 77 / 1327\n \n 2.6.6.2 Radius & Durchmesser-Modus\n Bei der Berechnung von B\u00f6gen im Radiusmodus m\u00fcssen Sie sich nur die Drehrichtung merken, die\n f\u00fcr Ihre Drehmaschine gilt.\n Bei der Berechnung von B\u00f6gen im Durchmessermodus ist X der Durchmesser und der X-Offset (I) der\n@@ -7077,43 +7077,43 @@\n \n 2.6.7.2 Schneidwinkel ohne Fr\u00e4ser Compensation\n Stellen Sie sich nun vor, wir programmieren eine Rampe ohne Schneidwerkzeugs-Kompensation (engl.\n kurz cutter comp). Die programmierte Bahn ist in der folgenden Abbildung dargestellt. Wie Sie in\n der Abbildung sehen k\u00f6nnen, sind die programmierte Bahn und die gew\u00fcnschte Schnittbahn ein und\n dasselbe, solange wir uns nur in X- oder Z-Richtung bewegen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 78 / 1327\n \n Abbildung 2.15: Rampe Eingang\n Wenn sich nun der Kontrollpunkt entlang der programmierten Bahn bewegt, folgt die tats\u00e4chliche\n Fr\u00e4skante nicht der programmierten Bahn, wie in der folgenden Abbildung dargestellt. Es gibt zwei\n M\u00f6glichkeiten, dieses Problem zu l\u00f6sen: die Kompensation der Schneide und die Anpassung der programmierten Bahn, um den Spitzenradius zu kompensieren.\n \n Abbildung 2.16: Rampenpfad\n Im obigen Beispiel ist es eine einfache \u00dcbung, die programmierte Bahn so anzupassen, dass sie die\n gew\u00fcnschte tats\u00e4chliche Bahn ergibt, indem die programmierte Bahn f\u00fcr die Rampe um den Radius\n der Werkzeugspitze nach links verschoben wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 79 / 1327\n \n 2.6.7.3 Schneiden eines Radius\n In diesem Beispiel werden wir untersuchen, was bei einem Radiusschnitt ohne Fr\u00e4serabgleich passiert. In der n\u00e4chsten Abbildung sehen Sie, wie das Werkzeug den Au\u00dfendurchmesser des Werkst\u00fccks\n dreht. Der Kontrollpunkt des Werkzeugs folgt der programmierten Bahn und das Werkzeug ber\u00fchrt\n den Au\u00dfendurchmesser des Werkst\u00fccks.\n \n Abbildung 2.17: Turning Cut\n In der n\u00e4chsten Abbildung sehen Sie, wie sich das Werkzeug dem Ende des Teils n\u00e4hert, der Kontrollpunkt folgt immer noch der Bahn, aber die Werkzeugspitze hat das Teil verlassen und schneidet Luft.\n Sie k\u00f6nnen auch sehen, dass das Teil, obwohl ein Radius programmiert wurde, tats\u00e4chlich mit einer\n quadratischen Ecke endet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 80 / 1327\n \n Abbildung 2.18: Radiusschnitt\n Jetzt k\u00f6nnen Sie sehen, wie der Kontrollpunkt dem programmierten Radius folgt, die Werkzeugspitze\n hat das Teil verlassen und schneidet nun Luft.\n \n@@ -7121,15 +7121,15 @@\n In der letzten Abbildung sehen Sie, dass die Werkzeugspitze den Schnitt an der Fl\u00e4che beendet, aber\n eine quadratische Ecke anstelle eines sch\u00f6nen Radius hinterl\u00e4sst. Beachten Sie auch, dass, wenn Sie\n den Schnitt so programmieren, dass er in der Mitte des Teils endet, eine kleine Menge Material vom\n Radius des Werkzeugs \u00fcbrig bleibt. Um einen Fl\u00e4chenschnitt in der Mitte des Werkst\u00fccks zu beenden,\n m\u00fcssen Sie das Werkzeug so programmieren, dass es \u00fcber die Mitte hinausgeht und mindestens den\n Radius der Werkzeugspitze hat.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 81 / 1327\n \n Abbildung 2.20: Face Cut\n \n 2.6.7.4 Verwenden der Fr\u00e4ser (engl. cutter)-Kompensation\n \u2022 Bei der Verwendung von Cutter Comp auf einer Drehmaschine stellen Sie sich den Radius der Werkzeugspitze als den Radius eines runden Fr\u00e4sers vor.\n@@ -7149,15 +7149,15 @@\n width.\n Plasma torches are similar in design to the automotive spark plug. They consist of negative and positive\n sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap between the\n negatively charged electrode and the positively charged tip. Once the pilot arc has ionised the plasma\n gas, the superheated column of gas flows through the small orifice in the torch tip, which is focused\n on the metal to be cut.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 82 / 1327\n \n In a Plasma Cutting Torch a cool gas enters Zone B, where a pilot arc between the electrode and the\n torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the\n column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the\n torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown\n@@ -7173,15 +7173,15 @@\n works well, and starts quickly. But, because of the high frequency high voltage power that is required\n generated to ionise the air, it has some drawbacks. It often interferes with surrounding electronic\n circuitry, and can even damage components. Also a special circuit is needed to create a Pilot arc.\n Inexpensive models will not have a pilot arc, and require touching the consumable to the work to\n start. Employing a HF circuit also can increase maintenance issues, as there are usually adjustable\n points that must be cleaned and readjusted from time to time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 83 / 1327\n \n 2.7.2.2 Blowback Start\n This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the\n torch head back to create a small spark between the inside surface of the consumable, ionising the\n air, and creating a small plasma flame. This also creates a \u201dpilot arc\u201d that provides a plasma flame\n@@ -7205,15 +7205,15 @@\n A plasma Arc is oval in shape and the cutting height needs to be controlled to minimise bevelled edges.\n If the torch is too high or too low then the edges can become excessively bevelled. It is also critical\n that the torch is held perpendicular to the surface.\n \u2022 Der Abstand zwischen Brenner und Werkst\u00fcck kann die Kantenfase beeinflussen.\n \n \u2022 Negativer Schnittwinkel: Brenner zu niedrig, Abstand zwischen Brenner und Werkst\u00fcck vergr\u00f6\u00dfern.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 84 / 1327\n \n \u2022 Positiver Schnittwinkel: Brenner zu hoch, Abstand zwischen Brenner und Werkst\u00fcck verringern.\n Anmerkung\n Eine leichte Abweichung der Schnittwinkel kann normal sein, solange sie innerhalb der Toleranz liegt.\n \n@@ -7237,15 +7237,15 @@\n trouble shooting trying to work around the lack of what many would consider to be mandatory features.\n Obwohl Regeln dazu da sind, gebrochen zu werden, wenn man die Gr\u00fcnde f\u00fcr die Anwendung der\n Regel versteht, sind wir der Meinung, dass ein neuer Hersteller von Plasmatischen eine Maschine mit\n den folgenden Merkmalen ausw\u00e4hlen sollte:\n \u2022 Blowback-Start zur Minimierung der elektrischen Ger\u00e4usche und zur Vereinfachung der Konstruktion\n \u2022 Ein Maschinenbrenner wird bevorzugt, aber viele haben auch Handbrenner verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 85 / 1327\n \n \u2022 Eine vollst\u00e4ndig abgeschirmte Brennerspitze, die eine ohmsche Abtastung erm\u00f6glicht\n Wenn Sie \u00fcber das n\u00f6tige Budget verf\u00fcgen, k\u00f6nnen Sie sich f\u00fcr ein h\u00f6herwertiges Ger\u00e4t entscheiden:\n \u2022 Vom Hersteller bereitgestellte Schneidtabellen, die viele Stunden und Materialabf\u00e4lle bei der Kalibrierung der Schneidparameter sparen\n \u2022 Dry Contacts for ArcOK\n@@ -7282,15 +7282,15 @@\n people around the globe have been involved in testing and improving the feature set. QtPlasmaC is\n unique in that its design goal was to support all THCs including the simple bit bang ones through\n to sophisticated torch voltage control, if the voltage is made available to LinuxCNC via a THCAD or\n some other voltage sensor. What\u2019s more, QtPlasmaC is designed to be a stand alone system that does\n not need any additional G-code subroutines and allows the user to define their own cut charts that\n are stored in the system and accessible by a drop-down.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 86 / 1327\n \n 2.7.6 Lichtbogen-OK-Signal\n Plasma machines that have a CNC interface contain a set of dry contacts (eg a relay) that close when a\n valid arc is established and each side of these contacts are bought out onto pins on the CNC interface.\n A plasma table builder should connect one side of these pins to field power and the other to an input\n@@ -7330,15 +7330,15 @@\n Commands. If this is the case, then after initial probing, it is recommended to probe away from the\n surface until the probe signal is lost at a slower speed. Also, ensure the switch hysteresis is accounted\n for.\n Unabh\u00e4ngig von der verwendeten Sondierungsmethode wird dringend empfohlen, einen gleitenden\n Schalter einzubauen, damit ein Ausweich- oder Sekund\u00e4rsignal vorhanden ist, um eine Besch\u00e4digung\n des Brenners bei einem Absturz zu vermeiden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 87 / 1327\n \n 2.7.7.2 Ohmsche Erfassung\n Ohmic sensing relies on contact between the torch and the material acting as a switch to activate an\n electrical signal that is sensed by the CNC controller. Provided the material is clean, this can be a\n much more accurate method of sensing the material than a float switch which can cause deflection\n@@ -7369,15 +7369,15 @@\n Encoder B and Encoder Index pins. This firmware is available for download for the 7I76E and 7I96\n boards from the Mesa web site on the product pages.\n The THCAD is sensitive enough to see the ramp up in circuit voltage as contact pressure increases.\n The ohmic.comp component included in LinuxCNC can monitor the sensing voltage and set a voltage\n threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower \u201cbreak circuit\u201d threshold can be set to build in strong switch hysteresis. This minimises\n false triggering. In our testing, we found the material sensing using this method was more sensitive\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 88 / 1327\n \n and robust as well as being simpler to implement the wiring. One further advantage is using software\n outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage\n is helpful to get the most out of the Mesa 7I96 which has limited I/O pins.\n Der folgende Schaltplan zeigt, wie eine Hypersensing-Schaltung realisiert werden kann.\n@@ -7389,15 +7389,15 @@\n The following HAL code can be pasted into your QtPlasmaC\u2019s custom.hal to enable Ohmic sensing on\n Encoder 2 of a 7I76E. Install the correct bit file and connect the THCAD to IDX+ and IDX-. Be sure to\n change the calibration settings to agree with your THCAD-5.\n # --- Load the Component --loadrt ohmic names=ohmicsense\n addf ohmicsense servo-thread\n # --- 7I76E ENCODER 2 SETUP FOR OHMIC SENSING--setp hm2_7i76e.0.encoder.02.scale -1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 89 / 1327\n \n setp hm2_7i76e.0.encoder.02.counter-mode 1\n # --- Configure the component --setp ohmicsense.thcad-0-volt-freq\n 140200\n setp ohmicsense.thcad-max-volt-freq 988300\n@@ -7432,15 +7432,15 @@\n Liegt die Schnittgeschwindigkeit am Ende dieser Verz\u00f6gerung noch nicht in der N\u00e4he der gew\u00fcnschten Schnittgeschwindigkeit, sollte die Steuerung warten, bis diese erreicht ist, bevor sie die THC\n aktiviert.\n \n 2.7.9 Abtastung der Brennerspannung\n Anstatt sich auf die Schneidtabellen des Herstellers zu verlassen, um die gew\u00fcnschte Brennerspannung einzustellen, ziehen es viele Leute (einschlie\u00dflich des Verfassers) vor, die Spannung zu messen,\n wenn die THC aktiviert ist, und diese als Sollwert zu verwenden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 90 / 1327\n \n 2.7.10 Brenner Behinderung (engl. torch breakaway)\n It is recommended that a mechanism is provided to allow the torch to \u201cbreak away\u201d or fall off in the\n case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow\n the CNC controller to detect if this has occurred and pause the running program. Usually a break\n@@ -7470,15 +7470,15 @@\n So it should be possible to compare the moving average with the dv/dt and halt THC operation once\n the dv/dt exceeds the normal range expected due to warpage. More work needs to be done in this\n area to come up with a working solution in LinuxCNC.\n \n 2.7.13 Hole And Small Shape Cutting\n It is recommended that you slow down cutting when cutting holes and small shapes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 91 / 1327\n \n John Moore says: \u201cIf you want details on cutting accurate small holes look up the sales sheets on\n Hypertherm\u2019s True Hole Technology also look on PlasmaSpider, user seanp has posted extensively on\n his work using simple air plasma.\n The generally accepted method to get good holes from 37mm dia. and down to material thickness with\n@@ -7516,15 +7516,15 @@\n overshoot the initial trigger point by 50-100 mm. If you use a shared home/limit switch, you have to\n move the sensor off the trigger point with the final HOME_OFFSET or you will trigger a limit switch\n fault as the machine comes out of homing. This means you could lose 50 mm or more of axis travel\n with shared home/limit switches. This does not happen if separate home and limit switches are used.\n The following pins are usually required (note that suggested connections may not be appropriate for\n a QtPlasmaC configuration):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 92 / 1327\n \n 2.7.14.1 Arc OK (input)\n \u2022 Inverter closes dry contacts when a valid arc is established\n \u2022 Connect Field power to one Inverter ArcOK terminal.\n \u2022 Connect other Inverter Ok Terminal to input pin.\n@@ -7555,15 +7555,15 @@\n 2.7.14.4 Ohmscher Sensor aktivieren (Ausgang)\n \u2022 Siehe den Schaltplan ohmic sensing.\n \u2022 Verbinden Sie den Ausgangspin mit einer Seite des Trennrelais und die andere Seite mit der Masse\n der Feldversorgung.\n \u2022 In a non-QtPlasmaC configuration, usually triggered by a \u0300 \u0300motion.digital-out- \u0300 \u0300 so it can be\n controlled in G-code by M62/M63/M64/M65\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 93 / 1327\n \n 2.7.14.5 Ohmsche Sensorik (engl. ohmic sensing) (Eingang)\n \u2022 Beachten Sie das zuvor gezeigte Schema zu ohmic sensing.\n \u2022 Eine isolierte Stromversorgung l\u00f6st ein Relais aus, wenn der Brennerschild das Material ber\u00fchrt.\n \u2022 Schlie\u00dfen Sie die Feldspannung an eine Ausgangsklemme und die andere an den Eingang an.\n@@ -7599,15 +7599,15 @@\n M62 P2 will disable THC (synchronised with motion)\n M63 P2 will enable THC (synchronised with motion)\n M64 P2 will disable THC (immediately)\n M65 P2 will enable THC (immediately)\n \n Reduce Cutting Speeds: (e.g., for hole cutting)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 94 / 1327\n \n M67 E3 Q0 w\u00fcrde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen\n M67 E3 Q40 w\u00fcrde die Geschwindigkeit auf 40% der angeforderten~Geschwindigkeit setzen\n M67 E3 Q60 w\u00fcrde die Geschwindigkeit auf 60% der angeforderten~Geschwindigkeit setzen\n M67 E3 Q100 w\u00fcrde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen\n@@ -7652,15 +7652,15 @@\n [JOINT_n]\n MAX_VELOCITY = 60\n MAX_ACCELERATION = 700\n \n For further information about external offsets (for version 2.8 or later) please read the [AXIS_]\n Section of the INI file document and External Axis Offsets in the LinuxCNC documentation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 95 / 1327\n \n 2.7.17 Reading Arc Voltage With The Mesa THCAD\n The Mesa THCAD board is a remarkably well priced and accurate voltage to frequency converter that\n is designed for the hostile noisy electrical environment associated with plasma cutting. Internally it\n has a 0-10 V range. This range can be simply extended by the addition of some resistors as described\n@@ -7702,15 +7702,15 @@\n \n Power up your controller and open Halshow (AXIS: Show Homing Configuration), drill down to find\n the hm2_7i76e.0.encoder.00.velocity pin. With 0 Volts applied, it should be hovering around the\n 0 Volt frequency (3,800 in our example). Grab a 9 Volt battery and connect it to IN + and IN -. For a\n THCAD-10 you can now calculate the expected velocity (26,480 in our hypothetical example). If you\n pass this test, then you are ready to configure your LinuxCNC plasma controller.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 96 / 1327\n \n 2.7.17.3 Which Model THCAD To Use?\n The THCAD-5 is useful if you intend to use it for ohmic sensing. There is no doubt the THCAD-10\n is the more flexible device and it is easy to alter the scaling. However, there is one caveat that can\n come into play with some cheaper plasma cutters with an inbuilt voltage divider. That is, the internal resistors may be sensed by the THCAD as being part of its own external resistance and return\n@@ -7743,15 +7743,15 @@\n 2. Processed in CAM to generate final G-code that is loaded to the machine\n 3. Cutting the parts via CNC G-code commands.\n Some people achieve good results with Inkscape and G-code tools but SheetCam is a very well priced\n solution and there are a number of post processors available for LinuxCNC. SheetCam has a number\n of advanced features designed for plasma cutting and for the price, is a no brainer for anybody doing\n regular plasma cutting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 97 / 1327\n \n 2.7.19 Designing For Noisy Electrical Environments\n Plasma cutting is inherently an extremely hostile and noisy electrical environment. If you have EMI\n problems things won\u2019t work correctly. You might fire the torch and the computer will reboot in a more\n obvious example, but you can have any number of other odd symptoms. They will pretty much all\n@@ -7798,15 +7798,15 @@\n The minimum water level under the cut level of the torch should be around 40 mm, having space under\n slats is nice so the water can level and escape during cutting, having a bit of water above the metal\n plate being cut is really nice as it gets rid of the little bit of dust, running it submerged is the best way\n but not preferable for systems with part time use as it will corrode the torch. Adding baking soda to\n the water will keep the table in a nice condition for many years as it does not allow corrosion while\n the slats are under water and it also reduces the smell of water vapour. Some people use a water\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 98 / 1327\n \n reservoir with a compressed air inlet so they can push the water from the reservoir up to the water\n table on demand and thus allow changes in water levels.\n \n 2.7.21 Downdraft Tables\n@@ -7845,15 +7845,15 @@\n \n 2.7.25 Hypertherm RS485 Control\n Some Hypertherm plasma cutters have a RS485 interface to allow the controller (e.g., LinuxCNC)\n to set amps.pressure and mode. A number of people have used a userspace component written in\n Python to achieve this. More recently, QtPlasmaC now supports this interface natively. Refer to the\n QtPlasmaC documentation for how to use it.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 99 / 1327\n \n The combination of a slow baud rate used by Hypertherm and the userspace component, make this\n fairly slow to alter machine states so it generally not viable to change settings on the fly while cutting.\n When selecting a RS485 interface to use at the PC end, users have reported that USB to RS485\n interfaces are not reliable. Good reliable results have been achieved using a hardware based RS232\n@@ -7873,15 +7873,15 @@\n and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors\n are text files written in the Lua programming language and are generally easy to modify to suit your\n exact requirements. For further information, consult the SheetCam web site and their support forum.\n Another popular post-processor is included with the popular Fusion360 package but the included\n post-processors will need some customisation.\n LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 100 / 1327\n \n Kapitel 3\n \n Konfigurationsassistenten\n 3.1 Schrittmotor-Konfigurations-Assistent\n@@ -7892,15 +7892,15 @@\n StepConf wird bei der Installation von LinuxCNC mitinstalliert und befindet sich im CNC-Men\u00fc.\n StepConf legt eine Datei im Verzeichnis linuxcnc/config ab, um die Auswahlm\u00f6glichkeiten f\u00fcr jede von\n Ihnen erstellte Konfiguration zu speichern. Wenn Sie etwas \u00e4ndern, m\u00fcssen Sie die Datei ausw\u00e4hlen,\n die dem Namen Ihrer Konfiguration entspricht. Die Dateierweiterung lautet .stepconf.\n Der StepConf-Assistent funktioniert am besten bei einer Bildschirmaufl\u00f6sung von mindestens 800 x\n 600.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 101 / 1327\n \n 3.1.2 Startseite\n \n Abbildung 3.1: StepConf Einstiegsseite\n Die ersten drei Optionsfelder sind selbsterkl\u00e4rend:\n@@ -7912,15 +7912,15 @@\n \u2022 Importieren (engl. import) - Importieren Sie eine Mach-Konfigurationsdatei und versucht, sie in eine\n LinuxCNC-Konfigurationsdatei zu konvertieren. Nach dem Import gehen Sie durch die Seiten von\n StepConf, um die Eintr\u00e4ge zu best\u00e4tigen/zu \u00e4ndern. Die urspr\u00fcngliche Mach-XML-Datei wird nicht\n ver\u00e4ndert.\n Diese folgenden Optionen werden in einer Einstellungsdatei f\u00fcr den n\u00e4chsten Lauf von StepConf\n gespeichert.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 102 / 1327\n \n \u2022 Desktop-Verkn\u00fcpfung erstellen (engl. Create Desktop Shortcut) - Damit wird eine Verkn\u00fcpfung auf\n Ihrem Desktop zu den Dateien erstellt.\n \u2022 Desktop Launcher erstellen (engl. Create Desktop Launcher) - Damit wird ein Launcher auf Ihrem\n Desktop platziert, um Ihre Anwendung zu starten.\n@@ -7930,15 +7930,15 @@\n \n Abbildung 3.2: Seite mit grundlegenden Informationen\n \u2022 Simulierte Hardware erstellen (engl. Create Simulated Hardware) - Damit k\u00f6nnen Sie eine Konfiguration zum Testen erstellen, auch wenn Sie nicht \u00fcber die tats\u00e4chliche Hardware verf\u00fcgen\u2019.\n \u2022 Maschinenname - W\u00e4hlen Sie einen Namen f\u00fcr Ihre Maschine. Verwenden Sie nur Gro\u00dfbuchstaben,\n Kleinbuchstaben, Ziffern, - und _.\n \u2022 Achsenkonfiguration - W\u00e4hlen Sie XYZ (Fr\u00e4sen), XYZA (4-Achsen-Fr\u00e4sen) oder XZ (Drehen).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 103 / 1327\n \n \u2022 Maschineneinheiten (engl. machine units) - W\u00e4hlen Sie Zoll (engl. inch) oder mm. Alle nachfolgenden Eingaben werden in der gew\u00e4hlten Einheit vorgenommen. Wenn Sie diese Einstellung \u00e4ndern,\n werden auch die Standardwerte im Bereich Achsen ge\u00e4ndert. Wenn Sie dies \u00e4ndern, nachdem Sie\n Werte in einem der Achsenbereiche ausgew\u00e4hlt haben, werden diese durch die Standardwerte der\n ausgew\u00e4hlten Einheiten \u00fcberschrieben.\n@@ -7971,15 +7971,15 @@\n Test mindestens ein paar Minuten laufen. Je l\u00e4nger Sie den Test laufen lassen, desto eher werden auch\n seltene Ereignisse erfasst, die m\u00f6glicherweise in k\u00fcrzeren Abst\u00e4nden auftreten. Dies ist ein Test nur\n f\u00fcr Ihren Computer, es muss also keine Hardware angeschlossen sein, um den Test durchzuf\u00fchren.\n \n Warnung\n Versuchen Sie nicht, LinuxCNC zu starten, w\u00e4hrend der Latenztest l\u00e4uft.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 104 / 1327\n \n Abbildung 3.3: Latenz-Test\n Die Latenzzeit gibt an, wie lange der PC braucht, um seine Arbeit zu unterbrechen und auf eine externe\n Anfrage zu reagieren. In unserem Fall ist die Anfrage der periodische Herzschlag (engl. heartbeat),\n der als Zeitreferenz f\u00fcr die Schrittimpulse dient. Je geringer die Latenzzeit ist, desto schneller kann\n@@ -7997,15 +7997,15 @@\n If your Max Jitter number is less than about 15-20 \u00b5s (15000-20000 ns), the computer should give very\n nice results with software stepping. If the max latency is more like 30-50 \u00b5s, you can still get good\n results, but your maximum step rate might be a little disappointing, especially if you use microstepping\n or have very fine pitch leadscrews. If the numbers are 100 \u00b5s or more (100,000 ns), then the PC is not\n a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is\n not a good candidate for LinuxCNC, regardless of whether you use software stepping or not.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 105 / 1327\n \n 3.1.5 Einrichtung der parallelen Schnittstelle\n \n Abbildung 3.4: Parallele Schnittstelle Setup-Seite\n Sie k\u00f6nnen die Adresse als Hexadezimalwert (oft 0x378) oder als Linux\u2019s Standard-Portnummer (wahrscheinlich 0) angeben\n@@ -8014,15 +8014,15 @@\n \u2022 Ausgangspinout-Voreinstellungen - Automatische Einstellung der Pins 2 bis 9 gem\u00e4\u00df dem SherlineStandard (Richtung auf Pins 2, 4, 6, 8) oder dem Xylotex-Standard (Richtung auf Pins 3, 5, 7, 9).\n \u2022 \u201eEing\u00e4nge und Ausg\u00e4nge\u201c \u2013 Wenn der Ein- oder Ausgang nicht verwendet wird, setzen Sie die\n Option auf \u201eNicht verwendet\u201c.\n \u2022 Externes Notaus (engl. external E-Stop) - Dies kann aus einem Dropdown-Feld f\u00fcr den Eingangsstift ausgew\u00e4hlt werden. Eine typische Notaus-Kette verwendet alle normalerweise geschlossenen\n Kontakte.\n \u2022 Referenzpunkt- & Endschalter - Diese k\u00f6nnen bei den meisten Konfigurationen aus einem DropdownFeld f\u00fcr den Eingangspin ausgew\u00e4hlt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 106 / 1327\n \n \u2022 Charge Pump - Wenn Ihre Treiberplatine ein Ladungspumpensignal ben\u00f6tigt, w\u00e4hlen Sie Charge\n Pump aus der Dropdown-Liste f\u00fcr den Ausgangspin, den Sie mit Ihrem Ladungspumpeneingang\n verbinden m\u00f6chten. Der Ausgang der Ladungspumpe ist \u00fcber StepConf mit dem Basisgewinde verbunden. Der Ausgang der Ladungspumpe entspricht etwa der H\u00e4lfte der maximalen Schrittrate, die\n auf der Seite \u201dBasic Machine Configuration\u201d angegeben ist.\n@@ -8035,15 +8035,15 @@\n Abbildung 3.5: Einrichten von Parallel Port 2\n Der zweite Parallelport (falls ausgew\u00e4hlt) kann auf dieser Seite konfiguriert und seine Pins zugewiesen\n werden. Es k\u00f6nnen keine Schritt- und Richtungssignale ausgew\u00e4hlt werden. Sie k\u00f6nnen \u201din\u201d oder\n \u201dout\u201d w\u00e4hlen, um die Anzahl der verf\u00fcgbaren Eingangs-/Ausgangs-Pins zu maximieren. Sie k\u00f6nnen\n die Adresse als Hexadezimalwert (oft 0x378) oder als Linux\u2019s Standard-Portnummer (wahrscheinlich\n 1) angeben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 107 / 1327\n \n 3.1.7 Achsenkonfiguration\n \n Abbildung 3.6: Achsenkonfiguration am Bildschirm\n \u2022 Motorschritte pro Umdrehung - Die Anzahl der vollen Schritte pro Motorumdrehung. Wenn Sie\n@@ -8057,15 +8057,15 @@\n gew\u00e4hlt haben, geben Sie die Anzahl der Gewinde pro Zoll ein. Wenn Sie die Einheit mm gew\u00e4hlt\n haben, geben Sie die Anzahl der Millimeter pro Umdrehung ein (z.B. 2 f\u00fcr 2mm/Umdrehung). Wenn\n die Maschine in die falsche Richtung f\u00e4hrt, geben Sie hier eine negative Zahl anstelle einer positiven\n Zahl ein, oder kehren Sie den Richtungspin f\u00fcr die Achse um.\n \u2022 Maximale Geschwindigkeit - Geben Sie die maximale Geschwindigkeit f\u00fcr die Achse in Einheiten\n pro Sekunde ein.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 108 / 1327\n \n \u2022 Maximale Beschleunigung - Die richtigen Werte f\u00fcr diese Elemente k\u00f6nnen nur durch Experimentieren ermittelt werden. Siehe > zur Einstellung der Geschwindigkeit und Maximale Beschleunigung bestimmen zur Einstellung der Beschleunigung.\n \u2022 Referenzunkt - Die Position, zu der die Maschine nach Abschluss des Referenzfahrtverfahrens f\u00fcr\n diese Achse f\u00e4hrt (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\u00fcckt. Wenn\n Sie den Referenzpunktschalter und den Endschalter kombinieren, m\u00fcssen Sie den Schalter in die\n@@ -8099,15 +8099,15 @@\n Computer zu Computer)\n \u2022 Axis SCALE - Die Zahl, die in der INI-Datei [SCALE] Einstellung verwendet wird. Die Anzahl Schritte\n pro Benutzereinheit.\n \u2022 Diese Achse testen - (engl. test this axis) Dadurch wird ein Fenster ge\u00f6ffnet, in dem jede Achse\n getestet werden kann. Dies kann verwendet werden, nachdem alle Informationen f\u00fcr diese Achse\n ausgef\u00fcllt wurden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 109 / 1327\n \n Abbildung 3.7: Achsen-Test\n Der Achsen-Test ist ein einfacher Test, f\u00fcr den nur Schritt- und Richtungssignale ausgegeben werden,\n um verschiedene Werte f\u00fcr Beschleunigung und Geschwindigkeit zu testen.\n Wichtig\n@@ -8130,15 +8130,15 @@\n Wenn die Maschine nicht offensichtlich zum Stillstand gekommen ist, klicken Sie auf die Schaltfl\u00e4che\n Ausf\u00fchren. Die Achse kehrt nun zu der Position zur\u00fcck, an der sie gestartet ist. Wenn die Position\n nicht korrekt ist, dann ist die Achse w\u00e4hrend des Tests stehen geblieben oder hat Schritte verloren.\n Verringern Sie die Geschwindigkeit und starten Sie den Test erneut.\n Wenn sich die Maschine nicht bewegt, stehen bleibt oder Schritte verliert, egal wie niedrig Sie die\n Geschwindigkeit einstellen, \u00fcberpr\u00fcfen Sie Folgendes:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 110 / 1327\n \n \u2022 Korrigieren Sie das Timing der Schrittwellenform\n \u2022 Korrekte Pinbelegung, einschlie\u00dflich Invert auf Step-Pins\n \u2022 Korrekte, gut geschirmte Verkabelung\n \u2022 Physikalische Probleme mit dem Motor, der Motorkupplung, der Leitspindel usw.\n@@ -8148,15 +8148,15 @@\n 3.1.7.2 Bestimmen der maximalen Beschleunigung\n Geben Sie mit der im vorherigen Schritt ermittelten H\u00f6chstgeschwindigkeit den zu testenden Beschleunigungswert ein. Passen Sie den Beschleunigungswert wie oben beschrieben nach oben oder\n unten an. Bei diesem Test ist es wichtig, dass die Kombination aus Beschleunigung und Testbereich es\n der Maschine erm\u00f6glicht, die ausgew\u00e4hlte Geschwindigkeit zu erreichen. Sobald Sie einen Wert gefunden haben, bei dem die Achse w\u00e4hrend dieses Testverfahrens nicht ins Stocken ger\u00e4t oder Schritte\n verliert, reduzieren Sie ihn um 10 % und verwenden Sie diesen Wert als maximale Beschleunigung\n der Achse.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 111 / 1327\n \n 3.1.8 Spindel-Konfiguration\n \n Abbildung 3.8: Seite zur Spindelkonfiguration\n Diese Seite erscheint nur, wenn Spindle PWM auf der Seite Parallel Port Pinout f\u00fcr einen der Ausg\u00e4nge\n@@ -8167,15 +8167,15 @@\n ein, der f\u00fcr die Erzeugung einer analogen Steuerspannung n\u00fctzlich ist. Den entsprechenden Wert\n finden Sie in der Dokumentation zu Ihrem Spindelcontroller.\n \u2022 Drehzahl 1 und 2, PWM 1 und 2 - Die generierte Konfigurationsdatei verwendet eine einfache lineare\n Beziehung, um den PWM-Wert f\u00fcr einen bestimmten Drehzahlwert zu bestimmen. Wenn die Werte\n nicht bekannt sind, k\u00f6nnen sie bestimmt werden. Weitere Informationen finden Sie unter Festlegung\n der Spindle Kalibrierung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 112 / 1327\n \n 3.1.8.2 Spindel-synchronisierte Bewegung\n Wenn die entsprechenden Signale von einem Spindel-Encoder an LinuxCNC \u00fcber HAL verbunden\n sind, unterst\u00fctzt LinuxCNC Drehmaschine Gewindeschneiden. Diese Signale sind:\n \u2022 Spindle Index \u2013 Ist ein Impuls, der einmal pro Spindelumdrehung auftritt.\n@@ -8218,28 +8218,28 @@\n zu ber\u00fccksichtigen:\n \u2022 Stellen Sie sicher, dass die beiden Kalibrierungsdrehzahlen nicht zu nahe beieinander liegen.\n \u2022 Vergewissern Sie sich, dass die beiden Kalibrierungsgeschwindigkeiten im Bereich der Geschwindigkeiten liegen, die Sie normalerweise beim Fr\u00e4sen verwenden.\n Wenn Ihre Spindel z. B. von 0 U/min bis 8000 U/min l\u00e4uft, Sie aber in der Regel Drehzahlen zwischen\n 400 U/min (10 %) und 4000 U/min (100 %) verwenden, dann suchen Sie die PWM-Werte, die 1600\n U/min (40 %) und 2800 U/min (70 %) ergeben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 113 / 1327\n \n 3.1.9 Optionen\n \n Abbildung 3.9: Erweiterte Optionen bei der Konfiguration\n \u2022 Include Halui - Damit wird die Halui-Benutzerschnittstellenkomponente hinzugef\u00fcgt. Siehe das HALUI Kapitel f\u00fcr weitere Informationen hierzu.\n \u2022 Include PyVCP - Diese Option f\u00fcgt die PyVCP-Panel-Basisdatei oder eine Beispieldatei zum Arbeiten\n hinzu. Siehe das PyVCP Kapitel f\u00fcr weitere Informationen.\n \u2022 Include ClassicLadder PLC - Diese Option f\u00fcgt die ClassicLadder PLC (Speicherprogrammierbare\n Steuerung) hinzu. Weitere Informationen finden Sie im Kapitel >.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 114 / 1327\n \n \u2022 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\n in der Regel nur sinnvoll, wenn Sie voreinstellbaren Werkzeugen haben.\n \n 3.1.10 Vollst\u00e4ndige Maschinenkonfiguration\n@@ -8259,15 +8259,15 @@\n angetroffen wird, schaltet LinuxCNC den Motorverst\u00e4rker ab. Der Abstand zwischen dem harten Anschlag und Endschalter muss lang genug sein, um einen unbestromten Motor zum Stillstand zu bringen.\n 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\n weiche Grenze \u00fcberschreiten w\u00fcrde, wird es nicht ausgef\u00fchrt. Wenn eine manuelle Steuerung die\n Softgrenze \u00fcberschreiten w\u00fcrde, wird diese an der Softgrenze beendet.\n Der Referenzschalter (engl. home switch) kann an einer beliebigen Stelle innerhalb des Verfahrwegs\n (zwischen harten Anschl\u00e4gen) platziert werden. Solange die externe Hardware die Motorverst\u00e4rker\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 115 / 1327\n \n nicht deaktiviert, wenn der Endschalter erreicht wird, kann einer der Endschalter als Referenzschalter\n verwendet werden.\n Die Nullposition ist die Stelle auf der Achse, die im Maschinenkoordinatensystem 0 ist. Normalerweise\n liegt die Nullposition innerhalb der weichen Grenzen. Bei Drehmaschinen erfordert der Modus Konstante Schnittgeschwindigkeit, dass X=0 dem Zentrum der Spindeldrehung entspricht, wenn keine\n@@ -8292,15 +8292,15 @@\n The figures below show the general idea of wiring multiple switches to a single input pin. In each\n case, when one switch is actuated, the value seen on INPUT goes from logic HIGH to LOW. However,\n LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be\n checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input\n high until the connection to ground is made and then the input goes low. Otherwise the input might\n float between on and off when the circuit is open. Typically for a parallel port you might use 47 k\u03a9;.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 116 / 1327\n \n Abbildung 3.11: Normalerweise geschlossene Schalter (engl. normally closed, N/C) in Reihe verdrahtet (vereinfachtes Diagramm)\n \n Abbildung 3.12: Normalerweise offene Schalter (engl. normally open switches, N/O) parallel verdrahtet (vereinfachte Darstellung)\n Die folgenden Kombinationen von Schaltern sind in StepConf zul\u00e4ssig:\n@@ -8311,15 +8311,15 @@\n \u2022 Kombinieren eines Endschalters und des Referenzschalters f\u00fcr eine Achse\n Die letzten beiden Kombinationen sind auch geeignet, wenn der Typ Kontakt\n Referenz verwendet wird.\n \n 3.2 Mesa-Konfigurationsassistent\n PnCconf wurde entwickelt, um Konfigurationen zu erstellen, die bestimmte Mesa Anything I/O Produkte verwenden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 117 / 1327\n \n Es kann Servo-Systeme mit geschlossenem Regelkreis oder Hardware-Schrittmachersysteme konfigurieren. Es verwendet einen \u00e4hnlichen Assistenten Ansatz wie Stepconf (verwendet f\u00fcr SoftwareStepping, parallel portgesteuerte Systeme).\n PnCconf befindet sich noch im Entwicklungsstadium (Beta), daher gibt es noch einige Bugs und fehlende Funktionen. Bitte melden Sie Fehler und Vorschl\u00e4ge auf der LinuxCNC Forumsseite oder \u00fcber\n die Mailing-Liste.\n Bei der Verwendung von PnCconf gibt es zwei Denkans\u00e4tze:\n@@ -8331,15 +8331,15 @@\n Dies w\u00e4re die Wahl, wenn Sie umfangreiche \u00c4nderungen \u00fcber PnCconf\u2019s Umfang oder wollen einfach\n nur mit / lernen \u00fcber LinuxCNC basteln m\u00fcssen.\n Mit den Schaltfl\u00e4chen \u201dVor\u201d, \u201dZur\u00fcck\u201d und \u201dAbbrechen\u201d k\u00f6nnen Sie durch die Seiten des Assistenten\n navigieren. Au\u00dferdem gibt es eine Hilfeschaltfl\u00e4che, die einige Informationen zu den Seiten, Diagrammen und einer Ausgabeseite enth\u00e4lt.\n Tipp\n Die Hilfeseite von PnCconf sollte die aktuellsten Informationen und zus\u00e4tzliche Details enthalten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 118 / 1327\n \n 3.2.1 Schritt f\u00fcr Schritt Anleitung\n \n Abbildung 3.13: PnCconf Startfenster\n \n@@ -8350,15 +8350,15 @@\n k\u00f6nnen Sie Desktop-Verkn\u00fcpfungen und Startoptionen ausw\u00e4hlen. Eine Desktop-Verkn\u00fcpfung legt ein\n Ordnersymbol auf dem Desktop ab, das auf Ihre neuen Konfigurationsdateien verweist. Andernfalls\n m\u00fcssten Sie in Ihrem Home-Ordner unter linuxcnc/configs suchen.\n Ein Desktop Launcher f\u00fcgt ein Symbol auf dem Desktop hinzu, um Ihre Konfiguration direkt zu starten.\n Sie k\u00f6nnen sie auch vom Hauptmen\u00fc aus starten, indem Sie den Configuration Selector LinuxCNC im\n CNC-Men\u00fc verwenden und den Namen Ihrer Konfiguration ausw\u00e4hlen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 119 / 1327\n \n 3.2.3 Grundlegende Informationen zur Maschine\n \n Abbildung 3.14: PnCconf Basic\n \n@@ -8369,15 +8369,15 @@\n Tipp\n Standardwerte werden bei der Verwendung in metrisch nicht konvertiert, stellen Sie also sicher, dass\n es sich um vern\u00fcnftige Werte handelt!\n \n Reaktionszeit des Computers\n Die Servoperiode gibt den Herzschlag des Systems vor. Latenz bezieht sich auf die Menge der\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 120 / 1327\n \n Zeit, die der Computer l\u00e4nger als diese Periode sein kann. Genau wie eine Eisenbahn, LinuxCNC erfordert alles auf eine sehr enge und konsistente Zeitlinie oder schlechte Dinge passieren.\n LinuxCNC erfordert und verwendet ein Echtzeit Betriebssystem, das nur bedeutet, dass es hat\n eine niedrige Latenz (LReaktionszeit) hat. Bbei der Durchf\u00fchrung von LinuxCNCs Berechnungen\n k\u00f6nnen diese nicht durch Anforderungen niedrigerer Priorit\u00e4t (wie Benutzereingaben auf dem\n@@ -8418,15 +8418,15 @@\n Die in der Auswahlbox verf\u00fcgbaren Mesa-Karten basieren darauf, was PnCconf an Firmware\n auf den Systemen findet. Es besteht die M\u00f6glichkeit, benutzerdefinierte Firmware hinzuzuf\u00fcgen\n und/oder bestimmte Firmware oder Karten mithilfe einer Einstellungsdatei auf eine schwarze\n Liste zu setzen (zu ignorieren). Wenn keine Firmware gefunden wird, zeigt PnCconf eine Warnung\n an und verwendet eine interne Beispiel-Firmware - ein Testen ist nicht m\u00f6glich. Wenn Sie zwei\n PCI-Mesa-Karten ausw\u00e4hlen, gibt es derzeit keine M\u00f6glichkeit vorherzusagen, welche Karte 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 121 / 1327\n \n und welche 1 ist - Sie m\u00fcssen testen - das Verschieben der Karten k\u00f6nnte die Reihenfolge \u00e4ndern.\n Wenn Sie mit zwei Karten konfigurieren, m\u00fcssen beide Karten installiert sein, damit die Tests\n funktionieren.\n Parallelport\n@@ -8458,15 +8458,15 @@\n \u2022 Touchy wurde f\u00fcr die Verwendung mit einem Touchscreen, einigen minimalen physischen Schaltern\n und einem MPG-Rad konzipiert.\n \u2022 erfordert Zyklus-Start-, Abbruch- und Einzelschritt-Signale und -Tasten\n \u2022 Au\u00dferdem muss das Handrad-Jogging mit gemeinsamer Achse ausgew\u00e4hlt werden.\n \u2022 ist GTK-basiert und integriert daher GladeVCP (virtuelle Kontrollfelder) auf unkompiziere Weise.\n \u2022 erm\u00f6glicht die Integration von VCP-Panels in die mittlere Registerkarte\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 122 / 1327\n \n \u2022 hat kein grafisches Fenster\n \u2022 Das Aussehen kann mit benutzerdefinierten Designs ge\u00e4ndert werden\n QtPlasmaC\n \u2022 voll funktionsf\u00e4hige Plasmac-Konfiguration auf der Grundlage der QtVCP-Infrastruktur.\n@@ -8474,15 +8474,15 @@\n \u2022 keine VCP-Integration\n \n 3.2.4 Externe Konfiguration\n Auf dieser Seite k\u00f6nnen Sie externe Steuerungen ausw\u00e4hlen, z. B. f\u00fcr Jogging oder Overrides.\n \n Abbildung 3.15: Externe Steuerelemente\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 123 / 1327\n \n Wenn Sie einen Joystick f\u00fcr Jogging w\u00e4hlen, so mu\u00df dieser immer eingesteckt sein, um LinuxCNC\n zu nutzen. Um die analogen Sticks f\u00fcr Jogging zu nutzen, werden Sie wahrscheinlich einigen HALCode selber hinzuf\u00fcgen m\u00fcssen. Handrad (auch Impulsgenerator oder engl. MPG)-Jogging erfordert\n einen Impulsgeber, der mit einem MESA-Geberz\u00e4hler verbunden ist. Override-Steuerungen k\u00f6nnen\n entweder einen Impulsgenerator oder einem Schalter (z. B. einen Drehschalter) verwenden. Externe\n@@ -8512,15 +8512,15 @@\n Neufestlegungen (engl. overrides)\n PnCconf erm\u00f6glicht die Neufestsetzung von Vorschubgeschwindigkeiten und/oder Spindeldrehzahlen \u00fcber ein Handrad (MPG) oder Schalter (z. B. Drehschalter).\n \n 3.2.5 GUI-Konfiguration\n Hier k\u00f6nnen Sie die Standardeinstellungen f\u00fcr die Bildschirme, f\u00fcgen Sie virtuelle Bedienfelder (VCP),\n und stellen Sie einige LinuxCNC Optionen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 124 / 1327\n \n Abbildung 3.16: GUI-Konfiguration\n \n Front-End GUI-Optionen\n Die Standardoptionen erm\u00f6glichen die Auswahl allgemeiner Standardeinstellungen f\u00fcr jeden Anzeigebildschirm.\n@@ -8529,15 +8529,15 @@\n zu verschieben, wenn das System dazu in der Lage ist.\n Touchy-Standardeinstellungen sind Optionen, die spezifisch f\u00fcr Touchy sind. Die meisten Optionen\n von Touchy\u2019k\u00f6nnen w\u00e4hrend der Ausf\u00fchrung von Touchy \u00fcber die Einstellungsseite ge\u00e4ndert werden.\n Touchy verwendet GTK, um seinen Bildschirm zu zeichnen, und GTK unterst\u00fctzt Themen. Themes\n steuern das grundlegende Aussehen und die Bedienung eines Programms. Sie k\u00f6nnen Themes aus\n dem Netz herunterladen oder sie selbst bearbeiten. Es gibt eine Liste der aktuellen Themen auf dem\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 125 / 1327\n \n Computer, aus der Sie ausw\u00e4hlen k\u00f6nnen. Damit ein Teil des Textes besser zur Geltung kommt, k\u00f6nnen\n Sie in PnCconf die Standardeinstellungen der Themes\u2019s \u00fcberschreiben. Die Optionen position und\n force max k\u00f6nnen verwendet werden, um Touchy auf einen zweiten Monitor zu verschieben, wenn\n das System dazu in der Lage ist.\n@@ -8573,15 +8573,15 @@\n ausw\u00e4hlen.\n W\u00e4hlen Sie unter \u201dBeispieloptionen\u201d die gew\u00fcnschten Optionen aus. Die Nulltasten verwenden HALUIBefehle, die Sie sp\u00e4ter im HALUI-Abschnitt bearbeiten k\u00f6nnen.\n Auto Z Touch-Off erfordert auch das klassische Leiter-Touch-Off-Programm und einen ausgew\u00e4hlten\n Sondeneingang. Es erfordert eine leitf\u00e4hige Touch-Off-Platte und ein geerdetes leitf\u00e4higes Werkzeug.\n Eine Idee, wie es funktioniert, finden Sie unter:\n https://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadderExamples#Single_button_probe_touchoff\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 126 / 1327\n \n Unter \u201eAnzeigeoptionen\u201c k\u00f6nnen Gr\u00f6\u00dfe, Position und max. Kraft auf einem \u201eeigenst\u00e4ndigen\u201c Panel\n verwendet werden, um beispielsweise den Bildschirm auf einem zweiten Monitor zu platzieren, wenn\n das System dazu in der Lage ist.\n Sie k\u00f6nnen ein GTK-Thema ausw\u00e4hlen, welches das grundlegende Erscheinungsbild des Panels festlegt. Normalerweise m\u00f6chten Sie, dass dies mit dem Front-End-Bildschirm \u00fcbereinstimmt. Diese Optionen werden verwendet, wenn Sie auf die Schaltfl\u00e4che \u201dBeispiel anzeigen\u201d klicken. Mit GladeVCP\n@@ -8603,15 +8603,15 @@\n \u2013 Wird f\u00fcr Werkzeugwechsler verwendet, die das Werkzeug nicht in dieselbe Tasche zur\u00fcckbringen. Um Werkzeugwechsler zu unterst\u00fctzen, m\u00fcssen Sie einen eigenen HAL-Code hinzuf\u00fcgen.\n \n 3.2.6 Mesa-Konfiguration\n Die Mesa-Konfigurationsseiten erlauben es, verschiedene Firmwares zu verwenden. Auf der Basisseite\n haben Sie eine Mesa-Karte ausgew\u00e4hlt. Hier w\u00e4hlen Sie die verf\u00fcgbare Firmware aus und bestimmen,\n welche und wie viele Komponenten verf\u00fcgbar sind.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 127 / 1327\n \n Abbildung 3.17: Mesa Board Konfiguration\n Die Parport-Adresse wird nur mit der Mesa-Parport-Karte, der 7i43, verwendet. Ein On-Board-Parallelport\n verwendet normalerweise 0x278 oder 0x378, obwohl Sie in der Lage sein sollten, die Adresse auf der\n BIOS-Seite zu finden. Bei der 7i43 muss die parallele Schnittstelle den EPP-Modus verwenden, der\n@@ -8621,15 +8621,15 @@\n Viele PCI-Karten unterst\u00fctzen das EPP-Protokoll nicht richtig.\n Die PDM-PWM- und 3PWM-Basisfrequenz bestimmt das Gleichgewicht zwischen Restwelligkeit und\n Linearit\u00e4t. Bei der Verwendung von Mesa-Tochterkarten sollten die Unterlagen f\u00fcr die Karte Empfehlungen enthalten\n \n Wichtig\n Es ist wichtig, diese zu beachten, um Sch\u00e4den zu vermeiden und die beste Leistung zu erzielen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 128 / 1327\n \n Der 7i33 ben\u00f6tigt PDM und eine PDM-Basisfrequenz von 6 MHz\n Der 7i29 ben\u00f6tigt PWM und eine PWM-Basisfrequenz von 20 kHz\n Das 7i30 erfordert PWM und eine PWM-Basisfrequenz von 20 kHz\n Das 7i40 erfordert PWM und eine PWM-Basisfrequenz von 50 kHz\n@@ -8652,48 +8652,48 @@\n Nachdem Sie all diese Optionen ausgew\u00e4hlt haben, dr\u00fccken Sie die Schaltfl\u00e4che Accept Component\n Changes und PnCconf aktualisiert die E/A-Setup-Seiten. Abh\u00e4ngig von der Mesa-Karte werden nur\n E/A-Registerkarten f\u00fcr verf\u00fcgbare Anschl\u00fcsse angezeigt.\n \n 3.2.7 Mesa I/O-Einrichtung\n Die Registerkarten werden zur Konfiguration der Eingangs- und Ausgangspins der Mesa-Karten verwendet. Mit PnCconf k\u00f6nnen Sie benutzerdefinierte Signalnamen zur Verwendung in benutzerdefinierten HAL-Dateien erstellen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 129 / 1327\n \n Abbildung 3.18: Mesa I/O C2 Einrichtung\n Auf dieser Registerkarte mit dieser Firmware sind die Komponenten f\u00fcr eine 7i33 Tochterplatine eingestellt, die normalerweise mit Servos mit geschlossenem Regelkreis verwendet wird. Beachten Sie,\n dass die Komponentennummern der Encoderz\u00e4hler und PWM-Treiber nicht in numerischer Reihenfolge sind. Dies entspricht den Anforderungen f\u00fcr die Tochterkarte.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 130 / 1327\n \n Abbildung 3.19: Mesa I/O C3 Einrichtung\n Auf dieser Registerkarte sind alle Pins GPIO. Beachten Sie die 3-stelligen Nummern - sie entsprechen\n der HAL-Pin-Nummer. GPIO-Pins k\u00f6nnen als Eingang oder Ausgang gew\u00e4hlt werden und k\u00f6nnen invertiert werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 131 / 1327\n \n Abbildung 3.20: Mesa I/O C4 Einrichtung\n Auf dieser Registerkarte gibt es eine Mischung aus Schrittgeneratoren und GPIO. Die Ausgangs- und\n Richtungspins der Schrittgeneratoren k\u00f6nnen invertiert werden. Beachten Sie, dass die Invertierung\n eines Step-Gen-A-Pins (des Step-Ausgangspins) das Step-Timing ver\u00e4ndert. Es sollte dem entsprechen, was Ihr Controller erwartet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 132 / 1327\n \n 3.2.8 Konfiguration des parallelen Anschlusses\n \n Der Parallelport kann f\u00fcr einfache E/A verwendet werden, \u00e4hnlich wie die GPIO-Pins von Mesa\u2019s.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 133 / 1327\n \n 3.2.9 Konfiguration der Achsen\n \n Abbildung 3.21: Konfiguration des Achsantriebs\n Diese Seite erm\u00f6glicht das Konfigurieren und Testen der Motor- und/oder Encoderkombination. Bei\n@@ -8702,15 +8702,15 @@\n Open-Loop-Test\n Ein Open-Loop-Test ist wichtig, da er die Richtung von Motor und Encoder best\u00e4tigt. Der Motor\n sollte die Achse in die positive Richtung bewegen, wenn die positive Taste gedr\u00fcckt wird, und\n auch der Encoder sollte in die positive Richtung z\u00e4hlen. Die Achsenbewegung sollte den Fu\u00dfnoten des Machinery\u2019s Handbook folgen:[\u201dAchsennomenklatur\u201d im Kapitel \u201dNumerische Steuerung\u201d im \u201dMachinery\u2019s Handbook\u201d, herausgegeben von Industrial Press,] sonst macht die grafische AXIS-Anzeige nicht viel Sinn. Hoffentlich k\u00f6nnen die Hilfeseite und die Diagramme helfen, dies herauszufinden. Beachten Sie, dass die Richtungen der Achsen auf der Bewegung des\n Werkzeugs und nicht auf der Bewegung des Tisches basieren. Beim Open-Loop-Test gibt es keine\n Beschleunigungsrampe, beginnen Sie also mit niedrigeren DAC-Zahlen. Durch Bewegen der Achse \u00fcber eine bekannte Strecke kann man die Skalierung des Encoders best\u00e4tigen. Der Encoder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 134 / 1327\n \n sollte auch ohne aktivierten Verst\u00e4rker z\u00e4hlen, je nachdem wie der Encoder mit Strom versorgt\n wird.\n \n Warnung\n@@ -8752,15 +8752,15 @@\n -0.96\n -0.03\n 9.87\n 10.07\n \n \u2022 F\u00fchren 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 135 / 1327\n \n \u2022 Beachten Sie, dass wir eine Rohausgabe w\u00fcnschen, bei der das gemessene Ergebnis mit der befohlenen Ausgabe identisch ist. Das bedeutet\n \u2013 cmd=a*raw+b\n \u2013 raw=(cmd-b)/a\n \u2022 Folglich k\u00f6nnen die Koeffizienten a und b aus der linearen Anpassung direkt als Skala und Offset\n@@ -8785,23 +8785,23 @@\n speed.\n B\u00fcrstenlose Motorsteuerung\n Diese Optionen werden verwendet, um eine Low-Level-Steuerung von b\u00fcrstenlosen Motoren\n mit spezieller Firmware und Tochterkarten zu erm\u00f6glichen. Sie erm\u00f6glicht auch die Konvertierung von HALL-Sensoren von einem Hersteller zu einem anderen. Sie wird nur teilweise\n unterst\u00fctzt und erfordert, dass man die HAL-Verbindungen fertigstellt. Kontaktieren Sie die\n Mail-Liste oder das Forum f\u00fcr weitere Hilfe.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 136 / 1327\n \n Abbildung 3.22: Berechnung der Achsenskala\n Die Ma\u00dfstabseinstellungen k\u00f6nnen direkt eingegeben werden oder man kann die Schaltfl\u00e4che Ma\u00dfstab berechnen zur Hilfe nehmen. Verwenden Sie die Kontrollk\u00e4stchen, um die entsprechenden Berechnungen auszuw\u00e4hlen. Beachten Sie, dass Riemenscheibenz\u00e4hne die Anzahl der Z\u00e4hne und nicht\n das \u00dcbersetzungsverh\u00e4ltnis erfordert. Das Schneckenradverh\u00e4ltnis ist genau das Gegenteil und er-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 137 / 1327\n \n fordert das Zahnradverh\u00e4ltnis. Wenn Sie mit der Skala zufrieden sind, dr\u00fccken Sie auf Anwenden,\n andernfalls auf Abbrechen und geben Sie die Skala direkt ein.\n \n Abbildung 3.23: Konfiguration der Achsen\n@@ -8812,15 +8812,15 @@\n Es ist sehr wichtig, dass sich die Achse zu Beginn in die richtige Richtung bewegt, da es sonst\n sehr schwierig ist, die Referenzfahrt zu richtig durchzuf\u00fchren!\n \n Denken Sie daran, dass sich positive und negative Richtungen auf das WERKZEUG und nicht auf den\n Tisch beziehen, wie im Maschinenhandbuch beschrieben.\n Bei einer typischen Knie- oder Bettfr\u00e4se\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 138 / 1327\n \n \u2022 Wenn sich die TABLE nach au\u00dfen bewegt, ist das die positive Y-Richtung\n \u2022 Wenn sich die TABLE nach links bewegt, ist das die positive X-Richtung\n \u2022 Wenn sich die TABLE nach unten bewegt, ist das die positive Z-Richtung\n \u2022 Wenn sich der KOPF nach oben bewegt, ist das die positive Z-Richtung\n@@ -8860,15 +8860,15 @@\n Ich kann mir kaum vorstellen, warum es an einer bestimmten Stelle sein muss. Es gibt nur ein\n paar G-Codes, um auf die MACHINE COORDINATE System zugreifen k\u00f6nnen.( G53, G30 und\n 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.\n Entscheiden Sie sich f\u00fcr den (endg\u00fcltigen) Referenzunkt (engl. HOME POSITION)\n dies platziert nur den Schlitten an einer konsistenten und bequemen Position nachdem LinuxCNC\n herausfindet, wo derORIGIN ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 139 / 1327\n \n Messen / Berechnen der positiven / negativen Achsabst\u00e4nde\n Fahren Sie die Achse zum Ursprung. Markieren Sie eine Referenz auf dem beweglichen Schlitten\n und dem unbeweglichen Tr\u00e4ger (so dass sie in einer Linie liegen) und fahren Sie die Maschine\n bis zum Ende der Grenzen. Messen Sie den Abstand zwischen den Markierungen, der einer der\n@@ -8910,42 +8910,42 @@\n Legt die Suchrichtung des Referenzschalters entweder negativ (d. h. in Richtung des negativen\n Endschalters) oder positiv (d. h. in Richtung des positiven Endschalters) fest.\n Referenzpunkt Latch Geschwindigkeit\n Feinf\u00fchlige Home-Suchgeschwindigkeit in Einheiten pro Minute.\n Referenzpunktsuche minimale Geschwindigkeit (engl. Home Final Velocity)\n Geschwindigkeit von der latch-Position zur (endg\u00fcltigen) Ausgangsposition in Einheiten pro Minute. F\u00fcr maximale Eilgeschwindigkeit auf 0 setzen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 140 / 1327\n \n Referenzpunkt der Verriegelungsrichtung\n Erm\u00f6glicht die Einstellung der Verriegelungsrichtung auf die gleiche oder entgegengesetzte\n Richtung wie die Suchrichtung.\n Encoder-Index f\u00fcr Referenzpunkt verwenden\n LinuxCNC sucht w\u00e4hrend der Latch-Phase der Referenzfahrt nach einem Encoder-Indeximpuls.\n Kompensationsdatei verwenden\n Erm\u00f6glicht die Angabe eines Komp-Dateinamens und -typs. Erm\u00f6glicht eine anspruchsvolle Kompensation. Siehe den> des INI Kapitels.\n Verwenden des Umkehrspiel-Ausgleichs\n Erm\u00f6glicht die Einstellung einer einfachen Kompensation des Umkehrspiels. Kann nicht mit Kompensationsdatei verwendet werden. Siehe den > des\n INI Kapitels.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 141 / 1327\n \n Abbildung 3.24: AXIS-Hilfsdiagramm\n Das Diagramm soll helfen, ein Beispiel f\u00fcr Endschalter und Standard-Achsbewegungsrichtungen zu\n demonstrieren. In diesem Beispiel wurde die Z-Achse mit zwei Endschaltern versehen, wobei der\n 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\n Grenzwert und die rechte der positive Grenzwert. Die ENDG\u00dcLTIGE HOME-POSITION soll 4 Zoll\n vom ORIGIN auf der positiven Seite entfernt sein. Wenn der Schlitten an die positive Grenze bewegt\n w\u00fcrde, w\u00fcrden wir 10 Zoll zwischen der negativen Grenze und dem negativen Ausl\u00f6sestift messen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 142 / 1327\n \n 3.2.10 Spindel-Konfiguration\n Wenn Sie Spindelsignale ausw\u00e4hlen, ist diese Seite zur Konfiguration der Spindelsteuerung verf\u00fcgbar.\n Tipp\n Viele der Optionen auf dieser Seite werden nur angezeigt, wenn auf den vorherigen Seiten die richtige\n@@ -8953,15 +8953,15 @@\n \n Abbildung 3.25: Spindelmotor/Encoder-Konfiguration\n Diese Seite \u00e4hnelt der Seite zur Konfiguration der Achsenmotoren.\n Es gibt einige Unterschiede:\n \u2022 Sofern man sich nicht f\u00fcr eine schrittgetriebene Spindel entschieden hat, gibt es keine Beschleunigungsoder Geschwindigkeitsbegrenzung.\n \u2022 Es gibt keine Unterst\u00fctzung f\u00fcr Gangschaltungen oder Bereiche.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 143 / 1327\n \n \u2022 Wenn Sie eine VCP-Spindelanzeigeoption gew\u00e4hlt haben, k\u00f6nnen die Skala f\u00fcr die Spindeldrehzahl\n und die Filtereinstellungen angezeigt werden.\n \u2022 Spindle-at-Speed erm\u00f6glicht LinuxCNC zu warten, bis die Spindel auf die gew\u00fcnschte Geschwindigkeit vor dem Bewegen der Achse ist. Dies ist besonders praktisch auf Drehmaschinen mit konstantem Oberfl\u00e4chenvorschub und gro\u00dfe Geschwindigkeit Durchmesser\u00e4nderungen. Es erfordert\n entweder Encoder-Feedback oder eine digitale Spindel-at-Speed-Signal in der Regel zu einem VFDAntrieb verbunden.\n@@ -8977,26 +8977,26 @@\n Dies erm\u00f6glicht die Einstellung von HALUI-Befehlen und das Laden von ClassicLadder- und BeispielSPS-Programme. Wenn Sie GladeVCP-Optionen ausgew\u00e4hlt haben, z. B. zum Nullstellen der Achse,\n werden Befehle angezeigt. Im Kapitel HALUI finden Sie weitere Informationen zur Verwendung benutzerdefinierter halcmds. Es gibt mehrere Optionen f\u00fcr Kontaktplanprogramme. Das Notaus (engl.\n E-stop)-Programm erm\u00f6glicht es einem externen Notaus-Schalter oder dem GUI-Frontend, ein Notaus auszul\u00f6sen. Es verf\u00fcgt auch \u00fcber ein zeitgesteuertes Schmiermittelpumpensignal. Das Z-AutoTouch-Off-Programm verf\u00fcgt \u00fcber eine Touch-Off-Platte, die GladeVCP-Touch-Off-Taste und spezielle\n HALUI-Befehle, um den aktuellen Benutzerursprung auf Null zu setzen und schnell zu l\u00f6schen. Das\n serielle Modbus-Programm ist im Grunde eine leere Programmvorlage, die ClassicLadder f\u00fcr seriellen\n Modbus einrichtet. Siehe das Kapitel > im Handbuch.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 144 / 1327\n \n Abbildung 3.26: PnCconf, erweiterte Optionen\n \n 3.2.12 HAL-Komponenten\n Auf dieser Seite k\u00f6nnen Sie zus\u00e4tzliche HAL-Komponenten hinzuf\u00fcgen, die Sie f\u00fcr benutzerdefinierte\n HAL-Dateien ben\u00f6tigen. Auf diese Weise sollte man die Haupt-HAL-Datei nicht von Hand bearbeiten\n m\u00fcssen, aber dennoch die vom Benutzer ben\u00f6tigten Komponenten bei der Konfiguration ber\u00fccksichtigen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 145 / 1327\n \n Abbildung 3.27: HAL-Komponenten\n Die erste Auswahl sind Komponenten, die PnCconf intern verwendet. Sie k\u00f6nnen pncconf so konfigurieren, dass zus\u00e4tzliche Instanzen der Komponenten f\u00fcr Ihre eigene HAL-Datei geladen werden.\n W\u00e4hlen Sie die Anzahl der Instanzen, die Ihre benutzerdefinierte Datei ben\u00f6tigt, PnCconf f\u00fcgt die\n ben\u00f6tigten Instanzen danach hinzu.\n@@ -9004,15 +9004,15 @@\n letzte verwenden.\n Benutzerdefinierte Komponenten-Befehle\n Mit dieser Auswahl k\u00f6nnen Sie HAL-Komponenten laden, die PnCconf nicht verwendet. F\u00fcgen\n Sie den Befehl loadrt oder loadusr unter der \u00dcberschrift loading command hinzu. F\u00fcgen Sie den\n Befehl addf unter der \u00dcberschrift Thread-Befehl hinzu. Die Komponenten werden dem Thread\n zwischen dem Lesen von Eingaben und dem Schreiben von Ausgaben in der Reihenfolge hinzugef\u00fcgt, in der Sie sie im Befehl \u201dthread\u201d schreiben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 146 / 1327\n \n 3.2.13 PnCconf f\u00fcr Fortgeschrittene\n PnCconf ist bestrebt, flexible Anpassungen durch den Benutzer zu erm\u00f6glichen. PnCconf unterst\u00fctzt\n benutzerdefinierte Signalnamen, benutzerdefiniertes Laden von Komponenten, benutzerdefinierte HALDateien und benutzerdefinierte Firmware.\n Es gibt auch Signalnamen, die PnCconf immer bereitstellt, unabh\u00e4ngig von den gew\u00e4hlten Optionen\n@@ -9038,15 +9038,15 @@\n GPIO-Pins werden einfach mit dem eingegebenen Signalnamen verbunden\n Auf diese Weise kann man sich mit diesen Signalen in den benutzerdefinierten HAL-Dateien verbinden\n und hat trotzdem die M\u00f6glichkeit, sie sp\u00e4ter zu verschieben.\n Benutzerdefinierte Signalnamen\n Die Seite mit HAL Komponenten kann verwendet werden, um Komponenten zu laden, die ein\n Benutzer f\u00fcr die Anpassung ben\u00f6tigt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 147 / 1327\n \n Laden der benutzerdefinierten Firmware\n PnCconf sucht auf dem System nach Firmware und sucht dann nach der XML-Datei, die es in das\n konvertieren kann, was es versteht. Diese XML-Dateien werden nur f\u00fcr offiziell freigegebene\n Firmware vom LinuxCNC-Team bereitgestellt. Um benutzerdefinierte Firmware zu verwenden,\n@@ -9065,15 +9065,15 @@\n \u2022 custom.hal ist f\u00fcr HAL-Befehle, die nicht nach dem Laden des GUI-Frontends ausgef\u00fchrt werden m\u00fcssen. Es wird diese erst nach der HAL-Datei mit dem Konfigurationsnamen ausgef\u00fchrt.\n \u2022 custom_postgui.hal ist f\u00fcr Befehle gedacht, die ausgef\u00fchrt werden m\u00fcssen, nachdem AXIS\n geladen wurde oder eine eigenst\u00e4ndige PyVCP-Anzeige geladen wurde.\n \u2022 custom_gvcp.hal ist f\u00fcr Befehle, die ausgef\u00fchrt werden m\u00fcssen, nachdem GladeVCP geladen\n wurde.\n \u2022 shutdown.hal ist f\u00fcr Befehle, die ausgef\u00fchrt werden, wenn LinuxCNC kontrolliert herunterf\u00e4hrt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 148 / 1327\n \n Kapitel 4\n \n Konfiguration\n 4.1 Integrator-Konzepte\n@@ -9093,15 +9093,15 @@\n \u2022 /home/fred/linuxcnc/nc_files\n \u2022 /home/fred/linuxcnc/configs/mill\n \u2013 /home/fred/linuxcnc/configs/mill/mill.ini\n \u2013 /home/fred/linuxcnc/configs/mill/mill.hal\n \u2013 /home/fred/linuxcnc/configs/mill/mill.var\n \u2013 /home/fred/linuxcnc/configs/mill/tool.tbl\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 149 / 1327\n \n 4.1.1.2 Befehlszeile\n Wenn Sie LinuxCNC von der Kommandozeile aus und geben Sie den Namen und den Speicherort der\n INI-Datei k\u00f6nnen die Dateispeicherorte in einem anderen Ort sein. Um die Optionen f\u00fcr die Ausf\u00fchrung von LinuxCNC von der Kommandozeile laufen linuxcnc -h.\n Anmerkung\n@@ -9133,15 +9133,15 @@\n Software-Schrittgenerator, ob es Zeit f\u00fcr einen weiteren Schrittimpuls ist. Eine k\u00fcrzere Periode erm\u00f6glicht es Ihnen, mehr Impulse pro Sekunde zu erzeugen, innerhalb von Grenzen. Wenn Sie jedoch\n eine zu kurze Periode w\u00e4hlen, verbringt Ihr Computer so viel Zeit mit der Erzeugung von Schrittimpulsen, dass alles andere langsamer wird oder vielleicht sogar zum Stillstand kommt. Die Latenzzeit\n und die Anforderungen an die Schrittmotorsteuerung beeinflussen die k\u00fcrzeste Zeitspanne, die Sie\n verwenden k\u00f6nnen.\n 1 Dieser Abschnitt bezieht sich auf die Verwendung stepgen, LinuxCNCs eingebauten Schritt-Generator. Einige HardwareGer\u00e4te haben ihre eigenen Schritt-Generator und nicht mit LinuxCNC \u2019 s built-in ein. In diesem Fall, verweisen wir auf Ihr\n Hardware-Handbuch\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 150 / 1327\n \n Im schlimmsten Fall treten Latenzzeiten nur ein paar Mal pro Minute auf und die Wahrscheinlichkeit,\n dass eine schlechte Latenz genau dann auftritt, wenn der Motor die Richtung \u00e4ndert, ist gering. Es\n kann also zu sehr seltenen Fehlern kommen, die hin und wieder ein Teil ruinieren und bei denen eine\n Fehlerbehebung unm\u00f6glich ist.\n@@ -9177,15 +9177,15 @@\n Servosysteme sind in der Lage, eine h\u00f6here Geschwindigkeit und Genauigkeit zu erreichen als entsprechende Schrittmachersysteme, sind aber teurer und komplexer. Im Gegensatz zu Schrittmotorensystemen ben\u00f6tigen Servosysteme eine Art von Positionsr\u00fcckmeldung und m\u00fcssen eingestellt oder getunt werden, da sie nicht wie Schrittmotorensysteme direkt nach dem Auspacken funktionieren. Diese\n 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\n ist.\n 2 steplen refers to a parameter that adjusts the performance of LinuxCNC\u2019s built-in step generator, stepgen, which is a HAL\n component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually.\n 3 dirhold refers to a parameter that adjusts the length of the direction hold time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 151 / 1327\n \n Abbildung 4.1: Servo Loop\n Dieses Diagramm zeigt, dass das Eingangssignal (und das R\u00fcckkopplungssignal) den Summierverst\u00e4rker antreibt, der Summierverst\u00e4rker den Leistungsverst\u00e4rker antreibt, der Leistungsverst\u00e4rker den\n Motor antreibt, der Motor die Last (und das R\u00fcckkopplungsger\u00e4t) antreibt und das R\u00fcckkopplungsger\u00e4t (und das Eingangssignal) den Motor antreibt. Dies sieht aus wie ein Kreis (eine geschlossene\n Schleife), in dem A B, B C, C D und D A steuert.\n@@ -9200,15 +9200,15 @@\n PID steht f\u00fcr Proportional, Integral und Derivativ. Der Proportionalwert bestimmt die Reaktion auf\n 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\n der Fehler ge\u00e4ndert hat. Sie sind drei gemeinsame mathematische Techniken, die auf die Aufgabe,\n einen Arbeitsprozess, um einen Sollwert zu folgen angewendet werden. Im Fall von LinuxCNC ist der\n Prozess, den wir steuern wollen, die tats\u00e4chliche Achsenposition und der Sollwert ist die befohlene\n Achsenposition.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 152 / 1327\n \n Abbildung 4.2: PID-Schleife\n 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\u00e4sst\n sich beschreiben anhand des Ansprechens des Reglers auf eine Regelabweichung, des Ausma\u00dfes, in\n dem der Regler \u00fcber den Sollwert hinausschie\u00dft, und des Grades der Systemschwingung.\n@@ -9228,15 +9228,15 @@\n korrigiert werden m\u00fcssen. Der kumulierte Fehler wird dann mit der Integralverst\u00e4rkung multipliziert\n und zum Reglerausgang addiert.\n Der Integral-Anteil (wenn er zum Proportional-Anteil (kurz P-Anteil) hinzugef\u00fcgt wird) beschleunigt\n die Bewegung des Prozesses in Richtung Sollwert und beseitigt den verbleibenden station\u00e4ren Fehler, der bei einem reinen Proportionalregler auftritt. Da der Integral-Anteil jedoch auf akkumulierte\n Fehler aus der Vergangenheit reagiert, kann er dazu f\u00fchren, dass der aktuelle Wert \u00fcber den Sollwert hinausschie\u00dft (den Sollwert \u00fcberschreitet und dann eine Abweichung in die andere Richtung\n erzeugt).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 153 / 1327\n \n 4.1.4.4 Differenzierender-Anteil (D-Anteil)\n Die \u00c4nderungsrate des Prozessfehlers wird berechnet, indem die Steigung des Fehlers nach der Zeit\n (d. h. seine erste Ableitung nach der Zeit) bestimmt und diese \u00c4nderungsrate mit der Ableitungsverst\u00e4rkung multipliziert wird.\n Der Derivationsanteil verlangsamt die \u00c4nderungsrate des Reglerausgangs, und dieser Effekt ist in\n@@ -9263,15 +9263,15 @@\n die beste Echtzeitleistung (RT) zu erzielen. Mit dem gepatchten RTAI-Kernel k\u00f6nnen Sie Anwendungen mit strengen Zeitvorgaben schreiben. RTAI gibt Ihnen die M\u00f6glichkeit, Dinge wie die SoftwareSchritterzeugung durchzuf\u00fchren, die ein pr\u00e4zises Timing erfordern.\n 4.1.5.1 ACPI\n Das Advanced Configuration and Power Interface (ACPI) hat viele verschiedene Funktionen, von denen die meisten die RT-Leistung beeintr\u00e4chtigen (z. B.: Energieverwaltung, CPU-Abschaltung, CPUFrequenzskalierung usw.). Der LinuxCNC-Kernel (und wahrscheinlich alle RTAI-gepatchten Kernel)\n hat ACPI deaktiviert. ACPI k\u00fcmmert sich auch um das Herunterfahren des Systems, nachdem ein\n Shutdown gestartet wurde, und deshalb m\u00fcssen Sie m\u00f6glicherweise den Netzschalter dr\u00fccken, um\n Ihren Computer vollst\u00e4ndig auszuschalten. Die RTAI-Gruppe hat dies in den letzten Versionen verbessert, so dass sich Ihr LinuxCNC-System vielleicht doch von selbst ausschaltet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 154 / 1327\n \n 4.2 Latenzpr\u00fcfung\n 4.2.1 What is latency?\n Latency is how long it takes the PC to stop what it is doing and respond to an external request, such\n as running one of LinuxCNC\u2019s periodic realtime threads. The lower the latency, the faster you can run\n@@ -9305,15 +9305,15 @@\n latency-test 50000 1000000\n \n Damit wird der Latenztest mit einer Basis-Thread-Periode von 50 \u00b5s und einer Servo-Thread-Periode\n von 1 ms gestartet.\n Die verf\u00fcgbaren Optionen k\u00f6nnen Sie in der Befehlszeile eingeben:\n latency-test -h\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 155 / 1327\n \n After starting a latency test you should see something like this:\n \n Abbildung 4.3: HAL-Latenz-Test\n W\u00e4hrend der Test l\u00e4uft, sollten Sie den Computer besch\u00e4ftigen: Bewegen Sie die Fenster auf dem\n@@ -9332,15 +9332,15 @@\n die Zahlen 100 us oder mehr (100.000 Nanosekunden) betragen, ist der PC kein guter Kandidat f\u00fcr\n Software-Stepping. Zahlen \u00fcber 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC\n ist kein guter Kandidat f\u00fcr LinuxCNC, unabh\u00e4ngig davon, ob Sie Software-Stepping verwenden oder\n nicht.\n Anmerkung\n Wenn Sie hohe Zahlen erhalten, gibt es m\u00f6glicherweise M\u00f6glichkeiten, sie zu verbessern. Ein anderer PC hatte eine sehr schlechte Latenz (mehrere Millisekunden) bei der Verwendung des OnboardVideos. Aber eine $ 5 gebrauchte Grafikkarte l\u00f6ste das Problem. LinuxCNC ben\u00f6tigt keine hochmoderne Hardware.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 156 / 1327\n \n Weitere Informationen zum Stepper-Tuning finden Sie im Kapitel Stepper Tuning.\n Zus\u00e4tzliche Kommandozeilen-Tools sind f\u00fcr die Untersuchung der Latenz verf\u00fcgbar wenn\n LinuxCNC nicht l\u00e4uft.\n 4.2.2.2 Latency Plot\n@@ -9364,15 +9364,15 @@\n 4.2.2.3 Latenz-Histogramm\n latency-histogram zeigt ein Histogramm der Latenz (Jitter) f\u00fcr einen Basis- und einen Servo-Thread\n an.\n Usage:\n latency-histogram --help | -?\n latency-histogram [Options]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 157 / 1327\n \n Optionen:\n --base ns (Basisgewindeintervall, Voreinstellung: 25000, min: 5000)\n --servo ns (Servo-Thread-Intervall, Voreinstellung: 1000000, Mindestwert: 25000)\n --bbinsize ns (Basis-Bin-Gr\u00f6\u00dfe, Voreinstellung: 100\n@@ -9395,15 +9395,15 @@\n \n Abbildung 4.5: Latenz-Histogramm-Fenster\n \n 4.2.3 Latency tuning\n LinuxCNC can run on many different hardware platforms and with many different realtime kernels,\n and they all may benefit from tuning for optimal latency.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 158 / 1327\n \n A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive\n use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not\n interfere with LinuxCNC\u2019s access to those CPUs.\n When specific tuning options are believed to be universally helpful LinuxCNC does this tuning automatically at startup, but many tuning options are machine-specific and cannot be done automatically.\n@@ -9435,15 +9435,15 @@\n \u2022 rcu_nocbs: Prevent RCU callbacks from running on these CPUs.\n \u2022 rcu_nocb_poll: Poll for RCU callbacks instead of using sleep/wake.\n \u2022 nohz_full: Disable clock tick on these CPUs.\n Sysctl\n Details here: https://www.kernel.org/doc/html/latest/scheduler/sched-rt-group.html\n \u2022 sysctl.kernel.sched_rt_runtime_us: Set to -1 to remove the limit on how much time realtime tasks may use.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 159 / 1327\n \n 4.3 Stepper-Abstimmung\n 4.3.1 Das Beste aus Software Stepping herausholen\n Die Erzeugung von Schrittimpulsen in der Software hat einen sehr gro\u00dfen Vorteil - sie ist kostenlos.\n Nahezu jeder PC verf\u00fcgt \u00fcber eine parallele Schnittstelle, die in der Lage ist, die von der Software\n@@ -9476,15 +9476,15 @@\n Software-Stepping. Zahlen \u00fcber 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC\n ist kein guter Kandidat f\u00fcr LinuxCNC, unabh\u00e4ngig davon, ob Sie Software-Stepping verwenden oder\n nicht.\n Beachten Sie, dass, wenn Sie hohe Zahlen erhalten, es M\u00f6glichkeiten geben kann, sie zu verbessern.\n Zum Beispiel hatte ein PC eine sehr schlechte Latenz (mehrere Millisekunden), wenn er das OnboardVideo verwendete. Aber eine $ 5 gebrauchte Grafikkarte l\u00f6ste das Problem - LinuxCNC ben\u00f6tigt keine\n modernste Hardware.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 160 / 1327\n \n 4.3.1.2 Finden Sie heraus, was Ihre Antriebe erwarten\n Verschiedene Marken von Schrittmotorantrieben haben unterschiedliche Zeitanforderungen an ihre\n Schritt- und Richtungseing\u00e4nge. Sie m\u00fcssen also das Datenblatt mit den technischen Daten Ihres\n Antriebs heraussuchen (oder danach googeln).\n@@ -9520,15 +9520,15 @@\n dass alle \u00c4nderungen an den STEP- und DIR-Leitungen durch 20 \u00b5s getrennt sind. Alles ist gut, oder?\n Falsch! Wenn es NULL Latenz g\u00e4be, dann w\u00e4ren alle Kanten durch 20 \u00b5s getrennt, und alles w\u00e4re\n in Ordnung. Aber alle Computer haben eine gewisse Latenz, d.h. mit Verz\u00f6gerung. Wenn der Computer eine Latenz von 11 \u00b5s hat, bedeutet das, dass die Software manchmal 11 \u00b5s sp\u00e4ter l\u00e4uft, als\n sie eigentlich sollte. Wenn ein Durchlauf der Software 11 \u00b5s zu sp\u00e4t ist und der n\u00e4chste p\u00fcnktlich erfolgt, betr\u00e4gt die Verz\u00f6gerung vom ersten zum zweiten Durchlauf nur 9 \u00b5s. Wenn der erste Durchlauf\n einen Schrittimpuls erzeugte und der zweite das Richtungsbit \u00e4nderte, haben Sie gerade die G202Haltezeitanforderung von 20 \u00b5s verletzt. Das bedeutet, dass Ihr Antrieb m\u00f6glicherweise einen Schritt\n in die falsche Richtung gemacht hat, und Ihr Teil hat die falsche Gr\u00f6\u00dfe.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 161 / 1327\n \n Das wirklich Unangenehme an diesem Problem ist, dass es sehr selten auftreten kann. Im schlimmsten\n Fall treten Latenzen nur ein paar Mal pro Minute auf, und die Wahrscheinlichkeit, dass eine schlechte\n Latenz genau dann auftritt, wenn der Motor die Richtung \u00e4ndert, ist gering. So kommt es zu sehr\n seltenen Fehlern, die hin und wieder ein Werkst\u00fcck ruinieren und eine Fehlerbehebung unm\u00f6glich\n@@ -9571,15 +9571,15 @@\n das, was uns zwingt, eine langsame 31 \u00b5s Periode zu verwenden. Aber die LinuxCNC Software-SchrittGenerator hat einige Parameter, mit denen Sie die verschiedenen Zeit von einer Periode auf mehrere\n zu erh\u00f6hen. Zum Beispiel, wenn steplen von 1 auf 2 ge\u00e4ndert wird, dann wird es zwei Perioden zwischen dem Beginn und dem Ende des Schrittimpulses sein. Wenn dirhold von 1 auf 3 ge\u00e4ndert wird,\n liegen mindestens drei Perioden zwischen dem Schrittimpuls und einem Wechsel des Richtungspins.\n Wenn wir dirhold verwenden k\u00f6nnen, um die Anforderung von 20 \u00b5s Haltezeit zu erf\u00fcllen, dann ist die\n n\u00e4chstl\u00e4ngere Zeit die 4,5 \u00b5s \u201dhigh time\u201d. Addiert man die Latenzzeit von 11 \u00b5s zu der \u201dhigh-time\u201d von\n 4,5 \u00b5s, so erh\u00e4lt man eine Mindestzeit von 15,5 \u00b5s. Wenn Sie 15,5 \u00b5s ausprobieren, stellen Sie fest,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 162 / 1327\n \n dass der Computer zu tr\u00e4ge ist, also entscheiden Sie sich f\u00fcr 16 \u00b5s. Wenn wir dirhold auf 1 belassen\n (die Voreinstellung), dann ist die Mindestzeit zwischen Schritt und Richtung die 16 \u00b5s Periode minus\n die 11 \u00b5s Latenzzeit = 5 \u00b5s, was nicht ausreicht. Wir brauchen weitere 15 \u00b5s. Da die Periode 16 \u00b5s\n betr\u00e4gt, brauchen wir eine weitere Periode. Also \u00e4ndern wir dirhold von 1 auf 2. Jetzt betr\u00e4gt die\n@@ -9614,15 +9614,15 @@\n \u2022 Variablen\n Jedes dieser Elemente wird in einzelnen Zeilen getrennt. Jedes Zeilenende oder Zeilenumbruchzeichen erzeugt ein neues Element.\n 4.4.1.1 Kommentare\n Eine Kommentarzeile wird mit einem ; oder einem # eingeleitet. Wenn der INI-Leser eines dieser\n Zeichen am Anfang einer Zeile sieht, wird der Rest der Zeile von der Software ignoriert. Kommentare\n k\u00f6nnen verwendet werden, um zu beschreiben, was ein INI-Element tun wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 163 / 1327\n \n ; Dies ist die Konfigurationsdatei meiner Fr\u00e4smaschine\n # Ich habe sie am 12. Januar 2012 eingerichtet.\n \n Kommentare k\u00f6nnen auch zum Ausschalten einer Variable verwendet werden. Das macht es einfacher,\n@@ -9654,15 +9654,15 @@\n \u2022 [APPLICATIONS] Andere Anwendungen, die von LinuxCNC gestartet werden sollen\n \u2022 [TRAJ] zus\u00e4tzliche Einstellungen, die von der Echtzeit-Bewegungssteuerung verwendet werden\n \u2022 [JOINT_n] einzelne Gelenkvariablen\n \u2022 [AXIS_l] einzelne Achsenvariablen\n \u2022 [KINS] Variablen f\u00fcr die Kinematik\n \u2022 [EMCIO] vom E/A-Controller verwendete Einstellungen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 164 / 1327\n \n 4.4.1.3 Variablen\n Eine Variablenzeile besteht aus einem Variablennamen, einem Gleichheitszeichen (=) und einem Wert.\n Als Wert wird alles vom ersten nicht-wei\u00dfen Leerzeichen nach dem = bis zum Ende der Zeile \u00fcbergeben, so dass Sie Leerzeichen in Stringsymbole einbetten k\u00f6nnen, wenn Sie dies wollen oder m\u00fcssen.\n Ein Variablenname wird oft auch als Schl\u00fcsselwort bezeichnet.\n@@ -9703,15 +9703,15 @@\n und die Variablen in die INI-Datei ein.\n Beispiel f\u00fcr einen benutzerdefinierten Abschnitt\n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 165 / 1327\n \n Um die benutzerdefinierten Variablen in Ihrer HAL-Datei zu verwenden, setzen Sie den Abschnitt und\n den Variablennamen an die Stelle des Wertes.\n HAL Beispiel\n setp offset.1.offset [PROBE]Z_OFFSET\n@@ -9746,15 +9746,15 @@\n #INCLUDE ../parallel/joint_1.inc\n #INCLUDE below/joint_2.inc\n #INCLUDE /home/myusername/myincludes/display.inc\n #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc\n \n Die #INCLUDE-Direktiven werden nur f\u00fcr eine Erweiterungsebene unterst\u00fctzt - eine bereits inkludierte Datei darf keine weiteren Dateien einschlie\u00dfen. Die empfohlene Dateierweiterung ist .inc. Verwenden Sie nicht die Dateierweiterung .ini f\u00fcr eingeschlossene Dateien.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 166 / 1327\n \n 4.4.2 INI-Datei Abschnitte\n 4.4.2.1 [EMC] Abschnitt\n \u2022 VERSION = 1.1 - Die Versionsnummer f\u00fcr die Konfiguration. Jeder andere Wert als 1.1 f\u00fchrt dazu,\n dass die Konfigurationspr\u00fcfung ausgef\u00fchrt wird und versucht, die Konfiguration auf den neuen Typ\n@@ -9781,15 +9781,15 @@\n Das obige Beispiel f\u00fcllt mit Nullen auf, zeigt 6 Dezimalstellen an und erzwingt die Anzeige eines\n +-Zeichens f\u00fcr 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\n keine Flie\u00dfkommazahlen akzeptieren kann.\n \u2022 DRO_FORMAT_IN = % 4.1f - \u00dcberschreibt die Standard-DRO-Formatierung im imperialen Modus\n (normalerweise 4 Dezimalstellen, aufgef\u00fcllt 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\u00f6st, wenn das Format keine Flie\u00dfkommazahlen akzeptieren kann.\n \u2022 CONE_BASESIZE = .25 - \u00dcberschreibt die Standardkegel-/Werkzeugbasisgr\u00f6\u00dfe von .5 in der Grafikanzeige\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 167 / 1327\n \n \u2022 MAX_FEED_OVERRIDE = 1.2 - Der maximale Vorschub-Override, den der Benutzer ausw\u00e4hlen\n kann. Der Wert 1.2 (bitte mit Dezimalpunkt, nicht Komma) bedeutet 120% des programmierten\n Vorschubs.\n \u2022 MIN_SPINDLE_OVERRIDE = 0.5 - Der minimale Spindel-Override, den der Benutzer ausw\u00e4hlen\n@@ -9820,15 +9820,15 @@\n \u2022 PROGRAM_PREFIX = ~/linuxcnc/nc_files - Der Standardspeicherort f\u00fcr G-Code-Dateien und der\n Speicherort f\u00fcr benutzerdefinierte M-Codes. Dieser Speicherort wird nach dem Dateinamen vor\n dem Unterprogramm-Pfad und dem Benutzer-M-Pfad durchsucht, wenn er im Abschnitt [RS274NGC]\n angegeben wurde.\n \u2022 INTRO_GRAPHIC = emc2.gif - Das Bild, das auf dem Begr\u00fc\u00dfungsbildschirm angezeigt wird.\n \u2022 INTRO_TIME = 5 - Die maximale Zeit zur Anzeiges des Startbildschirms, in Sekunden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 168 / 1327\n \n \u2022 CYCLE_TIME = 100 - Zykluszeit der Anzeige-GUI. Je nach Bildschirm kann dies in Sekunden oder\n ms (bevorzugt ms) angegeben werden. Dies ist oft die Aktualisierungsrate und nicht die Ruhezeit\n zwischen den Aktualisierungen. Wenn die Aktualisierungszeit nicht richtig eingestellt ist, kann der\n Bildschirm nicht mehr reagieren oder sehr ruckartig werden. Ein Wert von 100 ms (0,1 Sekunden)\n@@ -9863,15 +9863,15 @@\n \u2022 GRIDS = 10 mm, 1 in, \u2026 - Definiert die voreingestellten Werte f\u00fcr Gitterlinien. Der Wert wird auf\n die gleiche Weise interpretiert wie INCREMENTS.\n \u2022 OPEN_FILE = /full/path/to/file.ngc - Die Datei, die beim Start von AXIS in der Vorschau angezeigt\n wird. Verwenden Sie eine leere Zeichenkette \u201d\u201d, wird beim Start keine Datei geladen. gmoccapy\n verwendet diese Einstellung nicht, da es einen entsprechenden Eintrag auf seiner Einstellungsseite\n anbietet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 169 / 1327\n \n \u2022 EDITOR = gedit - Der Editor, der verwendet werden soll, wenn Sie Datei > Bearbeiten w\u00e4hlen, um\n den G-Code im Men\u00fc AXIS zu bearbeiten. Dieser muss konfiguriert werden, damit dieser Men\u00fcpunkt\n funktioniert. Ein anderer g\u00fcltiger Eintrag ist gnome-terminal -e vim. Dieser Eintrag gilt nicht f\u00fcr\n gmoccapy, da gmoccapy einen integrierten Editor hat.\n@@ -9913,15 +9913,15 @@\n 11. Experimental: If the \u201d!\u2019 character is included in the GEOMETRY string, display points for A,\n B, C rotations respect the X, Y, Z offsets set by G5x, G92 codes. Example: using GEOMETRY =\n !CXZ for a machine with [TRAJ]COORDINATES=XZC. This provision applies for liveplots only \u2014\n Gcode previews should be done with zero G5x, G92 offsets. This can be facilitated by setting\n offsets in programs only when task is running as indicated by #<_task> == 1. If nonzero offsets\n exist at startup due to persistence, offsets should be zeroed and preview reloaded.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 170 / 1327\n \n Anmerkung\n Ist keine [DISPLAY]GEOMETRY in der INI-Datei beschrieben, wird ein Standardwert durch das\n [DISPLAY]DISPLAY-GUI-Programm bereitgestellt (normalerweise \u201dXYZABCUVW\u201d)\n \u2022 ARCDIVISION = 64 - Legt die Qualit\u00e4t der Vorschau von B\u00f6gen fest. B\u00f6gen werden in der Vorschau\n@@ -9954,15 +9954,15 @@\n Abschnitt [FILTER] der INI-Datei steuert, wie die Filter funktionieren. Schreiben Sie zun\u00e4chst f\u00fcr\n jeden Dateityp eine PROGRAM_EXTENSION-Zeile. Dann geben Sie das Programm an, das f\u00fcr jeden\n Dateityp ausgef\u00fchrt werden soll. Dieses Programm erh\u00e4lt den Namen der Eingabedatei als erstes\n Argument und muss RS274NGC-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was\n im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und dann auch von LinuxCNC\n ausgef\u00fchrt wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 171 / 1327\n \n \u2022 PROGRAM_EXTENSION = .extension Beschreibung\n Wenn Ihr Postprozessor Dateien in Gro\u00dfbuchstaben ausgibt, sollten Sie die folgende Zeile hinzuf\u00fcgen:\n PROGRAM_EXTENSION = .NGC XYZ Post Processor\n \n@@ -10004,15 +10004,15 @@\n words = line.rstrip(\u2019\\n\u2019)\n words = words.split(\u2019 \u2019)\n newword = \u2019\u2019\n for i in words:\n if i[0] == \u2019Z\u2019:\n newword = \u2019W\u2019+ i[1:]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 172 / 1327\n \n if len(newword) > 0:\n words.append(newword)\n newline = \u2019 \u2019.join(words)\n file_out.append(newline)\n@@ -10044,15 +10044,15 @@\n Es wird nach jeder m\u00f6glichen benutzerdefinierten Funktion gesucht, typischerweise (M100-M199).\n Die Reihenfolge der Suche ist:\n 1. [ANZEIGE]PROGRAM_PREFIX (falls angegeben)\n 2. Wenn [DISPLAY]PROGRAM_PREFIX nicht angegeben ist, wird der Standardspeicherort gesucht: nc_files\n 3. Dann wird jedes Verzeichnis in der Liste [RS274NGC]USER_M_PATH durchsucht\n F\u00fcr jeden M1xx wird der erste bei der Suche gefundene ausf\u00fchrbare M1xx verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 173 / 1327\n \n Anmerkung\n Die maximale Anzahl der USER_M_PATH-Verzeichnisse wird zur Kompilierzeit festgelegt (typ:\n USER_DEFINED_FUNCTION_MAX_DIRS == 5).\n \n@@ -10090,15 +10090,15 @@\n Anmerkung\n [WIZARD]WIZARD_ROOT ist ein g\u00fcltiger Suchpfad, aber der Assistent ist noch nicht vollst\u00e4ndig implementiert und die Ergebnisse seiner Verwendung sind unvorhersehbar.\n \n \u2022 LOG_LEVEL = 0, Default 0, Bestimmt log_level (Voreinstellung: -1)\n \u2022 LOG_FILE = file-name.log Zur Angabe der Datei, die f\u00fcr die Protokollierung der Daten verwendet\n wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 174 / 1327\n \n \u2022 REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure Siehe das Remap Erweiterung von\n G-Code Kapitel f\u00fcr Details.\n \u2022 ON_ABORT_COMMAND=O call Siehe das Remap Erweiterung von G-Code Kapitel f\u00fcr\n Details.\n@@ -10129,15 +10129,15 @@\n \u2022 HALFILE = example.hal - F\u00fchrt die Datei example.hal beim Start aus.\n HALFILE = example.hal - F\u00fchrt die Datei example.hal beim Starten aus. Wenn HALFILE mehrfach angegeben wird, werden die Dateien in der Reihenfolge ausgef\u00fchrt, in der sie in der INI-Datei\n stehen. Fast alle Konfigurationen haben mindestens eine HALFILE, und Steppersysteme haben typischerweise zwei solcher Dateien, eine zur Spezifikation der allgemeinen Stepperkonfiguration\n (core_stepper.hal) und eine f\u00fcr die Beschreibung der Pinbelegung der Maschine (xxx_pinout.hal).\n HALFILES werden durch eine Suche gefunden. Wenn die benannte Datei in dem Verzeichnis gefunden wird, das die INI-Datei enth\u00e4lt, wird sie verwendet. Wird die benannte Datei nicht in diesem\n INI-Dateiverzeichnis gefunden, wird eine Systembibliothek mit HAL-Dateien durchsucht.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 175 / 1327\n \n Wenn LinuxCNC mit dem Skript linuxcnc unter Verwendung der Option \u201d-H dirname\u201d gestartet\n wird, dann wird der angegebene Verzeichnisname der oben beschriebenen Suche vorangestellt, so\n dass \u201ddirname\u201d zuerst durchsucht wird. Die Option \u201d-H dirname\u201d kann mehr als einmal angegeben\n werden, die Verzeichnisse werden in der Reihenfolge vorangestellt.\n@@ -10170,15 +10170,15 @@\n verbose bewirkt die Ausgabe von Details auf stdout. Das Schl\u00fcsselwort nodelete bewahrt tempor\u00e4re\n Dateien in /tmp.\n Weitere Informationen finden Sie im Kapitel HAL TWOPASS.\n \u2022 HALCMD = command - F\u00fchrt command als einzelnen HAL-Befehl aus. Wenn HALCMD mehrfach\n angegeben wird, werden die Befehle in der Reihenfolge ausgef\u00fchrt, in der sie in der INI-Datei\n erscheinen. HALCMD Zeilen werden nach allen HALFILE Zeilen ausgef\u00fchrt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 176 / 1327\n \n \u2022 SHUTDOWN = shutdown.hal - F\u00fchrt die Datei shutdown.hal aus, wenn LinuxCNC beendet wird.\n Abh\u00e4ngig von den verwendeten Hardware-Treibern, kann dies es m\u00f6glich machen, Ausg\u00e4nge auf\n definierte Werte zu setzen, wenn LinuxCNC normal beendet wird. Da es jedoch keine Garantie daf\u00fcr\n gibt, dass diese Datei ausgef\u00fchrt wird (z.B. im Falle eines Computerabsturzes), ist sie kein Ersatz\n@@ -10211,15 +10211,15 @@\n \n \u2013 Alternativ kann auch eine Watchlist-Datei mit einem vollst\u00e4ndigen Pfadnamen angegeben werden:\n APP = halshow ~/saved_shows/spindle.halshow\n \n \u2013 \u00d6ffnen Sie halscope mit einer zuvor gespeicherten Konfiguration:\n APP = halscope -i my.halscope\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 177 / 1327\n \n 4.4.2.10 Abschnitt [TRAJ]\n Warnung\n Die neue Trajectorien Planer (TP) (engl. trajectory planner) ist standardm\u00e4\u00dfig aktiv. Wenn Sie\n keine TP-Einstellungen in Ihrem [TRAJ]-Abschnitt haben - LinuxCNC standardm\u00e4\u00dfig auf:\n@@ -10262,15 +10262,15 @@\n # t_c = Servoperiode (Sekunden)\n \n Wenn Sie eine Bahn mit 1 IPS = 60 IPM fahren wollen und Ihre Servoperiode 0,001 Sekunden betr\u00e4gt, dann verlangsamen alle Segmente, die k\u00fcrzer als min_length sind, die Bahn. Wenn Sie die\n Naive CAM-Toleranz auf etwa diese Mindestl\u00e4nge einstellen, werden zu kurze Segmente zusammengefasst, um diesen Engpass zu beseitigen. Wenn Sie die Toleranz zu hoch einstellen, bedeutet\n das nat\u00fcrlich gro\u00dfe Pfadabweichungen, so dass Sie ein wenig damit spielen m\u00fcssen, um einen guten Wert zu finden. Ich w\u00fcrde mit 1/2 der Mindestl\u00e4nge beginnen und dann nach Bedarf erh\u00f6hen.\n * ARC_BLEND_GAP_CYCLES = 4 Wie kurz das vorherige Segment sein muss, bevor es vom Trajektorienplaner verbraucht wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 178 / 1327\n \n Bei einer Kreisbogen\u00fcberblendung bleiben oft kurze Liniensegmente zwischen den \u00dcberblendungen \u00fcbrig. Da die Geometrie kreisf\u00f6rmig sein muss, k\u00f6nnen wir nicht eine ganze Linie \u00fcberblenden,\n wenn die n\u00e4chste etwas k\u00fcrzer ist. Da der Trajektorienplaner jedes Segment mindestens einmal\n ber\u00fchren muss, bedeutet dies, dass sehr kleine Segmente die Dinge erheblich verlangsamen. Meine L\u00f6sung f\u00fcr dieses Problem besteht darin, das kurze Segment zu \u201dverbrauchen\u201d, indem ich es\n zu einem Teil des \u00dcberblendungsbogens mache. Da die Linie und die \u00dcberblendung ein einziges\n@@ -10309,15 +10309,15 @@\n einen Achsennamen mehr als einmal zu schreiben (z.B. X Y Y Z f\u00fcr eine Gantry-Maschine). Bei\n der \u00fcblichen trivkins-Kinematik werden die Gelenknummern der Reihe nach gem\u00e4\u00df dem trivkinsParameter coordinates= vergeben. F\u00fcr trivkins coordinates=xz entspricht joint0 also X und joint1\n entspricht Z. Informationen zu trivkins und anderen Kinematikmodulen finden Sie in der Manpage\n Kinematics ($ man kins).\n \u2022 LINEAR_UNITS = - Gibt die Maschineneinheiten f\u00fcr lineare Achsen an. M\u00f6gliche Auswahlen sind mm oder inch (engl. f\u00fcr Zoll). Dies hat keinen Einfluss auf die linearen Einheiten im\n NC-Code (die W\u00f6rter G20 und G21 tun dies).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 179 / 1327\n \n \u2022 ANGULAR_UNITS = - Specifies the machine units for rotational axes. Possible choices are\n deg, degree (360 per circle), rad, radian (2*\u03c0 per circle), grad, or gon (400 per circle). This does\n not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in\n degrees.\n@@ -10350,15 +10350,15 @@\n \u2022 TPMOD = alternate_trajectory_planning Modul [tp_parms=Wert]\n Die TPMOD-Variable ist optional. Falls angegeben, verwenden Sie ein angegebenes (benutzerdefiniertes) Modul anstelle des Standardmoduls (tpmod). Modulparameter (tp_parms) k\u00f6nnen enthalten\n sein, wenn sie vom benannten Modul unterst\u00fctzt werden. Die Einstellung kann \u00fcber die Befehlszeile\n mit der Option -t ($ linuxcnc -h) \u00fcberschrieben werden.\n \u2022 NO_PROBE_JOG_ERROR = 0 - Erlaubt die Umgehung der Pr\u00fcfung, ob der F\u00fchler ausgel\u00f6st hat,\n wenn Sie manuell joggen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 180 / 1327\n \n \u2022 NO_PROBE_HOME_ERROR = 0 - Erlaubt die Umgehung der Pr\u00fcfung, ob die Sonde ausgel\u00f6st wurde,\n w\u00e4hrend die Referenzfahrt l\u00e4uft.\n 4.4.2.11 [KINS] Abschnitt\n \u2022 JOINTS = 3 - Gibt die Anzahl der Gelenke (Motoren) im System an. Eine Trivkins XYZ-Maschine mit\n@@ -10395,15 +10395,15 @@\n Entriegelungsstifte zu erstellen, verwenden Sie den Parameter motmod:\n unlock_joints_mask=jointmask\n \n Die Bits der Jointmaske sind: (LSB)0:joint0, 1:joint1, 2:joint2, \u2026\n Beispiel: \u201dloadrt motmod \u2026 unlock_joints_mask=0x38\u201d erzeugt Entsperrstifte f\u00fcr die Gelenke 3,4,5\n \u2022 OFFSET_AV_RATIO = 0.1 - Wenn ungleich Null, aktiviert dieses Element die Verwendung von HALEingangsstiften f\u00fcr externe Achsen-Offsets:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 181 / 1327\n \n axis..eoffset-enable\n axis..eoffset-count\n axis..eoffset-scale\n \n@@ -10433,15 +10433,15 @@\n \u2022 UNITS = INCH - Falls angegeben, hat diese Einstellung Vorrang vor der zugeh\u00f6rigen [TRAJ]-EinheitEinstellung. (z.B. [TRAJ]LINEAR_UNITS wenn der TYP dieses Gelenks LINEAR ist, [TRAJ]ANGULAR_UNIT\n wenn der TYP dieses Gelenks ANGULAR ist)\n \u2022 MAX_VELOCITY = 1.2 - Maximale Geschwindigkeit f\u00fcr dieses Gelenk in Maschineneinheiten pro\n Sekunde.\n \u2022 MAX_ACCELERATION = 20.0 - Maximale Beschleunigung f\u00fcr diese Achse in Maschineneinheiten\n pro Sekunde zum Quadrat.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 182 / 1327\n \n \u2022 BACKLASH = 0.0000 - Umkehrspiel in Maschineneinheiten. Der Kompensationswert f\u00fcr das Spiel\n kann verwendet werden, um kleine Unzul\u00e4nglichkeiten in der zum Antrieb eines Gelenks verwendeten Hardware auszugleichen. Wenn das Spiel zu einem Gelenk hinzugef\u00fcgt wird und Sie Schrittmotoren verwenden, muss STEPGEN_MAXACCEL auf das 1,5- bis 2-fache der MAX_ACCELERATION\n f\u00fcr das Gelenk erh\u00f6ht werden. Ein \u00fcberm\u00e4\u00dfiger Spielausgleich kann dazu f\u00fchren, dass ein Gelenk\n bei Richtungs\u00e4nderungen ruckelt. Wenn ein COMP_FILE f\u00fcr ein Gelenk angegeben ist, wird BACKLASH nicht verwendet.\n@@ -10479,15 +10479,15 @@\n \u2022 MAX_LIMIT = 1000 - Die maximale Grenze f\u00fcr die Gelenkbewegung in Maschineneinheiten. Wenn\n diese Grenze erreicht ist, bricht die Steuerung die Bewegung des Gelenks ab. F\u00fcr ein Drehgelenk\n mit unbegrenzter Drehung, f\u00fcr das im Abschnitt [JOINT_N] kein MAX_LIMIT angegeben ist, wird\n der Wert 1e99 verwendet.\n Anmerkung\n F\u00fcr Identit\u00e4ts-Kinematiken m\u00fcssen die Einstellungen [JOINT_N]MIN_LIMIT,MAX_LIMIT den entsprechenden (eins-zu-eins-identischen) [AXIS_L]-Grenzwerten entsprechen oder diese \u00fcberschreiten. Diese Einstellungen werden beim Starten \u00fcberpr\u00fcft, wenn die trivkins-Kinematikmodule angegeben werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 183 / 1327\n \n Anmerkung\n Die Einstellungen [JOINT_N]MIN_LIMIT, MAX_LIMIT werden beim Joggen im Gelenkmodus\n vor der Ausf\u00fchrung der Referenzfahrt erzwungen. Nach der Referenzfahrt werden die\n [AXIS_L]MIN_LIMIT,MAX_LIMIT-Koordinatengrenzen als Beschr\u00e4nkungen f\u00fcr die Achsenbewegung\n@@ -10521,15 +10521,15 @@\n Sekunde. Das Vorzeichen gibt die Fahrtrichtung an. Ein Wert von Null bedeutet, dass die aktuelle Position als Ausgangsposition f\u00fcr die Maschine angenommen wird. Wenn Ihre Maschine keine\n Home-Schalter hat, sollten Sie diesen Wert auf Null belassen.\n \u2022 HOME_LATCH_VEL = 0.0 - Referenzfahrtgeschwindigkeit in Maschineneinheiten pro Sekunde zur\n Endschalter-Ausl\u00f6se-Position. Das Vorzeichen gibt die Fahrtrichtung an.\n \u2022 HOME_FINAL_VEL = 0.0 - Geschwindigkeit in Maschineneinheiten pro Sekunde von der HomeLatch-Position zur Home-Position. Wird der Wert 0 belassen oder ist er nicht im Gelenk enthalten,\n wird die Eilgeschwindigkeit verwendet. Muss eine positive Zahl sein.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 184 / 1327\n \n \u2022 HOME_USE_INDEX = NO - Wenn der f\u00fcr dieses Gelenk verwendete Encoder einen Indeximpuls hat\n und die Bewegungskarte (engl. motion card) dieses Signal vorsieht, k\u00f6nnen Sie diese Option auf ja\n setzen. Wenn dies der Fall ist, hat dies Auswirkungen auf die Art des verwendeten Referenzfahrtmusters. Gegenw\u00e4rtig k\u00f6nnen Sie mit Schrittmotoren keine Referenzfahrt mit Index durchf\u00fchren,\n es sei denn, Sie verwenden StepGen im Geschwindigkeitsmodus und PID.\n@@ -10563,15 +10563,15 @@\n F\u00fcr weitere Informationen \u00fcber benutzerdefinierte INI-Datei-Eintr\u00e4ge siehe den Unterabschnitt\n >.\n \n Die folgenden Elemente k\u00f6nnen von einer PID-Komponente verwendet werden, wobei davon ausgegangen wird, dass die Ausgabe in Volt erfolgt.\n \u2022 DEADBAND = 0.000015\u2019 - Wie nah ist nah genug, um den Motor als in Position zu betrachten, in\n machine units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 185 / 1327\n \n Dies wird oft auf einen Abstand eingestellt, der 1, 1,5, 2 oder 3 Encoderz\u00e4hlungen entspricht, aber es\n gibt keine strengen Regeln. Lockere (gr\u00f6\u00dfere) Einstellungen erm\u00f6glichen ein geringeres Hunting\u2019\n des Servos auf Kosten einer geringeren Genauigkeit. Engere (kleinere) Einstellungen versuchen\n eine h\u00f6here Genauigkeit auf Kosten von mehr Servo Hunting. Ist es wirklich genauer, wenn es\n@@ -10604,15 +10604,15 @@\n \u2022 FF0 = 0\u201d - Die Vorw\u00e4rtsverst\u00e4rkung 0ter Ordnung. Diese Zahl wird mit der befohlenen Position\n multipliziert, was zu einem Beitrag zur berechneten Spannung f\u00fcr den Motorverst\u00e4rker f\u00fchrt. Die\n Einheiten f\u00fcr die FF0-Verst\u00e4rkung sind Volt pro Maschineneinheit, z. B.\n \u2022 FF1 = 0 - Die Vorw\u00e4rtsverst\u00e4rkung erster Ordnung. Diese Zahl wird mit der \u00c4nderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung f\u00fcr den\n Motorverst\u00e4rker f\u00fchrt. Die Einheiten f\u00fcr die FF1-Verst\u00e4rkung sind Volt pro Maschineneinheit pro\n Sekunde, z. B.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 186 / 1327\n \n \u2022 FF2 = 0 - Die Vorw\u00e4rtsverst\u00e4rkung zweiter Ordnung. Diese Zahl wird mit der \u00c4nderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung f\u00fcr den\n Motorverst\u00e4rker f\u00fchrt. Die Einheiten f\u00fcr die FF2-Verst\u00e4rkung sind Volt pro Maschineneinheit pro\n Sekunde, z. B.\n \u2022 OUTPUT_SCALE = 1.000\n@@ -10648,15 +10648,15 @@\n -10\n -9\n \n Gemessen\n -9.93\n -8.83\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 187 / 1327\n \n Tabelle 4.1: (continued)\n Roh\n 0\n 1\n@@ -10692,15 +10692,15 @@\n 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\u00fcr ein Winkelgelenk entspricht eine Einheit der\n Einstellung in ANGULAR_UNITS. Bei Servosystemen ist dies die Anzahl der R\u00fcckmeldeimpulse pro\n Maschineneinheit. Eine zweite Zahl, falls angegeben, wird ignoriert.\n Bei einem 1,8-Grad-Schrittmotor, der mit halben Schritten bewegt (engl. half-stepping) wird, und\n einem Getriebe mit 10 Umdrehungen pro Zoll und gew\u00fcnschten Maschineneinheiten in Zoll ergibt\n sich beispielsweise Folgendes:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 188 / 1327\n \n Anmerkung\n Alte INI und HAL Dateien verwendeten INPUT_SCALE f\u00fcr diesen Wert.\n \n \u2022 ENCODER_SCALE = 20000 (wird optional in PnCconf-Konfigurationen verwendet) - Gibt die Anzahl\n@@ -10728,15 +10728,15 @@\n Spindeldrehzahl.\n \u2022 MIN_REVERSE_VELOCITY = 3000 Diese Einstellung entspricht MIN_VELOCITY, jedoch f\u00fcr die umgekehrte Spindeldrehung. Ist dieser Wert nicht angegeben, wird sie standardm\u00e4\u00dfig auf MIN_VELOCITY\n gesetzt.\n \u2022 INCREMENT = 200 Legt die Schrittweite f\u00fcr Befehle zum Erh\u00f6hen und Verringern der Spindeldrehzahl fest. Dies kann f\u00fcr jede Spindel einen anderen Wert haben. Diese Einstellung ist bei Axis und\n Touchy wirksam, aber beachten Sie, dass einige grafische Benutzeroberfl\u00e4chen die Dinge anders\n handhaben k\u00f6nnen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 189 / 1327\n \n \u2022 HOME_SEARCH_VELOCITY = 100 - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Setzt\n die Referenzfahrtgeschwindigkeit (U/min) f\u00fcr die Spindel. Die Spindel dreht sich w\u00e4hrend 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\n einen anderen Wert als Null hat, daher ist dies auch nicht vorgesehen.\n \u2022 HOME_SEQUENCE = 0 - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Steuert, wo in der\n@@ -10766,15 +10766,15 @@\n 4.5.1 \u00dcbersicht\n Die Referenzfahrt legt den Nullpunkt der G53-Maschinenkoordinaten fest. Softlimits werden relativ\n zum Maschinenursprung definiert. Eine korrekt konfigurierte und funktionierende Maschine bewegt\n sich nicht \u00fcber 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\n werden. Homing scheint einfach genug - bewegen Sie einfach jedes Gelenk zu einer bekannten Position, und stellen Sie LinuxCNC\u2019s interne Variablen entsprechend. Allerdings haben verschiedene\n Maschinen unterschiedliche Anforderungen, und Homing ist eigentlich ziemlich kompliziert.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 190 / 1327\n \n Anmerkung\n Es ist zwar m\u00f6glich, LinuxCNC ohne Referenzschalter/Referenzfahrt oder Endschalter zu verwenden,\n aber die zus\u00e4tzliche Sicherheit der Softlimits wird dadurch zunichte gemacht.\n \n@@ -10807,15 +10807,15 @@\n Zustand des Home-Schalters muss die Position der Antriebsklaue relativ zum Schalter repr\u00e4sentieren (d.h. vor oder nach dem Schalter), und er muss so bleiben, auch wenn die Klaue in der gleichen\n Richtung am Schalter vorbeil\u00e4uft.\n Anmerkung\n Es ist zwar m\u00f6glich, LinuxCNC mit dem G53-Maschinenursprung au\u00dferhalb der weichen Maschinengrenzen zu verwenden, aber wenn Sie G28 oder G30 verwenden, ohne die Parameter einzustellen,\n geht es standardm\u00e4\u00dfig zum Ursprung. Dadurch w\u00fcrden die Endschalter ausgel\u00f6st, bevor die Position\n erreicht wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 191 / 1327\n \n 4.5.3 Separater Home-Schalter Beispiel-Layout\n Dieses Beispiel zeigt minimale und maximale Endschalter mit einem separaten Home-Schalter.\n \n Abbildung 4.6: Demonstratives separates Schalterlayout\n@@ -10833,15 +10833,15 @@\n \u2022 Beachten Sie, dass zwischen den Endschaltern und dem tats\u00e4chlichen harten Kontakt f\u00fcr den Auslauf nach der Deaktivierung des Verst\u00e4rkers ein Abstand besteht.\n Anmerkung\n Die Referenzfahrt legt das G53-Koordinatensystem fest. Der Maschinenursprung (Nullpunkt) kann an\n einer beliebigen Stelle liegen, aber wenn Sie den Nullpunkt auf die negative weiche Grenze setzen,\n werden alle G53-Koordinaten positiv, was wahrscheinlich am einfachsten zu merken ist. Dazu setzen\n Sie MIN_LIMIT = 0 und stellen sicher, dass MAX_LIMIT positiv ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 192 / 1327\n \n 4.5.4 Gemeinsamer End-/Hauptschalter Beispiel-Layout\n \n Dieses Beispiel zeigt einen maximalen Endschalter und einen kombinierten minimalen End-/Referenzschalte\n \n@@ -10861,21 +10861,21 @@\n \u2022 Beachten Sie, dass zwischen den Endschaltern und dem tats\u00e4chlichen harten Kontakt f\u00fcr den Auslauf nach der Deaktivierung des Verst\u00e4rkers ein Abstand besteht.\n \n 4.5.5 Referenzfahrt Abfolge\n Es gibt vier m\u00f6gliche Referenzfahrt-Abfolgen, die durch das Vorzeichen von HOME_SEARCH_VEL und\n HOME_LATCH_VEL sowie die zugeh\u00f6rigen Konfigurationsparameter definiert sind, wie in der folgenden Tabelle dargestellt. Es gibt zwei wesentliche Varianten: HOME_SEARCH_VEL und HOME_LATCH_VEL\n haben das gleiche Vorzeichen oder sie haben entgegengesetzte Vorzeichen. Eine genauere Beschreibung der Funktionen der einzelnen Konfigurationsparameter finden Sie im folgenden Abschnitt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 4.8: Referenzfahrt-Abl\u00e4ufe\n \n 193 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 194 / 1327\n \n 4.5.6 Konfiguration\n Im Folgenden wird genau festgelegt, wie sich die Stammfolge verh\u00e4lt. Sie werden in einem [JOINT_n]Abschnitt der INI-Datei definiert.\n Referenzfahrt\n Typ\n@@ -10926,15 +10926,15 @@\n Wenn HOME_SEARCH_VEL und HOME_LATCH_VEL das gleiche Vorzeichen haben, dann wird die\n Latch-Phase durchgef\u00fchrt, w\u00e4hrend man sich in die gleiche Richtung wie die Suchphase bewegt. (In\n diesem Fall f\u00e4hrt LinuxCNC zun\u00e4chst vom Schalter zur\u00fcck, 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\u00fchrt, w\u00e4hrend man sich in die entgegengesetzte Richtung der Suchphase bewegt. Das bedeutet, dass LinuxCNC den ersten Impuls einrastet,\n 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\n \u00fcber. Wenn HOME_SEARCH_VEL nicht Null ist und dieser Parameter ist auf Null gesetzt, so ist es\n ein Fehler und die Referenzfahrt wird entsprechend fehlschlagen. Der Standardwert ist Null.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 195 / 1327\n \n 4.5.6.3 HOME_FINAL_VEL\n Diese Variable hat die Einheit von Maschineneinheiten pro Sekunde.\n Sie gibt die Geschwindigkeit an, die LinuxCNC verwendet, wenn es seine Bewegung von HOME_OFFSET\n zur HOME-Position durchf\u00fchrt. Wenn die HOME_FINAL_VEL in der INI-Datei fehlt, dann wird die\n@@ -10963,15 +10963,15 @@\n 4.5.6.7 HOME_OFFSET\n Definiert die Lage des Ursprungsnullpunkts des G53-Maschinenkoordinatensystems. Es ist der Abstand (Offset), in gemeinsamen Einheiten, von der Maschine Ursprung auf die Referenzsschalter Ausl\u00f6sepunkt oder Index-Impuls. Nach der Erkennung der Schalter Ausl\u00f6sepunkt / Index-Impuls, setzt\n LinuxCNC die gemeinsame Koordinatenposition zu HOME_OFFSET, und damit die Definition der Ursprungs, von dem sich die weichen Grenzen ableiten. Der Standardwert ist Null.\n Anmerkung\n Die Position des Referenzschalters, die durch die Variable HOME_OFFSET angegeben wird, kann innerhalb oder au\u00dferhalb der Soft Limits liegen. Sie werden gemeinsam mit oder innerhalb der harten\n Endschalter verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 196 / 1327\n \n 4.5.6.8 Referenzpunkt (engl. Home)\n 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\n Konfiguration), und die Einstellung der Koordinate dieses Punktes zu HOME_OFFSET, f\u00fchrt LinuxCNC zu HOME als Abschluss Referenzfahrt durch. Der Standardwert ist Null. Beachten Sie, dass,\n selbst wenn dieser Parameter der gleiche wie HOME_OFFSET ist, das Gelenk vermutlich leicht \u00fcber\n@@ -11006,15 +11006,15 @@\n Eine Aufforderung, f\u00fcr ein Gelenk die Referenzfahrt zu wiederholen, wird stillschweigend ignoriert.\n \n 4.5.6.11 HOME_SEQUENCE\n 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\n (absoluten) HOME_SEQUENCE bereits referenziert wurden und sich am HOME_OFFSET befinden.\n Wenn zwei Gelenke die gleiche HOME_SEQUENCE haben, k\u00f6nnen sie gleichzeitig referenziert werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 197 / 1327\n \n Anmerkung\n Wenn HOME_SEQUENCE nicht angegeben ist, wird das Gelenk nicht durch die HOME ALL-Sequenz referenziert (sondern kann durch einzelne gelenkspezifische Referenzierungsbefehle referenziert werden).\n \n Die anf\u00e4ngliche HOME_SEQUENCE-Nummer kann 0, 1 (oder -1) sein. Der absolute Wert der Sequenznummern muss um eins erh\u00f6ht werden - das \u00dcberspringen von Sequenznummern wird nicht unterst\u00fctzt. Wenn eine Sequenznummer weggelassen wird, stoppt HOME ALL die Referenzfahrt nach\n@@ -11056,15 +11056,15 @@\n 0\n \n Eine Sequenz, alle Gelenke synchronisiert\n [JOINT_0]HOME_SEQUENCE = -1\n [JOINT_1]HOME_SEQUENCE = -1\n [JOINT_2]HOME_SEQUENCE = -1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 198 / 1327\n \n 4.5.6.12 VOLATILE_HOME\n Wenn diese Einstellung aus TRUE gesetzt ist, geht f\u00fcr dieses Gelenk die Referenzeinstellung nicht\n verloren, wenn die Maschine in den AUS-Zustand \u00fcbergeht. Dies ist f\u00fcr jedes Gelenk geeignet, das\n seine Position nicht beibeh\u00e4lt, wenn der Gelenkantrieb ausgeschaltet ist. Einige Schrittantriebe, insbesondere Mikroschrittantriebe, k\u00f6nnen dies ben\u00f6tigen.\n@@ -11100,15 +11100,15 @@\n Beispiel: Synchronisierte Gelenke 0,1 mit negativer Sequenz (-1) f\u00fcr synchronisierte Referenzfahrt\n mit einem Schalter (allow_jjog), der eine positive Sequenz (1) f\u00fcr individuelles Gelenk-Jogging vor\n der Referenzfahrt w\u00e4hlt (partieller HAL-Code):\n loadrt mux2 names=home_sequence_mux\n loadrt conv_float_s32 names=heimat_sequenz_s32\n setp home_sequenz_mux.in0 -1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 199 / 1327\n \n setp home_sequenz_mux.in1 1\n addf home_sequence_mux servo-thread\n addf home_sequence_s32 servo-thread\n ...\n@@ -11143,15 +11143,15 @@\n \u2022 Von LinuxCNC verursachter Abbruch und Werkzeugwechslerfehler: iocontrol bricht eine laufende Wechseloperation zuverl\u00e4ssig ab (Werkzeugwechsel best\u00e4tigt). Ein Werkzeugwechsler kann jederzeit einen Fehler melden, der zum Abbruch des n\u00e4chsten M6 f\u00fchrt. Wenn beispielsweise ein\n Werkzeugwechsler w\u00e4hrend eines Vorbereitungsvorgangs eine leere Tasche vorfindet, sollte er iocontrol einen Fehler melden k\u00f6nnen, und iocontrol sollte entsprechend reagieren, wenn der M6Wechselvorgang ausgef\u00fchrt wird.\n \u2022 Abbruch-/Fehlerursache kommunizieren: Lassen Sie iocontrol wissen, warum der Werkzeugwechsler einen Fehler verursacht hat und warum iocontrol abgebrochen hat. Dies ist f\u00fcr UI-Zwecke. Es\n w\u00e4re ein Kandidat f\u00fcr einen #5xxx Parameter und eine selektive Anzeige in der Benutzeroberfl\u00e4che.\n \u2022 Keine Race Conditions zwischen iocontrol und Werkzeugwechsler: Das Protokoll zwischen iocontrol und Werkzeugwechsler muss eindeutig sein, welche Operation signalisiert wird und ob eine\n \u00c4nderungsoperation abgebrochen oder abgeschlossen wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 200 / 1327\n \n \u2022 Konsistente Ansicht des Status: Beide Parteien m\u00fcssen zu jedem Zeitpunkt eine einheitliche Sicht\n auf den Stand der Dinge in Bezug auf abgebrochene und abgeschlossene Vorg\u00e4nge sowie auf die\n Anzahl der Werkzeuge und deren Platz haben.\n \u2022 Handshaked Signalisierung eines Abbruchs/Fehlers: Nach der Signalisierung eines Abbruchs von\n@@ -11182,15 +11182,15 @@\n (0x00000200), um RCS-Debugging-Meldungen in ganz LinuxCNC einzuschalten, oder verwenden Sie das neue iocontrol-Debugging-Bit (0x00001000) nur f\u00fcr iov2-Meldungen.\n \n 4.6.3 Pins\n \u2022 iocontrol.0.coolant-flood (Bit, Out) TRUE wenn K\u00fchlmittelflut angefordert wird\n \u2022 iocontrol.0.coolant-mist (Bit, Out) TRUE wenn K\u00fchlmittelnebel angefordert wird\n \u2022 iocontrol.0.emc-enable-in - (Bit, in) Sollte FALSE sein, wenn eine externe Not-Aus-Bedingung vorliegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 201 / 1327\n \n \u2022 iocontrol.0.lube (Bit, Out) TRUE wenn Schmiermittel angefordert wird. Dieser Pin wird mit TRUE\n angesteuert, wenn die Steuerung aus dem Not-Aus-Zustand kommt und der Befehl \u201dLube On\u201d an die\n Steuerung gesendet wird. Er wird mit FALSE angesteuert, wenn der Regler in den Notaus-Zustand\n geht und wenn der Befehl \u201dLube Off\u201d an den Regler gesendet wird.\n@@ -11222,15 +11222,15 @@\n Werte ungleich Null f\u00fchren zu einer Meldung des Achsenbedieners oder einer Fehlermeldung, siehe\n unten.\n \u2022 toolchanger-faulted: (Bit, Out) signalisiert, dass die toolchanger-notify-Leitung umgeschaltet hat\n und der toolchanger-reason-code im Fehlerbereich lag. Der n\u00e4chste M6 bricht ab.\n \u2022 toolchanger-clear-fault: (Bit, In) setzt TC-Fehlerzustand zur\u00fcck. Setzt toolchanger-faulted zur\u00fcck,\n wenn toolchanger-notify auf FALSE steht. Verwendung: UI - z.B. Schaltfl\u00e4che Fehlerzustand l\u00f6schen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 202 / 1327\n \n 4.6.4 Parameter\n \u2022 iocontrol.0.tool-prep-index (s32, RO) IO\u2019s interner Array-Index des vorbereiteten Werkzeugs, das\n durch das letzte T-Wort angefordert wurde. 0, wenn kein Werkzeug vorger\u00fcstet ist. Bei Maschinen\n mit Zufallswerkzeugwechsler ist dies die Platznummer des Werkzeugs (d.h. dieselbe wie der ToolPrep-Pocket-Pin), bei Maschinen ohne Zufallswerkzeugwechsler ist dies eine kleine Ganzzahl, die\n@@ -11266,15 +11266,15 @@\n fortgesetzt, jedoch wird der Parameter #5060 auf 1,0 gesetzt, um den Fehler anzuzeigen. Der Parameter #5601 enth\u00e4lt den Wert des Werkzeugwechslergrundes.\n \u2013 toolchanger-reason = 0 : das Programm wird abgebrochen\n \u2013 toolchanger-reason < 0 : Das Programm wird abgebrochen und eine Fehlermeldung wird mit Hilfe\n der Vorlage IO_ERROR angezeigt.\n Die Verwendung des Pins \u201dtoolchanger-fault-ack\u201d ist optional. Er wird TRUE, wenn toolchanger-fault\n ausgel\u00f6st wird und der toolchanger-reason-Pin von iov2 gelesen wurde.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 203 / 1327\n \n 4.7 Konfiguration der Drehmaschine\n 4.7.1 Standard-Ebene\n Wenn LinuxCNC\u2019s Interpreter wurde zuerst geschrieben, war es f\u00fcr M\u00fchlen konzipiert. Das ist, warum\n die Standard-Ebene ist XY (G17). Eine normale Drehmaschine verwendet nur die XZ-Ebene (G18). Um\n@@ -11316,15 +11316,15 @@\n DISPLAY = axis\n LATHE = 1\n ...\n [KINS]\n KINEMATICS = trivkins coordinates=xz\n JOINTS = 2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 204 / 1327\n \n [TRAJ]\n COORDINATES = X Z\n ...\n [JOINT_0]\n@@ -11375,15 +11375,15 @@\n \n Dir. Hold\n (ns)\n \n Dir. Setup\n (ns)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Achse\n \n Treiber-Typ\n \n Schrittzeit\n (ns)\n@@ -11491,15 +11491,15 @@\n \n \u2022 Schritte pro Umdrehung - gibt an, wie viele Schritte der Schrittmotor f\u00fcr eine Umdrehung ben\u00f6tigt.\n Typisch sind 200.\n \u2022 Micro Steps\u2019 - gibt an, wie viele Schritte der Antrieb ben\u00f6tigt, um den Schrittmotor einen vollen\n Schritt zu bewegen. Wenn kein Microstepping verwendet wird, ist diese Zahl 1. Wenn Microstepping\n verwendet wird, h\u00e4ngt der Wert von der Hardware des Schrittmotors ab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 206 / 1327\n \n \u2022 Motor Teeth and Leadscrew Teeth - ist, wenn Sie eine Untersetzung (Zahnrad, Kette, Zahnriemen\n usw.) zwischen Motor und Leitspindel haben. Wenn nicht, setzen Sie beide auf 1.\n \u2022 Leitspindelsteigung\u2019 - 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\n Millimetern einstellen, sind es Millimeter pro Umdrehung.\n@@ -11527,15 +11527,15 @@\n Die erforderliche Skala lautet also:\n \n 4.9 Schrittmotor Konfiguration\n 4.9.1 Einf\u00fchrung\n Die bevorzugte Methode zum Einrichten einer Standard-Maschine mit Schrittmotoren (engl. stepper machine) ist der Stepper-Konfigurations-Assistent (engl. stepper configuration wizard). Siehe das\n Kapitel Stepper-Konfigurations-Assistenz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 207 / 1327\n \n In diesem Kapitel werden einige der g\u00e4ngigsten Einstellungen f\u00fcr die manuelle Einrichtung eines\n schrittmotorbasierten Systems beschrieben. Diese Systeme verwenden Schrittmotoren mit Antrieben,\n die Schritt- und Richtungssignale akzeptieren.\n Es ist eines der einfacheren Systeme, da die Motoren im offenen Regelkreis laufen (keine R\u00fcckmeldung von den Motoren), aber das System muss richtig konfiguriert werden, damit die Motoren nicht\n@@ -11569,15 +11569,15 @@\n Signale: Xstep, Xdir & Xen\n Pins: parport.0.pin-XX-out & parport.0.pin-XX-in\n \n Je nachdem, was Sie in Ihrer INI-Datei ausgew\u00e4hlt haben, verwenden Sie entweder standard_pinout.hal\n oder xylotex_pinout.hal. Dies sind zwei Dateien, die den HAL anweisen, wie die verschiedenen Signale\n & Pins zu verbinden sind. Weiter unten werden wir uns mit der standard_pinout.hal besch\u00e4ftigen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 208 / 1327\n \n 4.9.3.1 Standard-Pinbelegung HAL\n Diese Datei enth\u00e4lt mehrere HAL-Befehle und sieht normalerweise wie folgt aus:\n # Standard-Pinout-Konfigurationsdatei f\u00fcr 3-Achsen-Stepper\n # Verwendung eines Parports f\u00fcr E/A\n@@ -11628,15 +11628,15 @@\n ### Geteilte Referenzschalter alle zu einem einzelnen parallel port Pin f\u00fchren?\n ### Das ist ok, nutzen Sie das gleiche Signal an allen Achsen, aber stellen Sie sicher,\n dass Sie\n ### HOME_IS_SHARED und HOME_SEQUENCE in der INI-Datei. setzen.\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 209 / 1327\n \n ###\n # net homeswitches <= parport.0.pin-10-in\n # net homeswitches => joint.0.home-sw-in\n # net homeswitches => joint.1.home-sw-in\n@@ -11671,15 +11671,15 @@\n net Xstep parport.0.pin-03-out\n net Xdir parport.0.pin-02-out\n \n kann ge\u00e4ndert werden in:\n net Xstep parport.0.pin-02-out\n net Xdir parport.0.pin-03-out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 210 / 1327\n \n oder grunds\u00e4tzlich jeden andere out Pin, die Sie m\u00f6gen.\n Tipp: Achten Sie darauf, dass Sie nicht mehr als ein Signal an denselben Pin anschlie\u00dfen.\n 4.9.3.4 \u00c4ndern der Polarit\u00e4t eines Signals\n Wenn externe Hardware ein \u201dactive low\u201d Signal erwartet, setzen Sie den entsprechenden -invert Parameter. Zum Beispiel, um das Spindelsteuersignal zu invertieren:\n@@ -11716,15 +11716,15 @@\n 4.10 Stepper-Diagnose\n Wenn das, was Sie bekommen, nicht das ist, was Sie erwarten, haben Sie oft nur eine Erfahrung\n gemacht. Wenn man aus den Erfahrungen lernt, versteht man das Ganze besser. Die Diagnose von\n Problemen erfolgt am besten durch \u201dTeilen und Herrschen\u201d. Damit ist gemeint, dass sich das Problem\n am schnellsten finden l\u00e4sst, wenn man jedes Mal 1/2 der Variablen aus der Gleichung entfernen kann.\n In der realen Welt ist dies nicht immer der Fall, aber es ist normalerweise ein guter Ausgangspunkt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 211 / 1327\n \n 4.10.1 H\u00e4ufige Probleme\n 4.10.1.1 Stepper bewegt sich einen Schritt\n Der h\u00e4ufigste Grund, warum sich ein Schrittmotor bei einer Neuinstallation nicht bewegt, ist, dass die\n Schritt- und Richtungssignale vertauscht sind. Wenn Sie die Tasten \u201dTippen vorw\u00e4rts\u201d und \u201dTippen\n@@ -11753,15 +11753,15 @@\n durchgef\u00fchrt haben, um einen guten Wert f\u00fcr den Stepconf Wizard zu erhalten, oder wenn Sie die\n maximale Geschwindigkeit oder die maximale Beschleunigung zu hoch eingestellt haben.\n Wenn Sie Umkehrspiel hinzuf\u00fcgten, m\u00fcssen Sie die STEPGEN_MAXACCEL bis zu doppelt so hoch\n wie die MAX_ACCELERATION in dem AXIS Abschnitt der INI-Datei setzen f\u00fcr jede Achse, f\u00fcr die Sie\n ein Umkehrspiel erh\u00f6hten. LinuxCNC verwendet \u201dzus\u00e4tzliche Beschleunigung\u201d bei Richtungswechsel,\n um das Umkehrspiel zu kompensieren. Ohne die Spiel-Korrektur kann die Beschleunigung des SchrittGenerators nur ein paar Prozent \u00fcber der des Bewegungsplaners liegen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 212 / 1327\n \n 4.10.2.2 RTAPI-Fehler\n Wenn Sie diese Fehlermeldung erhalten:\n RTAPI: ERROR: Unerwartete Echtzeitverz\u00f6gerung bei Aufgabe n (engl. Unexpected realtime\n delay on task n)\n@@ -11805,15 +11805,15 @@\n G4 P0.250\n G0 Z0.500\n G4 P0.250\n #1000 = [#1000 - 1]\n o100 endwhile\n ( msg, Test 2 der Z-Achsenkonfiguration S zum Fortfahren)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n M1 (hier anhalten)\n #1000=100 ( Schleife 100 mal )\n ( die n\u00e4chste Schleife hat keine Verz\u00f6gerungen nach den Bewegungen )\n ( testet die Richtungshaltezeiten in der Treiberkonfiguration und auch die maximale\n Beschleunigungseinstellung )\n o101 while [#1000]\n@@ -11824,15 +11824,15 @@\n ( msg, Done...Z sollte genau .5\u201d \u00fcber dem Tisch liegen )\n M2\n \n 213 / 1327\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 214 / 1327\n \n Kapitel 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL-Einf\u00fchrung\n@@ -11847,15 +11847,15 @@\n HAL basiert auf denselben Prinzipien, die auch f\u00fcr die Entwicklung von Hardware-Schaltungen und\n -Systemen verwendet werden, so dass es sinnvoll ist, zun\u00e4chst diese Prinzipien zu untersuchen.\n Jedes System, auch eine CNC-Maschine, besteht aus miteinander verkn\u00fcpften Komponenten. Bei einer\n CNC-Maschine k\u00f6nnten diese Komponenten die Hauptsteuerung, Servoverst\u00e4rker oder Schrittmotoren, Motoren, Encoder, Endschalter, Drucktastenschalter, vielleicht ein VFD f\u00fcr den Spindelantrieb,\n eine SPS f\u00fcr den Betrieb eines Werkzeugwechslers usw. sein. Der Maschinenbauer muss diese Teile\n ausw\u00e4hlen, montieren und miteinander verdrahten, um ein komplettes System zu erhalten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 215 / 1327\n \n Abbildung 5.1: HAL-Konzept - Verbinden wie elektrische Schaltkreise.\n Abbildung 1 w\u00fcrde wie folgt in HAL-Code geschrieben:\n net signal-blue\n net signal-red\n@@ -11873,15 +11873,15 @@\n usw. Die Entscheidung des Integrators, welche Komponenten er verwendet, basiert auf der Funktion der jeweiligen Komponente und den vom Hersteller des Ger\u00e4ts angegebenen Spezifikationen. Die\n Gr\u00f6\u00dfe eines Motors und die Last, die er antreiben muss, beeinflussen die Wahl des Verst\u00e4rkers, der\n f\u00fcr den Betrieb ben\u00f6tigt wird. Die Wahl des Verst\u00e4rkers kann sich auf die Art der R\u00fcckkopplung auswirken, die der Verst\u00e4rker ben\u00f6tigt, sowie auf die Geschwindigkeits- oder Positionssignale, die von\n einer Steuerung an den Verst\u00e4rker gesendet werden m\u00fcssen.\n In der HAL-Welt muss der Integrator entscheiden, welche HAL-Komponenten ben\u00f6tigt werden. In der\n Regel wird f\u00fcr jede Schnittstellenkarte ein Treiber ben\u00f6tigt. Zus\u00e4tzliche Komponenten k\u00f6nnen f\u00fcr\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 216 / 1327\n \n die Software-Generierung von Schrittimpulsen, SPS-Funktionen und eine Vielzahl anderer Aufgaben\n erforderlich sein.\n 5.1.1.2 Verbindungsentwurf\n Der Konstrukteur eines Hardwaresystems w\u00e4hlt nicht nur die Teile aus, er entscheidet auch, wie diese\n@@ -11906,15 +11906,15 @@\n HAL bietet die Software-\u00c4quivalente eines Voltmeters, Oszilloskops, Signalgenerators und anderer\n Werkzeuge, die zum Testen und Abstimmen eines Systems ben\u00f6tigt werden. Mit denselben Befehlen,\n die zum Aufbau des Systems verwendet werden, k\u00f6nnen auch \u00c4nderungen vorgenommen werden.\n 5.1.1.5 Zusammenfassung\n Dieses Dokument richtet sich an Personen, die bereits wissen, wie man diese Art von HardwareSystemintegration durchf\u00fchrt, die aber nicht wissen, wie man die Hardware mit LinuxCNC verbindet.\n Siehe den Abschnitt Remote Start Example in der HAL UI Examples Dokumentation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 217 / 1327\n \n Abbildung 5.2: Remote-Start-Beispiel (Schema)\n Das oben beschriebene traditionelle Hardware-Design endet am Rande der Hauptsteuerung. Au\u00dferhalb der Steuerung befinden sich eine Reihe relativ einfacher K\u00e4sten, die miteinander verbunden\n sind, um das zu tun, was erforderlich ist. Im Inneren ist die Steuerung ein gro\u00dfes R\u00e4tsel - eine riesige\n schwarze Box, von der wir hoffen, dass sie funktioniert.\n@@ -11935,15 +11935,15 @@\n von HAL. Wenn Sie mit der Idee, Hardware-Blackboxen miteinander zu verbinden, vertraut sind, werden Sie wahrscheinlich wenig Probleme haben, HAL f\u00fcr die Verbindung von Software-Blackboxen zu\n verwenden.\n \n 5.1.2 HAL-Konzepte\n Dieser Abschnitt ist ein Glossar, in dem die wichtigsten HAL-Begriffe definiert werden. Er unterscheidet sich jedoch etwas von einem herk\u00f6mmlichen Glossar, da die Begriffe nicht in alphabetischer\n Reihenfolge angeordnet sind. Sie sind nach ihrer Beziehung oder ihrem Fluss in der HAL-Welt geordnet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 218 / 1327\n \n Komponente\n Wenn wir \u00fcber Hardware-Design sprechen, bezeichnen wir die einzelnen Teile als Teile, Bausteine, Black Boxes, usw. Das HAL-\u00c4quivalent ist eine Komponente oder HAL-Komponente (in\n diesem Dokument wird HAL-Komponente verwendet, wenn eine Verwechslung mit anderen Arten von Komponenten wahrscheinlich ist, aber normalerweise wird nur Komponente verwendet).\n Eine HAL-Komponente ist ein St\u00fcck Software mit genau definierten Eing\u00e4ngen, Ausg\u00e4ngen und\n@@ -11979,15 +11979,15 @@\n vom Typ Daten\u00fcbersetzung/-umwandlung zu tun.\n \n Signal\n In einer physischen Maschine sind die Anschl\u00fcsse der realen Hardwarekomponenten durch Dr\u00e4hte miteinander verbunden. Das HAL-\u00c4quivalent eines Drahtes ist ein \u201dSignal\u201d oder \u201dHAL-Signal\u201d.\n HAL-Signale verbinden HAL-Pins miteinander, wie vom Maschinenbauer gew\u00fcnscht. HAL-Signale\n k\u00f6nnen nach Belieben abgetrennt und wieder angeschlossen werden (sogar w\u00e4hrend die Maschine l\u00e4uft).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 219 / 1327\n \n Typ\n Bei der Verwendung echter Hardware w\u00fcrden Sie einen 24-V-Relaisausgang nicht an den +/10-V-Analogeingang eines Servoverst\u00e4rkers anschlie\u00dfen. F\u00fcr HAL-Pins gelten die gleichen Einschr\u00e4nkungen, die auf ihrem Typ basieren. Sowohl Pins als auch Signale haben Typen, und Signale k\u00f6nnen nur an Pins desselben Typs angeschlossen werden. Derzeit gibt es 4 Typen, wie\n folgt:\n \u2022 bit - ein einzelner TRUE/FALSE- oder ON/OFF-Wert\n@@ -12013,15 +12013,15 @@\n HAL-Pins zu nehmen und sie auf die physischen Ausgangspins zu schreiben. Beide Funktionen sind\n Teil des parport-Treibers.\n \n 5.1.3 HAL-Komponenten\n Jede HAL-Komponente ist ein St\u00fcck Software mit genau definierten Eing\u00e4ngen, Ausg\u00e4ngen und Verhaltensweisen, das installiert und nach Bedarf miteinander verbunden werden kann. Der Abschnitt\n HAL Components List listet alle verf\u00fcgbaren Komponenten und eine kurze Beschreibung ihrer Funktionen auf.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 220 / 1327\n \n 5.1.4 Timing-Probleme in HAL\n Im Gegensatz zu den physikalischen Verdrahtungsmodellen zwischen Black Boxes, auf denen HAL,\n wie wir gesagt haben, basiert, reicht das einfache Verbinden zweier Pins mit einem HAL-Signal bei\n weitem nicht aus, um die Wirkung des physikalischen Falles zu erreichen.\n@@ -12059,15 +12059,15 @@\n Dieses Dokument bietet einen \u00dcberblick \u00fcber die Grundlagen von HAL.\n \n 5.2.1 HAL-Befehle\n Ausf\u00fchrlichere Informationen finden Sie in der Manpage f\u00fcr halcmd: f\u00fchren Sie man halcmd in einem\n Terminalfenster aus.\n Um die HAL-Konfiguration zu sehen und den Status von Pins und Parametern zu \u00fcberpr\u00fcfen, verwenden Sie das Fenster HAL-Konfiguration im Men\u00fc Maschine in AXIS. Um den Status eines Pins\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 221 / 1327\n \n zu \u00fcberwachen, \u00f6ffnen Sie die Registerkarte \u201d\u00dcberwachen\u201d und klicken Sie auf jeden Pin, den Sie\n \u00fcberwachen m\u00f6chten; er wird dann zum \u00dcberwachungsfenster hinzugef\u00fcgt.\n \n Abbildung 5.3: HAL-Konfigurationsfenster\n@@ -12081,15 +12081,15 @@\n loadrt mux4 count=1\n \n 5.2.1.2 addf\n Der Befehl addf f\u00fcgt eine Funktion zu einem Echtzeit-Thread hinzu. Wenn der StepConf-Assistent\n zur Erstellung der Konfiguration verwendet wurde, wurden zwei Threads erstellt ( \u0300 \u0300base-thread \u0300 \u0300 und\n \u0300 \u0300servo-thread \u0300 \u0300).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 222 / 1327\n \n addf f\u00fcgt Funktion functname zum Thread threadname hinzu. Standardm\u00e4\u00dfig wird die Funktion in\n der Reihenfolge hinzugef\u00fcgt, in der sie in der Datei steht. Wenn position angegeben ist, wird die\n Funktion an dieser Stelle des Threads hinzugef\u00fcgt. Eine negative position bedeutet Position in Bezug\n auf das Ende des Threads. Beispiel: 1 ist der Anfang des Fadens, -1 ist das Ende des Fadens, -3 ist die\n@@ -12146,15 +12146,15 @@\n Wenn die Komponente einen Flie\u00dfkomma-Thread ben\u00f6tigt, ist dies normalerweise der langsamere\n Servo-Thread.\n \n 5.2.1.3 loadusr\n Mit dem Befehl loadusr wird eine User-Space-HAL-Komponente geladen. Userspace-Programme sind\n eigene Prozesse, die optional \u00fcber Pins und Parameter mit anderen HAL-Komponenten kommunizieren. Sie k\u00f6nnen keine Echtzeitkomponenten in den Benutzerraum laden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 223 / 1327\n \n Flags k\u00f6nnen eine oder mehrere der folgenden sein:\n -W\n \n um auf die Bereitschaft der Komponente zu warten. Es wird davon\n@@ -12202,15 +12202,15 @@\n \u2022 Ein IN-Pin kann immer mit einem Signal verbunden werden.\n \u2022 Ein IO-Pin kann angeschlossen werden, sofern kein ein OUT-Pin am Signal anliegt.\n \u2022 Ein OUT-Pin kann nur angeschlossen werden, wenn es keine anderen OUT- oder IO-Pins am Signal\n gibt.\n Derselbe Signal-Name kann in mehreren Netzbefehlen verwendet werden, um zus\u00e4tzliche Pins zu\n verbinden, solange die obigen Regeln beachtet werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 224 / 1327\n \n Abbildung 5.4: Signalrichtung (engl. signal direction)\n Dieses Beispiel zeigt das Signal xStep mit der Quelle stepgen.0.out und mit zwei Lesern, parport.0.pin02-out und parport.0.pin-08-out. Im Grunde genommen wird der Wert von stepgen.0.out an das Signal\n xStep gesendet und dieser Wert wird dann an parport.0.pin-02-out und parport.0.pin-08-out gesendet.\n #\n@@ -12232,15 +12232,15 @@\n 5.2.1.5 setp\n Der Befehl setp setzt den Wert eines Pins oder Parameters. Die g\u00fcltigen Werte h\u00e4ngen vom Typ des\n Pins oder Parameters ab. Es ist ein Fehler, wenn die Datentypen nicht \u00fcbereinstimmen.\n Einige Komponenten haben Parameter, die vor der Verwendung eingestellt werden m\u00fcssen. Die Parameter k\u00f6nnen je nach Bedarf vor der Verwendung oder w\u00e4hrend der Ausf\u00fchrung gesetzt werden.\n Sie k\u00f6nnen setp nicht auf einen Pin anwenden, der mit einem Signal verbunden ist.\n setp Syntax und Beispiel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 225 / 1327\n \n setp \n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6 sets\n@@ -12273,15 +12273,15 @@\n Der Befehl linksp wurde durch den Befehl net abgel\u00f6st.\n Der Befehl linkps stellt eine Verbindung zwischen einem Pin und einem Signal her. Er ist der gleiche\n wie linksp, aber die Argumente sind vertauscht.\n linkps Syntax und Beispiel\n linkps \n linkps parport.0.pin-02-out X-Step\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 226 / 1327\n \n Der Befehl linkps wurde durch den Befehl net abgel\u00f6st.\n der Befehl newsig erzeugt ein neues HAL-Signal mit dem Namen und dem Datentyp . Der Typ muss bit, s32, u32 oder float sein. Fehler, wenn bereits existiert.\n newsig Syntax und Beispiel\n newsig \n@@ -12307,15 +12307,15 @@\n \n 5.2.3 HAL Files\n Wenn Sie den Stepper Config Wizard verwendet haben, um Ihre Konfiguration zu erstellen, werden\n Sie bis zu drei HAL-Dateien in Ihrem Konfigurationsverzeichnis haben.\n \u2022 my-mill.hal (wenn Ihre Konfiguration my-mill hei\u00dft) Diese Datei wird zuerst geladen und sollte nicht\n ge\u00e4ndert werden, wenn Sie den Stepper-Konfigurationsassistenten verwendet haben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 227 / 1327\n \n \u2022 custom.hal Diese Datei wird als n\u00e4chstes und vor dem Laden der grafischen Benutzeroberfl\u00e4che\n geladen. Hier legen Sie Ihre benutzerdefinierten HAL-Befehle ab, die vor dem Laden der grafischen\n Benutzeroberfl\u00e4che geladen werden sollen.\n \u2022 custom_postgui.hal Diese Datei wird geladen, nachdem die grafische Benutzeroberfl\u00e4che geladen\n@@ -12351,15 +12351,15 @@\n and2.n\n \n Pins\n and2.N.in0 (bit, in)\n and2.N.in1 (bit, in)\n and2.N.out (bit, out)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 228 / 1327\n \n Tabelle 5.1: und2 Wahrheitstabelle\n in0\n False\n True\n@@ -12409,15 +12409,15 @@\n or2.n\n \n Pins\n or2.n.in0 (bit, in)\n or2.n.in1 (bit, in)\n or2.n.out (bit, out)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 229 / 1327\n \n Tabelle 5.3: or2 Wahrheitstabelle\n in0\n True\n True\n@@ -12476,15 +12476,15 @@\n net my-sigin2 and2.0.in1 <= parport.0.pin-12-in\n net both-on parport.0.pin-14-out <= and2.0.out\n \n In dem obigen Beispiel wird eine Kopie von \u201dand2\u201d in den Echtzeitbereich geladen und dem ServoThread hinzugef\u00fcgt. Als n\u00e4chstes wird Pin-11 des parallelen Anschlusses mit dem in0-Bit des andGatters verbunden. Als n\u00e4chstes wird Pin-12 mit dem in1-Bit des and-Gatters verbunden. Zuletzt\n verbinden wir das Ausgangsbit \u201dand2\u201d mit dem parallelen Anschluss \u201dPin-14\u201d. Wenn also nach der\n Wahrheitstabelle f\u00fcr \u201dand2\u201d Pin 11 und Pin 12 eingeschaltet sind, dann ist der Ausgangs-Pin 14 eingeschaltet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 230 / 1327\n \n 5.2.7 Konvertierungskomponenten\n 5.2.7.1 weighted_sum\n Die weighted_sum (engl. f\u00fcr gewichtete Summe) wandelt eine Gruppe von Bits in eine ganze Zahl um.\n Die Umwandlung ist die Summe der \u201dGewichte\u201d der vorhandenen Bits plus eines eventuellen Offsets.\n@@ -12552,15 +12552,15 @@\n einem LinuxCNC INI-Datei in der LinuxCNC Stanza als [LinuxCNC]HALFILE=filename angegeben).\n Normalerweise muss ein Satz von einer oder mehreren LinuxCNC-Konfigurationsdateien eine einzige,\n 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)\n in drei verschiedenen Orten in Ihrem Setup verwenden, m\u00fcssten Sie eine einzige Zeile irgendwo zu\n spezifizieren:\n loadrt and2 count=3\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 231 / 1327\n \n was zu den Komponenten and2.0, and2.1 und 2.2 f\u00fchrt.\n Konfigurationen sind besser lesbar, wenn Sie die Option names= f\u00fcr Komponenten angeben, bei denen\n sie unterst\u00fctzt wird, z. B.:\n loadrt and2 names=aa,ab,ac\n@@ -12594,15 +12594,15 @@\n \n Nach dem ersten Durchlauf werden die Echtzeitmodule automatisch geladen (loadrt), und zwar mit\n einer Anzahl, die der Gesamtzahl entspricht, wenn die Option count= verwendet wird, oder mit allen\n angegebenen Einzelnamen, wenn die Option names= verwendet wird.\n In einem zweiten Durchlauf werden dann alle anderen in den HALFILES angegebenen LinuxCNCBefehle ausgef\u00fchrt. Die addf-Befehle verkn\u00fcpfen die Funktionen einer Komponente mit der ThreadAusf\u00fchrung und werden in diesem zweiten Durchgang in der Reihenfolge ihres Erscheinens zusammen mit anderen Befehlen ausgef\u00fchrt.\n Die Optionen \u201dcount=\u201d und \u201dnames=\u201d k\u00f6nnen zwar verwendet werden, schlie\u00dfen sich aber gegenseitig aus - f\u00fcr ein bestimmtes Modul kann nur ein Typ angegeben werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 232 / 1327\n \n Die TWOPASS-Verarbeitung ist am effektivsten, wenn die Option \u201dnames=\u201d verwendet wird. Mit dieser Option k\u00f6nnen Sie eindeutige Namen vergeben, die als Ged\u00e4chtnisst\u00fctze dienen oder anderweitig\n f\u00fcr die Konfiguration relevant sind. Wenn Sie z. B. eine Ableitungskomponente zur Sch\u00e4tzung der Geschwindigkeiten und Beschleunigungen an jeder (x,y,z)-Koordinate verwenden, f\u00fchrt die Verwendung\n der count=-Methode zu obskuren Komponentennamen wie ddt.0, ddt.1, ddt.2, usw.\n Alternativ k\u00f6nnen Sie auch die Option names= verwenden:\n@@ -12642,15 +12642,15 @@\n HALFILE = file_1.hal\n ...\n HALFILE = file_n.hal\n HALFILE = file_with_all_loads_for_postgui.hal\n ...\n POSTGUI_HALFILE = the_postgui_file.hal\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 233 / 1327\n \n 5.3.3 Ausschlie\u00dfen von HAL-Dateien\n Die TWOPASS-Verarbeitung konvertiert .hal-Dateien in \u00e4quivalente .tcl-Dateien und verwendet haltcl, um loadrt- und addf-Befehle zu finden, um ihre Nutzung zu akkumulieren und zu konsolidieren.\n Loadrt-Parameter, die den einfachen Parametern names= (oder count=) entsprechen, wie sie der HAL\n Component Generator (halcompile) akzeptiert, werden erwartet. Komplexere Parameterelemente, die\n@@ -12683,15 +12683,15 @@\n Vorteile der TWOPASS-Verarbeitung eliminieren w\u00fcrde. Die LinuxCNC-Befehle, die Signale erzeugen\n (net) und Befehle, welche die Ausf\u00fchrungsreihenfolge festlegen (addf), sollten nicht in ausgeschlossenen Dateien platziert werden. Dies gilt insbesondere f\u00fcr addf-Befehle, da ihre Reihenfolge wichtig\n sein kann.\n \n 5.3.4 Beispiele\n Beispiele f\u00fcr die Verwendung von TWOPASS f\u00fcr einen Simulator sind in den Verzeichnissen enthalten:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 234 / 1327\n \n configs/sim/axis/twopass/\n configs/sim/axis/simtcl/\n \n 5.4 HAL-Tutorial\n@@ -12728,15 +12728,15 @@\n Befehl-Vervollst\u00e4ndigung durch Tabulator-Taste\n halcmd: loa\n halcmd: load\n halcmd: loadrt\n halcmd: loadrt cou\n halcmd: loadrt counter\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 235 / 1327\n \n 5.4.2.3 Die RTAPI-Umgebung\n RTAPI stands for Real Time Application Programming Interface. Many HAL components work in realtime, and all HAL components store data in shared memory so realtime components can access it.\n Regular Linux does not support realtime programming or the type of shared memory that HAL needs.\n Fortunately, there are realtime operating systems (RTOS\u2019s) that provide the necessary extensions to\n@@ -12772,15 +12772,15 @@\n 5.4.3.2 Untersuchung der HAL\n Now that the module is loaded, it is time to introduce halcmd, the command line tool used to configure the HAL. This tutorial will introduce only a selection of halcmd features. For a more complete\n description try man halcmd, or see the reference in HAL Commands section of this document. The first\n halcmd feature is the show command. This command displays information about the current state of\n the HAL. To show all installed components:\n Show Components with halrun/halcmd\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 236 / 1327\n \n halcmd: show comp\n Loaded HAL Components:\n ID\n Type Name\n@@ -12877,15 +12877,15 @@\n Finally, parameter labeled RW are read-write parameters. That means that they are changed by the\n component, but can also be changed by the user. Note: The parameters siggen.0.update.time and\n siggen.0.update.tmax are for debugging purposes and won\u2019t be covered in this section.\n Most realtime components export one or more functions to actually run the realtime code they contain.\n Let\u2019s see what function(s) siggen exported:\n Show Functions with halcmd \u0300\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 237 / 1327\n \n halcmd: show funct\n Exported Functions:\n Owner\n CodeAddr Arg\n@@ -12957,15 +12957,15 @@\n system before the realtime code starts. Once you are happy with the configuration, you can start the\n realtime code like this:\n halcmd: start\n \n Jetzt l\u00e4uft der Signalgenerator. Schauen wir uns seine Ausgangspins an:\n 1 CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 238 / 1327\n \n halcmd: show pin\n Komponenten-Pins:\n Owner\n Type Dir\n@@ -13087,15 +13087,15 @@\n \n Name\n siggen.0.amplitude\n siggen.0.clock\n siggen.0.cosine\n siggen.0.frequency\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3\n 3\n 3\n 3\n 3\n \n@@ -13155,15 +13155,15 @@\n \n 5.4.3.7 Wiederherstellung der HAL-Konfiguration\n To restore the HAL configuration stored in the file \u201dsaved.hal\u201d, we need to execute all of those HAL\n commands. To do that, we use \u201d-f __\u201d which reads commands from a file, and \u201d-I\u201d\n (upper case i) which shows the halcmd prompt after executing the commands:\n Ausf\u00fchren einer gespeicherten Datei\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 240 / 1327\n \n halrun -I -f saved.hal\n \n Notice that there is not a \u201dstart\u201d command in saved.hal. It\u2019s necessary to issue it again (or edit the\n file saved.hal to add it there).\n@@ -13198,15 +13198,15 @@\n Halmeter anzuweisen, ein noch kleineres Fenster zu verwenden. Der Name des Elements wird dann\n in der Titelleiste statt unter dem Wert angezeigt, und es gibt keine Schaltfl\u00e4che. Dies ist n\u00fctzlich,\n wenn viele Halmeter auf kleinem Raum angezeigt werden sollen.\n Wir werden erneut die Komponente siggen verwenden, um halmeter zu \u00fcberpr\u00fcfen. Wenn Sie das\n vorherige Beispiel gerade beendet haben, k\u00f6nnen Sie siggen mit der gespeicherten Datei laden. Wenn\n nicht, k\u00f6nnen wir es genauso laden wie zuvor:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 241 / 1327\n \n halrun\n halcmd: loadrt siggen\n halcmd: loadrt threads name1=test-thread period1=1000000\n halcmd: addf siggen.0.update test-thread\n@@ -13219,15 +13219,15 @@\n \n The first window you will see is the \u201dSelect Item to Probe\u201d window.\n \n Abbildung 5.5: Halmeter Auswahlfenster\n This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one\n displays all the signals, and the third displays all the parameters. We would like to look at the pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 242 / 1327\n \n siggen.0.cosine first, so click on it then click the \u201dClose\u201d button. The probe selection dialog will\n close, and the meter looks something like the following figure.\n \n Abbildung 5.6: Halmeter-Fenster\n@@ -13258,15 +13258,15 @@\n halcmd: loadrt threads name1=fast fp1=0 period1=50000 name2=slow period2=1000000\n \n The first command loads two step generators, both configured to generate stepping type 0. The second\n command loads our old friend siggen, and the third one creates two threads, a fast one with a period\n of 50 microseconds (\u00b5s) and a slow one with a period of 1 millisecond (ms). The fast thread doesn\u2019t\n support floating point functions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 243 / 1327\n \n As before, we can use halcmd show to take a look at the HAL. This time we have a lot more pins and\n parameters than before:\n halcmd: show pin\n Component Pins:\n@@ -13450,15 +13450,15 @@\n stepgen.capture-position.time\n stepgen.capture-position.tmax\n stepgen.make-pulses.time\n stepgen.make-pulses.tmax\n stepgen.update-freq.time\n stepgen.update-freq.tmax\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 244 / 1327\n \n 5.4.5.2 Verbinden von Pins mit Signalen\n Wir haben also zwei Schrittimpulsgeneratoren und einen Signalgenerator. Nun ist es an der Zeit,\n 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\u00fcrden. Wir wollen den\n Tisch im Kreis bewegen. Dazu senden wir ein Kosinussignal an die X-Achse und ein Sinussignal an die\n@@ -13516,15 +13516,15 @@\n signal comes from pin siggen.0.cosine, and goes to pin stepgen.0.velocity-cmd.\n 5.4.5.3 Einrichten der Echtzeitausf\u00fchrung - Threads und Funktionen\n Thinking about data flowing through \u201dwires\u201d makes pins and signals fairly easy to understand. Threads\n and functions are a little more difficult. Functions contain the computer instructions that actually get\n things done. Thread are the method used to make those instructions run when they are needed. First\n let\u2019s look at the functions available to us.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 245 / 1327\n \n halcmd: show funct\n Exported Functions:\n Owner\n CodeAddr Arg\n@@ -13608,15 +13608,15 @@\n (\n slow (\n \n Time, Max-Time )\n 0,\n 0 )\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49849\n \n NO\n \n 1 siggen.0.update\n 2 stepgen.update-freq\n@@ -13667,39 +13667,39 @@\n \n 5.4.6 Halscope\n Das vorherige Beispiel erzeugt einige sehr interessante Signale. Aber vieles von dem, was passiert,\n ist viel zu schnell, um es mit dem Halmeter zu sehen. Um einen genaueren Blick auf die Vorg\u00e4nge\n im Inneren des HAL zu werfen, brauchen wir ein Oszilloskop. Gl\u00fccklicherweise verf\u00fcgt HAL \u00fcber ein\n solches, genannt halscope.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 247 / 1327\n \n Halscope besteht aus zwei Teilen - einem Echtzeitteil, der als Kernelmodul geladen wird, und einem\n Benutzerteil, der die grafische Benutzeroberfl\u00e4che und die Anzeige bereitstellt. Sie m\u00fcssen sich dar\u00fcber jedoch keine Gedanken machen, da der Benutzerteil automatisch anfordert, dass der Echtzeitteil\n geladen wird. Wenn LinuxCNC in einem Terminal l\u00e4uft, k\u00f6nnen Sie halscope mit dem folgenden Befehl\n starten.\n Halscope starten\n halcmd loadusr halscope\n \n Wenn LinuxCNC nicht l\u00e4uft oder die Datei autosave.halscope nicht mit den Pins \u00fcbereinstimmt, die\n im aktuell laufenden LinuxCNC verf\u00fcgbar sind, \u00f6ffnet sich das Scope-GUI-Fenster, unmittelbar gefolgt von einem Dialog Realtime function not linked, der wie die folgende Abbildung aussieht. Um die\n Abtastrate zu \u00e4ndern, klicken Sie mit der linken Maustaste auf das Feld Samples.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 248 / 1327\n \n Abbildung 5.7: Dialog Echtzeitfunktion nicht verkn\u00fcpft\n This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once\n per millisecond, so click on the 989 \u00b5s thread slow and leave the multiplier at 1. We will also leave the\n record length at 4000 samples, so that we can use up to four channels at one time. When you select\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 249 / 1327\n \n a thread and then click OK, the dialog disappears, and the scope window looks something like the\n following figure.\n \n Abbildung 5.8: Fenster f\u00fcr den anf\u00e4nglichen Geltungsbereich\n@@ -13711,34 +13711,34 @@\n die Aufzeichnung verf\u00fcgbare Speicher auf etwa 16.000 Samples festgelegt ist.\n Die Kanalschaltfl\u00e4chen befinden sich am unteren Rand des Halskop-Bildschirms. Wenn Sie auf die\n Schaltfl\u00e4che \u201d1\u201d klicken, wird das Dialogfeld \u201dSelect Channel Source\u201d (Kanalquelle ausw\u00e4hlen) angezeigt, wie in der folgenden Abbildung dargestellt. Dieser Dialog ist dem von Halmeter verwendeten\n Dialog sehr \u00e4hnlich. Wir m\u00f6chten uns die Signale ansehen, die wir zuvor definiert haben, also klicken\n wir auf die Registerkarte \u201dSignale\u201d, und der Dialog zeigt alle Signale im HAL an (in diesem Beispiel\n nur zwei).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 250 / 1327\n \n Abbildung 5.9: Kanalquelle ausw\u00e4hlen\n Um ein Signal auszuw\u00e4hlen, klicken Sie es einfach an. In diesem Fall m\u00f6chten wir, dass auf Kanal 1\n das Signal \u201dX-vel\u201d angezeigt wird. Klicken Sie auf die Registerkarte \u201dSignale\u201d und dann auf \u201dX-vel\u201d.\n Das Dialogfeld schlie\u00dft sich und der Kanal ist nun ausgew\u00e4hlt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 251 / 1327\n \n Abbildung 5.10: Signal ausw\u00e4hlen\n Die Taste f\u00fcr Kanal 1 wird gedr\u00fcckt, und die Kanalnummer 1 und die Bezeichnung \u201dX-vel\u201d erscheinen\n unter der Tastenreihe. Diese Anzeige zeigt immer den ausgew\u00e4hlten Kanal an - Sie k\u00f6nnen mehrere\n Kan\u00e4le auf dem Bildschirm haben, aber der ausgew\u00e4hlte Kanal ist hervorgehoben, und die verschiedenen Steuerelemente wie vertikale Position und Skalierung funktionieren immer f\u00fcr den ausgew\u00e4hlten\n Kanal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 252 / 1327\n \n Abbildung 5.11: Halscope\n To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then\n click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals\n connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and\n@@ -13748,15 +13748,15 @@\n haben und 1000 Samples pro Sekunde erfassen, wird halscope etwa 2 Sekunden brauchen, um die\n H\u00e4lfte seines Puffers zu f\u00fcllen. W\u00e4hrend dieser Zeit zeigt ein Fortschrittsbalken direkt \u00fcber dem\n Hauptbildschirm an, dass der Puffer gef\u00fcllt 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\u00f6sen,\n klicken Sie auf die Schaltfl\u00e4che \u201dErzwingen\u201d im Abschnitt \u201dAusl\u00f6ser\u201d oben rechts. Sie sollten sehen,\n wie sich der Rest des Puffers f\u00fcllt, und dann werden die erfassten Wellenformen auf dem Bildschirm\n angezeigt. Das Ergebnis sieht ungef\u00e4hr so aus wie in der folgenden Abbildung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 253 / 1327\n \n Abbildung 5.12: Erfasste Wellenformen\n The Selected Channel box at the bottom tells you that the purple trace is the currently selected one,\n channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1\n through 3 to highlight the other three traces.\n@@ -13765,30 +13765,30 @@\n verwenden wir die \u201dVertikal\u201d-Steuerungen in der Box auf der rechten Seite des Bildschirms. Diese\n Regler wirken sich auf den aktuell ausgew\u00e4hlten Kanal aus. Bei der Einstellung der Verst\u00e4rkung ist\n zu beachten, dass sie einen riesigen Bereich abdeckt - im Gegensatz zu einem echten Oszilloskop kann\n dieses Ger\u00e4t Signale von sehr kleinen (Pico-Einheiten) bis zu sehr gro\u00dfen (Tera-Einheiten) anzeigen.\n Mit dem Positionsregler wird die angezeigte Kurve nur \u00fcber die H\u00f6he des Bildschirms nach oben und\n unten bewegt. F\u00fcr gr\u00f6\u00dfere Einstellungen sollte die Offset-Taste verwendet werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 254 / 1327\n \n Abbildung 5.13: Vertikale Einstellung\n Die gro\u00dfe Schaltfl\u00e4che Ausgew\u00e4hlter Kanal am unteren Rand zeigt an, dass Kanal 1 der aktuell ausgew\u00e4hlte Kanal ist und dass er mit dem X-vel-Signal \u00fcbereinstimmt. Versuchen Sie, auf die anderen\n Kan\u00e4le zu klicken, um ihre Spuren sichtbar zu machen und sie mit dem Pos-Cursor verschieben zu\n k\u00f6nnen.\n 5.4.6.4 Triggering (automatisches Ausl\u00f6sen)\n Die Verwendung des Button \u201dErzwingen\u201d ist eine eher unbefriedigende Art, das Oszilloskop auszul\u00f6sen. Um eine echte Triggerung einzurichten, klicken Sie auf die Schaltfl\u00e4che \u201dQuelle\u201d unten rechts.\n Daraufhin wird das Dialogfeld \u201dTrigger Source\u201d (Triggerquelle) angezeigt, das einfach eine Liste aller\n derzeit angeschlossenen Sonden enth\u00e4lt. W\u00e4hlen Sie eine Sonde f\u00fcr die Triggerung aus, indem Sie\n auf sie klicken. In diesem Beispiel verwenden wir Kanal 3, die Dreieckswelle, wie in der folgenden\n Abbildung dargestellt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 255 / 1327\n \n Abbildung 5.14: Dialogfeld Triggerquelle (engl. trigger source)\n Nachdem Sie die Triggerquelle eingestellt haben, k\u00f6nnen Sie den Triggerpegel und die Triggerposition mit den Schiebereglern im Feld \u201dTrigger\u201d am rechten Rand einstellen. Der Pegel kann vom\n oberen bis zum unteren Rand des Bildschirms eingestellt werden und wird unter den Schiebereglern\n angezeigt. Die Position ist die Lage des Ausl\u00f6sepunkts innerhalb der gesamten Aufzeichnung. Ist der\n@@ -13797,15 +13797,15 @@\n dem Ausl\u00f6sen passiert ist. Der Triggerpunkt ist als vertikale Linie in der Fortschrittsanzeige \u00fcber\n dem Bildschirm sichtbar. Die Triggerpolarit\u00e4t kann durch Klicken auf die Schaltfl\u00e4che direkt unter\n der Triggerpegelanzeige ge\u00e4ndert werden. Sie wird dann absteigend. Beachten Sie, dass die \u00c4nderung der Triggerposition das Oszilloskop anh\u00e4lt, sobald die Position angepasst wurde, starten Sie das\n Oszilloskop erneut, indem Sie auf die Schaltfl\u00e4che Normal des Run-Modus der Gruppe klicken.\n Nachdem wir nun die vertikalen Regler und die Triggerung eingestellt haben, sieht die Anzeige des\n Oszilloskops etwa wie in der folgenden Abbildung aus.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 256 / 1327\n \n Abbildung 5.15: Wellenformen mit Triggerung\n \n 5.4.6.5 Horizontale Anpassungen\n To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand\n@@ -13814,15 +13814,15 @@\n the sampling rate. For example, we would like to look at the actual step pulses that are being generated\n in our example. Since the step pulses may be only 50 \u00b5s long, sampling at 1 kHz isn\u2019t fast enough. To\n change the sample rate, click on the button that displays the number of samples and sample rate to\n bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 \u00b5s thread,\n fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth\n of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 257 / 1327\n \n Abbildung 5.16: Dialogfeld f\u00fcr Abtastrate\n \n 5.4.6.6 Weitere Kan\u00e4le\n Now let\u2019s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at\n@@ -13831,15 +13831,15 @@\n do the same for channel 4. Even though the channels are turned off, they still remember what they are\n connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels,\n select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then\n click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You\n should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the\n direction pin changes state and the step pulses speed up again. You might want toincrease the gain on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 258 / 1327\n \n channel 1 to about 20 milli per division to better see the change in the velocity command. The result\n should look like the following figure.\n \n Abbildung 5.17: Schrittimpulse\n@@ -13852,15 +13852,15 @@\n Wenn die Komponente scope_rt noch nicht geladen war, l\u00e4dt halscope sie und fordert 80000 Gesamtsamples an, so dass bei der Abtastung von 4 Kan\u00e4len gleichzeitig 20000 Samples pro Kanal zur\n Verf\u00fcgung stehen. (Wenn scope_rt bereits geladen war, hat das numerische Argument f\u00fcr halscope\n keine Auswirkungen).\n \n 5.5 HAL-Beispiele\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 259 / 1327\n \n eine leere Datei custom.hal und eine Datei custom_postgui.hal. Die Datei custom.hal wird nach der\n Konfigurations-HAL-Datei geladen und die Datei custom_postgui.hal wird geladen, nachdem die GUI\n geladen wurde.\n \n@@ -13918,15 +13918,15 @@\n or2.0.in0 <== button-1\n or2.0.in1 <== button-2\n or2.0.out ==> led-1\n \n Aus dem HAL-Befehl \u201dshow pin or2\u201d geht hervor, dass der Pin \u201dbutton-1\u201d mit dem Pin \u201dor2.0.in0\u201d verbunden ist, und aus dem Richtungspfeil geht hervor, dass der Button ein Ausgang und der \u201dor2.0.in0\u201d\n ein Eingang ist. Der Ausgang von or2 geht an den Eingang der LED.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 260 / 1327\n \n 5.5.2 Manueller Werkzeugwechsel\n In diesem Beispiel wird davon ausgegangen, dass Sie Ihre eigene Konfiguration erstellen und das Fenster HAL Manual Toolchange hinzuf\u00fcgen m\u00f6chten. Der manuelle HAL-Werkzeugwechsel ist vor allem\n dann n\u00fctzlich, wenn Sie voreinstellbare Werkzeuge haben und die Offsets in der Werkzeugtabelle speichern. Wenn Sie f\u00fcr jeden Werkzeugwechsel einen neuen Wert eingeben m\u00fcssen, ist es am besten,\n wenn Sie Ihren G-Code aufteilen. Um das HAL Manual Toolchange-Fenster zu verwenden, m\u00fcssen\n@@ -13966,15 +13966,15 @@\n Herstellen der Verbindungen.\n setp mult2.in1 60\n net xpos-cmd ddt.0.in\n net X-IPS mult2.0.in0 <= ddt.0.out\n net X-ABS abs.0.in <= mult2.0.out\n net X-IPM abs.0.out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 261 / 1327\n \n In diesem letzten Abschnitt setzen wir mult2.0.in1 auf 60, um die Zoll pro Sekunde in Zoll pro Minute\n umzuwandeln, die wir von ddt.0.out erhalten.\n Der xpos-cmd sendet die befohlene Position an den ddt.0.in. Der ddt berechnet die Ableitung der\n \u00c4nderung des Eingangs.\n@@ -13987,15 +13987,15 @@\n \n 5.5.4 Details zum Softstart\n Dieses Beispiel zeigt, wie die HAL-Komponenten Tiefpass, limit2 oder limit3 verwendet werden k\u00f6nnen, um die \u00c4nderungsgeschwindigkeit eines Signals zu begrenzen.\n In diesem Beispiel haben wir einen Servomotor, der eine Drehbankspindel antreibt. Wenn wir nur\n die befohlenen Spindeldrehzahlen f\u00fcr den Servomotor verwenden w\u00fcrden, w\u00fcrde er versuchen, so\n schnell wie m\u00f6glich von der aktuellen Drehzahl auf die befohlene Drehzahl zu kommen. Dies k\u00f6nnte\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 262 / 1327\n \n zu Problemen f\u00fchren oder den Antrieb besch\u00e4digen. Um die \u00c4nderungsrate zu verlangsamen, k\u00f6nnen\n wir die Spindel.N.speed-out durch einen Begrenzer vor dem PID senden, so dass der PID-Befehlswert\n langsamer auf neue Einstellungen wechselt.\n Die drei eingebauten Komponenten, die ein Signal begrenzen, sind:\n@@ -14036,15 +14036,15 @@\n Sie dann Quadrat auf der Registerkarte Signale. Wiederholen Sie dies f\u00fcr die Kan\u00e4le 2-4 und f\u00fcgen\n Sie Tiefpass, Limit2 und Limit3 hinzu.\n Um ein Triggersignal einzurichten, klicken Sie auf die Schaltfl\u00e4che Source None und w\u00e4hlen Sie Square. Die Schaltfl\u00e4che \u00e4ndert sich in Quelle Kanal 1.\n Als n\u00e4chstes klicken Sie im Optionsfeld Run Mode auf Single. Dadurch wird ein Lauf gestartet, und\n nach dessen Beendigung sehen Sie die Spuren (engl. traces).\n Um die Signale zu trennen, damit Sie sie besser sehen k\u00f6nnen, klicken Sie auf einen Kanal und verwenden Sie dann den Pos-Schieberegler im vertikalen Feld, um die Positionen festzulegen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 263 / 1327\n \n Um zu sehen, wie sich eine \u00c4nderung der Sollwerte der einzelnen Komponenten auswirkt, k\u00f6nnen\n Sie diese im Terminalfenster \u00e4ndern. Um zu sehen, was verschiedene Verst\u00e4rkungseinstellungen f\u00fcr\n den Tiefpass bewirken, geben Sie einfach Folgendes in das Terminalfenster ein und probieren Sie\n verschiedene Einstellungen aus.\n@@ -14057,15 +14057,15 @@\n Weitere Informationen zu Halscope finden Sie im HAL-Handbuch und im Tutorial.\n \n 5.5.5 Stand-Alone HAL\n In manchen F\u00e4llen m\u00f6chten Sie vielleicht einen GladeVCP-Bildschirm nur mit HAL betreiben. Nehmen\n wir an, Sie haben ein schrittmotorgesteuertes Ger\u00e4t und alles was Sie ben\u00f6tigen ist diesen Schrittmotor zusteuern. Eine einfache Start/Stop Schnittstelle ist alles, was Sie f\u00fcr Ihre Anwendung ben\u00f6tigen,\n so dass Sie keine vollst\u00e4ndige CNC-Anwendung laden und konfigurieren m\u00fcssen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 264 / 1327\n \n Im folgenden Beispiel haben wir ein einfaches GladeVCP-Panel mit einem Schrittmotor.\n Grundlegende (engl. basic) Syntax\n # L\u00e4dt die GUI winder.glade und nennt diese winder\n loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade\n@@ -14102,15 +14102,15 @@\n Dieses Modul bietet eine HAL-Schnittstelle f\u00fcr den Bewegungsplaner (engl. motion planner) von LinuxCNC.\n Im Grunde genommen nimmt motmod eine Liste von Wegpunkten auf und erzeugt daraus einen sch\u00f6nen ineinander \u00fcbergehenden und durch Einschr\u00e4nkungen begrenzten Strom von Gelenkpositionen,\n der an die Motorantriebe weitergeleitet wird.\n Optional wird die Anzahl der digitalen E/A (engl. I/O) mit num_dio eingestellt. Die Anzahl der analogen\n E/A wird mit num_aio festgelegt, Standard ist jeweils 4. Die Anzahl der Spindeln wird mit num_spindles\n eingestellt, Voreinstellung ist 1.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 265 / 1327\n \n Pin- und Parameternamen, die mit axis.L und joint.N beginnen, werden von der Motion-ControllerFunktion gelesen und aktualisiert.\n Motion wird mit dem Befehl motmod geladen. Ein kins sollte vor motion geladen werden.\n loadrt motmod base_period_nsec=[\u2019period\u2019] servo_period_nsec=[\u2019period\u2019]\n traj_period_nsec=[\u2019period\u2019] num_joints=[\u20190-9\u2019]\n@@ -14144,15 +14144,15 @@\n Der Parameter unlock_joints_mask wird verwendet, um Pins f\u00fcr ein Gelenk zu erzeugen, das als verriegelnder Indexer verwendet wird (normalerweise ein Drehgelenk). Die Maskenbits w\u00e4hlen das/die\n Gelenk(e) aus. Das LSB der Maske w\u00e4hlt das Gelenk 0. Beispiel:\n unlock_joints_mask=0x38 w\u00e4hlt die Gelenke 3,4,5 aus\n \n 5.6.1.2 Pins\n Diese Pins, Parameter und Funktionen werden durch das Echtzeitmodul motmod angelegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 266 / 1327\n \n \u2022 motion.adaptive-feed - (float, in) Wenn der adaptive Vorschub mit M52 P1 aktiviert ist, wird die\n befohlene Geschwindigkeit mit diesem Wert multipliziert. Dieser Effekt ist multiplikativ mit dem\n Vorschub-Override-Wert auf NML-Ebene und motion.feed-hold. Ab der Version 2.9 von LinuxCNC\n ist es m\u00f6glich, einen negativen adaptiven Vorschubwert zu verwenden, f\u00fcr eine G-Code-Bahn in\n@@ -14190,15 +14190,15 @@\n \u2013 5: Antasten\n \u2013 6: Indexierung der Drehachse\n \u2022 motion.on-soft-limit - (bit, out) TRUE, wenn sich die Maschine an einem Softlimit (buchst\u00e4blich auch:\n einer weichen Grenze) befindet.\n \u2022 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\u00fcr Tasterkontakt geschlossen (ber\u00fchrend),\n FALSE f\u00fcr Tasterkontakt offen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 267 / 1327\n \n \u2022 motion.program-line - (s32, out) Die aktuelle Programmzeile w\u00e4hrend der Ausf\u00fchrung. Null, wenn\n das Programm nicht l\u00e4uft oder zwischen den Zeilen bei Einzelschritten.\n \u2022 motion.requested-vel - (float, out) Die aktuell geforderte Geschwindigkeit in Benutzereinheiten pro\n Sekunde. Dieser Wert ist die F-Wort-Einstellung aus der G-Code-Datei, m\u00f6glicherweise reduziert,\n@@ -14232,15 +14232,15 @@\n \u2022 motion.debug-bit-0 - (bit, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-bit-1 - (bit, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-float-0 - (float, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-float-1 - (float, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-float-2 - (float, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-float-3 - (float, RO) Dies wird zur Fehlersuche verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 268 / 1327\n \n \u2022 motion.debug-s32-0 - (s32, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.debug-s32-1 - (s32, RO) Dies wird zur Fehlersuche verwendet.\n \u2022 motion.servo.last-period - (u32, RO) Die Anzahl der CPU-Zyklen zwischen den Aufrufen des ServoThreads. 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\u00e4lt\n \u2022 motion.servo.last-period-ns - (float, RO)\n@@ -14271,15 +14271,15 @@\n \u2022 spindle.N.inhibit - (bit, in) Wenn dieses Bit TRUE ist, wird die Spindeldrehzahl auf 0 gesetzt.\n \u2022 spindle.N.on - (bit, out) TRUE wenn sich die Spindel drehen soll.\n \u2022 spindle.N.reverse - (bit, out) TRUE wenn sich die Spindel r\u00fcckw\u00e4rts drehen soll\n \u2022 spindle.N.revs - (float, in) F\u00fcr den korrekten Betrieb von spindelsynchronisierten Bewegungen muss\n 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\n im Uhrzeigersinn (M3) um 1,0 zunehmen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 269 / 1327\n \n \u2022 spindle.N.speed-in - (float, in) R\u00fcckmeldung der tats\u00e4chlichen Spindeldrehzahl in Umdrehungen pro\n Sekunde. Dies wird von der Bewegung mit Vorschub pro Umdrehung (G95) verwendet. Wenn Ihr\n Spindelgeber-Treiber nicht \u00fcber einen Geschwindigkeitsausgang verf\u00fcgt, k\u00f6nnen Sie einen geeigneten Ausgang erzeugen, indem Sie die Spindelposition durch eine ddt Komponente senden. Wenn\n Sie keinen Spindelgeber haben, k\u00f6nnen Sie spindle.N.speed-out-rps durchschleifen.\n@@ -14311,15 +14311,15 @@\n die Pins \u201dspindle.N.orient-angle\u201d und \u201dspindle.N.orient-fwd\u201d festgelegt und durch die M19-Parameter\n R und P gesteuert.\n Es wird erwartet, dass die HAL-Unterst\u00fctzungslogik auf spindle.__N__.orient reagiert, indem sie\n die Spindel in die gew\u00fcnschte Position bewegt. Wenn dies abgeschlossen ist, wird erwartet, dass die\n HAL-Logik dies durch die Best\u00e4tigung des Pins \u201dSpindle.N.is-oriented\u201d .\n Motion quittiert dies durch Deaktivierung des Pins \u201dSpindle.N.orient\u201d und aktiviert den Pin \u201dSpindle.N.locked\u201d, um den Modus \u201dOrientierung abgeschlossen\u201d anzuzeigen. Au\u00dferdem wird der Pin \u201dspindle.N.brake\u201d angehoben. Die Spindel befindet sich nun im Modus Orientierung abgeschlossen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 270 / 1327\n \n Wenn der Pin \u201dspindle.N.orient-fault\u201d einen Wert ungleich Null hat, w\u00e4hrend \u201dspindle.N.orient\u201d wahr\n ist und \u201dspindle.N.is oriented\u201d noch nicht aktiviert ist, wird der M19-Befehl abgebrochen, eine Meldung mit dem Fehlercode angezeigt und die Bewegungswarteschlange geleert. Die Spindel kehrt in\n den Rotationsmodus zur\u00fcck.\n Au\u00dferdem kann jeder der Befehle M3, M4 oder M5 entweder den Modus Suche nach gew\u00fcnschter\n@@ -14352,15 +14352,15 @@\n genug ist.\n \u2022 iocontrol.0.tool-change - (bit, out) TRUE wenn ein Werkzeugwechsel angefordert wird.\n \u2022 iocontrol.0.tool-changed - (bit, in) Sollte TRUE sein, wenn ein Werkzeugwechsel abgeschlossen ist.\n \u2022 iocontrol.0.tool-number - (s32, out) Die aktuelle Werkzeugnummer.\n \u2022 iocontrol.0.tool-prep-number - (s32, out) Die Nummer des n\u00e4chsten Werkzeugs, aus dem RS274NGC\n T-Wort.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 271 / 1327\n \n \u2022 iocontrol.0.tool-prepare - (bit, out) TRUE wenn eine Werkzeugvorbereitung angefordert wird.\n \u2022 iocontrol.0.tool-prepared - (bit, in) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist.\n \u2022 iocontrol.0.user-enable-out - (bit, out) FALSE, wenn eine interne Not-Aus-Bedingung vorliegt.\n \u2022 iocontrol.0.user-request-enable - (bit, out) TRUE, wenn der Benutzer die Freigabe des Notausschalters angefordert hat.\n@@ -14389,15 +14389,15 @@\n (Referenzfahrt oder Jogging), aber nicht, wenn ein Programm l\u00e4uft (Auto-Modus) oder im MDI-Modus.\n Folglich hat eine \u00c4nderung der Pin-Werte bei laufendem Programm erst dann Auswirkungen, wenn\n das Programm gestoppt wird und der motion_state wieder frei ist.\n \n \u2022 ini.traj_arc_blend_enable - (bit, in) [TRAJ]ARC_BLEND_ENABLE\n \u2022 ini.traj_arc_blend_fallback_enable - (bit, in) [TRAJ]ARC_BLEND_FALLBACK_ENABLE\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 272 / 1327\n \n \u2022 ini.traj_arc_blend_gap_cycles - (float, in) [TRAJ]ARC_BLEND_GAP_CYCLES\n \u2022 ini.traj_arc_blend_optimization_depth - (float, in) [TRAJ]ARC_BLEND_OPTIMIZATION_DEPTH\n \u2022 ini.traj_arc_blend_ramp_freq - (float, in) [TRAJ]ARC_BLEND_RAMP_FREQ\n Anmerkung\n@@ -14446,15 +14446,15 @@\n AXIS - TOUCHY LinuxCNC Grafische Benutzeroberfl\u00e4che\n \n gladevcp\n \n Virtuelles Bedienfeld f\u00fcr LinuxCNC basierend auf Glade, Gtk und HAL\n Widgets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 273 / 1327\n \n gladevcp_demoGladeVCP - verwendet von Beispielkonfigurationen zur Demonstration von\n Glade Virtual_demo\n gremlin_view Grafische Vorschau des G-Codes\n moveoff_gui GUI f\u00fcr die Moveoff-Komponente\n@@ -14536,15 +14536,15 @@\n \u00dcberwacht die XHC-HB04-H\u00e4ngeleuchte und warnt vor einer\n Unterbrechung der Verbindung\n Powtran PI500 Modbus-Treiber\n Modbus-Kommunikation mit einem Powermax-Plasmaschneidger\u00e4t\n Testen der Modbus-Kommunikation mit einem\n Powermax-Plasmaschneidger\u00e4t\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n shuttle\n svd-ps_vfd\n vfdb_vfd\n vfs11_vfd\n wj200_vfd\n xhc-hb04\n@@ -14622,15 +14622,15 @@\n halcmd\n \n Plottet den Wert eines HAL-Pins als Histogramm\n Erstellen, kompilieren und installieren von LinuxCNC HAL Komponenten\n Beobachten von HAL-Pins, -Signale und -Parametern\n Manipuliert des LinuxCNC HAL von der Kommandozeile\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 275 / 1327\n \n halcmd_twopass\n Kurzbeschreibung\n halreport\n Erzeugt einen Bericht \u00fcber den Status des HAL\n@@ -14715,15 +14715,15 @@\n IEC TOF Timer - Verz\u00f6gerung der fallenden Flanke eines Signals\n Push-on, push-off von Drucktastern mit kurzem Tastendruck\n Button auf Nist-Logik umschalten\n IEC TON Timer - Verz\u00f6gerung der steigenden Flanke eines Signals\n \u00c4quivalent eines zeitverz\u00f6gerten Relais.\n IEC TP timer - generate a high pulse of defined duration on rising edge\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 276 / 1327\n \n tristate_bit\n \n Legt ein Signal nur dann auf einen E/A-Pin, wenn es aktiviert ist, \u00e4hnlich\n wie ein Tristate-Puffer in der Elektronik\n@@ -14812,15 +14812,15 @@\n Z\u00e4hlt aufw\u00e4rts oder abw\u00e4rts, mit optionalen Grenzen und\n Wraparound-Verhalten.\n wcomp\n Fenster-Komparator.\n weighted_sumGewichtete Summe, konvertiert eine Gruppe von Bits in eine ganze Zahl.\n xhc_hb04_util xhc-hb04 Komfort-Dienstprogramm\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 277 / 1327\n \n bin2gray\n Konvertierung einer Zahl in die Gray-Code Repr\u00e4sentation\n bitslice\n Konvertiert eine vorzeichenlose 32-Eingabe in einzelne Bits\n@@ -14888,15 +14888,15 @@\n 5.7.1.8 Motor control (Echtzeit)\n 2 Wenn der Eingang eine Position ist, bedeutet dies, dass die Position begrenzt ist.\n 3 Wenn der Eingang eine Position ist, bedeutet dies, dass \u201dPosition\u201d und \u201dGeschwindigkeit\u201d begrenzt sind.\n 4 Wenn die Eingabe eine Position ist, bedeutet dies, dass die \u201dPosition\u201d, \u201dGeschwindigkeit\u201d und \u201dBeschleunigung\u201d begrenzt\n \n sind\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n at_pid\n bldc\n clarke2\n clarke3\n clarkeinv\n encoder\n@@ -14968,15 +14968,15 @@\n hal_exit.3hal\n hal_export_funct.3hal\n hal_float_t.3hal\n hal_get_lock.3hal\n hal_init.3hal\n hal_link.3hal\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n hal_malloc.3hal\n hal_param_bit_new.3hal\n hal_param_bit_newf.3hal\n hal_param_float_new.3hal\n hal_param_float_newf.3hal\n hal_param_new.3hal\n@@ -15027,15 +15027,15 @@\n rtapi_exit.3rtapi\n rtapi_get_clocks.3rtapi\n rtapi_get_msg_level.3rtapi\n rtapi_get_time.3rtapi\n \n 279 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 280 / 1327\n \n rtapi_inb.3rtapi\n rtapi_init.3rtapi\n rtapi_module_param.3rtapi\n RTAPI_MP_ARRAY_INT.3rtapi\n@@ -15076,21 +15076,21 @@\n die je nach CPU-Geschwindigkeit usw. maximale Schrittfrequenzen von 10 kHz bis vielleicht 50 kHz\n erreichen kann. Das Blockdiagramm des Schrittimpulsgenerators zeigt drei Blockdiagramme, jedes\n davon ist ein einzelner Schrittimpulsgenerator. Das erste Diagramm ist f\u00fcr den Schritttyp 0 (Schritt\n und Richtung). Das zweite ist f\u00fcr den Schritttyp 1 (auf/ab oder Pseudo-PWM), und das dritte f\u00fcr die\n Schritttypen 2 bis 14 (verschiedene Schrittmuster). Die ersten beiden Diagramme zeigen den Positionsmodus, das dritte den Geschwindigkeitsmodus. Steuermodus und Schrittart werden unabh\u00e4ngig\n voneinander eingestellt, und es kann jede beliebige Kombination gew\u00e4hlt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 5.19: Schrittimpulsgenerator-Blockdiagramm Positionsmodus\n \n 281 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 282 / 1327\n \n Laden der Komponente stepgen\n halcmd: loadrt stepgen step_type= [ctrl_type=]\n \n \n@@ -15122,15 +15122,15 @@\n \u2022 (bit) stepgen..enable - Aktiviert Ausgabeschritte - wenn false, werden keine Schritte erzeugt.\n \u2022 (bit) stepgen..step - Schrittimpulsausgang (nur Schritttyp 0).\n \u2022 (bit) stepgen..dir - Richtungsausgabe (nur Schritttyp 0).\n \u2022 (bit) stepgen..up - UP Pseudo-PWM Ausgang (nur Schritttyp 1).\n \u2022 (bit) stepgen..down - DOWN Pseudo-PWM-Ausgang (nur Schritttyp 1).\n \u2022 (bit) stepgen..phase-A - Ausgang Phase A (nur Schritttypen 2-14).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 283 / 1327\n \n \u2022 (bit) stepgen..phase-B - Ausgang Phase B (nur Schritttypen 2-14).\n \u2022 (bit) stepgen..phase-C - Phase-C-Ausgang (nur Schritttypen 3-14).\n \u2022 (bit) stepgen..phase-D - Phase-D-Ausgang (nur Schritttypen 5-14).\n \u2022 (bit) stepgen..phase-E - Phase-E-Ausgang (nur Schritttypen 11-14).\n@@ -15160,15 +15160,15 @@\n angewendet wird, und maxaccel wird verwendet, um die tats\u00e4chliche Frequenz zu rampen, wenn sich\n die befohlene Geschwindigkeit abrupt \u00e4ndert. Wie im Positionsmodus sorgen die richtigen Werte f\u00fcr\n diese Parameter daf\u00fcr, dass der Motor der erzeugten Impulsfolge folgen kann.\n 5.8.1.3 Schritttypen\n Der Schrittgenerator unterst\u00fctzt 15 verschiedene Schrittfolgen:\n Schritttyp 0 (engl. step type 0) Schritttyp 0 ist der Standard-Schritt- und Richtungstyp. Bei der Konfiguration f\u00fcr den Schritttyp 0 gibt es vier zus\u00e4tzliche Parameter, die das genaue Timing der Schrittund Richtungssignale bestimmen. In der folgenden Abbildung ist die Bedeutung dieser Parameter\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 284 / 1327\n \n dargestellt. Die Parameter sind in Nanosekunden angegeben, werden aber auf ein ganzzahliges Vielfaches der Thread-Periode f\u00fcr den Thread aufgerundet, der make_pulses() aufruft. Wenn zum Beispiel\n make_pulses() alle 16 \u00b5s aufgerufen wird und steplen 20000 ist, dann sind die Schrittimpulse 2 x 16\n = 32 \u00b5s lang. Der Standardwert f\u00fcr alle vier Parameter ist 1ns, aber die automatische Rundung wird\n bei der ersten Ausf\u00fchrung des Codes wirksam. Da f\u00fcr einen Schritt steplen ns high und stepspace\n@@ -15188,33 +15188,33 @@\n Warnung\n Verwenden Sie die Parport-Reset-Funktion nicht mit den Schritttypen 2 - 14. Unerwartete Ergebnisse k\u00f6nnen auftreten.\n \n Schritt Typen 2 - 14 (engl. step type 2-14) Die Schritttypen 2 bis 14 sind zustandsabh\u00e4ngig und haben zwei bis f\u00fcnf Ausg\u00e4nge. Bei jedem Schritt wird ein Zustandsz\u00e4hler inkrementiert oder dekrementiert. Die Zwei-und-Drei-Phasen-, Vier-Phasen- und F\u00fcnf-Phasen-Schritte zeigen die Ausgangsmuster\n als Funktion des Zustandsz\u00e4hlers. Die maximale Frequenz ist 1.000.000.000 geteilt durch steplen,\n und wie in den anderen Modi wird maxfreq gesenkt, wenn es \u00fcber dem Grenzwert liegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 5.21: Zwei- und dreiphasige Schritttypen\n \n 285 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 5.22: Vierphasige Schritttypen\n \n 286 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 5.23: F\u00fcnf-Phasen-Schritttypen\n \n 287 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 288 / 1327\n \n 5.8.1.4 Funktionen\n Die Komponente exportiert drei Funktionen. Jede Funktion wirkt auf alle Schrittimpulsgeneratoren die Ausf\u00fchrung verschiedener Generatoren in verschiedenen Threads wird nicht unterst\u00fctzt.\n \u2022 (funct) stepgen.make-pulses - Hochgeschwindigkeitsfunktion zum Erzeugen und Z\u00e4hlen von Impulsen (kein Flie\u00dfkomma).\n \u2022 (funct) stepgen.update-freq - Die Funktion f\u00fcr niedrige Geschwindigkeiten wandelt Position in Geschwindigkeit um, skaliert und begrenzt.\n@@ -15247,15 +15247,15 @@\n des Typs 2 (AUF und AB). Es gibt keinen Standardwert, wenn nicht angegeben wird,\n wird kein PWM-Generator installiert. Die maximale Anzahl von Frequenzgeneratoren ist 8 (wie durch\n MAX_CHAN in pwmgen.c definiert). Jeder Generator ist unabh\u00e4ngig, aber alle werden durch dieselbe(n) Funktion(en) zur gleichen Zeit aktualisiert. In den folgenden Beschreibungen steht f\u00fcr\n die Anzahl der einzelnen Generatoren. Die Nummerierung der PWM-Generatoren beginnt bei 0.\n Entfernen (engl. hier unloading) von PWMgen\n unloadrt pwmgen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 289 / 1327\n \n 5.8.2.1 Ausgangstypen (engl. output types)\n Der PWM-Generator unterst\u00fctzt drei verschiedene \u201dAusgangstypen\u201d.\n \u2022 Ausgangstyp 0 - Nur PWM-Ausgangspin. Nur positive Befehle werden akzeptiert, negative Werte\n werden als Null behandelt (und werden durch den Parameter min-dc beeinflusst, wenn er ungleich\n@@ -15286,15 +15286,15 @@\n PWM erzeugt. Ist die Frequenz h\u00f6her als die internen Grenzwerte, wird sie beim n\u00e4chsten Aufruf\n von update_freq() auf den internen Grenzwert gesetzt. Falls ungleich Null und dither falsch, wird der\n n\u00e4chste Aufruf von update_freq() auf das n\u00e4chste ganzzahlige Vielfache der Periode der Funktion\n make_pulses() gesetzt.\n \u2022 (bit) pwmgen..dither-pwm - Bei true wird Dithering aktiviert, um durchschnittliche PWMFrequenzen oder Tastverh\u00e4ltnisse zu erreichen, die mit reiner PWM nicht m\u00f6glich sind. Bei false\n werden sowohl die PWM-Frequenz als auch das Tastverh\u00e4ltnis auf Werte gerundet, die genau erreicht werden k\u00f6nnen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 290 / 1327\n \n \u2022 (float) pwmgen..min-dc - Minimales Tastverh\u00e4ltnis, zwischen 0,0 und 1,0 (das Tastverh\u00e4ltnis\n geht unabh\u00e4ngig von dieser Einstellung auf Null, wenn es deaktiviert wird).\n \u2022 (float) pwmgen..max-dc - Maximales Tastverh\u00e4ltnis, zwischen 0,0 und 1,0.\n \u2022 (float) pwmgen..curr-dc - Aktuelles Tastverh\u00e4ltnis - nach allen Begrenzungen und Rundungen (nur Lesen).\n@@ -15322,15 +15322,15 @@\n ber\u00fccksichtigen. Wenn Sie z. B. einen Drehgeber mit 100 Impulsen pro Umdrehung an der Spindel\n haben und Ihre maximale Drehzahl 3000 betr\u00e4gt, sollte das maximale Basisgewinde 25 \u00b5s betragen.\n Ein Drehgeber mit 100 Impulsen pro Umdrehung hat 400 Z\u00e4hlungen. Die Spindeldrehzahl von 3000\n U/min (engl. RPM) = 50 U/s (engl. RPS, Umdrehungen pro Sekunde). 400 * 50 = 20.000 Z\u00e4hlungen\n pro Sekunde oder 50 \u00b5s zwischen den Z\u00e4hlungen.\n Das Blockdiagramm des Encoderz\u00e4hlers ist ein Blockdiagramm eines Kanals eines Encoderz\u00e4hlers.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 291 / 1327\n \n Abbildung 5.24: Encoderz\u00e4hler-Blockdiagramm\n Laden des Encoders\n halcmd: loadrt encoder [num_chan=]\n \n@@ -15342,15 +15342,15 @@\n halcmd: unloadrt encoder\n \n 5.8.3.1 Pins\n \u2022 encoder..counter-mode (Bit, I/O) (Voreinstellung: FALSE) - Aktiviert den Z\u00e4hlermodus. Bei\n true z\u00e4hlt der Z\u00e4hler jede steigende Flanke des Phase-A-Eingangs und ignoriert den Wert an PhaseB. Dies ist n\u00fctzlich, um den Ausgang eines einkanaligen (nicht-Quadratur-) Sensors zu z\u00e4hlen. Bei\n false z\u00e4hlt er im Quadraturmodus.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 292 / 1327\n \n \u2022 encoder..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\u00e4hne hat, von denen zwei fehlen, die so angeordnet sind, als w\u00e4ren\n es 60 (wie bei Kurbelwellensensoren in der Automobilindustrie \u00fcblich), dann sollte die Positionsskala auf 60 und die fehlenden Z\u00e4hne auf 2 gesetzt werden. Um diesen Modus zu verwenden, sollte\n counter-mode auf true gesetzt werden. Dieser Modus eignet sich zum Gewindedrehen, aber nicht\n zum Gewindeschneiden.\n@@ -15381,15 +15381,15 @@\n \u2022 encoder..position-scale (float, I/O) \u2013 Skalierungsfaktor, in Z\u00e4hlungen pro L\u00e4ngeneinheit.\n Wenn beispielsweise die Positionsskala 500 betr\u00e4gt, werden 1000 Z\u00e4hlwerte des Encoders als Position von 2.0 Einheiten gemeldet.\n \u2022 encoder..rawcounts (s32, In) - Die rohe Anzahl, wie durch Update-Z\u00e4hler bestimmt. Dieser\n Wert wird h\u00e4ufiger aktualisiert als Anzahl und Position. Es ist auch unbeeinflusst von Reset oder\n dem Indeximpuls.\n \u2022 encoder..reset (bit, In) - Wenn True, werden counts und position sofort auf Null gesetzt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 293 / 1327\n \n \u2022 encoder..velocity (float, Out) - Geschwindigkeit in skalierten Einheiten pro Sekunde. encoder verwendet einen Algorithmus, der das Quantisierungsrauschen im Vergleich zur einfachen\n Differenzierung des position-Ausgangs stark reduziert. Wenn der Wert der tats\u00e4chlichen Geschwindigkeit unter der gesch\u00e4tzten Mindestgeschwindigkeit liegt, ist die Geschwindigkeitsausgabe 0.\n \u2022 encoder..x4-mode (bit, I/O) (Voreinstellung: TRUE)\u2019 - Aktiviert den Times-4-Modus. Bei true\n z\u00e4hlt der Z\u00e4hler jede Flanke der Quadraturwellenform (vier Z\u00e4hlungen pro vollem Zyklus). Bei false\n@@ -15409,15 +15409,15 @@\n \n 5.8.4 PID\n Diese Komponente bietet Proportional/Integral/Derivativ-Regelkreise. Es handelt sich um eine reine\n Echtzeitkomponente. Der Einfachheit halber wird in dieser Diskussion davon ausgegangen, dass es\n sich um Positionsregelkreise handelt. Diese Komponente kann jedoch auch zur Implementierung anderer R\u00fcckkopplungsschleifen wie Geschwindigkeit, Brennerh\u00f6he, Temperatur usw. verwendet werden.\n Das Blockdiagramm der PID-Schleife ist ein Blockdiagramm einer einzelnen PID-Schleife.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 294 / 1327\n \n Abbildung 5.25: PID-Regelkreis-Blockdiagramm\n PID laden\n halcmd: loadrt pid [num_chan=] [debug=1]\n \n@@ -15430,15 +15430,15 @@\n exportiert, um gemeinsamen Speicherplatz zu sparen und die Pin-Liste nicht zu \u00fcberfrachten.\n PID entfernen (engl. unload)\n halcmd: unloadrt pid\n \n 5.8.4.1 Pins\n Die drei wichtigsten Pins sind\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 295 / 1327\n \n \u2022 (float) pid..command - Die gew\u00fcnschte Position, wie sie von einer anderen Systemkomponente befohlen wurde.\n \u2022 (Float) pid..R\u00fcckmeldung - Die aktuelle Position, wie sie von einem R\u00fcckmeldeger\u00e4t wie einem Encoder gemessen wird.\n \u2022 (float) pid..output - Ein Geschwindigkeitsbefehl, der versucht, von der aktuellen Position\n zur gew\u00fcnschten Position zu gelangen.\n@@ -15470,15 +15470,15 @@\n \u2022 (float) pid. . FF1 - Feedforward erster Ordnung - Ausgabe proportional zur Ableitung\n des Befehls (Geschwindigkeit).\n \u2022 (float) pid. . FF2 - Feedforward zweiter Ordnung - Ausgabe proportional zur 2. Ableitung\n des Befehls (Beschleunigung).\n \u2022 (float) pid..deadband - Betrag des Fehlers, der ignoriert wird\n \u2022 (float) pid. .maxerror - Fehlerbegrenzung\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 296 / 1327\n \n \u2022 (float) pid. .maxerrorI - Limit f\u00fcr Fehlerintegrator\n \u2022 (float) pid. .maxerrorD - Limit f\u00fcr Fehlerableitung\n \u2022 (float) pid..maxcmdD - Begrenzung der Befehlsableitung\n \u2022 (float) pid..maxcmdDD - Begrenzung der 2. Ableitung des Befehls\n@@ -15507,15 +15507,15 @@\n halcmd: loadrt sim-encoder num_chan=\n \n ist die Anzahl der Encoder, die Sie simulieren m\u00f6chten. Wenn nicht angegeben, wird ein\n Encoder installiert. Die maximale Anzahl ist 8 (wie durch MAX_CHAN in sim_encoder.c definiert).\n Abladen des sim-encoder\n halcmd: unloadrt sim-encoder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 297 / 1327\n \n 5.8.5.1 Pins\n \u2022 (float) sim-encoder..speed - Der Geschwindigkeitsbefehl f\u00fcr die simulierte Welle.\n \u2022 (bit) sim-encoder..phase-A - Quadraturausgang.\n \u2022 (bit) sim-encoder..phase-B - Quadraturausgang.\n@@ -15545,15 +15545,15 @@\n \n Ist eine Reihe von durch Komma getrennten Dezimalzahlen. Jede Zahl installiert eine Gruppe\n identischer Entprellungsfilter, wobei die Zahl angibt, wie viele Filter in der Gruppe enthalten\n sind.\n Beispiel zum Laden von Debounce\n halcmd: loadrt debounce cfg=1,4,2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 298 / 1327\n \n werden drei Gruppen von Filtern installiert. Gruppe 0 enth\u00e4lt einen Filter, Gruppe 1 enth\u00e4lt vier\n Filter und Gruppe 2 enth\u00e4lt zwei Filter. Der Standardwert f\u00fcr ist \u201d1\u201d, wodurch eine\n einzige Gruppe mit einem einzigen Filter installiert wird. Die maximale Anzahl von Gruppen ist 8 (wie\n durch MAX_GROUPS in debounce.c definiert). Die maximale Anzahl von Filtern in einer Gruppe ist\n@@ -15584,15 +15584,15 @@\n \u2022 (funct) debounce. - Aktualisiert alle Filter in der Gruppe .\n \n 5.8.7 Siggen\n Siggen ist eine Echtzeitkomponente, die Rechteck-, Dreieck- und Sinuswellen erzeugt. Sie wird haupts\u00e4chlich zum Testen verwendet.\n Laden von siggen\n halcmd: loadrt siggen [num_chan=]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 299 / 1327\n \n \n ist die Anzahl der Signalgeber, die Sie installieren m\u00f6chten. Wenn numchan nicht angegeben\n wird, dann wird ein Signalgenerator installiert. Die maximale Anzahl von Generatoren ist 16 (wie\n durch MAX_CHAN in siggen.c definiert). Jeder Generator ist v\u00f6llig unabh\u00e4ngig. In den folgenden\n@@ -15619,15 +15619,15 @@\n von -1,0 bis +1,0. Wenn \u201dsiggen.0.amplitude\u201d 2,5 und \u201dsiggen.0.offset\u201d 10,0 ist, schwanken die Ausg\u00e4nge zwischen 7,5 und 12,5.\n 5.8.7.2 Parameter\n Keine. Fu\u00dfnote:[Vor Version 2.1 waren Frequenz, Amplitude und Offset Parameter. Sie wurden in Pins\n ge\u00e4ndert, um die Steuerung durch andere Komponenten zu erm\u00f6glichen.]\n 5.8.7.3 Funktionen\n \u2022 (funct) siggen..update - Berechnet neue Werte f\u00fcr alle f\u00fcnf Ausgaben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 300 / 1327\n \n 5.8.8 lut5\n Die Komponente lut5 ist eine Logikkomponente mit 5 Eing\u00e4ngen, die auf einer Look-up-Tabelle basiert.\n \u2022 lut5\u2019 ben\u00f6tigt keinen Flie\u00dfkomma-Thread.\n Laden von lut5\n@@ -15810,15 +15810,15 @@\n 0\n 1\n 0\n 1\n \n Ausgabe\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 301 / 1327\n \n Lut5 Zwei Eing\u00e4nge Beispiel In der folgenden Tabelle haben wir f\u00fcr jede Zeile den Ausgangszustand\n ausgew\u00e4hlt, den wir f\u00fcr wahr halten wollen.\n Tabelle 5.6: Lut5 Zwei Eing\u00e4nge Beispiel Look Up Table\n Bit 4\n@@ -15885,15 +15885,15 @@\n 5.9.2 Installation\n Um eine Komponente zu kompilieren, wenn eine gepackte Version von LinuxCNC verwendet wird,\n m\u00fcssen Entwicklungspakete installiert werden, indem man entweder Synaptic aus dem Hauptmen\u00fc\n System -> Administration -> Synaptic package manager benutzt oder einen der folgenden Befehle in\n einem Terminalfenster ausf\u00fchrt:\n Installation von Entwicklungspaketen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 302 / 1327\n \n sudo apt install linuxcnc-dev\n # oder\n sudo apt install linuxcnc-uspace-dev\n \n@@ -15930,15 +15930,15 @@\n einzige nummerierte Instanz erstellt.\n \n 5.9.6 Implizite Parameter\n Den Funktionen wird implizit der Parameter period \u00fcbergeben, der die Zeit in Nanosekunden der\n letzten Periode zur Ausf\u00fchrung der Komponente angibt. Funktionen, die Flie\u00dfkommazahlen verwenden, k\u00f6nnen sich auch auf den Parameter fperiod beziehen, der die Flie\u00dfkommazeit in Sekunden oder\n (period*1e-9) angibt. Dies kann in Komponenten n\u00fctzlich sein, die Zeitinformationen ben\u00f6tigen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 303 / 1327\n \n 5.9.7 Syntax\n Eine .comp-Datei besteht aus einer Reihe von Deklarationen, gefolgt von ;; auf einer eigenen Zeile,\n gefolgt von C Code, der die Funktionen des Moduls implementiert.\n Die Erkl\u00e4rungen umfassen:\n@@ -15970,15 +15970,15 @@\n In the HAL identifier for a pin or parameter, # denotes an array item, and must be used in conjunction\n with a [SIZE] declaration. The hash marks are replaced with a 0-padded number with the same length\n as the number of # characters.\n Wenn Sie einen C-Bezeichner erstellen, werden die folgenden \u00c4nderungen am HALNAME vorgenommen:\n 1. Alle \u201d#\u201d-Zeichen und alle Zeichen \u201d.\u201d, \u201d_\u201d oder \u201d-\u201d, die unmittelbar davor stehen, werden entfernt.\n 2. Alle verbleibenden \u201d.\u201d- und \u201d-\u201d-Zeichen werden durch \u201d_\u201d ersetzt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 304 / 1327\n \n 3. Wiederholte \u201e_\u201c-Zeichen werden in ein einzelnes \u201e\\_\u201c-Zeichen ge\u00e4ndert.\n Ein nachgestelltes \u201d_\u201d wird beibehalten, damit HAL-Kennungen, die sonst mit reservierten Namen\n oder Schl\u00fcsselw\u00f6rtern (z. B. \u201dmin\u201d) kollidieren w\u00fcrden, verwendet werden k\u00f6nnen.\n HALNAME\n@@ -16035,15 +16035,15 @@\n \u2022 TYPE - One of the HAL types: bit, signed, unsigned, or float. The old names s32 and u32 may also\n be used, but signed and unsigned are preferred.\n \u2022 PINDIRECTION - One of the following: in, out, or io. A component sets a value for an out pin, it\n reads a value from an in pin, and it may read or set the value of an io pin.\n \u2022 PARAMDIRECTION - Eine der folgenden: r oder rw. Eine Komponente legt einen Wert f\u00fcr einen\n r-Parameter fest und kann den Wert eines rw-Parameters lesen oder festlegen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 305 / 1327\n \n \u2022 STARTVALUE - Specifies the initial value of a pin or parameter. If it is not specified, then the default\n is 0 or FALSE, depending on the type of the item.\n \u2022 HEADERFILE - Der Name einer Headerdatei, entweder in doppelten Anf\u00fchrungszeichen (include\n \u201dmyfile.h\u201d;) oder in spitzen Klammern (include ;). Die Header-Datei wird (unter Verwendung der #include von C) am Anfang der Datei vor Pin- und Parameterdeklarationen eingef\u00fcgt.\n@@ -16074,15 +16074,15 @@\n variable should be used instead.\n \u2022 option extra_setup yes - (default: no)\n If specified, call the function defined by EXTRA_SETUP for each instance. If using the automatically\n defined rtapi_app_main, extra_arg is the number of this instance.\n \u2022 option extra_cleanup yes - (default: no)\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 306 / 1327\n \n \u2022 option userspace yes - (default: no)\n If specified, this file describes a userspace (i.e., non-realtime) component, rather than a regular (i.e.,\n 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.\n When this function returns, the component exits. Typically, user_mainloop() will use FOR_ALL_INSTS()\n@@ -16122,15 +16122,15 @@\n Diese Erkl\u00e4rung ist erforderlich.\n \u2022 AUTHOR - Geben Sie den Autor des Moduls f\u00fcr die Dokumentation an.\n 5.9.7.4 Datenspeicherung pro Instanz\n \n \u2022 variable CTYPE STARREDNAME; + variable CTYPE STARREDNAME[SIZE]; + variable CTYPE STARRED\n = DEFAULT; + variable CTYPE STARREDNAME[SIZE] = DEFAULT;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 307 / 1327\n \n Declare a per-instance variable STARREDNAME of type CTYPE, optionally as an array of SIZE items,\n and optionally with a default value DEFAULT. Items with no DEFAULT are initialized to all-bits-zero.\n CTYPE is a simple one-word C type, such as float, u32, s32, int, etc. Access to array variables uses\n square brackets.\n@@ -16164,15 +16164,15 @@\n may change from one version of halcompile to the next.\n \u2022 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\n number of nanoseconds between calls to the function.\n \u2022 EXTRA_SETUP() - Use this macro to begin the definition of the function called to perform extra\n setup of this instance. Return a negative Unix errno value to indicate failure (e.g., return -EBUSY\n on failure to reserve an I/O port), or 0 to indicate success.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 308 / 1327\n \n \u2022 EXTRA_CLEANUP() - Use this macro to begin the definition of the function called to perform extra\n cleanup of the component. Note that this function must clean up all instances of the component,\n not just one. The \u201dpin_name\u201d, \u201dparameter_name\u201d, and \u201ddata\u201d macros may not be used here.\n \u2022 pin_name or parameter_name - For each pin pin_name or param parameter_name there is a macro\n@@ -16208,15 +16208,15 @@\n Um die zul\u00e4ssige Anzahl von Pers\u00f6nlichkeitselementen f\u00fcr benutzerdefinierte Komponenten zu \u00e4ndern, verwenden Sie die Option --personality mit halcompile. Zum Beispiel, um bis zu 128 Pers\u00f6nlichkeitszeiten zu erlauben:\n [sudo] halcompile --personality=128 --install ...\n \n Bei der Verwendung von Komponenten mit Pers\u00f6nlichkeit ist es \u00fcblich, ein Pers\u00f6nlichkeitselement f\u00fcr\n jede angegebene Komponenteninstanz anzugeben. Beispiel f\u00fcr 3 Instanzen der Logikkomponente:\n loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 309 / 1327\n \n Anmerkung\n Wenn eine loadrt-Zeile mehr Instanzen als Pers\u00f6nlichkeiten angibt, wird den Instanzen mit nicht angegebenen Pers\u00f6nlichkeiten eine Pers\u00f6nlichkeit von 0 zugewiesen. Wenn die angeforderte Anzahl von\n Instanzen die Anzahl der erlaubten Pers\u00f6nlichkeiten \u00fcbersteigt, werden die Pers\u00f6nlichkeiten durch\n Indexierung modulo der Anzahl der erlaubten Pers\u00f6nlichkeiten zugewiesen. Es wird eine Meldung\n@@ -16253,15 +16253,15 @@\n halcompile --document rtexample.comp\n \n Die resultierende Manpage \u201eexample.9\u201c kann angezeigt werden mit\n man ./example.9\n \n oder an einen Standardspeicherort f\u00fcr UNIX man pages kopiert.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 310 / 1327\n \n 5.9.14 Kompilieren von Userspace-Komponenten au\u00dferhalb des Quellbaums\n halcompile\u2019 kann Userspace-Komponenten verarbeiten, kompilieren, installieren und dokumentieren:\n halcompile usrexample.comp\n halcompile --compile usrexample.comp\n@@ -16301,15 +16301,15 @@\n pin in float theta;\n function _;\n license \u201dGPL\u201d; // bedeutet GPL v2 oder h\u00f6her\n ;;\n #include \n FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 311 / 1327\n \n 5.9.15.3 out8\n This component is a driver for a fictional card called \u201dout8\u201d, which has 8 pins of digital output which\n are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they\n can be at various addresses. The pin is called out_ because out is an identifier used in . It\n@@ -16352,15 +16352,15 @@\n }\n FUNCTION(_) { outb(out_, ioaddr); }\n \n 5.9.15.4 hal_loop\n component hal_loop;\n pin out float example;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 312 / 1327\n \n This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the\n name of a standard Linux kernel module, so a loop component might not successfully load if the Linux\n loop module was also present on the system.\n When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by\n@@ -16402,15 +16402,15 @@\n pin out bit or if personality & 0x200;\n pin out bit xor if personality & 0x400;\n function _ nofp;\n description \u201d\u201d\u201d\n Experimentelle allgemeine \u2019Logikfunktion\u2019 Komponente. Kann \u2019und\u2019, \u2019oder\u2019 und \u2019xor\u2019 von bis \u2190zu 16 Eing\u00e4ngen durchf\u00fchren. Bestimmen Sie den richtigen Wert f\u00fcr \u2019Pers\u00f6nlichkeit\u2019 durch \u2190Hinzuf\u00fcgen:\n .IP \\\\(bu 4 Die Anzahl der Eingangsstifte, in der Regel von 2 bis 16\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 313 / 1327\n \n .IP \\\\(bu 256 (0x100), wenn der \u2019und\u2019-Ausgang gew\u00fcnscht ist\n .IP \\\\(bu 512 (0x200), wenn der \u2019oder\u2019-Ausgang erw\u00fcnscht ist\n IP \\\\(bu 1024 (0x400), wenn die \u2019xor\u2019-Ausgabe (exklusives oder) gew\u00fcnscht ist\u201d\u201d\u201d;\n license \u201dGPL\u201d; // bedeutet GPL v2 or h\u00f6her\n@@ -16455,15 +16455,15 @@\n FUNCTION(_) {\n if (in < 0){\n set(&out1);\n unset(&out2);\n }else if (in >0){\n unset(&out2);\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 314 / 1327\n \n set(&out2);\n }else{\n unset(&out1);\n unset(&out2);\n@@ -16497,15 +16497,15 @@\n \n 5.10.1 Kompatibilit\u00e4t\n Die in HAL-Dateien verwendete halcmd-Sprache hat eine einfache Syntax, die eigentlich eine Teilmenge der leistungsf\u00e4higeren Allzweck-Skriptsprache Tcl ist.\n \n 5.10.2 Haltcl-Befehle\n Haltcl-Dateien verwenden die Tcl-Skriptsprache, die mit den spezifischen Befehlen der LinuxCNCHardware-Abstraktionsschicht (HAL) erweitert wird. Die HAL-spezifischen Befehle sind:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 315 / 1327\n \n addf, alias,\n delf, delsig,\n getp, gets\n ptype,\n@@ -16551,15 +16551,15 @@\n wird in HAL-Dateien f\u00fcr halcmd als [JOINT_0]MAX_VELOCITY ausgedr\u00fcckt\n und als $::JOINT_0(MAX_VELOCITY) in Tcl-Dateien f\u00fcr haltcl.\n Da INI-Dateien das gleiche ITEM in der gleichen SECTION mehrfach wiederholen kann, ist $::SECTION(ITEM) eigentlich eine Tcl-Liste jedes einzelnen Wertes.\n Wenn es nur einen Wert gibt und dieser ein einfacher Wert ist (alle Werte, die nur aus Buchstaben und\n Zahlen ohne Leerzeichen bestehen, geh\u00f6ren zu dieser Gruppe), dann ist es m\u00f6glich, $::SECTION(ITEM)\n so zu behandeln, als ob es keine Liste w\u00e4re.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 316 / 1327\n \n Wenn der Wert Sonderzeichen enthalten k\u00f6nnte - Anf\u00fchrungszeichen, 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\u00f6glicherweise einzigen) Wert in der Liste zu\n unterscheiden.\n In Tcl wird dies als [lindex $::SECTION(ITEM) 0] geschrieben.\n Beispiel: Bei den folgenden INI-Werten\n@@ -16605,15 +16605,15 @@\n Leerzeichen im blo\u00dfen Ausdruck sind nicht erlaubt, verwenden Sie daf\u00fcr Anf\u00fchrungszeichen:\n setp scale.0.gain \u201d6.28 / 360.0 * $::JOINT_0(radius) * 60.0\u201d\n \n In anderen Zusammenh\u00e4ngen, wie z. B. bei loadrt, m\u00fcssen Sie den Tcl \u201dexpr\u201d-Befehl ([expr {}]) ausdr\u00fccklich f\u00fcr Berechnungsausdr\u00fccke verwenden.\n Beispiel\n loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 317 / 1327\n \n 5.10.6 Haltcl Beispiele\n Betrachten Sie das Thema \u201dStepgen Headroom\u201d. Software-Stepgen l\u00e4uft am besten mit einer Beschleunigungsbeschr\u00e4nkung, die \u201dein bisschen h\u00f6her\u201d ist als die vom Bewegungsplaner verwendete.\n Bei der Verwendung von halcmd-Dateien erzwingen wir daher, dass INI-Dateien einen manuell berechneten Wert haben.\n [JOINT_0]\n@@ -16655,15 +16655,15 @@\n \n 5.10.8 Haltcl-Verteilungsbeispiele (sim)\n Das Verzeichnis configs/sim/axis/simtcl enth\u00e4lt eine INI-Datei, die eine .tcl-Datei verwendet, um eine\n haltcl-Konfiguration in Verbindung mit der Verwendung der twopass-Verarbeitung zu demonstrieren.\n Das Beispiel zeigt die Verwendung von Tcl-Prozeduren, Schleifen, die Verwendung von Kommentaren\n und die Ausgabe auf dem Terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 318 / 1327\n \n 5.11 Erstellen von Userspace-Python-Komponenten\n 5.11.1 Grundlegende Verwendung (engl. basic usage)\n Eine Userspace-Komponente beginnt mit der Erstellung ihrer Pins und Parameter und tritt dann in\n eine Schleife ein, die periodisch alle Ausg\u00e4nge von den Eing\u00e4ngen steuert. Die folgende Komponente\n@@ -16717,15 +16717,15 @@\n Wenn Sie \u201dshow pin\u201d schnell eingegeben haben, sehen Sie vielleicht, dass passthrough.out immer noch\n den alten Wert von 0 hat. Das liegt an dem Aufruf von time.sleep(1), der daf\u00fcr sorgt, dass die Zuweisung an den Ausgangspin h\u00f6chstens einmal pro Sekunde erfolgt. Da es sich hier um eine UserspaceKomponente handelt, kann die tats\u00e4chliche Verz\u00f6gerung zwischen den Zuweisungen viel l\u00e4nger sein,\n wenn der von der Passthrough-Komponente verwendete Speicher auf die Festplatte ausgelagert wird;\n die Zuweisung k\u00f6nnte verz\u00f6gert werden, bis dieser Speicher wieder ausgelagert wird.\n So eignen sich Userspace-Komponenten f\u00fcr benutzerinteraktive Elemente wie Bedienfelder (Verz\u00f6gerungen im Bereich von Millisekunden werden nicht bemerkt, und l\u00e4ngere Verz\u00f6gerungen sind akzeptabel), nicht aber f\u00fcr das Senden von Schrittimpulsen an eine Stepper-Treiberkarte (Verz\u00f6gerungen\n m\u00fcssen immer im Bereich von Mikrosekunden liegen, egal wie).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 319 / 1327\n \n 5.11.3 Pins und Parameter erstellen\n h = hal.component(\u201dpassthrough\u201d)\n \n Die Komponente selbst wird durch einen Aufruf des Konstruktors hal.component erzeugt. Die Argumente sind der HAL-Komponentenname und (optional) das f\u00fcr Pin- und Parameternamen verwendete\n@@ -16770,15 +16770,15 @@\n unter Verwendung der tiefgestellten Syntax aufgerufen oder gesetzt werden:\n h[\u2019out\u2019] = h[\u2019in\u2019]\n \n Um alle Pins mit ihren Werten zu sehen, gibt getpins alle Werte in einem W\u00f6rterbuch dieser Komponente zur\u00fcck.\n h.getpins()\n >>>{\u2019in\u2019: 0.0, \u2019out\u2019: 0.0}\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 320 / 1327\n \n 5.11.4.1 Ansteuerung der Ausgangsstifte (HAL_OUT)\n In regelm\u00e4\u00dfigen Abst\u00e4nden, in der Regel als Reaktion auf einen Timer, sollten alle HAL_OUT-Pins\n \u201dgetrieben\u201d werden, indem ihnen ein neuer Wert zugewiesen wird. Dies sollte unabh\u00e4ngig davon\n geschehen, ob sich der Wert von dem zuletzt zugewiesenen unterscheidet oder nicht. Beim Verbinden\n@@ -16808,15 +16808,15 @@\n hal.component_exists(\u201dtestpanel\u201d)\n \n 5.11.6.4 component_is_ready (engl. f\u00fcr Komponente ist bereit)\n Ist die angegebene Komponente zu diesem Zeitpunkt bereit.\n Beispiel\n hal.component_is_ready(\u201dtestpanel\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 321 / 1327\n \n 5.11.6.5 get_msg_level\n Abfrage der aktuellen Echtzeit-Nachrichten (engl. kurz msg)-Stufe.\n 5.11.6.6 set_msg_level\n Legen Sie die aktuelle Echtzeit-MSG-Stufe fest. Wird zum Debuggen von Informationen verwendet.\n@@ -16846,15 +16846,15 @@\n 5.11.6.11 get_info_signals()\n Gibt eine Liste von Dicts aller Systemsignale zur\u00fcck.\n listOfDicts = hal.get_info_signals()\n signalName1 = listOfDicts[0].get(\u2019NAME\u2019)\n signalValue1 = listOfDicts[0].get(\u2019VALUE\u2019)\n driverPin1 = listOfDicts[0].get(\u2019DRIVER\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.12 get_info_params()\n Gibt eine Liste von Dicts mit allen Systemparametern zur\u00fcck.\n listOfDicts = hal.get_info_params()\n paramName1 = listOfDicts[0].get(\u2019NAME\u2019)\n paramValue1 = listOfDicts[0].get(\u2019VALUE\u2019)\n paramDirection1 = listOfDicts[0].get(\u2019DIRECTION\u2019)\n@@ -16886,15 +16886,15 @@\n \n 5.11.6.18 get\n Ermittelt den Wert des HAL-Objekts.\n h.in.get()\n \n 322 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.19 set\n Setzt den Wert des HAL-Objekts.\n h.out.set(10)\n \n 5.11.6.20 is_pin\n Ist das Objekt ein Pin oder Parameter?\n@@ -16921,15 +16921,15 @@\n \u2022 HAL_IN\n \u2022 HAL_OUT\n \u2022 HAL_RO\n \u2022 HAL_RW\n \n 323 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 324 / 1327\n \n \u2022 MSG_NONE\n \u2022 MSG_ALL\n \u2022 MSG_DBG\n \u2022 MSG_ERR\n@@ -16963,15 +16963,15 @@\n def _on_example_trigger_change(self,pin,userdata=None):\n print(\u201dpin value changed to: {}\u201d.format(pin.get()))\n print(\u201dpin name= {}\u201d.format(pin.get_name()))\n print(\u201dpin type= {}\u201d.format(pin.get_type()))\n # dies kann au\u00dferhalb der Funktion aufgerufen werden\n self.example_trigger.get()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 325 / 1327\n \n 5.11.10 Verwendung mit hal_glib in QtVCP Handler\n QtVCP nutzt die hal_glib Bibliothek, die verwendet werden kann, um ein \u201dwatcher\u201d Signal an einen\n HAL-Eingangspin anzuschlie\u00dfen.\n Dieses Signal kann verwendet werden, um eine Funktion zu registrieren, die aufgerufen wird, wenn\n@@ -17008,15 +17008,15 @@\n microcontroller, and connect the microcontroller to the PC using a serial interface. Python has a\n very capable serial interface module called pyserial (Ubuntu package name \u201dpython3-serial\u201d, in the\n universe repository).\n \u2022 Attach a LCDProc-compatible LCD module and use it to display a digital readout with information\n of your choice (Ubuntu package name \u201dlcdproc\u201d, in the universe repository).\n \u2022 Create a virtual control panel using any GUI library supported by Python (gtk, Qt, wxWindows, etc.).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 326 / 1327\n \n 5.12 Kanonische Ger\u00e4teschnittstellen (engl. canonical device\n interfaces)\n 5.12.1 Einf\u00fchrung\n Die folgenden Abschnitte zeigen die Pins, Parameter und Funktionen, die von \u201dkanonischen Ger\u00e4ten\u201d\n@@ -17047,15 +17047,15 @@\n (bit) out\n Wert, der (eventuell invertiert) an den Hardware-Ausgang geschrieben werden soll.\n 5.12.3.2 Parameter(((HAL Digital Output Parameter))\n \n (bit) invert\n Wenn TRUE, wird out vor dem Schreiben in die Hardware invertiert.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 327 / 1327\n \n 5.12.3.3 Funktionen\n \n (funct) write\n Lesen Sie out und invert und stellen Sie die Hardwareausgabe entsprechend ein.\n@@ -17084,15 +17084,15 @@\n Lesen Sie die Werte dieses analogen Eingangskanals. Dies kann zum Lesen einzelner Kan\u00e4le\n verwendet werden, oder es k\u00f6nnen alle Kan\u00e4le gelesen werden\n \n 5.12.5 Analogausgang\n Der kanonische Analogausgang (E/A-Typ: adcout). Dieser ist f\u00fcr jede Art von Hardware gedacht,\n die einen mehr oder weniger kontinuierlichen Wertebereich ausgeben kann. Beispiele sind DigitalAnalog-Wandler oder PWM-Generatoren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 328 / 1327\n \n 5.12.5.1 Pins\n \n (float) Wert\n Der zu schreibende Wert. Der tats\u00e4chliche Wert, der an die Hardware ausgegeben wird, h\u00e4ngt\n@@ -17127,15 +17127,15 @@\n 5.13 HAL-Werkzeuge\n 5.13.1 Halcmd\n Halcmd ist ein Kommandozeilen-Tool f\u00fcr die Manipulation des HAL. Es gibt eine ziemlich vollst\u00e4ndige\n Manpage f\u00fcr 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\n Benutzung:\n man halcmd\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 329 / 1327\n \n Wenn Sie LinuxCNC f\u00fcr \u201drun-in-place\u201d kompiliert haben, m\u00fcssen Sie das rip-environment Skript als\n Quelle angeben, um die Manpage verf\u00fcgbar zu machen:\n cd toplevel_directory_for_rip_build\n . scripts/rip-environment\n@@ -17168,23 +17168,23 @@\n displays the value. Multiple Halmeters can be open at the same time. If you use a script to open\n multiple Halmeters you can set the position of each one with the argument -g X Y relative to the\n upper left corner of your screen. For example:\n loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500\n \n Siehe die Manpage f\u00fcr weitere Optionen und den Abschnitt Halmeter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 5.26: Halmeter-Auswahlfenster\n \n Abbildung 5.27: Halmeter-Watch Fenster\n \n 330 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 331 / 1327\n \n 5.13.3 Halshow\n Halshow (komplettee Beschreibung der Anwendung) kann von der Kommandozeile aus gestartet werden, um Details f\u00fcr ausgew\u00e4hlte Komponenten, Pins, Parameter, Signale, Funktionen und Threads einer laufenden HAL anzuzeigen. Die Registerkarte WATCH bietet eine kontinuierliche Anzeige der ausgew\u00e4hlten Pins, Parameter und Signale. Das Men\u00fc \u201dDatei\u201d enth\u00e4lt Schaltfl\u00e4chen zum Speichern der\n Watch-Elemente in einer Watch-Liste und zum Laden einer bestehenden Watch-Liste. Die Elemente\n der \u00dcberwachungsliste k\u00f6nnen auch automatisch beim Starten geladen werden. F\u00fcr die Verwendung\n@@ -17199,15 +17199,15 @@\n --iformat format_string_for_int\n Hinweise:\n Erstellen Sie einen watchfile in halshow mit: \u2019File/Save Watch List\u2019.\n LinuxCNC muss f\u00fcr die Standalone-Nutzung ausgef\u00fchrt werden.\n \n Abbildung 5.28: Halshow Watch Tab\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 332 / 1327\n \n A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens\n \u201dpin+\u201d, \u201dparam+\u201d, \u201dsig=+\u201d followed by the appropriate pin, param, or signal name. The token-name\n pairs are separated by a space character.\n Einzeiliges Watchfile-Beispiel\n@@ -17253,15 +17253,15 @@\n A named item can specify a pin, param, or signal\n The item must be writable, e.g.:\n pin:\n IN or I/O (and not connected to a signal with a writer)\n param: RW\n signal: connected to a writable pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 333 / 1327\n \n HAL-Elementtypen bit, s32, u32, float werden unterst\u00fctzt\n When a bit item is specified, a pushbutton is created\n to manage the item in one of three manners specified\n by radio buttons:\n@@ -17285,15 +17285,15 @@\n Abbildung 5.29: sim_pin-Fenster\n \n 5.13.6 simulate_probe (Sonde simulieren)\n simulate_probe ist ein einfaches GUI, um die Aktivierung des Pins motion.probe-input zu simulieren.\n Verwendung:\n simulate_probe &\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 334 / 1327\n \n Abbildung 5.30: Fenster simulieren_probe\n \n 5.13.7 HAL Histogramm\n hal-histogram ist ein Kommandozeilenprogramm zur Anzeige von Histogrammen f\u00fcr HAL-Pins.\n@@ -17345,15 +17345,15 @@\n angezeigten nbins\n anzeigen, Voreinstellung\n aus\n Fortschritt und\n Fehlersuche,\n standardm\u00e4\u00dfig aus\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 335 / 1327\n \n 2. If no pinname is specified, default is: motion-command-handler.time.\n 3. Diese App kann f\u00fcr 5 Pins ge\u00f6ffnet werden.\n 4. Unterst\u00fctzt werden die Pintypen float, s32, u32, bit.\n 5. Der Pin muss mit einem Thread verbunden sein, der Flie\u00dfkomma unterst\u00fctzt. F\u00fcr einen BasisThread kann dies die Verwendung von loadrt motmod ... base_thread_fp=1 erfordern.\n@@ -17363,15 +17363,15 @@\n 5.13.8 Halreport\n halreport ist ein Befehlszeilen-Dienstprogramm, das einen Bericht \u00fcber HAL-Verbindungen f\u00fcr eine\n laufende LinuxCNC (oder andere HAL) Anwendung erzeugt. Der Bericht zeigt alle Signalverbindungen an und weist auf m\u00f6gliche Probleme hin. Enthaltene Informationen:\n 1. Systembeschreibung und Kernelversion.\n 2. Signale und alle angeschlossenen Ausgangs-, E/A- und Eingangspins.\n 3. Eines jeden Pin component_function, thread und addf-Reihenfolge.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 336 / 1327\n \n 4. Pins von Userspace-Komponenten mit nicht geordneten Funktionen.\n 5. Identifizierung von unbekannten Funktionen f\u00fcr nicht behandelte Komponenten.\n 6. Signale ohne Ausgang.\n 7. Signale ohne Eing\u00e4nge.\n@@ -17428,15 +17428,15 @@\n OUT:\n \n pos-cmd-0\n joint.0.motor-pos-cmd\n \n motion-command-handler servo-thread 002\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n IN:\n \n .....................\n X_pid.command\n \n motion-controller\n@@ -17475,15 +17475,15 @@\n Komponentenstifte, die nicht mit einer bekannten Gewindefunktion verbunden werden k\u00f6nnen, melden die Funktion als \u201dUnbekannt\u201d.\n \n halreport generates a connections report (without pin types, and current values) for a running HAL\n application to aid in designing and verifying connections. This helps with the understanding what the\n source of a pin value is. Use this information with applications like halshow, halmeter, halscope or\n the halcmd show command in a terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 338 / 1327\n \n Kapitel 6\n \n Hardware-Treiber\n 6.1 Parallelport-Treiber\n@@ -17511,15 +17511,15 @@\n Bei einigen Computern k\u00f6nnen die BIOS-Einstellungen beeinflussen, ob der x-Modus verwendet werden kann. Der SPP-Modus funktioniert am ehesten.\n \n Andere Kombinationen werden nicht unterst\u00fctzt, und ein Anschluss kann nach der Installation des\n Treibers nicht mehr von Eingang auf Ausgang umgestellt werden.\n Der parport-Treiber kann bis zu 8 Ports steuern (definiert durch MAX_PORTS in hal_parport.c). Die\n Ports werden bei Null beginnend nummeriert.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 339 / 1327\n \n 6.1.1 Laden\n Der hal_parport Treiber ist eine Echtzeitkomponente und muss daher mit loadrt in den EchtzeitThread geladen werden. Der Konfigurationsstring beschreibt die zu verwendenden parallelen Ports\n und (optional) deren Typen. Wenn der Konfigurationsstring nicht mindestens einen Port beschreibt,\n ist dies ein Fehler.\n@@ -17546,15 +17546,15 @@\n zu konfigurieren. Bei ISA-Bus-Ports ist dies in der Regel kein Problem, da die Ports fast immer eine\n bekannte Adresse haben, wie z. B. 0x278 oder 0x378, die normalerweise im BIOS konfiguriert werden.\n Die Adressen von PCI-Bus-Karten werden normalerweise mit lspci -v in einer I/O-Ports-Zeile oder\n in einer Kernel-Meldung nach der Ausf\u00fchrung von sudo modprobe -a parport_pc gefunden. Es gibt\n keine Standardadresse, wenn also nicht mindestens eine Adresse enth\u00e4lt, ist das\n ein Fehler.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 340 / 1327\n \n Abbildung 6.1: Parport-Blockdiagramm\n Typ F\u00fcr jede parallele Schnittstelle, die vom hal_parport Treiber verwaltet wird, kann optional ein\n Typ angegeben werden. Der Typ ist einer von in, out, epp oder x.\n Tabelle 6.1: Parallele Port-Richtung\n@@ -17614,15 +17614,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 341 / 1327\n \n Tabelle 6.1: (continued)\n Pin\n 14\n 15\n@@ -17682,15 +17682,15 @@\n I/O ports at c800 [size=8]\n I/O ports at cc00 [size=16]\n \n Beim Experimentieren habe ich festgestellt, dass der erste Anschluss (der Anschluss auf der Karte) die\n 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\n und einen PCI-Parallelport, der die Standard-Ausgangsrichtung verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 342 / 1327\n \n loadrt hal_parport cfg=\u201d0x378 0xc000\u201d\n \n Bitte beachten Sie, dass Ihre Werte abweichen k\u00f6nnen. Die Netmos-Karten sind Plug-N-Play, und\n k\u00f6nnte ihre Einstellungen \u00e4ndern, je nachdem, welchen Steckplatz Sie sie in, so dass, wenn Sie \\\n@@ -17720,15 +17720,15 @@\n \u2022 parport.

.read (funct) Liest die physikalischen Eingangspins von Port und aktualisiert die HAL -in und -in-not Pins.\n \u2022 parport.read-all (funct) Liest die physischen Eingangspins aller Ports und aktualisiert die HAL -in\n und -in-not Pins.\n \u2022 parport.

.write (funct) Liest die HAL -out Pins des Ports

und aktualisiert die physikalischen\n Ausgangspins dieses Ports.\n \u2022 parport.write-all\u2019 (funct) Liest die HAL--out-Pins aller Ports und aktualisiert alle physischen Ausgangspins.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 343 / 1327\n \n \u2022 parport.

.reset (funct) Wartet, bis reset-time seit dem zugeh\u00f6rigen write verstrichen ist, und\n setzt dann die Pins auf die durch -out-invert und -out-invert angegebenen Werte zur\u00fcck. Wenn reset TRUE ist, dann setzt die reset-Funktion den Pin auf den Wert von -out-invert. Dies kann in\n Verbindung mit doublefreq von stepgen verwendet werden, um einen Schritt pro Periode zu erzeugen. Der Schrittgenerator StepSpace f\u00fcr diesen Pin muss auf 0 gesetzt werden, um doublefreq zu\n aktivieren.\n@@ -17767,15 +17767,15 @@\n More information on DoubleStep can be found on the wiki.\n \n 6.1.8 probe_parport\n In heutigen PCs erfordern parallele Schnittstellen m\u00f6glicherweise eine Plug-and-Play-Konfiguration\n (PNP), bevor sie verwendet werden k\u00f6nnen. Das Kernelmodul probe_parport konfiguriert alle vorhandenen PNP-Ports. Es muss vor hal_parport geladen werden. Auf Rechnern ohne PNP-Port kann es\n geladen werden, hat aber keine Wirkung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 344 / 1327\n \n 6.1.8.1 Installation von probe_parport\n Wenn das Kernelmodul parport_pc mit dem Befehl geladen wird:\n sudo modprobe -a parport_pc; sudo rmmod parport_pc\n \n@@ -17810,15 +17810,15 @@\n \u2022 (bit) ax5214..out- \u2014 Steuert einen physikalischen Ausgangspin.\n \u2022 (bit) ax5214..in- \u2014 Verfolgt einen physikalischen Eingangspin.\n \u2022 (bit) ax5214..in--not \u2014 Verfolgt einen physikalischen Eingangspin, invertiert.\n F\u00fcr jeden Pin ist die Platinen-Nummer (beginnt bei Null) und die Nummer\n des E/A-Kanals (0 bis 47).\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 345 / 1327\n \n ber\u00fccksichtigt werden. Der In-HAL-Pin ist TRUE, wenn der physikalische Pin niedrig ist (OPTO-22Modul unter Spannung), und FALSE, wenn der physikalische Pin hoch ist (OPTO-22-Modul aus). Der\n in--not HAL-Pin ist invertiert - er ist FALSE, wenn der physikalische Pin low ist (OPTO22-Modul unter Spannung). Durch Anschluss eines Signals an den einen oder anderen Pin kann der\n Benutzer den Zustand des Eingangs bestimmen.\n \n@@ -17843,27 +17843,27 @@\n oder ein analoger Servo sein.\n \u2022 GPIO: Vier bzw. acht E/A-Pins sind auf Standard-Flachkabelsteckern untergebracht.\n \u2022 RS485 E/A-Erweiterungsmodule: Der RS485-Bus wurde f\u00fcr den Anschluss von kompakten Erweiterungsmodulen f\u00fcr die DIN-Schienenmontage entwickelt. Ein 8-Kanal-Digitaleingang, ein 8-KanalRelaisausgang und ein analoges I/O-Modul (4x +/-10 Volt Ausgang und 8x +/-5 Volt Eingang) sind\n jetzt verf\u00fcgbar. Insgesamt k\u00f6nnen bis zu 16 Module an den Bus angeschlossen werden.\n \u2022 20 optisch isolierte Eingangspins: Sechs mal drei f\u00fcr den direkten Anschluss von zwei Endschaltern\n und einem Referenzierungssensor f\u00fcr jedes Gelenk. Und zus\u00e4tzlich zwei optisch isolierte NotausEing\u00e4nge.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 346 / 1327\n \n Installation:\n loadrt hal_gm\n \n W\u00e4hrend des Ladens (oder versuchten Ladens) gibt der Treiber einige n\u00fctzliche Debugging-Meldungen\n in das Kernel-Protokoll aus, die mit dmesg eingesehen werden k\u00f6nnen.\n Es k\u00f6nnen bis zu 3 Karten in einem System verwendet werden.\n Die folgenden Anschl\u00fcsse befinden sich auf der GM6-PCI-Karte:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 6.2: GM6-PCI-Kartenanschl\u00fcsse und LEDs\n \n 6.3.1 I/O-Anschl\u00fcsse\n \n Abbildung 6.3: Pin-Nummerierung der GPIO-Anschl\u00fcsse\n Tabelle 6.2: Belegung der GPIO-Anschl\u00fcsse\n@@ -17895,15 +17895,15 @@\n IOx/2\n \n 2\n IOx/0\n \n 347 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 348 / 1327\n \n Jeder Pin kann als digitaler Eingang oder Ausgang konfiguriert werden. Die GM6-PCI-Bewegungssteuerungs\n verf\u00fcgt \u00fcber 4 GPIO-Anschl\u00fcsse (General Purpose I/O) mit jeweils acht konfigurierbaren E/A. Jeder\n GPIO-Pin und Parametername beginnt wie folgt:\n gm..gpio.\n@@ -17952,15 +17952,15 @@\n Bei True wird der entsprechende\n GPIO auf Totem-Pol-Ausgang gesetzt,\n andernfalls auf hochohmigen Eingang.\n Wenn True, wird der Wert des Pins\n invertiert. Wird verwendet, wenn der\n Pin als Ausgang konfiguriert ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 349 / 1327\n \n 6.3.2 Achsen-Anschl\u00fcsse\n \n Abbildung 6.4: Pin-Nummerierung der Achsenverbinder\n Tabelle 6.5: Belegung der Achsanschl\u00fcsse\n@@ -17990,15 +17990,15 @@\n \n 6.3.2.1 Achsen-Schnittstellenmodule\n Small sized DIN rail mounted interface modules gives easy way of connecting different types of servo\n modules to the axis connectors. Seven different system configurations are presented in the System integration manual for evaluating typical applications. Also the detailed description of the Axis modules\n can be found in the System integration manual.\n Zur Ermittlung der geeigneten Servoantriebsstruktur sind die Module wie im folgenden Blockschaltbild dargestellt zu verbinden:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 350 / 1327\n \n Abbildung 6.5: Servo-Achsen-Schnittstellen\n \n 6.3.2.2 Encoder\n Die GM6-PCI-Bewegungssteuerungskarte verf\u00fcgt \u00fcber sechs Encoder-Module. Jedes Gebermodul hat\n@@ -18012,15 +18012,15 @@\n \n wobei zwischen 0 und 5 liegt. Beispielsweise bezieht sich \u201egm.0.encoder.0.position\u201c auf\n die Position des Encodermoduls von Achse 0.\n Die GM6-PCI-Karte z\u00e4hlt das Gebersignal unabh\u00e4ngig von LinuxCNC. HAL-Pins werden nach Funktion\n aktualisiert:\n gm..read\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Tabelle 6.6: Encoder-Pins\n Pins\n .reset\n \n Typ und\n Richtung\n@@ -18100,15 +18100,15 @@\n f\u00fcr die Z\u00e4hlung des Ausgangs eines\n Einkanal- (Nicht-Quadratur-) oder\n Schritt-/Differenzsignalsensors. Wenn\n False, z\u00e4hlt er im Quadraturmodus.\n \n 351 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Tabelle 6.7: (continued)\n Parameter\n \n .index-mode\n \n Typ und\n@@ -18179,15 +18179,15 @@\n Wenn z. B. der Positionsma\u00dfstab 2000\n ist, dann ergeben 1000 Z\u00e4hlungen des\n Encoders eine Position von 0,5\n Einheiten.\n \n 352 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 353 / 1327\n \n Einstellung des Gebermoduls der Achse 0 f\u00fcr den Empfang des 500 CPR Quadraturgebersignals und Verwendung der R\u00fcckstellung zum Runden der Position.\n setp gm.0.encoder.0.counter-mode 0 # 0: quad, 1: stepDir\n setp gm.0.encoder.0.index-mode 1 # 0: reset pos at index, 1:round pos at index\n setp gm.0.encoder.0.counts-per-rev 2000 # GM-Prozess-Encoder im 4x-Modus, 4x500=2000\n@@ -18241,15 +18241,15 @@\n Positionsr\u00fcckmeldung in Positionseinheit.\n Die befohlene Position in Positionseinheiten.\n Wird nur im Positionsmodus verwendet.\n Geforderte Geschwindigkeit in\n Positionseinheiten pro Sekunde. Wird nur\n im Geschwindigkeitsmodus verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 354 / 1327\n \n Tabelle 6.9: StepGen-Modul-Parameter\n Parameter\n \n .step-type\n@@ -18322,15 +18322,15 @@\n Mindestzeit zwischen zwei Schrittimpulsen\n in Nanosekunden.\n Mindestzeit zwischen Schrittimpuls und\n Richtungswechsel in Nanosekunden.\n \n Zur Ermittlung der entsprechenden Werte siehe die nachstehenden Zeitdiagramme:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 355 / 1327\n \n Abbildung 6.6: Referenzsignal-Zeitdiagramme\n Einstellung des StepGen-Moduls der Achse 0 zur Erzeugung von 1000 Schrittimpulsen pro\n Positionseinheit\n setp gm.0.stepgen.0.step-type 0\n@@ -18347,15 +18347,15 @@\n setp gm.0.stepgen.0.maxaccel 0\n # do not set max acceleration for\n # step generator, let interpolator control it.\n setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit\n setp gm.0.stepgen.0.steplen 1000\n # 1000 ns = 1 \u00b5s\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n setp gm.0.stepgen.0.stepspace1000\n setp gm.0.stepgen.0.dirdelay 2000\n \n 356 / 1327\n \n # 1000 ns = 1 \u00b5s\n@@ -18397,15 +18397,15 @@\n Die GM6-PCI-Bewegungssteuerungskarte verf\u00fcgt \u00fcber sechs serielle Achsen-DAC-Treibermodule, eines f\u00fcr jedes Gelenk. Jedes Modul wird an den Pin des entsprechenden RJ50-Achsenanschlusses angeschlossen. Jeder Achsen-DAC-Pin und Parametername beginnt wie folgt:\n gm..dac.\n \n wobei zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.dac.0.value auf die Ausgangsspannung des DAC-Moduls der Achse 0.\n HAL Pins werden durch Funktion aktualisiert:\n gm..write\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 357 / 1327\n \n Tabelle 6.11: Achsen DAC-Pins\n Pins\n .enable\n \n@@ -18472,15 +18472,15 @@\n Mbit/s. Die Positionsbefehls-IDs f\u00fcr Achse 0..5 sind 0x10..0x15. Die Positionsr\u00fcckmelde-IDs f\u00fcr Achse\n 0..5 sind 0x20..0x25.\n Diese Konfiguration kann mit der \u00c4nderung der hal_gm.c und Neukompilierung LinuxCNC ge\u00e4ndert\n werden.\n Jeder CAN-Pin- und Parametername beginnt wie folgt:\n gm..can-gm.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 358 / 1327\n \n wobei < axis_no > zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.can-gm.0.position auf\n die Ausgangsposition der Achse 0 in Positionseinheiten.\n HAL Pins werden durch Funktion aktualisiert:\n gm..write\n@@ -18538,15 +18538,15 @@\n Pin-Beschreibung\n Gibt an, dass der Watchdog-Zeitgeber\n abgelaufen ist.\n \n Das \u00dcberschreiten des Watchdog-Timers f\u00fchrt dazu, dass das Power-Enable in der Hardware auf Low\n gesetzt wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 359 / 1327\n \n 6.3.4.2 Parameter\n Tabelle 6.16: Watchdog-Parameter\n Parameter\n \n@@ -18604,15 +18604,15 @@\n 6/End+\n ing\n ing\n ing\n 2\n (Ext.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26\n \n 24\n \n GND\n \n@@ -18699,15 +18699,15 @@\n \n Parameterbeschreibung\n Notaus0 Eingang\n Negierter Notaus 0-Eingang\n Notaus 1 Eingang\n Negierter Notaus 1-Eingang\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 361 / 1327\n \n \u2022 Blinken w\u00e4hrend der Datenkommunikation.\n \u2022 Ein, wenn einer der Puffer voll ist - Kommunikationsfehler.\n \u2022 Aus, wenn keine Datenkommunikation stattfindet.\n 6.3.6.2 RS485\n@@ -18732,15 +18732,15 @@\n 6.3.7 RS485 E/A-Erweiterungsmodule\n Diese Module wurden f\u00fcr die Erweiterung der E/A- und Funktionsf\u00e4higkeit entlang einer RS485-Linie\n der GM6-PCI Motion Control Karte entwickelt.\n Verf\u00fcgbare Modultypen:\n \u2022 8-Kanal-Relaisausgangsmodul - bietet acht NO-NC-Relaisausg\u00e4nge an einem dreipoligen Klemmenanschluss f\u00fcr jeden Kanal.\n \u2022 8-Kanal-Digitaleingangsmodul - bietet acht optisch isolierte digitale Eingangsstifte.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 362 / 1327\n \n \u2022 8-Kanal-ADC- und 4-Kanal-DAC-Modul - bietet vier Digital-Analog-Wandler-Ausg\u00e4nge und acht AnalogDigital-Eing\u00e4nge. Auch dieses Modul ist von der GM6-PCI-Karte optisch isoliert.\n Automatische Knotenerkennung Jeder an den Bus angeschlossene Knoten wurde von der GM6PCI-Karte automatisch erkannt. Beim Start von LinuxCNC exportiert der Treiber automatisch Pins\n und Parameter aller verf\u00fcgbaren Module.\n Fehlerbehandlung Wenn ein Modul nicht regelm\u00e4\u00dfig antwortet, f\u00e4hrt die GM6-PCI-Karte das Modul\n@@ -18764,15 +18764,15 @@\n \n Es sollte dem Servo-Thread oder einem anderen Thread mit gr\u00f6\u00dferer Periode hinzugef\u00fcgt werden, um\n eine CPU-\u00dcberlastung zu vermeiden. Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:\n gm..rs485.\n \n wobei zwischen 00 und 15 liegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 363 / 1327\n \n Tabelle 6.20: Pins des Relaisausgangsmoduls\n Pins\n .relay-<0-7>\n \n@@ -18845,15 +18845,15 @@\n #\n .rs485.0\n # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus\n #\n .in-0\n # W\u00e4hlt das erste digitale Eingangsmodul\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 364 / 1327\n \n 6.3.7.3 DAC & ADC-Modul\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:\n gm..rs485\n@@ -18929,15 +18929,15 @@\n #\n .rs485.0\n # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus\n #\n .adc-0\n # W\u00e4hlt den ersten Analogeingang des Moduls\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 365 / 1327\n \n 6.3.7.4 Teach Pendant Modul\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:\n gm..rs485\n@@ -19019,15 +19019,15 @@\n # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI- \u2190Kartenadresse = 0)\n #\n .rs485.0\n # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus\n #\n .adc-0 # W\u00e4hlt den ersten Analogeingang des Moduls\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 366 / 1327\n \n 6.3.8 Errata\n 6.3.8.1 GM6-PCI-Karte Errata\n Die Revisionsnummer in diesem Abschnitt bezieht sich auf die Revision des GM6-PCI-Kartenger\u00e4ts.\n Rev. 1.2\n@@ -19060,15 +19060,15 @@\n \u2022 -s oder --stopbits {1,2} (Voreinstellung: 1) Setzt die Anzahl von Stopbits auf 1 oder 2\n \u2022 -t oder --target (Voreinstellung: 1) Legt die MODBUS-Zielnummer (slave) fest. Diese muss mit\n der Ger\u00e4tenummer \u00fcbereinstimmen, die Sie am GS2 eingestellt haben.\n \u2022 -v oder --verbose Schaltet Debug-Meldungen ein.\n \u2022 -A oder --accel-seconds (Voreinstellung: 10.0) Sekunden um die Spindel von 0 auf max. U/min\n (engl. RPM) zu beschleunigen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 367 / 1327\n \n \u2022 -D oder --decel-seconds (Voreinstellung: 0.0) Sekunden, um die Spindel von max. U/min auf\n 0 abzubremsen. Bei einer Einstellung von 0.0 kann die Spindel ohne kontrollierte Abbremsung bis\n zum Stillstand ausrollen.\n \u2022 -R oder --braking-resistor (engl. f\u00fcr Bremswiderstand) Dieses Argument sollte verwendet werden,\n@@ -19100,15 +19100,15 @@\n \u2022 .spindle-fwd (bit, in) 1 f\u00fcr FWD (engl. kurz f\u00fcr forw\u00e4rts) und 0 f\u00fcr REV (engl. kurz f\u00fcr\n r\u00fcckw\u00e4rts) an den VFD gesendet\n \u2022 .spindle-rev (bit, in) 1 f\u00fcr REV und 0 wenn aus\n \u2022 .spindle-on (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS an VFD gesendet\n \u2022 .status-1 (s32, out) Antriebsstatus des VFD (siehe GS2-Handbuch)\n \u2022 .status-2 (s32, out) Laufwerksstatus des Frequenzumrichters (siehe GS2-Handbuch)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 368 / 1327\n \n Anmerkung\n Der Statuswert ist die Summe aller Bits, die eingeschaltet sind. So ist eine 163, die bedeutet, dass\n sich das Laufwerk im Betriebsmodus befindet, die Summe aus 3 (Betrieb) + 32 (\u00fcber die serielle\n Schnittstelle eingestellte Frequenz) + 128 (\u00fcber die serielle Schnittstelle eingestellter Betrieb).\n@@ -19139,15 +19139,15 @@\n for up-to-date firmware lists.\n \u2022 3x20 (144 E/A-Pins): mit hm2_pci-Modul\n \u2013 24-Kanal-Servo\n \u2013 16-Kanal-Servo und 24 Schritt/Richtung (engl. step/dir)-Generatoren\n \u2022 5I22 (96 I/O pins): using hm2_pci module\n \u2013 16-Kanal-Servo\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 369 / 1327\n \n \u2013 8-Kanal-Servo plus 24 Step/Dir-Generatoren\n \u2022 5I20, 5I23, 4I65, 4I68 (72 I/O pins): using hm2_pci module\n \u2013 12-Kanal-Servo\n \u2013 8-Kanal-Servo plus 4 Step/Dir-Generatoren\n@@ -19187,15 +19187,15 @@\n Wenn der Watchdog anspricht, werden alle E/A-Pins des Boards von ihren Modulinstanzen getrennt\n und werden zu hochohmigen Eing\u00e4ngen (hochgezogen). Der Zustand der HostMot2-Firmware-Module\n wird nicht gest\u00f6rt (mit Ausnahme der Konfiguration der I/O-Pins). Die Encoder-Instanzen z\u00e4hlen weiterhin die Quadraturimpulse, und die Pwm- und Schrittgeneratoren erzeugen weiterhin Signale (die\n nicht an die Motoren weitergeleitet werden, da die I/O-Pins zu Eing\u00e4ngen geworden sind).\n Durch das Zur\u00fccksetzen des Watchdogs werden die E/A-Pins auf die zum Zeitpunkt des Ladens gew\u00e4hlte Konfiguration zur\u00fcckgesetzt.\n Wenn die Firmware einen Watchdog enth\u00e4lt, werden die folgenden HAL-Objekte exportiert:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 370 / 1327\n \n 6.5.5.1 Pins\n \u2022 has_bit\u2019 - (bit i/o) True, wenn der Watchdog ein Bit hat, False, wenn der Watchdog kein Bit hat. Wenn\n der Watchdog ein Bit hat und das has_bit-Bit True ist, kann der Benutzer es auf False zur\u00fccksetzen,\n um den Betrieb wieder aufzunehmen.\n@@ -19226,15 +19226,15 @@\n \n Die resultierende Textdatei enth\u00e4lt viele Informationen sowie die Pinbelegung f\u00fcr den HostMot2 und\n alle Fehler- und Warnmeldungen.\n Um das Durcheinander zu reduzieren, indem der Nachrichtenpuffer vor dem Laden von LinuxCNC\n gel\u00f6scht wird, geben Sie Folgendes in das Terminalfenster ein:\n sudo dmesg -c\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 371 / 1327\n \n Nun, wenn Sie LinuxCNC ausf\u00fchren, erhalten SIe \u00fcber dmesg > hm2.txt im Terminal nur die Informationen seit der Zeit, die LinuxCNC l\u00e4uft zusammen mit Ihrem Pinout. Die Datei wird im aktuellen\n Verzeichnis des Terminalfensters liegen. Jede Zeile enth\u00e4lt den Kartennamen, die Kartennummer, die\n E/A-Pin-Nummer, den Stecker und den Pin sowie die Verwendung. Anhand dieses Ausdrucks k\u00f6nnen\n Sie die physischen Verbindungen zu Ihrer Karte entsprechend Ihrer Konfiguration erkennen.\n@@ -19278,15 +19278,15 @@\n Der I/O Pin nnn entspricht der Pin-Nummer, die auf dem HAL Configuration Bildschirm f\u00fcr GPIOs angezeigt wird. Einige der StepGen, Encoder und PWMGen werden auch als GPIOs im HALKonfigurationsbildschirm angezeigt.\n \n 6.5.8 PIN-Dateien\n Die Standard-Pinbelegung ist in einer .PIN-Datei (menschenlesbarer Text) beschrieben. Wenn Sie ein\n Firmware-Paket installieren, werden die .PIN-Dateien in\n /usr/share/doc/hostmot2-firmware-/\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 372 / 1327\n \n 6.5.9 Firmware\n Die ausgew\u00e4hlte Firmware (.BIT-Datei) und Konfiguration wird beim Start von LinuxCNC von der PCHauptplatine auf die Mesa-Hauptplatine hochgeladen. Wenn Sie Run In Place verwenden, m\u00fcssen Sie\n noch ein hostmot2-firmware- Paket installieren. Weitere Informationen \u00fcber Firmware und\n Konfiguration finden Sie im Abschnitt Konfigurationen.\n@@ -19299,15 +19299,15 @@\n Abbildung 6.9: 5i20 HAL-Pins\n \n 6.5.11 Konfigurationen\n Die Hostmot2-Firmware gibt es in verschiedenen Versionen, je nachdem, was Sie erreichen wollen.\n Sie k\u00f6nnen sich anhand des Namens einen \u00dcberblick verschaffen, wof\u00fcr eine bestimmte Firmware\n geeignet ist. Schauen wir uns ein paar Beispiele an.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 373 / 1327\n \n In the 7I43 (two ports), SV8 (Servo 8) would be for having 8 servos or fewer, using the classic 7I33\n 4-axis (per port) servo board. So 8 servos would use up all 48 signals in the two ports. But if you only\n needed 3 servos, you could say num_encoders=3 and num_pwmgens=3 and recover 5 servos at 6\n signals each, thus gaining 30 bits of GPIO.\n@@ -19472,15 +19472,15 @@\n 12\n 48\n 24\n 12\n 0\n 8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 374 / 1327\n \n 4I68 (3-port PC/104) Default Configurations (The 4I68 has 400k gates.)\n Firmware\n SV12\n SVST2_4_7I47\n@@ -19624,15 +19624,15 @@\n 6.5.12 GPIO\n Allgemeine E/A-Pins auf der Karte, wenn nicht von einer Modulinstanz verwendet, werden als volle\n GPIO-Pins an HAL exportiert. Full-GPIO-Pins k\u00f6nnen zur Laufzeit als Eing\u00e4nge, Ausg\u00e4nge oder Open\n Drains konfiguriert werden und verf\u00fcgen \u00fcber eine HAL-Schnittstelle, die diese Flexibilit\u00e4t offenlegt.\n E/A-Pins einer aktiven Modulinstanz sind durch die Anforderungen dieses sie besitzenden Moduls\n eingeschr\u00e4nkt und haben eine eingeschr\u00e4nkte HAL-Schnittstelle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 375 / 1327\n \n GPIOs haben Namen wie hm2_..gpio.. 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\u00fcr die Anything I/O-Boards dokumentiert.\n Die hm2-GPIO-Darstellung ist den digitalen Eing\u00e4ngen und digitalen Ausg\u00e4ngen nachempfunden, die\n in der kanonischen Ger\u00e4teschnittstelle (Teil des Dokuments HAL General Reference) beschrieben\n sind.\n@@ -19664,15 +19664,15 @@\n \n 6.5.13 StepGen\n StepGens haben Namen wie hm2_..stepgen.. Instance ist eine\n zweistellige Nummer, die der HostMot2 stepgen-Instanznummer entspricht. Es gibt num_stepgens\n Instanzen, beginnend mit 00.\n Jedes Stepgen belegt 2-6 E/A-Pins (die bei der Kompilierung der Firmware ausgew\u00e4hlt werden), verwendet aber derzeit nur zwei: Schritt- und Richtungsausg\u00e4nge. Fu\u00dfnote:[Derzeit unterst\u00fctzt die Firmware mehrphasige Stepperausg\u00e4nge, aber der Treiber nicht\u2019. Interessierte Freiwillige werden gebeten, sich zu melden.]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 376 / 1327\n \n Die StepGen-Darstellung ist der Softwarekomponente Stepgen nachempfunden. Die Standardeinstellung von StepGen ist ein aktiver High-Schrittausgang (High w\u00e4hrend der Schrittzeit (engl. step time),\n Low w\u00e4hrend des Schrittraums (engl. step space)). Um einen StepGen-Ausgangspin zu invertieren,\n w\u00e4hlen Sie den entsprechenden GPIO-Pin, der von StepGen verwendet wird. Um den GPIO-Pin zu\n finden, der f\u00fcr den StepGen-Ausgang verwendet wird, f\u00fchren Sie dmesg wie oben gezeigt aus.\n@@ -19702,15 +19702,15 @@\n position_scale\n \u2022 step_type - (u32, RW) Ausgabeformat, wie das step_type modparam f\u00fcr die Software stegen(9) Komponente. 0 = Schritt/Dir, 1 = Auf/Ab, 2 = Quadratur. Im Quadraturmodus (step_type=2) gibt der\n stepgen einen kompletten Gray-Zyklus (00 -> 01 -> 11 -> 10 -> 00) f\u00fcr jeden Schritt aus, den er\n macht.\n \u2022 steplen - (u32, RW) Dauer des Schrittsignals, in Nanosekunden.\n \u2022 stepspace - (u32, RW) Minimaler Abstand zwischen Schrittsignalen, in Nanosekunden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 377 / 1327\n \n 6.5.13.3 Ausgangsparameter\n Die Step- und Direction-Pins der einzelnen StepGen haben zwei zus\u00e4tzliche Parameter. Um herauszufinden, welcher I/O-Pin zu welchem Step- und Direction-Ausgang geh\u00f6rt, f\u00fchren Sie dmesg wie oben\n beschrieben aus.\n \u2022 invert_output - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter is_output\n@@ -19743,15 +19743,15 @@\n component. This parameter may be changed at runtime, but most of the time you probably want\n to set it at startup and then leave it alone. Accepted values are 1 (PWM on Out0 and Direction on\n Out1), 2 (Up on Out0 and Down on Out1), 3 (PDM mode, PDM on Out0 and Dir on Out1), and 4\n (Direction on Out0 and PWM on Out1, for locked antiphase).\n \u2022 scale - (Float, RW) Skalierungsfaktor zur Umrechnung von value von beliebigen Einheiten in das\n Tastverh\u00e4ltnis: dc = value / scale. Das Tastverh\u00e4ltnis hat einen effektiven Bereich von -1,0 bis einschlie\u00dflich +1,0, alles au\u00dferhalb dieses Bereichs wird abgeschnitten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 378 / 1327\n \n \u2022 pdm_frequency - (u32, RW) This specifies the PDM frequency, in Hz, of all the pwmgen instances\n running in PDM mode (mode 3). This is the pulse slot frequency; the frequency at which the pdm\n generator in the Anything I/O board chooses whether to emit a pulse or a space. Each pulse (and\n space) in the PDM pulse train has a duration of 1/pdm_frequency seconds. For example, setting\n@@ -19793,15 +19793,15 @@\n Encoder verwenden A, B, Index und Index-Maske.\n Die hm2-Encoder-Darstellung \u00e4hnelt derjenigen, die von der kanonischen Ger\u00e4teschnittstelle (im\n Dokument HAL General Reference) beschrieben wird, und der Software-Encoder-Komponente. Jede\n Encoder-Instanz hat die folgenden Pins und Parameter:\n 6.5.15.1 Pins\n \u2022 count - (s32, Out) Anzahl der Encoderz\u00e4hlungen seit dem letzten Reset.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 379 / 1327\n \n \u2022 index-enable - (Bit, I/O) Wenn dieser Pin auf True gesetzt ist, wird der Z\u00e4hlerstand (und damit\n auch die Position) beim n\u00e4chsten Indeximpuls (Phase-Z) auf Null zur\u00fcckgesetzt. Gleichzeitig wird\n index-enable auf Null zur\u00fcckgesetzt, um anzuzeigen, dass der Impuls stattgefunden hat.\n \u2022 position - (Float, Out) Encode-Position in Positionseinheiten (Count / Scale).\n@@ -19839,15 +19839,15 @@\n \n 6.5.16 5I25 Konfiguration\n 6.5.16.1 Firmware\n \n Die 5I25-Firmware wird f\u00fcr die Tochterkarte, mit der sie gekauft wurde, vorinstalliert. Die firmware=xxx.BI\n ist also nicht Teil des hm2_pci-Konfigurationsstrings, wenn eine 5I25 verwendet wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 380 / 1327\n \n 6.5.16.2 Konfiguration\n Beispielkonfigurationen der Karten 5I25/7I76 und 5I25/7I77 sind im Konfigurations-Auswahl enthalten.\n Wenn Sie Ihre eigene Konfiguration erstellen m\u00f6chten, zeigen die folgenden Beispiele, wie Sie die\n Treiber in die HAL-Datei laden.\n@@ -19881,15 +19881,15 @@\n If you wanted to scale the analog out of a channel to RPM for a 0 to 6000 RPM spindle with 0-10 V\n control you could set the limits like this:\n minlimit: 0\n maxlimit: 6000\n maxfullscale: 6000\n (dies w\u00fcrde verhindern, dass unerw\u00fcnschte negative Ausgangsspannungen eingestellt werden)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 381 / 1327\n \n 6.5.17 Beispielkonfigurationen\n Several example configurations for Mesa hardware are included with LinuxCNC. The configurations\n are located in the hm2-servo and hm2-stepper sections of the Configuration Selector. Typically you\n will need the board installed for the configuration you pick to load. The examples are a good place to\n@@ -19921,15 +19921,15 @@\n a. Erstellen Sie eine Konfigurationsdatei nach folgendem Beispiel\n 1. Komponentenname festlegen (optional)\n Set HAL_MODULE_NAME=mymodule (Voreinstellung HAL_MODULE_NAME=mb2hal)\n 2. Laden der Modbus-HAL-Benutzerspace-Komponente\n b. Standard-Komponentenname: loadusr -W mb2hal config=config_file.ini\n c. Benutzerdefinierter Komponentenname: loadusr -Wn mymodule mb2hal config=config_file.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 382 / 1327\n \n 6.6.3 Optionen\n 6.6.3.1 Init-Abschnitt\n [MB2HAL_INIT]\n Wert\n@@ -20024,15 +20024,15 @@\n If\n Data parity. One of: even, odd, none. Ignored if\n (engl.\n LINK_TYPE=serial\n LINK_TYPE=tcp.\n string)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 383 / 1327\n \n Wert\n Typ\n ErforderlichBeschreibung\n SERIAL_STOP Integer If\n@@ -20125,15 +20125,15 @@\n \n 6.6.3.3 Fehlercodes\n Beachten Sie beim Debuggen von Transaktionen, dass der zur\u00fcckgegebene Wert \u201dret[]\u201d entspricht:\n Ausnahmen vom Modbus-Protokoll:\n \u2022 0x01 - ILLEGAL_FUNCTION - der in der Abfrage empfangene FUNCTION-Code ist nicht erlaubt\n oder ung\u00fcltig.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 384 / 1327\n \n \u2022 0x02 - ILLEGAL_DATA_ADDRESS - die in der Abfrage empfangene DATA ADDRESS ist keine zul\u00e4ssige Adresse f\u00fcr den Slave oder ist ung\u00fcltig.\n \u2022 0x03 - ILLEGAL_DATA_VALUE - ein im Datenabfragefeld enthaltener WERT ist kein zul\u00e4ssiger Wert\n oder ist ung\u00fcltig.\n \u2022 0x04 - SLAVE_DEVICE_FAILURE - Nicht wiederherstellbarer Fehler des SLAVE- (oder MASTER-)\n@@ -20168,15 +20168,15 @@\n # ++++++++++++++++++++++++\n # Common section\n # ++++++++++++++++++++++++\n [MB2HAL_INIT]\n #OPTIONAL: Debug level of init and INI file parsing.\n # 0 = silent.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 385 / 1327\n \n # 1 = error messages (default).\n # 2 = OK confirmation messages.\n # 3 = debugging messages.\n # 4 = maximum debugging messages (only in transactions).\n@@ -20222,15 +20222,15 @@\n #The baud rate.\n SERIAL_BAUD=115200\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n #if LINK_TYPE=tcp then IGNORED\n #Data bits. One of 5,6,7,8.\n SERIAL_BITS=8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 386 / 1327\n \n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n #if LINK_TYPE=tcp then IGNORED\n #Data parity. One of: even, odd, none.\n SERIAL_PARITY=none\n@@ -20311,15 +20311,15 @@\n mb2hal.m.n.int\n (input)\n #\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.\n #\n Both pin values are added and limited to 65535 (UINT16_MAX). Normally use one and let \u2190the other open (read as 0).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 387 / 1327\n \n # fnct_15_write_multiple_coils:\n #\n mb2hal.m.n.bit\n (input)\n@@ -20385,15 +20385,15 @@\n #NEGATIVE_ACKNOWLEDGE\n -0x07 Unsuccessful programming request using function code 13 or \u219014.\n #MEMORY_PARITY_ERROR\n -0x08 SLAVE parity error in MEMORY.\n #GATEWAY_PROBLEM_PATH\n -0x0A (-10) Gateway path(s) not available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 388 / 1327\n \n #GATEWAY_PROBLEM_TARGET -0x0B (-11) The target device failed to repond (generated by\n master, not slave).\n #/* Program or connection */\n #COMM_TIME_OUT\n@@ -20453,15 +20453,15 @@\n NELEMENTS=3\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 389 / 1327\n \n [TRANSACTION_07]\n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n@@ -20495,15 +20495,15 @@\n 6.6.5.3 fnct_03_read_holding_registers\n \u2022 mb2hal.m.n.float float out\n \u2022 mb2hal.m.n.int s32 out\n 6.6.5.4 fnct_04_read_input_registers\n \u2022 mb2hal.m.n.float float out\n \u2022 mb2hal.m.n.int s32 out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 390 / 1327\n \n 6.6.5.5 fnct_05_write_single_coil\n \u2022 mb2hal.m.n.bit bit in\n NELEMENTS muss 1 sein oder PIN_NAMES darf nur einen Namen enthalten.\n 6.6.5.6 fnct_06_write_single_register\n@@ -20534,15 +20534,15 @@\n Diese Komponente wird mit dem halcmd-Befehl \u201dloadusr\u201d geladen:\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n \n Der obige Befehl lautet:\n loadusr, warten bis K\u00fchlmittelpins bereit sind, Komponente mitsub_vfd, mit 2 Slaves namens Spindel\n (Slave #2) und K\u00fchlmittel (Slave #1)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 391 / 1327\n \n 6.7.1 Kommandozeilen-Optionen\n Die Kommandozeilenoptionen sind:\n \u2022 -b oder --baud : die Baudrate einstellen - muss f\u00fcr alle vernetzten VFDs gleich sein\n \u2022 -p oder --port : legt den zu verwendenden Anschluss fest, z. B. /dev/ttyUSB0\n@@ -20573,15 +20573,15 @@\n = Ampere.\n \u2022 .scale-power (float, in) Skaliert den Motor-Leistungs-Pin auf beliebige Einheiten. default 1 = .\n \u2022 .estop (bit, in) versetzt den VFD in den Notaus-Status.\n \u2022 .status-bit-N (bit, out) N = 0 bis 7, Statusbits sind auf dem VFD vom Benutzer konfigurierbar.\n Bit 3 sollte auf \u201dGeschwindigkeit erreicht\u201d (engl. at speed) und bit 7 auf \u201dAlarm\u201d gesetzt werden.\n Andere k\u00f6nnen nach Bedarf gesetzt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 392 / 1327\n \n 6.7.3 HAL-Beispiel\n #\n # Beispiel f\u00fcr die Verwendung des Mitsubishi VFD-Treibers\n #\n@@ -20630,15 +20630,15 @@\n Technisches Handbuch \u201dFr-A700 F700 E700 D700\u201d f\u00fcr die Serie 700\n Die PR-Einstellungen des VFD m\u00fcssen f\u00fcr die serielle Kommunikation manuell angepasst werden.\n Man muss den VFD einschalten, damit einige dieser Einstellungen registriert werden, z. B. PR 79\n \u2022 PR 77 auf 1 gesetzt -um andere PR-\u00c4nderungen freizuschalten.\n \u2022 PR 79 auf 1 oder 0 gesetzt \u2019-f\u00fcr die Kommunikation \u00fcber die serielle Schnittstelle \u2019\n \u2022 PR 117 auf 0-31 gesetzt -Slave-Nummer, Treiber muss auf dieselbe Nummer verweisen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 393 / 1327\n \n \u2022 PR 118 getestet mit 96 -Baudrate (kann auf 48,96,192 eingestellt werden), wenn auch der Treiber\n eingestellt ist.\n \u2022 PR 119 auf 0 gesetzt -Stoppbit/Datenl\u00e4nge (8 Bits, zwei Stopps)\n \u2022 PR 120\u2019 auf 0 gesetzt -keine Parit\u00e4t\n@@ -20670,15 +20670,15 @@\n \u2022 (bit) motenc..enc--idx-latch - Der Treiber setzt diesen Pin auf true, wenn er einen Indeximpuls h\u00e4lt (aktiviert durch latch-index). Wird durch L\u00f6schen von latch-index gel\u00f6scht.\n \u2022 (bit) motenc..enc--latch-index - Wenn dieser Pin true ist, setzt der Treiber den\n Z\u00e4hler beim n\u00e4chsten Indeximpuls zur\u00fcck.\n \u2022 (bit) motenc..enc--reset-count - Wenn dieser Pin wahr ist, wird der Z\u00e4hler sofort\n auf Null zur\u00fcckgesetzt, und der Pin wird gel\u00f6scht.\n \u2022 (float) motenc..dac--value - Analoger Ausgangswert f\u00fcr DAC (in Benutzereinheiten, siehe -gain und -offset)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 394 / 1327\n \n \u2022 (float) motenc..adc--value - Vom ADC gelesener analoger Eingangswert (in Benutzereinheiten, siehe -gain und -offset)\n \u2022 (bit) motenc..in- - Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.\n \u2022 (bit) motenc..in--not - Invertierter Zustand des digitalen Eingangspins, siehe\n kanonischer Digitaleingang.\n@@ -20722,15 +20722,15 @@\n Watchdog wird automatisch durch DAC-Schreibvorg\u00e4nge\n zur\u00fcckgesetzt (die HAL dac-write Funktion)\n \n Normalerweise sind die sinnvollen Werte 0 (Watchdog deaktiviert) oder 20 (8ms Watchdog aktiviert,\n durch dac-write gel\u00f6scht).\n \u2022 (u32) motenc..led-view - Ordnet einen Teil der E/A den Onboard-LEDs zu.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 395 / 1327\n \n 6.8.3 Funktionen\n \u2022 (funct) motenc..encoder-read - Liest alle Encoder-Z\u00e4hler.\n \u2022 (funct) motenc..adc-read - Liest die Analog-Digital-Wandler.\n \u2022 (funct) motenc..digital-in-read - Liest digitale Eing\u00e4nge.\n@@ -20760,15 +20760,15 @@\n Dadurch wird der Treiber geladen, der nach maximal 4 Karten sucht. Er setzt die E/A der 2 Ports jeder\n Karte auf eine Standardeinstellung. Die Standardkonfiguration ist f\u00fcr 12 Eing\u00e4nge und 12 Ausg\u00e4nge.\n Die Nummern der Pin-Namen entsprechen der Position auf dem Relais-Rack. Zum Beispiel w\u00fcrden\n die Pin-Namen f\u00fcr die Standard-E/A-Einstellung von Port 0 lauten:\n \u2022 opto_ac5.0.port0.in-00 - Sie w\u00fcrden von 00 bis 11 nummeriert werden\n \u2022 opto_ac5.0.port0.out-12 - Sie w\u00fcrden die Nummern 12 bis 23 tragen, Port 1 w\u00e4re analog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 396 / 1327\n \n 6.9.3 Pins\n \u2022 opto_ac5.[BOARDNUMBER].port[PORTNUMBER].in-[PINNUMBER] OUT bit \u2022 opto_ac5.[BOARDNUMMER].port[PORTNUMMER].in-[PINNUMMER]-not OUT bit - Schlie\u00dfen Sie\n ein HAL-Bit-Signal an diesen Pin an, um einen I/O-Punkt von der Karte zu lesen. Die PINNUMMER\n steht f\u00fcr die Position im Relaisgestell. Z.B. PINNUMMER 0 ist Position 0 in einem Opto22-Relaisrack\n@@ -20805,15 +20805,15 @@\n Nat\u00fcrlich passen Sie die Zahlen so an, dass sie mit dem gew\u00fcnschten E/A (engl. I/P) \u00fcbereinstimmen.\n Jeder Anschluss kann anders eingerichtet werden.\n Auf diese Weise kann man die Nummer herausfinden: Die Konfigurationsnummer ist ein 32 Bit langer\n Code. Dieser teilt der Karte mit, welche E/A-Punkte Ausgang bzw. Eingang sind. Die unteren 24 Bits\n sind die E/A-Punkte eines Ports. Die 2 h\u00f6chsten Bits sind f\u00fcr 2 der LEDs auf der Karte. Eine Eins\n in einer beliebigen Bitposition macht den E/A-Punkt zu einem Ausgang. Die beiden h\u00f6chsten Bits\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 397 / 1327\n \n m\u00fcssen ausgegeben werden, damit die LEDs funktionieren. Der Treiber setzt die beiden h\u00f6chsten\n Bits automatisch f\u00fcr Sie, wir werden nicht dar\u00fcber sprechen.\n Am einfachsten ist es, den Taschenrechner unter ANWENDUNGEN/ZUBEH\u00d6R zu starten. Stellen\n Sie ihn auf wissenschaftlich ein (klicken Sie auf Ansicht). Stellen Sie ihn auf BIN\u00c4R (Optionsfeld\n@@ -20854,15 +20854,15 @@\n den Karten, er nummeriert einfach die E/A-Kan\u00e4le (Encoder usw.), beginnend mit 0 auf der ersten\n Karte. Der Treiber hei\u00dft hal_ppmc.ko Die analoge Servo-Schnittstelle wird auch PPMC f\u00fcr Parallel\n Port Motion Control genannt. Es gibt auch den Universal Stepper Controller, abgek\u00fcrzt USC. Und\n den Universal PWM Controller, abgek\u00fcrzt UPC.\n Installation:\n loadrt hal_ppmc port_addr=[,[,...]]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 398 / 1327\n \n Der Parameter port_addr teilt dem Treiber mit, welche parallele(n) Schnittstelle(n) dieser \u00fcberpr\u00fcfen soll. Standardm\u00e4\u00dfig ist 0x0378, und und folgende werden nicht verwendet.\n Der Treiber durchsucht den gesamten Adressraum der erweiterten parallelen Schnittstelle(n) unter\n port_addr und sucht nach einer oder mehreren Karten der PPMC-Familie. Es exportiert dann HALPins f\u00fcr alles, was es findet. W\u00e4hrend des Ladens (oder des versuchten Ladens) gibt der Treiber einige\n n\u00fctzliche Debugging-Meldungen in das Kernel-Log aus, die mit dmesg eingesehen werden k\u00f6nnen.\n@@ -20896,15 +20896,15 @@\n 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\n Problem. Der ppmc-Treiber in allen LinuxCNC-Versionen ab 2.7.8 sind f\u00fcr dieses Problem standardm\u00e4\u00dfig korrigiert worden. Allerdings k\u00f6nnte dies m\u00f6glicherweise zu Problemen mit wirklich alten EPP\n Parallelport-Hardware, so gibt es eine Kommandozeilen-Option, um wieder auf das vorherige Verhalten zu gehen. Das neue Verhalten wird standardm\u00e4\u00dfig eingestellt, oder durch Hinzuf\u00fcgen des Parameters epp_dir=0 auf der Befehlszeile. Um das alte Verhalten zu erhalten, f\u00fcgen Sie epp_dir=1 in die\n Befehlszeile ein. Alle parallelen Ports, die ich hier habe, arbeiten mit dem neuen Standardverhalten.\n Wie bei den anderen Parametern ist es m\u00f6glich, eine Liste anzugeben, wie z.B. epp_dir=1,0,1, um\n verschiedene Einstellungen f\u00fcr jede der bis zu 3 parallelen Schnittstellen zu setzen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 399 / 1327\n \n 6.10.2 Pins\n Bei den folgenden Pins, Parametern und Funktionen ist die ID der parallelen Schnittstelle.\n Gem\u00e4\u00df den Namenskonventionen sollte der erste Port immer eine ID von Null haben. Alle Karten\n verf\u00fcgen \u00fcber eine Methode zur Einstellung der Adresse auf dem EPP-Bus. USC und UPC haben\n@@ -20938,15 +20938,15 @@\n \u2022 (USC-Bit-Eingang) ppmc..stepgen..enable - Aktiviert einen Schrittimpulsgenerator.\n \u2022 (USC float input) ppmc..stepgen..velocity - Wert, der die Schrittfrequenz bestimmt.\n Der Wert wird mit stepgen..scale multipliziert, und das Ergebnis ist die Frequenz in\n Schritten pro Sekunde. Negative Werte f\u00fchren dazu, dass die Frequenz auf dem absoluten Wert\n basiert, und der Richtungspin wird auf negativ gesetzt.\n \u2022 (All bit output) ppmc..din..in - Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 400 / 1327\n \n \u2022 (All bit output) ppmc..din..in-not - Invertierter Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.\n \u2022 (All bit input) ppmc..dout..out - Wert, der an den Digitalausgang geschrieben\n werden soll, siehe kanonischer Digitalausgang.\n \u2022 (Option Float-Eingang) ppmc..DAC8-.value - In den Analogausgang zu schreibender Wert, Bereich von 0 bis 255. Dies sendet 8 Ausgangsbits an J8, an dem eine Spindel-DAC-Karte\n@@ -20975,15 +20975,15 @@\n kurze Sequenz von Impulsen beider Polarit\u00e4ten, wenn Notaus (engl. E-stop) auf falsch geht, um die\n Abschalt-Latches einiger PWM-Servoantriebe zur\u00fcckzusetzen.\n \u2022 (USC u32) ppmc..stepgen..setup-time - Legt die Mindestzeit zwischen Richtungswechsel und Schrittimpuls fest, in Einheiten von 100 ns. Gilt f\u00fcr eine Gruppe von vier aufeinanderfolgenden Schrittgeneratoren, wie durch angegeben. Es k\u00f6nnen Werte\n zwischen 200 ns und 25,5 \u00b5s angegeben werden.\n \u2022 (USC u32) ppmc..stepgen..pulse-width - Bestimmt die Breite der Schrittimpulse in Einheiten von 100 ns. Gilt f\u00fcr eine Gruppe von vier aufeinanderfolgenden Schrittgeneratoren, wie durch angegeben. Es k\u00f6nnen Werte zwischen 200 ns und 25,5 \u00b5s\n angegeben werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 401 / 1327\n \n \u2022 (USC u32) ppmc..stepgen..pulse-space-min - Legt die Mindestzeit zwischen\n den Impulsen in Einheiten von 100 ns fest. Gilt f\u00fcr eine Gruppe von vier aufeinanderfolgenden\n Schrittgeneratoren, wie durch angegeben. Es k\u00f6nnen Werte zwischen 200 ns und\n 25,5 \u00b5s angegeben werden. Die maximale Schrittfrequenz betr\u00e4gt:\n@@ -21017,15 +21017,15 @@\n 2. Ein EPP-kompatibler Parallelport, der im System-BIOS f\u00fcr den EPP-Modus konfiguriert ist, oder\n eine PCI-EPP-kompatible Parallelport-Karte.\n Anmerkung\n Das Pluto P Board ben\u00f6tigt den EPP-Modus. Netmos98xx-Chips funktionieren nicht im EPP-Modus.\n Die Pluto P Karte funktioniert auf einigen Computern und auf anderen nicht. Es gibt kein bekanntes\n Muster, welche Computer funktionieren und welche nicht.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 402 / 1327\n \n For more information on PCI EPP compatible parallel port cards see the LinuxCNC Supported Hardware page on the wiki.\n 6.11.1.2 Verbinder\n \u2022 Bei der Auslieferung der Pluto-P-Platine ist der linke Steckverbinder vorgel\u00f6tet, wobei sich der\n Schl\u00fcssel in der angegebenen Position befindet. Die anderen Anschl\u00fcsse sind unbest\u00fcckt. Es scheint\n@@ -21058,15 +21058,15 @@\n STEPGEN0 (LED = STEP0 xor DIR0).\n 6.11.1.5 Power\n \u2022 Von VCC kann eine geringe Strommenge entnommen werden. Der verf\u00fcgbare Strom h\u00e4ngt von der\n ungeregelten DC-Eingabe auf der Platine ab. Alternativ k\u00f6nnen dem FPGA \u00fcber diese VCC-Pins\n regulierte +3,3 VDC zugef\u00fchrt werden. Der erforderliche Strom ist noch nicht bekannt, liegt aber\n wahrscheinlich bei etwa 50 mA plus I/O-Strom.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 403 / 1327\n \n \u2022 Der Regler auf der Pluto-P-Platine ist ein Low-Dropout-Typ. Wenn 5 V an der Netzbuchse anliegen,\n kann der Regler ordnungsgem\u00e4\u00df arbeiten.\n 6.11.1.6 PC-Schnittstelle\n \u2022 Es wird nur eine einzige pluto_servo oder pluto_step Karte unterst\u00fctzt.\n@@ -21095,15 +21095,15 @@\n \u2022 18 digitale Ausg\u00e4nge: 10 dedizierte, 8 gemeinsam genutzte mit PWM-Funktionen. (Beispiel: Eine\n Drehmaschine mit unidirektionaler PWM-Spindelsteuerung kann insgesamt 13 digitale Ausg\u00e4nge\n verwenden)\n \u2022 20 digitale Eing\u00e4nge: 8 dedizierte, 12 gemeinsam genutzte mit Quadraturfunktionen. (Beispiel: Eine\n Drehmaschine mit Indeximpuls nur an der Spindel kann insgesamt 13 digitale Eing\u00e4nge verwenden.)\n \u2022 EPP-Kommunikation mit dem PC. Die EPP-Kommunikation dauert bei den bisher getesteten Maschinen typischerweise etwa 100 \u00b5s und erm\u00f6glicht Servoraten \u00fcber 1 kHz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 404 / 1327\n \n 6.11.2.1 Pinbelegung\n \u2022 UPx - Das Up- (Aufw\u00e4rts-/Abw\u00e4rtsmodus) oder PWM-Signal (PWM+Richtung-Modus) vom PWMGenerator X. Kann als digitaler Ausgang verwendet werden, wenn der entsprechende PWM-Kanal\n unbenutzt ist oder der Ausgang des Kanals immer negativ ist. Der entsprechende digitale Ausgang\n kann auf TRUE gesetzt werden, damit UPx aktiv low statt aktiv high ist.\n@@ -21115,15 +21115,15 @@\n \u2022 INx - Dedizierter digitaler Eingang#x\n \u2022 OUTx - Dedizierter digitaler Ausgang #x\n \u2022 GND - Masse (engl. ground)\n \u2022 VCC\u2019 - +3,3V geregelter Gleichstrom (engl. regulated DC)\n \n Abbildung 6.10: Pluto-Servo-Pinbelegung\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 405 / 1327\n \n Tabelle 6.27: Pluto-Servo Wechselnde Pin-Funktionen\n Prim\u00e4re Funktion\n \n Alternative Funktion\n@@ -21246,15 +21246,15 @@\n Gleichen Wert lesen\n Gleichen Wert lesen\n Gleichen Wert lesen\n Gleichen Wert lesen\n Gleichen Wert lesen\n Gleichen Wert lesen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 406 / 1327\n \n 6.11.2.2 Input-Latching und Output-Aktualisierung\n \u2022 Die PWM-Tastverh\u00e4ltnisse werden f\u00fcr jeden Kanal zu unterschiedlichen Zeiten aktualisiert.\n \u2022 Die digitalen Ausg\u00e4nge OUT0 bis OUT9 werden alle zur gleichen Zeit aktualisiert. Die digitalen\n Ausg\u00e4nge OUT10 bis OUT17 werden gleichzeitig mit der PWM-Funktion aktualisiert, mit der sie\n@@ -21282,15 +21282,15 @@\n 6.11.3.1 Pinbelegung\n \u2022 STEPx - Der Step (Clock) Ausgang des Stepgen-Kanals x\n \u2022 DIRx - Die Richtungs-Ausgabe des Stepgen-Kanals x\n \u2022 INx - Dedizierter digitaler Eingang#x\n \u2022 OUTx - Dedizierter digitaler Ausgang #x\n \u2022 GND - Masse (engl. ground)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 407 / 1327\n \n \u2022 VCC\u2019 - +3,3V geregelter Gleichstrom (engl. regulated DC)\n W\u00e4hrend der \u201derweiterte Hauptanschluss\u201d \u00fcber eine Reihe von Signalen verf\u00fcgt, die normalerweise\n auf einem Step & Direction DB25-Anschluss zu finden sind - 4 Schrittgeneratoren, 9 Eing\u00e4nge und 6\n Allzweckausg\u00e4nge -, unterscheidet sich das Layout dieses Anschlusses von dem eines standardm\u00e4\u00dfigen 26-poligen Flachbandkabels zu einem DB25-Anschluss.\n@@ -21303,15 +21303,15 @@\n \u2022 Die digitalen Eing\u00e4nge werden alle zur gleichen Zeit gehalten (engl. latched).\n \u2022 Feedback-Positionen werden f\u00fcr jeden Kanal zu unterschiedlichen Zeiten gespeichert.\n 6.11.3.3 Schritt (engl. Step)-Wellenform-Timings\n Die Firmware und der Treiber erzwingen Schrittl\u00e4nge, Abstand und Richtungswechselzeiten. Die Zeiten werden auf das n\u00e4chste Vielfache von 1,6 \u03bcs aufgerundet, mit einem Maximum von 49,6 \u03bcs. Die\n Zeitvorgaben sind dieselben wie bei der Softwarekomponente stepgen, mit der Ausnahme, dass \u201ddirhold\u201d und \u201ddirsetup\u201d zu einem einzigen Parameter \u201ddirtime\u201d zusammengefasst wurden, der das Maximum der beiden Parameter sein sollte, und dass f\u00fcr alle Kan\u00e4le stets dieselben Schrittvorgaben\n gelten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 408 / 1327\n \n Abbildung 6.12: Pluto-Step-Timings\n \n 6.11.3.4 HAL-Funktionen, Pins und Parameter\n Eine Liste aller loadrt-Argumente, HAL-Funktionsnamen, Pin-Namen und Parameter-Namen findet\n@@ -21331,15 +21331,15 @@\n Diese Komponente wird mit dem halcmd-Befehl \u201dloadusr\u201d geladen:\n loadusr -Wn pmx485 pmx485 /dev/ttyUSB0\n \n Dadurch wird die pmx485-Komponente \u00fcber den Port /dev/ttyUSB0 geladen und gewartet, bis sie\n bereit ist.\n Es ist erforderlich, den f\u00fcr die Kommunikation zu verwendenden Anschluss zu benennen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 409 / 1327\n \n 6.12.1 Pins\n \u2022 pmx485.mode-set (bit, in) # Schneidmodus einstellen\n \u2022 pmx485.current-set (bit, in) # Schneidstrom einstellen\n \u2022 pmx485.pressure-set (bit, in) # Gasdruck einstellen\n@@ -21370,15 +21370,15 @@\n \u2022 Setzen Sie alle Set-Pins auf Null: mode-set, current-set und pressure-set.\n \u2022 Trennen Sie das Powermax-Netzteil f\u00fcr etwa 30 Sekunden von der Stromquelle. Wenn Sie das System wieder einschalten, befindet es sich nicht mehr im Remote-Modus.\n \n 6.12.3 Referenz:\n \u2022 Hypertherm Anwendungshinweis #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serielles Kommunikationsprotokoll\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 410 / 1327\n \n 6.13 Servo To Go-Treiber\n Die Servo-To-Go (STG) ist eine der ersten PC Motion Control Karten von LinuxCNC unterst\u00fctzt. Es ist\n eine ISA-Karte und es gibt in verschiedenen Varianten (alle von diesem Treiber unterst\u00fctzt). Die Karte\n enth\u00e4lt bis zu 8 Kan\u00e4le von Quadratur-Encoder-Eingang, 8 Kan\u00e4le von analogen Ein- und Ausg\u00e4ngen,\n@@ -21415,15 +21415,15 @@\n Dieses Beispiel installiert den Treiber und versucht, die Kartenadresse und das Kartenmodell automatisch zu erkennen. Es installiert standardm\u00e4\u00dfig 8 Achsen zusammen mit einer Standard-E/AEinstellung: Port A und B sind als Eingang, Port C und D als Ausgang konfiguriert.\n \n 6.13.2 Pins\n \u2022 stg..counts - (s32) Folgt den gez\u00e4hlten Encoder-Ticks.\n \u2022 stg..position - (float) Gibt eine konvertierte Position aus.\n \u2022 stg..dac-value - (float) Steuert die Spannung f\u00fcr den entsprechenden DAC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 411 / 1327\n \n \u2022 stg..adc-value - (float) Folgt die gemessene Spannung vom entsprechenden ADC.\n \u2022 stg.in- - (bit) Folgt einen physischen Eingangspin.\n \u2022 stg.in--not - (bit) Folgt einem physischen Eingangspin, aber invertiert.\n \u2022 stg.out- - (Bit) Treibt einen physischen Ausgangspin an\n@@ -21449,15 +21449,15 @@\n \u2022 stg.capture-position - Liest die Encoder-Z\u00e4hler von der Achse .\n \u2022 stg.write-dacs - Schreibt die Spannungen in die DACs.\n \u2022 stg.read-adcs - Liest die Spannungen von den ADCs.\n \u2022 stg.di-read - Liest physische In-Pins aller Ports und aktualisiert alle HAL In- und In- nicht\n Pins.\n \u2022 stg.do-write - Liest alle HAL out- Pins und aktualisiert alle physischen Ausgangspins.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 412 / 1327\n \n 6.14 Shuttle\n 6.14.1 Beschreibung\n Shuttle ist eine Nicht-Echtzeit-HAL-Komponente, die Schnittstellen Contour Design\u2019s ShuttleXpress,\n ShuttlePRO, und ShuttlePRO2 Ger\u00e4te mit LinuxCNC\u2019s HAL.\n@@ -21489,15 +21489,15 @@\n \n 6.14.3 Pins\n All HAL pin names are prefixed with shuttle followed by the index of the device (the order in which\n the driver found them), for example shuttle.0 or shuttle.2.\n .button- (bit out)\n Diese Pins sind wahr (1) wenn die Schaltfl\u00e4che gedr\u00fcckt wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 413 / 1327\n \n .button--not (bit out)\n Diese Pins haben den umgekehrten Zustand des Buttons, also sind sie True (1) wenn der Button\n nicht gedr\u00fcckt wird.\n .counts (s32 out)\n@@ -21531,15 +21531,15 @@\n \u2022 -r oder --report-device Ger\u00e4teeigenschaften beim Starten auf der Konsole melden\n 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 \u0300\n pidof vfs11_vfd \u0300\n ).\n Anmerkung\n Bei seriellen Konfigurationsfehlern kann das Einschalten von verbose zu einer Flut von TimeoutFehlern f\u00fchren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 414 / 1327\n \n 6.15.2 Pins\n Dabei steht f\u00fcr vfs11_vfd oder den beim Laden mit der Option -n angegebenen Namen.\n \u2022 .acceleration-pattern (bit, in) wenn true, setzt Beschleunigungs- und Verz\u00f6gerungszeiten wie\n in den Registern F500 bzw. F501 definiert. Wird in PID-Schleifen verwendet, um k\u00fcrzere Rampenzeiten zu w\u00e4hlen und damit Schwingungen zu vermeiden.\n@@ -21572,15 +21572,15 @@\n \u2022 .motor-RPM (float, out) gesch\u00e4tzter aktueller U/min (engl. RPM)-Wert, vom VFD\n \u2022 .output-current-percentage (float, out) vom VFD\n \u2022 .output-voltage-percentage (float, out) vom VFD\n \u2022 .output-voltage (float, out) vom VFD\n \u2022 .speed-command (float, in) an den VFD gesendete Geschwindigkeit in U/min. Es ist ein Fehler,\n eine Geschwindigkeit zu senden, die h\u00f6her ist als die im VFD eingestellte Motor Max RPM\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 415 / 1327\n \n \u2022 .spindle-fwd (bit, in) 1 f\u00fcr FWD (engl. kurz f\u00fcr vorw\u00e4rts) und 0 f\u00fcr REV (engl. kurz f\u00fcr r\u00fcckw\u00e4rts), gesendet an VFD\n \u2022 .spindle-on (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS an den VFD gesendet, nur bei Betrieb eingeschaltet\n \u2022 .spindle-rev (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS, nur bei Betrieb eingeschaltet\n \u2022 .jog-mode (bit, in) 1 f\u00fcr ON und 0 f\u00fcr OFF, aktiviert den VF-S11 jog-mode. Die Drehzahlregelung\n@@ -21612,15 +21612,15 @@\n # serielle Verbindung\n TYPE=rtu\n # serielle Schnittstelle\n DEVICE=/dev/ttyS0\n # TCP-Server - Warten Sie auf eingehende Verbindung\n TYP=tcpserver\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # tcp portnumber f\u00fcr TYPE=tcpserver oder tcpclient\n PORT=1502\n # TCP-Client - aktive ausgehende Verbindung\n TYPE=tcpclient\n # Ziel, zu dem eine Verbindung aufgebaut werden soll if TYPE=tcpclient\n TCPDEST=192.168.1.1\n@@ -21661,15 +21661,15 @@\n # Beispiel f\u00fcr die Verwendung des VF-S11 VFD-Treibers\n #\n #\n loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd\n \n 416 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 417 / 1327\n \n # Verbinden der Spindelrichtungs-Pins mit dem VFD\n net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward\n net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse\n # Verbinden des Pins \u201dSpindel ein\u201d mit dem VF-S11\n@@ -21705,15 +21705,15 @@\n Der vfs11_vfd erholt sich von E/A-Fehlern wie folgt: Zun\u00e4chst werden alle HAL-Pins auf Standardwerte gesetzt, und der Treiber schl\u00e4ft f\u00fcr RECONNECT_DELAY Sekunden (Standard 1 Sekunde).\n \u2022 Serieller Modus (TYPE=rtu): Bei einem Fehler wird die serielle Schnittstelle geschlossen und erneut\n ge\u00f6ffnet.\n \u2022 TCP-Server-Modus (TYPE=tcpserver): Wenn die TCP-Verbindung unterbrochen wird, schaltet der\n Treiber wieder auf die Suche nach eingehenden Verbindungen.\n \u2022 TCP-Client-Modus (TYPE=tcpclient): Bei Verlust der TCP-Verbindung stellt der Treiber die Verbindung zu TCPDEST:PORTNO wieder her.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 418 / 1327\n \n 6.15.8 Konfigurieren des VFS11 VFD f\u00fcr die Modbus-Nutzung\n 6.15.8.1 Anschlie\u00dfen der seriellen Schnittstelle\n Der VF-S11 verf\u00fcgt \u00fcber eine RJ-45-Buchse f\u00fcr die serielle Kommunikation. Leider verf\u00fcgt es nicht\n \u00fcber einen Standard-RS-232-Stecker und logische Pegel. Der von Toshiba empfohlene Weg ist: Schlie\u00dfen Sie die USB001Z USB-zu-Seriell-Konvertierungseinheit an das Laufwerk an, und verbinden Sie\n@@ -21738,15 +21738,15 @@\n kann das Erstellen von vfs11_vfd mit dieser Bibliothek eine Warnung erzeugen, wenn RTS_MODE=\n in der INI-Datei angegeben ist.\n Um die volle Funktionalit\u00e4t auf Ubuntu Lucid und Precise zu nutzen:\n \u2022 Entfernen Sie die libmodbus-Pakete: sudo apt-get remove libmodbus5 libmodbus-dev\n \u2022 erstellen und installieren Sie libmodbus Version 3 aus den Quellen, wie unter hier beschrieben.\n Libmodbus kann nicht auf Ubuntu Hardy gebaut werden, daher ist vfs11_vfd auf Hardy nicht verf\u00fcgbar.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 419 / 1327\n \n Kapitel 7\n \n Hardware-Beispiele\n 7.1 PCI-Parallelport\n@@ -21777,15 +21777,15 @@\n und f\u00fcgte dann die folgenden Zeilen hinzu, damit der Parport gelesen und geschrieben werden kann:\n addf parport.1.read base-thread\n addf parport.1.write base-thread\n \n Nachdem Sie die obigen Schritte durchgef\u00fchrt haben, starten Sie mit dieser Konfiguration und \u00fcberpr\u00fcfen Sie, ob im Fenster Maschine/HAL-Konfiguration angezeigt wird, dass die parallele Schnittstelle\n geladen wurde.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 420 / 1327\n \n 7.2 Spindelsteuerung\n LinuxCNC kann bis zu 8 Spindeln steuern. Die Anzahl wird in der INI-Datei eingestellt. Die Beispiele\n unten beziehen sich alle auf eine Einspindelkonfiguration mit Spindelsteuerungspins mit Namen wie\n spindle.0... Im Falle einer Mehrspindelmaschine ist alles, was sich \u00e4ndert, dass zus\u00e4tzliche Pins mit\n@@ -21824,15 +21824,15 @@\n \n 7.2.3 Spindelfreigabe (engl. spindle enable)\n Wenn Sie ein Spindelaktivierungssignal ben\u00f6tigen, verkn\u00fcpfen Sie Ihren Ausgangspin mit spindle.0.on.\n Um diese Pins mit einem Parallelport-Pin zu verkn\u00fcpfen, f\u00fcgen Sie etwas wie das Folgende in Ihre .halDatei ein, wobei Sie darauf achten, dass Sie den Pin ausw\u00e4hlen, der mit Ihrem Steuerger\u00e4t verbunden\n ist.\n net spindle-enable spindle.0.on => parport.0.pin-14-out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 421 / 1327\n \n 7.2.4 Spindeldrehrichtung (engl. spindle direction)\n Wenn Sie die Kontrolle \u00fcber 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 Sn\n muss auf einen positiven Wert ungleich Null eingestellt werden, damit M3/M4 die Spindelbewegung\n einschalten kann.\n@@ -21870,15 +21870,15 @@\n # (maximale Spindelbeschleunigung/-verz\u00f6gerung in Einheiten pro Sekunde)\n setp spindle-ramp.maxv 60\n # Die Spindeldrehzahl an die Spindelrampe umlenken\n net spindle-cmd <= spindle.0.speed-out => spindle-ramp.in\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 422 / 1327\n \n # die Ausgabe der Spindelrampe wird an die Sklaierung gesendet\n net spindle-ramped <= spindle-ramp.out => scale.0.in\n # um zu wissen, wann die Bewegung beginnen soll, senden wir die Nahkomponente\n # (namens spindle-at-speed) an die Spindeldrehzahl aus\n@@ -21918,15 +21918,15 @@\n wurden. Das n\u00e4chste verf\u00fcgbare Messger\u00e4t, das wir an der Spindel anbringen k\u00f6nnen, w\u00e4re also Nummer 3. Ihre Situation\n kann davon abweichen\n 2 Der HAL-Encoder index-enable ist eine Ausnahme von der Regel, da er sich sowohl als Eingang als auch als Ausgang\n verh\u00e4lt, siehe den Abschnitt zu Encodern f\u00fcr Details\n 3 Weil wir oben non-quadrature simple counting\u2026 ausgew\u00e4hlt haben, k\u00f6nnen wir mit quadrature counting auskommen, ohne\n einen B-Quadratureingang zu haben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 423 / 1327\n \n net spindle-index-enable encoder.3.index-enable <=> spindle.0.index-enable\n # Verbinden Sie die HAL-Encodereing\u00e4nge mit dem realen Encoder.\n net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in\n net spindle-phase-b encoder.3.phase-B\n@@ -21966,15 +21966,15 @@\n von CNC4PC verwendet, die an einen zweiten parallelen Port angeschlossen ist, der in den PCISteckplatz gesteckt wird. Dieses Beispiel bietet Ihnen 3 Achsen mit 3 Schrittweiten von 0,1, 0,01,\n 0,001\n F\u00fcgen Sie in Ihrer Datei custom.hal oder jog.hal Folgendes hinzu, wobei Sie sicherstellen m\u00fcssen,\n dass Sie nicht bereits mux4 oder einen Encoder verwenden. Falls doch, erh\u00f6hen Sie einfach die Anzahl\n und \u00e4ndern Sie die Referenznummern. Weitere Informationen \u00fcber mux4 und encoder finden Sie im\n HAL-Handbuch oder in der Manpage.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 424 / 1327\n \n Weitere Informationen zum Hinzuf\u00fcgen einer HAL-Datei finden Sie im Abschnitt INI HAL der Dokumentation. F\u00fcr jedes Gelenk und alle Koordinatenbuchstaben sind Jog-Management-Pins vorgesehen.\n In diesem Beispiel werden die Achsen-Jogging-Pins f\u00fcr das Jogging im Weltmodus verwendet. Bei Maschinen mit nicht-identischen Kinematiken m\u00fcssen m\u00f6glicherweise zus\u00e4tzliche Verbindungen f\u00fcr das\n Jogging im Gelenkmodus verwendet werden.\n jog.hal\n@@ -22020,15 +22020,15 @@\n net encoder-counts => axis.x.jog-counts\n net encoder-counts => axis.y.jog-counts\n net encoder-counts => axis.z.jog-counts\n \n Wenn die Maschine zu einer hohen Beschleunigung f\u00e4hig ist, um die Bewegungen f\u00fcr jeden Klick des\n MPG zu gl\u00e4tten, verwenden Sie die Komponente ilowpass, um die Beschleunigung zu begrenzen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 425 / 1327\n \n jog.hal mit ilowpass\n loadrt encoder num_chan=1\n loadrt mux4 count=1\n addf encoder.capture-position servo-thread\n@@ -22077,15 +22077,15 @@\n # Nur die ausgew\u00e4hlte Achse wird verschoben.\n net encoder-counts <= ilowpass.0.out\n net encoder-counts => axis.x.jog-counts\n net encoder-counts => axis.y.jog-counts\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 426 / 1327\n \n net encoder-counts => axis.z.jog-counts\n \n 7.4 GS2 Spindel\n 7.4.1 Beispiel\n@@ -22120,23 +22120,23 @@\n \u2022 Die Motorparameter m\u00fcssen so eingestellt werden, dass sie mit dem Motor \u00fcbereinstimmen.\n \u2022 P3.00 (Source of Operation Command) muss auf Operation determined by RS-485 interface, 03 oder\n 04 gesetzt sein.\n \n \u2022 P4.00 (Quelle des Frequenzbefehls) muss auf \u201dFrequenz bestimmt durch RS232C/RS485-Kommunikations\n eingestellt werden, 05.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 427 / 1327\n \n \u2022 P9.01 (\u00dcbertragungsgeschwindigkeit) muss auf 9600 Baud eingestellt werden, 01.\n \u2022 P9.02 (Kommunikationsprotokoll) muss auf \u201dModbus RTU-Modus, 8 Datenbits, keine Parit\u00e4t, 2 Stoppbits\u201d eingestellt werden, 03.\n Ein auf diesem Beispiel basierendes PyVCP-Panel ist hier.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 428 / 1327\n \n Kapitel 8\n \n ClassicLadder\n 8.1 ClassicLadder Einf\u00fchrung\n@@ -22163,15 +22163,15 @@\n Logikschaltpl\u00e4nen. Sie ist heute eine sehr beliebte grafische Sprache f\u00fcr die Programmierung speicherprogrammierbarer Steuerungen (SPS). Urspr\u00fcnglich wurde sie erfunden, um eine Logik zu beschreiben, die aus Relais besteht. Der Name beruht auf der Beobachtung, dass Programme in dieser\n Sprache Leitern \u00e4hneln, mit zwei vertikalen \u201dSchienen\u201d und einer Reihe von horizontalen \u201dSprossen\u201d\n dazwischen. In Deutschland und anderswo in Europa ist es \u00fcblich, die Sprossen waagerecht am oberen und unteren Rand der Seite zu zeichnen, w\u00e4hrend die Sprossen senkrecht von links nach rechts\n verlaufen.\n Ein Programm in Kontaktplanlogik, auch Kontaktplan genannt, ist einem Schaltplan f\u00fcr eine Reihe\n von Relaisschaltungen \u00e4hnlich. Die Kontaktplanlogik ist n\u00fctzlich, weil eine Vielzahl von Ingenieuren\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 429 / 1327\n \n und Technikern sie aufgrund der \u00c4hnlichkeit ohne viel zus\u00e4tzliche Schulung verstehen und verwenden\n kann.\n Die Kontaktplanlogik wird h\u00e4ufig zur Programmierung von SPS verwendet, wenn eine sequenzielle Steuerung eines Prozesses oder eines Fertigungsvorgangs erforderlich ist. Die Kontaktplanlogik\n ist n\u00fctzlich f\u00fcr einfache, aber kritische Steuerungssysteme oder f\u00fcr die \u00dcberarbeitung alter festverdrahteter Relaisschaltungen. Da speicherprogrammierbare Steuerungen immer ausgereifter wurden,\n@@ -22202,15 +22202,15 @@\n Der Eingang auf der linken Seite, B0, ein Schlie\u00dfer, ist mit der Spule (Ausgang) auf der rechten Seite,\n Q0, verbunden. Stellen Sie sich nun vor, dass am linken Ende eine Spannung angelegt wird, weil der\n Eingang B0 aktiv wird (z. B. weil der Eingang aktiviert ist oder der Benutzer den Schlie\u00dfer bet\u00e4tigt\n hat). Die Spannung hat einen direkten Weg zur Spule (Ausgang) rechts, Q0. Infolgedessen schaltet die\n Spule Q0 (Ausgang) von 0/aus/falsch auf 1/an/wahr. Wenn der Benutzer B0 losl\u00e4sst, kehrt der Ausgang\n Q0 schnell zu 0/aus/falsch zur\u00fcck.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 430 / 1327\n \n 8.1.4 Grundlegende selbsthaltende Ein-Aus-Schaltung\n Nehmen wir an, wir f\u00fcgen dem obigen Beispiel einen Schalter hinzu, der immer dann schlie\u00dft, wenn\n die Spule Q0 aktiv ist. Dies w\u00e4re der Fall bei einem Relais, bei dem die Spule die Schaltkontakte\n aktivieren kann, oder bei einem Sch\u00fctz, bei dem es oft mehrere kleine Hilfskontakte zus\u00e4tzlich zu den\n@@ -22238,15 +22238,15 @@\n Jetzt haben wir den Taster B1 f\u00fcr \u201dAus\u201d oder \u201dStopp\u201d hinzugef\u00fcgt. Wenn der Benutzer ihn dr\u00fcckt,\n wird der Kontakt zwischen der Sprosse und der Spule unterbrochen. Wenn die Spule Q0 keinen Strom\n mehr hat, geht sie auf 0/aus/falsch. Wenn die Spule Q0 erlischt, dann erlischt auch der Schalter Q0,\n so dass der \u201dHaltekontakt\u201d unterbrochen oder der Stromkreis \u201dentsiegelt\u201d wird. Wenn der Benutzer\n die Stopptaste losl\u00e4sst, wird der Kontakt von der Sprosse zur Spule Q0 wiederhergestellt, aber die\n Sprosse ist erloschen, so dass die Spule nicht wieder eingeschaltet wird.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 431 / 1327\n \n Diese Schaltung wird seit Jahrzehnten in praktisch jeder Maschine verwendet, die einen durch ein\n Sch\u00fctz gesteuerten Drehstrommotor hat, so dass es unvermeidlich war, dass sie von Kontaktplan-/SPSProgrammierern \u00fcbernommen werden w\u00fcrde. Es handelt sich auch um eine sehr sichere Schaltung,\n denn wenn \u201dStart\u201d und \u201dStopp\u201d gleichzeitig gedr\u00fcckt werden, gewinnt immer die \u201dStopp\u201d-Funktion.\n Dies ist der Grundbaustein eines Gro\u00dfteils der Kontaktplanprogrammierung. Wenn Sie also neu in\n@@ -22278,15 +22278,15 @@\n ClassicLadder unterst\u00fctzt auch Ablaufpl\u00e4ne (Grafcet).\n \n 8.2.3 Komponenten\n ClassicLadder besteht aus zwei Komponenten.\n \u2022 Das Echtzeitmodul classicladder_rt\n \u2022 Das Benutzerraummodul (einschlie\u00dflich einer grafischen Benutzeroberfl\u00e4che) classicladder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 432 / 1327\n \n 8.2.3.1 Dateien\n Normalerweise werden klassische Kontaktplan-Komponenten in der Datei custom.hal platziert, wenn\n Sie mit einer von Stepconf generierten Konfiguration arbeiten. Diese d\u00fcrfen nicht in der Datei custom_postgui.hal platziert werden, da sonst das Kontaktplan-Editor-Men\u00fc ausgegraut wird.\n Anmerkung\n@@ -22358,15 +22358,15 @@\n 50\n 10\n Auto\n 10\n 10\n 10\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 433 / 1327\n \n Tabelle 8.1: (continued)\n Objektname\n Anzahl der Float-Ausg\u00e4nge\n \n@@ -22405,15 +22405,15 @@\n beendet ist.\n \u2022 --modbus_port=port - (l\u00e4dt die Modbus-Portnummer)\n \u2022 --modmaster - (initialisiert den MODBUS-Master) sollte das Kontaktplanprogramm zur gleichen Zeit\n laden oder der TCP-Port ist Standard.\n \u2022 --modslave - (initialisiert MODBUS-Slave) nur TCP\n Zur Verwendung von ClassicLadder mit HAL ohne EMC:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 434 / 1327\n \n loadusr -w classicladder\n \n Die Option -w weist HAL an, die HAL-Umgebung nicht zu schlie\u00dfen, bevor Classic Ladder beendet ist.\n 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.\n@@ -22428,15 +22428,15 @@\n Abbildung 8.1: Sections Manager Standardfenster\n In diesem Fenster k\u00f6nnen Sie Abschnitte benennen, erstellen oder l\u00f6schen und ausw\u00e4hlen, welche\n Sprache der Abschnitt verwendet. Auf diese Weise benennen Sie auch ein Unterprogramm f\u00fcr Anrufspulen.\n 8.2.5.2 Abschnittsanzeige\n Wenn Sie ClassicLadder zum ersten Mal starten, sehen Sie ein leeres Abschnittsanzeigefenster. Es\n wird eine leere Sprosse angezeigt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 435 / 1327\n \n Abbildung 8.2: Standardfenster der Abschnittsanzeige\n Die meisten Buttons sind selbsterkl\u00e4rend:\n Die Button Vars dient zur Anzeige von Variablen. Sie k\u00f6nnen sie umschalten, um das eine, das andere,\n beide oder keines der Fenster anzuzeigen.\n@@ -22450,15 +22450,15 @@\n Vielleicht f\u00e4llt Ihnen auf, dass unter der Anzeige des Kontaktplanprogramms eine Zeile mit der Aufschrift \u201dProjekt konnte nicht geladen werden\u2026\u201d zu sehen ist. Das ist die Statusleiste, die Ihnen Informationen \u00fcber Elemente des Kontaktplanprogramms gibt, auf die Sie im Anzeigefenster klicken.\n In dieser Statuszeile werden nun die HAL-Signalnamen f\u00fcr die Variablen %I, %Q und das erste %W\n (in einer Gleichung) angezeigt. M\u00f6glicherweise sehen Sie einige lustige Bezeichnungen, wie (103)\n in den Sprossen. Dies wird (absichtlich) aufgrund eines alten Fehlers angezeigt - beim L\u00f6schen von\n Elementen l\u00f6schten \u00e4ltere Versionen manchmal das Objekt nicht mit dem richtigen Code. Vielleicht\n haben Sie bemerkt, dass die lange horizontale Verbindungstaste in \u00e4lteren Versionen manchmal nicht\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 436 / 1327\n \n funktionierte. Das lag daran, dass das Programm nach dem freien Code suchte, aber etwas anderes\n fand. Die Zahl in den Klammern ist der nicht erkannte Code. Das Kontaktplanprogramm funktioniert\n trotzdem, l\u00f6schen Sie die Codes mit dem Editor und speichern Sie das Programm.\n 8.2.5.3 Die Variablenfenster\n@@ -22469,15 +22469,15 @@\n Im Bitstatusfenster werden einige der booleschen Variablen (ein/aus) angezeigt. Beachten Sie, dass\n alle Variablen mit dem %-Vorzeichen beginnen. Die %I-Variablen stellen HAL-Eingangsbit-Pins dar.\n Der %Q steht f\u00fcr die Relaisspule und die HAL-Ausgangsbitpins. Das %B steht f\u00fcr eine interne Relaisspule oder einen internen Kontakt. In den drei Bearbeitungsbereichen oben k\u00f6nnen Sie ausw\u00e4hlen,\n welche 15 Variablen in jeder Spalte angezeigt werden. Wenn beispielsweise die Spalte %B Variable\n 15 Eintr\u00e4ge hoch w\u00e4re und Sie oben in der Spalte 5 eingegeben haben, werden die Variablen %B5\n bis %B19 angezeigt. Mit den Kontrollk\u00e4stchen k\u00f6nnen Sie %B-Variablen manuell festlegen und deaktivieren, solange das Leiterprogramm sie nicht als Ausgaben festlegt. Alle Bits, die vom Programm\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 437 / 1327\n \n als Ausgaben festgelegt werden, wenn ClassicLadder ausgef\u00fchrt wird, k\u00f6nnen nicht ge\u00e4ndert werden\n und werden als aktiviert angezeigt, wenn sie aktiviert sind, und als deaktiviert, wenn sie deaktiviert\n sind.\n \n@@ -22486,30 +22486,30 @@\n in Hex, Dezimal oder Bin\u00e4r angezeigt werden soll. Wenn im Symbole-Fenster Symbolnamen f\u00fcr die\n angezeigten Wortvariablen definiert sind und das Kontrollk\u00e4stchen \u201dSymbole anzeigen\u201d im Fenster\n \u201dAbschnitt anzeigen\u201d aktiviert ist, werden die Symbolnamen angezeigt. Um die angezeigte Variable\n zu \u00e4ndern, geben Sie die Variablennummer ein, z. B. %W2 (wenn das Kontrollk\u00e4stchen \u201dSymbole anzeigen\u201d nicht aktiviert ist), oder geben Sie den Symbolnamen (wenn das Kontrollk\u00e4stchen \u201dSymbole\n anzeigen\u201d aktiviert ist) \u00fcber eine bestehende Variablennummer/einen bestehenden Variablennamen\n ein und dr\u00fccken Sie die Eingabetaste.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 438 / 1327\n \n 8.2.5.4 Symbol-Fenster\n \n Abbildung 8.5: Fenster mit Symbolnamen\n Dies ist eine Liste von \u201dSymbol\u201d-Namen, die anstelle von Variablennamen im Schnittfenster angezeigt\n werden sollen, wenn das Kontrollk\u00e4stchen \u201dSymbole anzeigen\u201d aktiviert ist. Sie f\u00fcgen den Variablennamen (denken Sie an das %-Symbol und Gro\u00dfbuchstaben), den Symbolnamen . Wenn an die Variable\n 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\n Fehlen eines solchen angezeigt. Symbolnamen sollten zur besseren Darstellung kurz gehalten werden.\n Denken Sie daran, dass Sie die l\u00e4ngeren HAL-Signalnamen der Variablen %I, %Q und %W anzeigen\n lassen k\u00f6nnen, indem Sie sie im Abschnittsfenster anklicken. Auf diese Weise sollte man in der Lage\n sein, den \u00dcberblick dar\u00fcber zu behalten, womit das Kontaktplanprogramm verbunden ist!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 439 / 1327\n \n 8.2.5.5 Das Editor-Fenster\n \n Abbildung 8.6: Editor-Fenster\n \u2022 Hinzuf\u00fcgen (engl. add) - f\u00fcgt eine Sprosse nach der ausgew\u00e4hlten Sprosse hinzu\n@@ -22517,15 +22517,15 @@\n \u2022 L\u00f6schen (engl. delete) - l\u00f6scht die ausgew\u00e4hlte Sprosse\n \u2022 Bearbeiten (engl. modify) - \u00f6ffnet die ausgew\u00e4hlte Sprosse zur Bearbeitung\n Beginnend mit dem Bild oben links:\n \u2022 Objektauswahl, Radiergummi\n \u2022 N.O. (engl. kurz f\u00fcr normally open)-Eingang, N.C. (engl. f\u00fcr normally closed)-Eingang, Eingang mit\n steigender Flanke, Eingang mit fallender Flanke\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 440 / 1327\n \n \u2022 Horizontale Verbindung, Vertikale Verbindung, Lange Horizontale Verbindung\n \u2022 Timer IEC-Block, Z\u00e4hler (engl. counter-)block, Vergleichsvariable\n \u2022 Alter Timer-Block, alter monostabiler Block (diese wurden durch den IEC-Timer ersetzt)\n \u2022 SPULEN (engl. coils) - N.O. Ausgang, N.C. Ausgang, den Ausgang setzen, Ausgang zur\u00fccksetzen\n@@ -22552,25 +22552,25 @@\n \u2022 Monostabil - erstellt ein monostabiles One-Shot-Modul\n \u2022 Counter - erstellt ein Z\u00e4hlermodul.\n \u2022 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.\n \u2022 Variable Assignment - erstellt einen Zuordnungsblock, damit Sie Variablen Werte zuweisen k\u00f6nnen.\n (z.B. %W2=7 oder %W1=%W2) ASSIGNMENT-Funktionen k\u00f6nnen nur auf der rechten Seite der\n Abschnittsanzeige platziert werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 441 / 1327\n \n 8.2.5.6 Konfigurationsfenster\n Das Konfigurationsfenster zeigt den aktuellen Projektstatus und enth\u00e4lt die Registerkarten f\u00fcr die\n Modbus-Einrichtung.\n \n Abbildung 8.7: Konfigurationsfenster\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 442 / 1327\n \n 8.2.6 SPS Objekte\n 8.2.6.1 KONTAKTE\n Stellen Schalter oder Relaiskontakte dar. Sie werden durch den ihnen zugewiesenen variablen Buchstaben und die Nummer gesteuert.\n The variable letter can be B, I, or Q and the number can be up to a three digit number eg. %I2,\n@@ -22604,15 +22604,15 @@\n \u2022 TP - Wenn der Timer-Eingang auf wahr gepulst oder wahr gehalten wird, setzt der Timer den Ausgang auf wahr, bis der Timer herunterz\u00e4hlt. (einmalig)\n Die Zeitintervalle k\u00f6nnen in Vielfachen von 100 ms, Sekunden oder Minuten eingestellt werden.\n Es gibt auch Variablen f\u00fcr IEC-Timer, die in Vergleichs- oder Betriebsbl\u00f6cken gelesen und/oder beschrieben werden k\u00f6nnen.\n \u2022 %TMxxx.Q - Timer beendet (Boolesch, Lesen/Schreiben)\n \u2022 %TMxxx.P - Timer-Voreinstellung (Lesen/Schreiben)\n \u2022 %TMxxx.V - Timer-Wert (lesender Schreibvorgang)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 443 / 1327\n \n 8.2.6.3 ZEITGLIEDER (engl. timers)\n Repr\u00e4sentiert Countdown-Timer. Dies ist veraltet und wird durch IEC Timers ersetzt.\n Timer haben 4 Kontakte.\n \u2022 E - aktivieren (engl. enable) (Eingang) startet den Timer, wenn wahr, setzt zur\u00fcck, wenn er falsch\n@@ -22640,15 +22640,15 @@\n sein.\n Es gibt auch Variablen f\u00fcr Kippstufen, die in Vergleichs- oder Operationsbl\u00f6cken gelesen und/oder\n beschrieben werden k\u00f6nnen.\n \u2022 %Mxx.R - Kippstufe xx l\u00e4uft (boolesch, nur lesbar)\n \u2022 %Mxx.V - Monostabiler xx aktueller Wert (ganze Zahl, schreibgesch\u00fctzt)\n \u2022 %Mxx.P - Monostabile xx-Voreinstellung (Ganzzahl, Lesen oder Schreiben)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 444 / 1327\n \n 8.2.6.5 Z\u00c4HLER (engl. counters)\n Aufw\u00e4rts-/Abw\u00e4rtsz\u00e4hler darstellen.\n Es gibt 7 Kontakte:\n \u2022 R - reset (Eingabe) setzt die Anzahl auf 0 zur\u00fcck.\n@@ -22674,15 +22674,15 @@\n \u2022 +, - ,* , /, = (mathematische Standardzeichen)\n \u2022 < (kleiner als), > (gr\u00f6\u00dfer als), <= (kleiner oder gleich), >= (gr\u00f6\u00dfer oder gleich), <> (ungleich)\n \u2022 (, ) trennen in Gruppen Beispiel %IF1=2,&%IF2<5 im Pseudocode bedeutet, wenn %IF1 gleich 2\n ist und %IF2 kleiner als 5 ist, dann ist der Vergleich wahr. Beachten Sie das Komma, das die beiden\n Gruppen von Vergleichen trennt.\n \u2022 ^ (Exponent),% (Modul),& (und),| (oder),. \u2022 ABS (absolut), MOY (franz\u00f6sisch f\u00fcr Durchschnitt) ,AVG (Durchschnitt)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 445 / 1327\n \n Zum Beispiel ABS(%W2)=1, MOY(%W1,%W2)<3.\n In der Vergleichsgleichung sind keine Leerzeichen erlaubt. Zum Beispiel ist %C0.V>%C0.P ein g\u00fcltiger Vergleichsausdruck, w\u00e4hrend %C0.V > %CO.P kein g\u00fcltiger Ausdruck ist.\n Unten auf der Seite befindet sich eine Liste von Variablen, die zum Lesen von und Schreiben in Kontaktplanobjekten verwendet werden k\u00f6nnen. Wenn ein neuer Vergleichsblock ge\u00f6ffnet wird, achten\n Sie darauf, das Symbol # zu l\u00f6schen, wenn Sie einen Vergleich eingeben.\n@@ -22711,23 +22711,23 @@\n erhalten, bis Sie mit dem Variablenzuweisungsblock einen neuen Wert zuweisen. Der zuletzt zugewiesene Wert wird wiederhergestellt, wenn LinuxCNC gestartet wird.\n \n Die folgende Abbildung zeigt ein Zuweisungs- und ein Vergleichsbeispiel. %QW0 ist ein S32out-Bit und\n %IW0 ist ein S32in-Bit. In diesem Fall wird der HAL-Pin classicladder.0.s32out-00 auf einen Wert von 5\n gesetzt, und wenn der HAL-Pin classicladder.0.s32in-00 0 ist, wird der HAL-Pin classicladder.0.out-00\n auf True gesetzt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 8.8: Beispiel f\u00fcr Zuordnen/Vergleichen von mit SPS\n \n Abbildung 8.9: Beispiel f\u00fcr einen Zuweisungsausdruck\n \n 446 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 447 / 1327\n \n Abbildung 8.10: Beispiel f\u00fcr einen Vergleichsausdruck\n \n 8.2.6.8 SPULEN (engl. coils)\n Spulen stellen Relaisspulen dar. Sie werden durch den ihnen zugewiesenen variablen Buchstaben und\n@@ -22754,15 +22754,15 @@\n Warnung\n Wenn Sie einen NC-Kontakt mit einer NC-Spule verwenden, funktioniert die Logik (wenn die\n Spule erregt ist, wird der Kontakt geschlossen), aber das ist wirklich schwer zu verstehen!\n \n Eine JUMP COIL wird verwendet, um zu einem anderen Abschnitt zu springen, wie ein goto in der\n Programmiersprache BASIC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 448 / 1327\n \n Oben links im Fenster der Abschnittsanzeige sehen Sie ein kleines Beschriftungsfeld und ein l\u00e4ngeres\n Kommentarfeld daneben. Gehen Sie nun auf Editor\u2192\u00c4ndern und dann zur\u00fcck zu dem kleinen K\u00e4stchen, um einen Namen einzugeben.\n F\u00fcgen 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.\n Wenn Sie eine JUMP COIL platzieren, f\u00fcgen Sie sie an der \u00e4u\u00dfersten rechten Position ein und \u00e4ndern\n@@ -22792,15 +22792,15 @@\n \u2022 %Txx.V - Timer xx aktueller Wert (ganze Zahl, schreibgesch\u00fctzt f\u00fcr Benutzer)\n \u2022 %Txx.P - Timer xx Voreinstellung (ganze Zahl)\n \u2022 %TMxxx.Q - Timer xxx fertig (Boolesch, lesen/schreiben)\n \u2022 %TMxxx.P - Timer xxx Voreinstellung (ganze Zahl, Schreiblese)\n \u2022 %TMxxx.V - Timer xxx Wert (ganze Zahl, lesender Schreibzugriff)\n \u2022 %Mxx.R - Monostabiles xx l\u00e4uft (boolesch)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 449 / 1327\n \n \u2022 %Mxx.V - Monostabiler xx-Aktuellwert (Ganzzahl, nur vom Benutzer lesbar)\n \u2022 %Mxx.P - Monostabile xx-Voreinstellung (Ganzzahl)\n \u2022 %Cxx.D - Z\u00e4hler xx fertig (Boolesch, Benutzer schreibgesch\u00fctzt)\n \u2022 %Cxx.E - Z\u00e4hler xx leerer \u00dcberlauf (Boolean, nur vom Benutzer gelesen)\n@@ -22830,15 +22830,15 @@\n nur gel\u00f6scht werden, wenn sie aktiviert ist und die zugeh\u00f6rige Transitionsbedingung wahr ist.\n \u2022 Regel 3 : R3, Entwicklung aktiver Schritte - Die L\u00f6schung eines \u00dcbergangs f\u00fchrt gleichzeitig zum\n aktiven Zustand des/der unmittelbar folgenden Schrittes/Schritte und zum inaktiven Zustand des/der unmittelbar vorangehenden Schrittes/Schritte.\n \u2022 Regel 4 : R4, Gleichzeitige L\u00f6schung von \u00dcberg\u00e4ngen - Alle gleichzeitig gel\u00f6schten \u00dcberg\u00e4nge\n werden gleichzeitig gel\u00f6scht.\n \u2022 Regel 5 : R5, Gleichzeitiges Aktivieren und Deaktivieren eines Schrittes - Wenn w\u00e4hrend des Betriebs ein Schritt gleichzeitig aktiviert und deaktiviert wird, hat die Aktivierung Vorrang.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 450 / 1327\n \n Dies ist das Fenster des SEQUENTIAL-Editors. (Beginnend von oben links):\n Auswahlpfeil , Radiergummi\n Gew\u00f6hnlicher Schritt , Anfangsschritt (Start)\n Transition , Schritt und Transition\n@@ -22851,15 +22851,15 @@\n \u2022 STARTING STEP - a sequential program must have one. This is where the program will start.\n \u2022 TRANSITION - Dies zeigt die Variable an, die wahr sein muss, damit die Steuerung zum n\u00e4chsten\n Schritt \u00fcbergeht.\n \u2022 STEP AND TRANSITION - der Einfachheit halber kombiniert\n \u2022 TRANSITION LINK-DOWNSIDE - teilt den Logikfluss in eine von zwei m\u00f6glichen Linien auf, je nachdem, welcher der n\u00e4chsten Schritte zuerst wahr ist (denken Sie an die ODER-Logik)\n \u2022 TRANSITION LINK=UPSIDE - verbindet zwei (ODER) Logiklinien wieder zu einer\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 451 / 1327\n \n \u2022 PASS-THROUGH-LINK-DOWNSIDE - teilt den Logikfluss in zwei Zeilen auf, dass BEIDE wahr sein\n m\u00fcssen, um fortzufahren (Think AND logic)\n \u2022 PASS-THROUGH-LINK-UPSIDE - kombiniert zwei gleichzeitige (UND logische) Logiklinien wieder\n zusammen\n@@ -22894,27 +22894,27 @@\n \u2022 1 - Spulen lesen\n \u2022 2 - Eing\u00e4nge lesen\n \u2022 3 - Halteregister lesen\n \u2022 4 - Eingaberegister lesen\n \u2022 5 - einzelne Spulen schreiben\n \u2022 6 - Einzelnes Register schreiben\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 452 / 1327\n \n \u2022 8 - Echo-Test\n \u2022 15 - mehrere Spulen schreiben\n \u2022 16 - mehrere Register schreiben\n Wenn Sie beim Laden des ClassicLadder Benutzerprogramms keinen -- modmaster angeben, wird\n diese Seite nicht angezeigt.\n \n Abbildung 8.12: Modbus I/O-Konfiguration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 453 / 1327\n \n Abbildung 8.13: Modbus-Kommunikationskonfiguration\n \u2022 SERIAL PORT - F\u00fcr IP leer. F\u00fcr seriell der Ort/Name des seriellen Treibers z.B. /dev/ttyS0 ( oder\n /dev/ttyUSB0 f\u00fcr einen USB-zu-Seriell-Konverter).\n \u2022 SERIAL SPEED - Sollte auf Geschwindigkeit eingestellt sein, f\u00fcr die der Slave eingestellt ist - 300,\n@@ -22927,15 +22927,15 @@\n Slave nicht geantwortet hat.\n \u2022 MODBUS ELEMENT OFFSET - wird verwendet, um die Elementnummern um 1 zu kompensieren\n (f\u00fcr Hersteller, die Unterschiede nummerieren).\n \u2022 DEBUG LEVEL - Setzen Sie dies auf 0-3 (0, um das Drucken von Debug-Informationen neben NoResponse-Fehlern zu stoppen).\n \u2022 READ COILS/INPUTS MAP TO - W\u00e4hlen Sie, welche Variablen die gelesenen Spulen/Eing\u00e4nge aktualisieren sollen. (B oder Q).\n \u2022 WRITE COILS MAP TO - W\u00e4hlen Sie aus, von welchen Variablen, von denen Schreibspulen aktualisiert werden sollen (B, Q oder I).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 454 / 1327\n \n \u2022 READ REGISTERS/HOLDING - W\u00e4hlen Sie aus, welche Variablen durch das Lesen von Registern\n aktualisiert werden sollen (W oder QW).\n \u2022 WRITE REGISTERS MAP TO - W\u00e4hlen Sie aus, von welchen Variablen die Leseregister aktualisiert\n werden (W, QW oder IW).\n@@ -22970,15 +22970,15 @@\n Schlie\u00dfen des Konfigurationsfensters werden die Werte \u00fcbernommen, die Radio-Buttons gelten jedoch\n sofort).\n Um die Echo-Funktion zu verwenden, w\u00e4hlen Sie die Echo-Funktion und f\u00fcgen Sie die Slave-Nummer\n hinzu, die Sie testen m\u00f6chten. Sie m\u00fcssen keine Variablen angeben.\n Die Nummer 257 wird an die von Ihnen angegebene Slave-Nummer gesendet und der Slave sollte sie\n zur\u00fccksenden. Sie m\u00fcssen ClassicLadder in einem Terminal laufen lassen, um die Nachricht zu sehen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 455 / 1327\n \n 8.2.10 MODBUS-Einstellungen\n Seriell:\n \u2022 ClassicLadder verwendet das RTU-Protokoll (nicht ASCII).\n \u2022 8 Datenbits, keine Parit\u00e4t und 1 Stoppbit werden auch als 8-N-1 bezeichnet.\n@@ -23009,15 +23009,15 @@\n Weitere Informationen zum Modbus-Protokoll finden Sie im Internet.\n https://www.modbus.org/\n 8.2.10.2 Kommunikationsfehler\n Wenn ein Kommunikationsfehler auftritt, wird ein Warnfenster angezeigt (wenn die grafische Benutzeroberfl\u00e4che l\u00e4uft) und %E0 ist wahr. Modbus wird weiterhin versuchen, zu kommunizieren. Der\n %E0-Wert kann verwendet werden, um eine Entscheidung auf der Grundlage des Fehlers zu treffen.\n Ein Timer k\u00f6nnte verwendet werden, um die Maschine anzuhalten, wenn die Zeit abgelaufen ist, usw.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 456 / 1327\n \n 8.2.11 Fehlersuche bei Modbus-Problemen\n A good reference for the protocol: https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf.\n If you run linuxcnc/classicladder from a terminal, it will print the Modbus commands and slave responses.\n 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\u00fcckgabe von 1 (2 Byte breiten)\n@@ -23025,15 +23025,15 @@\n \n Abbildung 8.14: Modbus I/O-Register-Setup\n Hinweis in diesem Bild haben wir die Debug-Ebene auf 1 gesetzt, so dass Modbus-Nachrichten an das\n Terminal ausgegeben werden. Wir haben unsere Lese- und Schreibregister den %W-Variablen von\n ClassicLadder zugeordnet, so dass unsere zur\u00fcckgegebenen Daten in %W2 sind, wie in dem anderen\n Bild, in dem wir die Daten ab dem 2. Element zugeordnet haben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 457 / 1327\n \n Abbildung 8.15: Einrichtung der Modbus-Kommunikation\n \n 8.2.11.1 Anfrage\n Betrachten wir ein Beispiel f\u00fcr das Lesen eines Hold-Registers bei 8448 Decimal (0x2100 Hex).\n@@ -23059,15 +23059,15 @@\n (2\n 1 bis 125 (0x7D)\n Bytes)\n (2\n Automatisch\n Bytes) berechnet\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 458 / 1327\n \n Hier ist ein Beispiel f\u00fcr einen gesendeten Befehl, wie er im Terminal ausgedruckt wird (alles in Hex):\n INFO CLASSICLADDERModbus I/O module to send: Lgt=8 \u201dpy-reset\u201d\n \u201dReset\u201d\n \n \n \n Starten Sie nun Ihre Konfiguration und sie sollte so aussehen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 471 / 1327\n \n Abbildung 8.26: AXIS Notaus\n Beachten Sie, dass Sie in diesem Beispiel wie im wirklichen Leben den ferngesteuerten Notaus (simuliert durch das Kontrollk\u00e4stchen) deaktivieren m\u00fcssen, bevor der AXIS Notaus oder der externe\n Reset Sie in den AUS-Modus versetzt. Wenn der Not-Aus-Schalter auf dem AXIS-Bildschirm gedr\u00fcckt\n wurde, m\u00fcssen Sie ihn erneut dr\u00fccken, um ihn zu deaktivieren. Nach einem Notaus in AXIS k\u00f6nnen\n Sie keinen externen Reset durchf\u00fchren.\n \n 8.3.4 Beispiel f\u00fcr Timer/Bedienung\n In diesem Beispiel verwenden wir den Operate-Block, um der Timer-Voreinstellung einen Wert zuzuweisen, der davon abh\u00e4ngt, ob ein Eingang ein- oder ausgeschaltet ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 472 / 1327\n \n Abbildung 8.27: Beispiel f\u00fcr Timer/Bedienung\n In diesem Fall ist %I0 wahr, so dass der voreingestellte Wert des Timers 10 ist. W\u00e4re %I0 falsch, w\u00e4re\n der voreingestellte Zeitgeberwert 5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 473 / 1327\n \n Kapitel 9\n \n Fortgeschrittene Themen\n 9.1 Kinematiken\n@@ -23431,15 +23431,15 @@\n Es gibt bestimmte Maschinen, bei denen die Gelenke so angeordnet sind, dass sie mit den kinematischen Achsen \u00fcbereinstimmen (Gelenk 0 entlang der X-Achse, Gelenk 1 entlang der Y-Achse, Gelenk\n 2 entlang der Z-Achse); diese Maschinen nennt man Kartesische Maschinen (oder Maschinen mit Trivialkinematik). Diese Maschinen werden am h\u00e4ufigsten beim Fr\u00e4sen verwendet, sind aber in anderen\n Bereichen der Maschinensteuerung (z. B. Schwei\u00dfen: puma-typische Roboter) nicht sehr verbreitet.\n LinuxCNC unterst\u00fctzt Achsen mit Namen: X Y Z A B C U V W. Die X Y Z-Achsen beziehen sich normalerweise auf die \u00fcblichen 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\u00e4tzliche Koordinaten, die\n \u00fcblicherweise kolinear zu den X-Y-Z-Achsen angeordnet sind.\n 1 Kinematik: eine Zwei-Wege-Funktion, um aus dem kartesischen Raum in den Gelenkraum zu transformieren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 474 / 1327\n \n 9.1.2 Triviale Kinematik\n 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-CodeProgramm) auf den Gelenkraum (die tats\u00e4chlichen Aktoren der Maschine) trivial. Es handelt sich um\n eine einfache 1:1-Abbildung:\n pos->tran.x = joints[0];\n@@ -23490,15 +23490,15 @@\n bewerkstelligen, sofern die verwendeten Achsenbuchstaben keine L\u00fccken aufweisen.\n Etwas komplizierter wird es, wenn der Maschine ein oder mehrere Achsenbuchstaben fehlen. Das\n Problem der fehlenden Achsenbuchstaben wird durch die Verwendung des Modulparameters coordinates= mit dem Modul trivkins gel\u00f6st. Jeder angegebenen Koordinate werden fortlaufend Gelenknummern zugewiesen. Eine Drehmaschine kann mit coordinates=xz beschrieben werden. Die Gelenkzuweisungen lauten dann:\n 2 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\u00e4lt, ist die vorherige Behauptung falsch. Weil wir derzeit haben (Gelenk0 =\n X, Gelenk 1 = Z, Gelenk 2 = A), die davon ausgeht, dass Gelenk 1 = Y. Um dies in LinuxCNC zum Laufen zu bringen, definieren\n Sie einfach alle Achsen (XYZA), LinuxCNC verwendet dann eine einfache Schleife in HAL f\u00fcr nicht verwendete Y-Achse.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 475 / 1327\n \n joints[0] = pos->tran.x\n joints[1] = pos->tran.z\n \n Die Verwendung des Parameters coordinates= wird f\u00fcr Konfigurationen empfohlen, bei denen die Achsenbuchstaben weggelassen werden. Fu\u00dfnote:[ In der Vergangenheit unterst\u00fctzte das Modul trivkins\n@@ -23519,15 +23519,15 @@\n 9.1.3 Nicht-triviale Kinematik\n There can be quite a few types of machine setups (robots: puma, scara; hexapods etc.). Each of them is\n set up using linear and rotary joints. These joints don\u2019t usually match with the Cartesian coordinates,\n therefore we need a kinematics function which does the conversion (actually 2 functions: forward and\n inverse kinematics function).\n Zur Veranschaulichung der obigen Ausf\u00fchrungen werden wir eine einfache Kinematik namens Zweibein (eine vereinfachte Version des Dreibeins, das eine vereinfachte Version des Hexapods ist) analysieren.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 476 / 1327\n \n Abbildung 9.1: Zweibein-Einrichtung\n Das Zweibein (engl. bipod), um das es hier geht, besteht aus zwei Motoren, die an einer Wand angebracht sind und an denen ein Ger\u00e4t mit einem Draht aufgeh\u00e4ngt ist. Die Gelenke sind in diesem Fall\n die Abst\u00e4nde zwischen den Motoren und dem Ger\u00e4t (in der Abbildung mit AD und BD bezeichnet).\n Die Position der Motoren ist per Konvention festgelegt. Motor A befindet sich in (0,0), was bedeutet,\n@@ -23540,15 +23540,15 @@\n 9.1.3.1 Vorw\u00e4rts-Transformation\n 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)\n und das Dreieck (Dx,0), (Bx,0) und (Dx,Dy) bestimmt werden).\n Wir k\u00f6nnen leicht erkennen, dass:\n \n ebenso:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 477 / 1327\n \n Wenn wir das eine von dem anderen abziehen, erhalten wir:\n \n und deshalb:\n \n@@ -23580,15 +23580,15 @@\n 9.1.4 Details zur Implementierung\n Ein Kinematikmodul ist als HAL-Komponente implementiert und darf Pins und Parameter exportieren.\n Es besteht aus mehreren \u201dC\u201d-Funktionen (im Gegensatz zu HAL-Funktionen):\n int kinematicsForward(const double *joint, EmcPose *world,\n const KINEMATICS_FORWARD_FLAGS *fflags,\n KINEMATICS_INVERSE_FLAGS *iflags)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 478 / 1327\n \n Implementiert die forward kinematics function.\n int kinematicsInverse(const EmcPose * world, double *joints,\n const KINEMATICS_INVERSE_FLAGS *iflags,\n KINEMATICS_FORWARD_FLAGS *fflags)\n@@ -23623,15 +23623,15 @@\n int rtapi_app_main(void)\n void rtapi_app_exit(void)\n \n Dies sind die Standardfunktionen zum Auf- und Abbauen von RTAPI-Modulen.\n Wenn sie in einer einzigen Quelldatei enthalten sind, k\u00f6nnen Kinematikmodule mit halcompile kompiliert und installiert werden. Weitere Informationen finden Sie in der Manpage halcompile(1) oder\n im HAL-Handbuch.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 479 / 1327\n \n 9.1.4.1 Kinematikmodul unter Verwendung der Vorlage userkins.comp\n Eine weitere M\u00f6glichkeit, ein benutzerdefiniertes Kinematikmodul zu erstellen, ist die Anpassung der\n HAL Komponente userkins. Diese Vorlagenkomponente kann von einem Benutzer lokal ge\u00e4ndert und\n mit halcompile erstellt werden.\n@@ -23662,15 +23662,15 @@\n des Endeffektors in Bezug auf ein Referenzkoordinatensystem, wenn die Gelenkwinkel bekannt sind\n (vorw\u00e4rtsgerichtete Kinematik), sowie die komplexere umgekehrte Berechnung der erforderlichen\n Gelenkwinkel f\u00fcr eine bestimmte Position und Ausrichtung des Endeffektors in Bezug auf das Referenzkoordinatensystem (inverse Kinematik). Die mathematischen Standardwerkzeuge, die f\u00fcr diese\n Berechnungen verwendet werden, sind Matrizen, d. h. Tabellen mit Parametern und Formeln, die den\n Umgang mit den Rotationen und Translationen erleichtern, die bei der Berechnung der Vorw\u00e4rts- und\n R\u00fcckw\u00e4rtskinematik erforderlich sind.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 480 / 1327\n \n Detaillierte Kenntnisse der Mathematik sind f\u00fcr einen Serienroboter nicht erforderlich, da LinuxCNC\n ein Kinematikmodul bereitstellt, das einen Algorithmus namens \u201dgenserkins\u201d implementiert, um die\n Vorw\u00e4rts- und R\u00fcckw\u00e4rtskinematik f\u00fcr 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\n tun kann.\n@@ -23704,15 +23704,15 @@\n 1. alpha : positive oder negative Drehung (in Radiant) um die X-Achse des \u201daktuellen Koordinatensystems\u201d\n 2. a : positive distance, along X, between two joint axes specified in machine units (mm or inch)\n defined in the system\u2019s INI file.\n 3. d : positive oder negative L\u00e4nge entlang Z (auch in Maschineneinheiten)\n Die Parameters\u00e4tze werden immer in der gleichen Reihenfolge abgeleitet und ein Satz wird durch\n das Setzen des d-Parameters abgeschlossen. Dadurch bleibt die Z-Achse unseres CS nicht auf das\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 481 / 1327\n \n n\u00e4chste Gelenk ausgerichtet! Dies mag verwirrend erscheinen, aber wenn man sich an diese Regel\n h\u00e4lt, erh\u00e4lt man einen funktionierenden Satz von Parametern. Sobald der d-Parameter gesetzt ist,\n muss die X-Achse unseres CS auf die Achse des n\u00e4chsten Gelenks zeigen.\n \n@@ -23740,87 +23740,87 @@\n \n 9.2.8 Detailliertes Beispiel (RV-6SL)\n Im Folgenden wird eine Methode beschrieben, wie man die erforderlichen \u201dmodifizierten DH-Parameter\u201d\n f\u00fcr einen Mitsubishi RV-6SDL ableitet und wie man die Parameter in der HAL-Datei einstellt, um sie\n mit der \u201dgenserkins\u201d-Kinematik in LinuxCNC zu verwenden. Die erforderlichen Abmessungen werden\n am besten aus einer vom Hersteller des Roboters zur Verf\u00fcgung gestellten Ma\u00dfzeichnung entnommen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 482 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 483 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 484 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 485 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 486 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 487 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 488 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 489 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 490 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 491 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 492 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 493 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 494 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 495 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 496 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 497 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 498 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 499 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 500 / 1327\n \n 9.2.9 Danksagungen\n Vielen Dank an den Benutzer Aciera f\u00fcr den gesamten Text und die Grafiken f\u00fcr den RV-6SL-Roboter!\n \n 9.3 5-Achsen-Kinematik\n@@ -23848,29 +23848,29 @@\n CAD/CAM-Systeme werden in der Regel verwendet, um die 3D-CAD-Modelle des Werkst\u00fccks sowie\n die CAM-Daten f\u00fcr die Eingabe in die CNC-5-Achsen-Maschine zu erzeugen. Die Daten zur Werkzeugoder Fr\u00e4serposition (CL) setzen sich aus der Position der Fr\u00e4serspitze und der Ausrichtung des Fr\u00e4sers\n relativ zum Werkst\u00fcckkoordinatensystem zusammen. Zwei Vektoren, wie sie von den meisten CAMSystemen erzeugt werden und in Abb. 1 dargestellt sind, enthalten diese Informationen:\n \n Der K-Vektor entspricht dem dritten Vektor der Pose-Matrix E6 , die in der 6-Achsen-Roboterkinematik\n [3] verwendet wurde, und der Q-Vektor entspricht dem vierten Vektor von E6 . Vektor von E6 . In MASTERCAM zum Beispiel sind diese Informationen in der Zwischenausgabedatei \u201d.nci\u201d enthalten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 501 / 1327\n \n Abbildung 9.2: Standortdaten des Fr\u00e4sers\n \n 9.3.4 Translations- und Rotationsmatrizen\n Homogene Transformationen bieten eine einfache M\u00f6glichkeit, die Mathematik der Mehrachsenkinematik von Maschinen zu beschreiben. Eine Transformation des Raums H ist eine 4x4-Matrix und kann\n Translations- und Rotationstransformationen darstellen. Wird ein Punkt x,y,x durch einen Vektor u =\n {x,y,z,1}T beschrieben, so wird seine Transformation v durch das Matrixprodukt\n \n Es gibt vier grundlegende Transformationsmatrizen, auf die sich die 5-Achsen-Kinematik st\u00fctzen\n kann:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 502 / 1327\n \n Die Matrix T(a,b,c) impliziert eine Verschiebung in den Koordinatenrichtungen X, Y und Z um die\n Betr\u00e4ge a, b bzw. c. Die R-Matrizen implizieren Rotationen des Winkels theta um die X-, Y- bzw. ZKoordinatenachse. Die Symbole \u201dC\u201d und \u201dS\u201d beziehen sich auf die Kosinus- bzw. Sinusfunktionen.\n \n 9.3.5 Tisch Dreh-/Schwenkkonfigurationen mit 5 Achsen (engl. Table Rotary/Tilting 5-Axis Configurations)\n@@ -23878,15 +23878,15 @@\n montiert. Typischerweise werden zwei Formen verwendet:\n \u2022 Ein Drehtisch, der sich um die vertikale Z-Achse dreht (C-Drehung, sekund\u00e4r), ist auf einem Kipptisch montiert, der sich um die X- oder Y-Achse dreht (A- oder B-Drehung, prim\u00e4r). Das Werkst\u00fcck\n ist auf dem Drehtisch montiert.\n \u2022 Ein Kipptisch, der sich um die X- oder Y-Achse dreht (A- oder B-Drehung, sekund\u00e4r), ist auf einem\n Drehtisch montiert, der sich um die Z-Achse dreht (C-Drehung, prim\u00e4r), wobei das Werkst\u00fcck auf\n dem Kipptisch liegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 503 / 1327\n \n Abbildung 9.3: Allgemeine Konfiguration und Koordinatensysteme\n Eine mehrachsige Maschine kann als eine Reihe von Gliedern betrachtet werden, die durch Gelenke\n verbunden sind. Durch die Einbettung eines Koordinatenrahmens in jedes Glied der Maschine und\n die Verwendung homogener Transformationen k\u00f6nnen wir die relative Position und Orientierung zwischen diesen Koordinatenrahmen beschreiben\n@@ -23896,46 +23896,46 @@\n Im Allgemeinen kann eine solche Transformation wie folgt aussehen:\n \n wobei jede Matrix i-1 Aj eine Translationsmatrix T oder eine Rotationsmatrix R der Form (2,3) ist.\n Die Matrixmultiplikation ist ein einfacher Vorgang, bei dem die Elemente jeder Zeile der linken Matrix\n A mit den Elementen jeder Spalte der rechten Matrix B multipliziert und summiert werden, um ein\n Element der Ergebnismatrix C zu erhalten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 504 / 1327\n \n 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\n werden tats\u00e4chlich in einer Werkzeugmaschine verwendet.\n Zun\u00e4chst werden wir die Transformationen f\u00fcr die erste der oben erw\u00e4hnten Konfigurationen entwickeln, d. h. einen Tisch vom Typ Kippen/Drehen (trt) ohne Drehachsenversatz. Wir k\u00f6nnen ihr den\n Namen xyzac-trt-Konfiguration geben.\n Wir entwickeln auch die Transformationen f\u00fcr den gleichen Typ (xyzac-trt), aber mit rotierenden Achsenvers\u00e4tzen.\n Dann entwickeln wir die Transformationen f\u00fcr eine xyzbc-trt-Konfiguration mit Rotationsachsen-Offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 505 / 1327\n \n 9.3.5.1 Transformationen f\u00fcr eine xyzac-trt-Werkzeugmaschine mit Werkst\u00fcckversatz\n \n Abbildung 9.4: vismach-Modell von xyzac-trt mit \u00fcbereinstimmenden Drehachsen\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 506 / 1327\n \n Abbildung 9.5: Kipp-/Drehkonfiguration des Tisches\n Die Transformation kann durch die sequentielle Multiplikation der Matrizen definiert werden:\n \n wobei die Matrizen wie folgt aufgebaut sind:\n \n In diesen Gleichungen definieren Lx , Ly , Lz die Verschiebungen des Drehpunktes der beiden Drehachsen A und C relativ zum Ursprung des Werkst\u00fcckkoordinatensystems. Au\u00dferdem sind Px , Py , Pz die\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 507 / 1327\n \n relativen Abst\u00e4nde des Drehpunkts zur Position der Fr\u00e4serspitze, die auch als \u201dGelenkkoordinaten\u201d\n des Drehpunkts bezeichnet werden k\u00f6nnen. Der Drehpunkt liegt im Schnittpunkt der beiden Drehachsen. Die Vorzeichen der Terme SA und SC unterscheiden sich von denen in [2,3], da dort die Tischdrehungen relativ zu den Werkst\u00fcckkoordinatenachsen negativ sind (beachten Sie, dass sin(-theta) =\n -sin(theta), cos(-theta) = cos(theta)).\n Multipliziert mit (5) ergibt sich das Ergebnis:\n@@ -23954,58 +23954,58 @@\n schreiben:\n \n Der Vektor auf der rechten Seite kann auch als das Produkt einer Matrix und eines Vektors geschrieben\n werden, was folgendes ergibt:\n \n Dies kann wie folgt erweitert werden\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 508 / 1327\n \n was die Vorw\u00e4rtstransformation der Kinematik darstellt.\n Wir k\u00f6nnen P aus Gleichung (13) als \u201dP = (Q AP )-1 * Q\u201d berechnen. Die quadratische Matrix ist eine homogene 4x4-Matrix, die eine Rotationsmatrix R und einen Translationsvektor q enth\u00e4lt, deren\n Umkehrung wie folgt geschrieben werden kann:\n \n wobei R^T die Transponierung von R ist (Zeilen und Spalten vertauscht). Wir erhalten also:\n \n Die gew\u00fcnschten Gleichungen f\u00fcr die inverse Transformation der Kinematik k\u00f6nnen somit wie folgt\n geschrieben werden:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 509 / 1327\n \n 9.3.5.2 Transformationen f\u00fcr eine xyzac-trt-Maschine mit Drehachsenverschiebungen\n \n Abbildung 9.6: Vismach-Modell von xyzac-trt mit Rotationsachsenversatz (positiv)\n Wir haben es hier mit einer erweiterten Konfiguration zu tun, bei der sich die Kippachse und die\n Drehachse nicht in einem Punkt schneiden, sondern einen Versatz Dy aufweisen. Au\u00dferdem gibt es\n zwischen den beiden Koordinatensystemen Ows und Owp aus Abb. 2 einen z-Versatz, der Dz genannt\n wird. Ein Vismach-Modell ist in Abb. 5 dargestellt, und die Offsets sind in Abb. 6 gezeigt (positive\n Offsets in diesem Beispiel). Um die Konfiguration zu vereinfachen, werden die Vers\u00e4tze Lx , Ly , Lz des\n vorherigen Falls nicht ber\u00fccksichtigt. Sie sind wahrscheinlich nicht notwendig, wenn man die G54\n Offsets in LinuxCNC mit Hilfe der \u201dtouch of\u201d-Funktion verwendet.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 510 / 1327\n \n Abbildung 9.7: Kipp-/Drehkonfiguration des Tisches xyzac-trt, mit Achsenversatz\n Die Transformation kann durch die sequentielle Multiplikation der Matrizen definiert werden:\n \n wobei die Matrizen wie folgt aufgebaut sind:\n \n In diesen Gleichungen definieren Dy , Dz die Verschiebungen des Drehpunktes der Drehachsen A relativ\n zum Ursprung des Werkst\u00fcckkoordinatensystems. Au\u00dferdem sind Px , Py , Pz die relativen Abst\u00e4nde\n des Drehpunkts zur Position der Schneidenspitze, die auch als \u201dGelenkkoordinaten\u201d des Drehpunkts\n bezeichnet werden k\u00f6nnen. Der Drehpunkt liegt auf der Drehachse A.\n Bei Multiplikation gem\u00e4\u00df (18) erhalten wir:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 511 / 1327\n \n Wir k\u00f6nnen nun die dritte Spalte dieser Matrix mit unserem gegebenen Werkzeugorientierungsvektor\n K gleichsetzen, d. h.:\n \n Aus diesen Gleichungen lassen sich die Drehwinkel thetaA , thetaC ermitteln. Aus der dritten Zeile\n@@ -24024,42 +24024,42 @@\n was die Vorw\u00e4rtstransformation der Kinematik darstellt.\n Wir k\u00f6nnen P aus Gleichung (25) als \u201dP = (Q AP )-1 * Q\u201d l\u00f6sen, indem wir wie zuvor (15) verwenden. Wir\n erhalten somit:\n \n Die gew\u00fcnschten Gleichungen f\u00fcr die inverse Transformation der Kinematik k\u00f6nnen somit wie folgt\n geschrieben werden:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 512 / 1327\n \n 9.3.5.3 Transformationen f\u00fcr eine xyzbc-trt-Maschine mit Drehachsenverschiebungen\n \n Abbildung 9.8: Vismach-Modell von xyzbc-trt mit Rotationsachsenversatz (negativ)\n Wir haben es hier wieder mit einer erweiterten Konfiguration zu tun, bei der sich die Kippachse (um\n die y-Achse) und die Drehachse nicht in einem Punkt schneiden, sondern einen Versatz Dx haben. Au\u00dferdem gibt es zwischen den beiden Koordinatensystemen Ows und Owp aus Abb. 2 einen z-Versatz, der\n Dz genannt wird. Ein Vismach-Modell ist in Abb. 7 dargestellt (negative Vers\u00e4tze in diesem Beispiel),\n und die positiven Vers\u00e4tze sind in Abb. 8 dargestellt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 513 / 1327\n \n Abbildung 9.9: Kipp-/Drehkonfiguration des Tisches xyzbc-trt, mit Achsenversatz\n Die Transformation kann durch die sequentielle Multiplikation der Matrizen definiert werden:\n \n wobei die Matrizen wie folgt aufgebaut sind:\n \n In diesen Gleichungen definieren Dx , Dz die Verschiebungen des Drehpunkts der Drehachsen B relativ\n zum Ursprung des Werkst\u00fcckkoordinatensystems. Au\u00dferdem sind Px , Py , Pz die relativen Abst\u00e4nde\n des Drehpunkts zur Position der Schneidenspitze, die auch als \u201dGelenkkoordinaten\u201d des Drehpunkts\n bezeichnet werden k\u00f6nnen. Der Drehpunkt liegt auf der B-Drehachse.\n Bei Multiplikation gem\u00e4\u00df (29) erhalten wir:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 514 / 1327\n \n Wir k\u00f6nnen nun die dritte Spalte dieser Matrix mit unserem gegebenen Werkzeugorientierungsvektor\n K gleichsetzen, d. h.:\n \n Aus diesen Gleichungen lassen sich die Drehwinkel thetaB , thetaC ermitteln. Aus der dritten Zeile\n@@ -24078,15 +24078,15 @@\n was die Vorw\u00e4rtstransformation der Kinematik darstellt.\n Wir k\u00f6nnen P aus Gleichung (37) als \u201dP = (Q AP )-1 * Q\u201d l\u00f6sen.\n Mit dem gleichen Ansatz wie zuvor, erhalten wir:\n \n Die gew\u00fcnschten Gleichungen f\u00fcr die inverse Transformation der Kinematik k\u00f6nnen somit wie folgt\n geschrieben werden:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 515 / 1327\n \n 9.3.6 Beispiele f\u00fcr Dreh-/Kipptische\n LinuxCNC enth\u00e4lt Kinematik-Module f\u00fcr die \u201dxyzac-trt\u201d und \u201dxyzbc-trt\u201d Topologien in der Mathematik oben beschrieben. F\u00fcr interessierte Benutzer ist der Quellcode im Git-Baum im Verzeichnis\n \u201dsrc/emc/kinematics/\u201d verf\u00fcgbar.\n Beispielkonfigurationen f\u00fcr xyzac-trt und xyzbc-trt befinden sich im Verzeichnis Beispielkonfigurationen (configs/sim/axis/vismach/5axis/table-rotary-tilting/).\n@@ -24122,15 +24122,15 @@\n net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset\n \n wo:\n :tool-offset ---------------- Signalname\n motion.tooloffset.z --------- Ausgang HAL-Pin von LinuxCNC Bewegungsmodul\n xyzac-trt-kins.tool-offset -- Eingang HAL-Pin zu xyzac-trt-kins\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 516 / 1327\n \n 9.3.7 Kundenspezifische Kinematik-Komponenten\n LinuxCNC implementiert Kinematik mit einer HAL-Komponente, die beim Starten von LinuxCNC geladen wird. Die h\u00e4ufigste Kinematik-Modul, trivkins, implementiert Identit\u00e4t (trivial) Kinematik, wo\n es eine eins-zu-eins-Korrespondenz zwischen einer Achse Koordinate Buchstaben und einem Motor\n Gelenk. Zus\u00e4tzliche Kinematik-Module f\u00fcr komplexere Systeme (einschlie\u00dflich \u201dxyzac-trt\u201d und \u201dxyzbctrt\u201d oben beschrieben) sind verf\u00fcgbar.\n@@ -24158,29 +24158,29 @@\n verwendet werden, erstellt werden. Diese Pins k\u00f6nnen mit einem Signal zur dynamischen Steuerung\n verbunden werden oder einmalig mit HAL-Verbindungen wie:\n # Offset-Parameter einstellen\n net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset\n setp xyzac-trt-kins.y-versatz 0\n setp xyzac-trt-kins.z-versatz 20\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9.3.8 Abbildungen\n \n Abbildung 9.10: Kipp-/Drehkonfiguration des Tisches\n \n 517 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Abbildung 9.11: Spindel-/Tischkippkonfiguration\n \n 518 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 519 / 1327\n \n Abbildung 9.12: Kipp-/Drehkonfiguration der Spindel\n \n 9.3.9 VERWEISE\n 1. A Postprocessor Based on the Kinematics Model for General Five-Axis machine Tools: C-H She,\n@@ -24197,15 +24197,15 @@\n (Typ1) und (optional) eine vom Benutzer bereitgestellte Kinematikmethode (Typ2). F\u00fcr die Typ1Methode wird in der Regel die Identit\u00e4tskinematik verwendet.\n Die Switchkins-Funktionalit\u00e4t kann f\u00fcr Maschinen verwendet werden, bei denen eine Steuerung der\n Gelenke nach der Referenzfahrt w\u00e4hrend des Einrichtens erforderlich ist oder um Bewegungen in der\n N\u00e4he von Singularit\u00e4ten aus dem G-Code zu vermeiden. Solche Maschinen verwenden f\u00fcr die meisten\n Vorg\u00e4nge spezifische Kinematikberechnungen, k\u00f6nnen aber f\u00fcr die Steuerung einzelner Gelenke nach\n der Referenzfahrt auf Identit\u00e4tskinematik umgestellt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 520 / 1327\n \n Die Auswahl des Kinematik-Typs erfolgt \u00fcber einen Motion-Modul-HAL-Pin, der \u00fcber ein G-CodeProgramm oder \u00fcber interaktive MDI-Befehle aktualisiert werden kann. Die halui-Bestimmungen f\u00fcr\n die Aktivierung von MDI-Befehlen k\u00f6nnen verwendet werden, um die Auswahl des Kinematik-Typs\n \u00fcber Hardware-Steuerungen oder ein virtuelles Panel (PyVCP, GladeVCP, etc.) zu erm\u00f6glichen.\n Wenn eine Kinematik Typ ge\u00e4ndert wird, muss der G-Code auch Befehle zu zwingen Synchronisation des Interpreters und Bewegung Teile von LinuxCNC. Typischerweise wird ein HAL-Pin read Befehl\n@@ -24236,15 +24236,15 @@\n KINEMATICS = genhexkins coordinates=xyzabc\n # custom identity ordering: joint0==c, joint1==b, ...\n KINEMATICS = genhexkins coordinates=cbazyx\n \n Anmerkung\n Wenn der Parameter coordinates= weggelassen wird, lauten die Standard-Zuordnungen der Gelenkbuchstaben joint0==x,joint1=y,\u2026.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 521 / 1327\n \n Die Gelenkzuweisungen f\u00fcr Identit\u00e4ts-Kinematiken bei Verwendung des Koordinatenparameters sind\n identisch mit denen f\u00fcr das Modul trivkins. Die Duplizierung von Achsenbuchstaben zur Zuweisung\n mehrerer Gelenke f\u00fcr einen Koordinatenbuchstaben ist jedoch im Allgemeinen nicht f\u00fcr serielle oder\n parallele Kinematiken (wie genserkins, pumakins, genhexkins usw.) geeignet, bei denen es keine einfache Beziehung zwischen Gelenken und Koordinaten gibt.\n@@ -24277,15 +24277,15 @@\n 9.4.4.1 HAL-Verbindungen\n Die Switchkins-Funktionalit\u00e4t wird durch den Pin motion.switchkins-type aktiviert. Normalerweise\n wird dieser Pin von einem analogen Ausgangspin wie motion.analog-out-03 gespeist, so dass er durch\n M68-Befehle gesetzt werden kann. Beispiel:\n net :kinstype-select <= motion.analog-out-03\n net :kinstype-select => motion.switchkins-type\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 522 / 1327\n \n 9.4.4.2 G-/M-Code-Befehle\n Die Auswahl des Kinstype wird verwaltet \u00fcber G-Code-Sequenzen wie:\n ...\n M68 E3 Q1 ;analog-out-03 aktualisieren, um Kinstype 1 auszuw\u00e4hlen\n@@ -24322,15 +24322,15 @@\n LinuxCNC Bahnplanung verwendet Grenzen f\u00fcr die Position (min, max), Geschwindigkeit und Beschleunigung f\u00fcr jede anwendbare Koordinaten-Buchstaben in der Konfiguration INI-Datei angegeben. Beispiel f\u00fcr den Buchstaben L (im Satz XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 523 / 1327\n \n Die angegebenen INI-Datei-Grenzwerte gelten f\u00fcr die Standardkinematik vom Typ 0, die beim Start\n aktiviert wird. Beim Umschalten auf eine andere Kinematik sind diese Grenzen m\u00f6glicherweise nicht\n anwendbar. Da jedoch beim Umschalten der Kinematik eine Synchronisierung zwischen Interpreter\n und Bewegung erforderlich ist, k\u00f6nnen INI-HAL-Pins verwendet werden, um Grenzwerte f\u00fcr einen\n@@ -24374,15 +24374,15 @@\n 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\u00e4tskinematik (Typ1)\n umgeschaltet werden kann, um einzelne Gelenke mit den herk\u00f6mmlichen Buchstaben aus dem Satz\n XYZABCUVW zu manipulieren. Die Einstellungen in der INI-Datei ([AXIS_L]) sind beim Betrieb mit\n Identit\u00e4tskinematik (Typ1) nicht anwendbar. Um diesem Anwendungsfall gerecht zu werden, k\u00f6nnen\n die Benutzer-M-code-Skripte wie folgt gestaltet werden:\n M129 (Umschalten auf Identit\u00e4tstyp1)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 524 / 1327\n \n 1. INI-Datei lesen und auswerten (\u201dparsen\u201d)\n 2. hal: setzt die INI-HAL Grenzstifte f\u00fcr jeden Achsenbuchstaben ([AXIS_L]) entsprechend der identit\u00e4tsbezogenen Gelenknummer INI-Datei ([JOINT_N])\n 3. HAL: setp motion.switchkins-type 1\n 4. MDI: Ausf\u00fchren eines Synchronisations-G-Codes (M66E0L0)\n@@ -24409,15 +24409,15 @@\n 2. 5axis/table-rotary-tilting/xyzbc-trt.ini (xyzac-trt-kins)\n 3. 5axis/bridgemill/5axis.ini (5axiskins)\n 4. scara/scara.ini (scarakins)\n 5. puma/puma560.ini (genserkins)\n 6. puma/puma.ini (pumakins)\n 7. hexapod-sim/hexapod.ini (genhexkins)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 525 / 1327\n \n 9.4.6 Kinematische Bestimmungen des Benutzers\n Benutzerdefinierte Kinematiken k\u00f6nnen auf Run-In-Place (\u201dRIP\u201d) 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\n Kinematik mit kinstype==2 bereitzustellen.\n Die benutzerdefinierte Kinematikdatei kann bei rt-preempt-Implementierungen aus den Out-of-TreeQuellen kompiliert werden oder bei rtai-Systemen durch Ersetzen der In-Tree-Vorlagendatei (src/emc/kinematics/userkfuncs.c).\n@@ -24443,15 +24443,15 @@\n von Konfigurationseinstellungen.\n Nach dem Aufruf von switchkinsSetup() pr\u00fcft rtapi_app_main() die \u00fcbergebenen Parameter, erstellt\n eine HAL Komponente und ruft dann die f\u00fcr jeden Kinstype (0,1,2) identifizierte Setup-Routine auf.\n Jede Kinstype (0,1,2) Setup-Routine kann (optional) HAL Pins erzeugen und auf Standardwerte setzen.\n Wenn alle Setup-Routinen abgeschlossen sind, gibt rtapi_app_main() hal_ready() f\u00fcr die Komponente\n aus, um die Erstellung des Moduls abzuschlie\u00dfen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 526 / 1327\n \n 9.5 PID-Abstimmung (engl. tuning)\n 9.5.1 PID-Regler (engl. PID controller)\n A proportional-integral-derivative controller (PID controller) is a common feedback loop component\n in industrial control systems. 3\n@@ -24485,15 +24485,15 @@\n Ein PID-Regler kann zur Regelung jeder messbaren Gr\u00f6\u00dfe verwendet werden, die durch die Beeinflussung einer anderen Prozessgr\u00f6\u00dfe beeinflusst werden kann. Er kann zum Beispiel zur Regelung\n von Temperatur, Druck, Durchfluss, chemischer Zusammensetzung, Geschwindigkeit oder anderen\n Variablen eingesetzt werden. Ein Beispiel f\u00fcr einen Prozess au\u00dferhalb der Industrie, bei dem eine\n grobe PID-Regelung zum Einsatz kommt, ist die Geschwindigkeitsregelung von Autos.\n Einige Regelsysteme ordnen PID-Regler in Kaskaden oder Netzwerken an. Das hei\u00dft, ein \u201dMaster\u201dRegler erzeugt Signale, die von \u201dSlave\u201d-Reglern verwendet werden. Eine h\u00e4ufige Situation sind Motorsteuerungen: Oft soll der Motor eine geregelte Drehzahl haben, wobei der \u201dSlave\u201d-Regler (oft in einen\n 3 This Subsection is taken from an much more extensive article found at https://en.wikipedia.org/wiki/PID_controller\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 527 / 1327\n \n Frequenzumrichter eingebaut) die Drehzahl direkt auf der Grundlage eines proportionalen Eingangs\n steuert. Dieser Slave-Eingang wird vom Ausgang des Master-Reglers gespeist, der auf der Grundlage\n einer verwandten Variablen regelt.\n 9.5.1.2 Theorie\n@@ -24531,15 +24531,15 @@\n weisen einen gewissen Grad an Nichtlinearit\u00e4t auf, so dass Parameter, die unter Volllastbedingungen\n gut funktionieren, beim Anfahren des Prozesses im Leerlauf nicht funktionieren. In diesem Abschnitt\n werden einige herk\u00f6mmliche manuelle Methoden zur Regelkreisabstimmung beschrieben.\n Es gibt mehrere Methoden zur Abstimmung einer PID-Schleife. Die Wahl der Methode h\u00e4ngt weitgehend davon ab, ob die Schleife f\u00fcr die Abstimmung \u201doffline\u201d genommen werden kann oder nicht,\n sowie von der Reaktionsgeschwindigkeit des Systems. Wenn das System offline geschaltet werden\n kann, besteht die beste Abstimmungsmethode oft darin, das System einer sprunghaften \u00c4nderung\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 528 / 1327\n \n des Eingangs zu unterziehen, den Ausgang als Funktion der Zeit zu messen und diese Reaktion zur\n Bestimmung der Regelparameter zu verwenden.\n Einfache Methode Wenn das System am Netz bleiben muss, besteht eine Abstimmungsmethode\n darin, zun\u00e4chst die Werte f\u00fcr I und D auf Null zu setzen. Erh\u00f6hen Sie den P-Wert, bis der Ausgang\n@@ -24615,15 +24615,15 @@\n 9.6 Neuzuordnung (engl. remap) f\u00fcr das Erweitern von G-Code\n 9.6.1 Einf\u00fchrung: Erweiterung des RS274NGC-Interpreters durch Remapping von Codes\n 9.6.1.1 Eine Definition: Neuzuordnung von Codes\n Mit \u201dNeuzuordnung\u201d (engl. Remapping) von Codes meinen wir eine der folgenden Optionen:\n 1. Definition der Semantik neuer - d.h. derzeit nicht zugewiesener - M- oder G-Codes\n 2. Definieren Sie die Semantik eines - derzeit begrenzten - Satzes bestehender Codes neu.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 529 / 1327\n \n 9.6.1.2 Warum sollten Sie den RS274NGC Interpreter erweitern?\n 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.\n In particular, some of these codes implement a fixed sequence of steps to be executed. While some of\n these, like M6, can be moderately configured by activating or skipping some of these steps through\n@@ -24659,15 +24659,15 @@\n procedure.\n This glue code is impossible to write as an O-word procedure itself, since the RS274NGC language\n lacks the introspective capabilities and access into interpreter internal data structures to achieve\n the required effect. Doing the glue code in - again - C/C+\\+ would be an inflexible and therefore\n unsatisfactory solution.\n Wie sich Embedded Python einf\u00fcgt Um eine einfache Situation einfach und eine komplexe Situation l\u00f6sbar zu machen, wird das Problem des Glue Codes als Zwischenebene wie folgt angegangen:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 530 / 1327\n \n \u2022 For simple situations, a built-in glue procedure (argspec) covers most common parameter passing\n requirements.\n \u2022 For remapping T,M6,M61,S,F there is some standard Python glue which should cover most situations, see Standard Glue.\n \u2022 For more complex situations, one can write your own Python glue to implement new behavior.\n@@ -24701,15 +24701,15 @@\n M-codes section.\n \u2022 Informationen zu unbelegten G-Codes finden Sie hier.\n \u2022 Existing codes that can be reassigned are listed in the remappable codes section.\n Derzeit gibt es zwei vollst\u00e4ndige, nur in Python verf\u00fcgbare Remaps, die in stdglue.py verf\u00fcgbar sind:\n \u2022 ignore_m6\n \u2022 index_lathe_tool_with_wear\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 531 / 1327\n \n Diese sind f\u00fcr die Verwendung mit Drehmaschinen gedacht. Drehb\u00e4nke verwenden nicht M6, um die\n Werkzeuge zu indexieren, sondern den Befehl T.\n This remap also adds wear offsets to the tool offset, e.g. T201 would index to tool 2 (with tool 2\u2019s tool\n offset) and adds wear offset 1. In the tool table, tools numbers above 10000 are wear offsets, e.g. in\n@@ -24744,15 +24744,15 @@\n of which might be required, others might be optional. We have the following options to feed values to\n the procedure:\n 1. Extracting words from the current block and pass them to the procedure as parameters (like\n X22.34 or P47),\n 2. referring to INI file variables,\n 3. referring to global variables (like #2200 = 47.11 or #<_global_param> = 315.2).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 532 / 1327\n \n The first method is preferred for parameters of dynamic nature, like positions. You need to define\n which words on the current block have any meaning for your new code, and specify how that is passed\n to the NGC procedure. Any easy way is to use the argspec statement. A custom prolog might provide\n better error messages.\n@@ -24788,15 +24788,15 @@\n block are ignored with respect to the M400 code. If the P word is not present, fail execution with an\n error.\n \u2022 When an M400 code is encountered, execute myprocedure.ngc along the other modal group 10 Mcodes as per order of execution.\n \u2022 The value of P, and Q are available in the procedure as local named parameters. The may be referred\n to as #

and #. The procedure may test whether the Q word was present with the EXISTS built\n in function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 533 / 1327\n \n Es wird erwartet, dass die Datei myprocedure.ngc im Verzeichnis [DISPLAY]NC_FILES oder [RS274NGC]SUBR\n existiert.\n Eine ausf\u00fchrliche Erl\u00e4uterung der REMAP (engl. f\u00fcr Neuzuordnung)-Parameter finden Sie im folgenden Referenzteil.\n \n@@ -24836,15 +24836,15 @@\n epilog=\n After executing an ngc procedure, call this Python function. The function is expected to be defined\n in the module_basename.remap module. Optional.\n The python, prolog and epilog options require the Python Interpreter plugin to be configured, and\n appropriate Python functions to be defined there so they can be referred to with these options.\n The syntax for defining a new code, and redefining an existing code is identical.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 534 / 1327\n \n 9.6.3.2 Useful REMAP option combinations\n Note that while many combinations of argspec options are possible, not all of them make sense. The\n following combinations are useful idioms:\n argspec= ngc= modalgroup=_\n@@ -24883,15 +24883,15 @@\n Words DEIJKPQR have no predefined function and are recommended for use as argspec parameters.\n ABCDEFHIJKPQRSTUVWXYZ\n Defines a required word parameter: an uppercase letter specifies that the corresponding word\n must be present in the current block. The word \u0300s value will be passed as a local named parameter\n with a corresponding name. If the @ character is present in the argspec, it will be passed as\n positional parameter, see below.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 535 / 1327\n \n abcdefhijkpqrstuvwxyz\n Defines an optional word parameter: a lowercase letter specifies that the corresponding word\n may be present in the current block. If the word is present, the word\u2019s value will be passed as a\n local named parameter. If the @ character is present in the argspec, it will be passed as positional\n@@ -24928,15 +24928,15 @@\n o endsub\n M2\n \n \u2022 Executing M400 will fail with the message user-defined M400: missing: P.\n \u2022 Executing M400 P123 will display P word=123.000000.\n \u2022 Executing M400 P123 Q456 will display P word=123.000000 and Q word set: 456.000000\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 536 / 1327\n \n Example for positional parameter passing to NGC procedures Assume the code is defined as\n REMAP=M410 modalgroup=10 argspec=@PQr ngc=m410\n and m410.ngc looks as follows:\n o sub\n@@ -24978,15 +24978,15 @@\n self.execute()).\n Angenommen, die Definition lautet wie folgt (Anmerkung: Hier wird argspec nicht verwendet):\n REMAP=G88.1 modalgroup=1 py=involute\n The involute function in python/remap.py listed below does all word extraction from the current\n block directly. Note that interpreter errors can be translated to Python exceptions. Remember this is\n readahead time - execution time errors cannot be trapped this way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 537 / 1327\n \n import sys\n import traceback\n from math import sin,cos\n from interpreter import *\n@@ -25029,15 +25029,15 @@\n except InterpreterException,e:\n msg = \u201d%d: \u2019%s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n return msg\n return INTERP_OK\n \n Die bisher beschriebenen Beispiele finden Sie in \u201dconfigs/sim/axis/remap/getting-started\u201d mit vollst\u00e4ndigen Arbeitskonfigurationen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 538 / 1327\n \n 9.6.4 Aktualisieren einer bestehenden Konfiguration f\u00fcr die Neuzuordnung\n Die Mindestvoraussetzungen f\u00fcr die Verwendung von \u201dREMAP\u201d-Anweisungen sind wie folgt:\n \u2022 The Python plug in must be activated by specifying a [PYTHON]TOPLEVEL=\n in the INI file.\n@@ -25078,15 +25078,15 @@\n of the interpreter.\n 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,\n die n\u00f6tig sind, um den Interpreter und die Task bei Laune zu halten.\n However, this does not affect the processing of tool change-related commands in task and iocontrol.\n This means when we execute step 6b this will still cause iocontrol to do its thing.\n Decisions, decisions:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 539 / 1327\n \n \u2022 M\u00f6chten wir eine O-Wort-Prozedur verwenden oder alles in Python-Code tun?\n \u2022 Ist die \u201diocontrol\u201d-HAL-Sequenz (tool-prepare/tool-prepared und tool-change/tool-changed Pins) gut\n genug oder brauchen wir eine andere Art von HAL-Interaktion f\u00fcr unseren Werkzeugwechsler (z.B.:\n mehr beteiligte HAL-Pins mit einer anderen Interaktionssequenz)?\n@@ -25124,15 +25124,15 @@\n For the sake of documentation, we\u2019ll disable these iocontrol sequences, and roll our own - the result\n will look and feel like the existing interaction, but now we have complete control over them because\n they are executed in our own O-word procedure.\n So what we\u2019ll do is use some motion.digital-* and motion.analog-* pins, and the associated M62\n .. M68 commands to do our own HAL interaction in our O-word procedure, and those will effectively\n replace the iocontrol tool-prepare/tool-prepared and tool-change/tool-changed sequences. So we\u2019ll\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 540 / 1327\n \n define our pins replacing existing iocontrol pins functionally, and go ahead and make the iocontrol\n interactions a loop. We\u2019ll use the following correspondence in our example:\n iocontrol pin correspondence in the examples\n iocontrol.0 pin\n@@ -25182,15 +25182,15 @@\n prolog=change_prolog ngc=change epilog=change_epilog\n \n So the prolog covering steps 1 and 2 would look like so - we decide to pass a few variables to\n the remap procedure which can be inspected and changed there, or used in a message. Those are:\n tool_in_spindle, selected_tool (tool numbers) and their respective tooldata indices current_pocket\n and selected_pocket:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 541 / 1327\n \n Anmerkung\n Die inzwischen nicht mehr verwendeten Namen selected_pocket und current_pocket verweisen\n auf einen sequentiellen Werkzeugdatenindex f\u00fcr Werkzeugelemente, die aus einer Werkzeugtabelle\n ([EMCIO]TOOL_TABLE) oder \u00fcber eine Werkzeugdatenbank ([EMCIO]DB_PROGRAM) geladen werden.\n@@ -25237,15 +25237,15 @@\n # cause a sync()\n self.tool_change_flag = True\n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 542 / 1327\n \n except Exception, e:\n return \u201dM6/change_epilog: %s\u201d % (e)\n \n This replacement M6 is compatible with the built in code, except steps 3-5 need to be filled in with\n@@ -25279,15 +25279,15 @@\n \u2022 M6 (change_prolog): #, #, #, #\n \u2022 M61 (settool_prolog): # , #\n \u2022 S (setspeed_prolog): #\n \u2022 F (setfeed_prolog): #\n If you have specific needs for extra parameters to be made visible, that can simply be added to the\n prolog - practically all of the interpreter internals are visible to Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 543 / 1327\n \n 9.6.5.6 Making minimal changes to the built in codes, including M6\n Remember that normally remapping a code completely disables all internal processing for that code.\n However, in some situations it might be sufficient to add a few codes around the existing M6 built in\n implementation, like a tool length probe, but other than that retain the behavior of the built in M6.\n@@ -25336,15 +25336,15 @@\n cblock = self.blocks[self.remap_level]\n if not cblock.t_flag:\n return \u201dT requires a tool number\u201d\n tool\n \n = cblock.t_number\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 544 / 1327\n \n if tool:\n (status, pocket) = self.find_tool_pocket(tool)\n if status != INTERP_OK:\n return \u201dT%d: pocket not found\u201d % (tool)\n@@ -25392,15 +25392,15 @@\n remap is aborted.\n The way to do this is by using the [RS274NGC]ON_ABORT_COMMAND feature. This INI option specifies a\n O-word procedure call which is executed if task for some reason aborts program execution. on_abort\n receives a single parameter indicating the cause for calling the abort procedure, which might be used\n for conditional cleanup.\n Die Gr\u00fcnde sind in nml_intf/emc.hh definiert\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 545 / 1327\n \n EMC_ABORT_TASK_EXEC_ERROR = 1,\n EMC_ABORT_AUX_ESTOP = 2,\n EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n EMC_ABORT_TASK_STATE_OFF = 4,\n@@ -25449,15 +25449,15 @@\n Stellen Sie sicher, dass sich on_abort.ngc im Suchpfad des Interpreters befindet (empfohlener Ort:\n SUBROUTINE_PATH, um Ihr NC_FILES-Verzeichnis nicht mit internen Prozeduren zu \u00fcberladen).\n Statements in that procedure typically would assure that post-abort any state has been cleaned up,\n like HAL pins properly reset. For an example, see configs/sim/axis/remap/rack-toolchange.\n Beachten Sie, dass das Beenden eines remapped Codes durch R\u00fcckgabe von INTERP_ERROR aus\n dem Epilog (siehe vorheriger Abschnitt) auch den Aufruf der Prozedur on_abort bewirkt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 546 / 1327\n \n 9.6.5.9 Fehlerbehandlung: Fehlschlagen einer NGC-Prozedur mit neu zugeordnetem Code\n Wenn Sie in Ihrer Handler-Prozedur feststellen, dass eine Fehlerbedingung aufgetreten ist, verwenden\n Sie nicht M2, um Ihren Handler zu beenden - siehe oben:\n If displaying an operator error message and stopping the current program is good enough, use the\n@@ -25491,15 +25491,15 @@\n change gears appropriately if not.\n 9.6.6.2 Anpassen des Verhaltens von M0, M1, M60\n A use case for remapping M0/M1 would be to customize the behavior of the existing code. For instance,\n it could be desirable to turn off the spindle, mist and flood during an M0 or M1 program pause, and\n turn these settings back on when the program is resumed.\n For a complete example doing just that, see configs/sim/axis/remap/extend-builtins/, which adapts M1 as laid out above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 547 / 1327\n \n 9.6.7 Creating new G-code cycles\n A G-code cycle as used here is meant to behave as follows:\n \u2022 On first invocation, the associated words are collected and the G-code cycle is executed.\n \u2022 If subsequent lines just continue parameter words applicable to this code, but no new G-code, the\n@@ -25543,15 +25543,15 @@\n [PYTHON]\n TOPLEVEL = \n Dateiname des anf\u00e4nglichen Python-Skripts, das beim Starten ausgef\u00fchrt wird. Dieses Skript\n ist f\u00fcr die Einrichtung der Paketnamensstruktur verantwortlich, siehe unten.\n PATH_PREPEND = \n Dieses Verzeichnis dem PYTHON_PATH voranstellen. Eine sich wiederholende Gruppe.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 548 / 1327\n \n PATH_APPEND = \n Dieses Verzeichnis an PYTHON_PATH anh\u00e4ngen. Eine sich wiederholende Gruppe.\n LOG_LEVEL = \n Log level of plugin-related actions. Increase this if you suspect problems. Can be very verbose.\n@@ -25589,15 +25589,15 @@\n Hier werden aufgabenbezogene Abrufe erwartet.\n 9.6.9.2 Der Interpreter aus der Sicht von Python\n \n The interpreter is an existing C++ class (Interp) defined in src/emc/rs274ngc. Conceptually all oword. Python calls are methods of this Interp class, although there is no explicit Python definition of this class (it\u2019s a Boost.Python wrapper instance) and hence receive the as the first\n parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 549 / 1327\n \n 9.6.9.3 Die Interpreterfunktionen __init__ und __delete__\n If the TOPLEVEL module defines a function __init__, it will be called once the interpreter is fully\n configured (INI file read, and state synchronized with the world model).\n Wenn das Modul TOPLEVEL eine Funktion __delete__ definiert, wird sie einmal aufgerufen, bevor der\n@@ -25637,15 +25637,15 @@\n \u2013 when a comment like ;py, is executed - during execution of a remapped\n code: any prolog=, python= and epilog= handlers.\n Calling O-word Python subroutines\n Arguments:\n self\n The interpreter instance\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 550 / 1327\n \n *args\n The list of actual positional parameters. Since the number of actual parameters may vary, it is\n best to use this style of declaration:\n # this would be defined in the oword module\n@@ -25683,15 +25683,15 @@\n print(\u201d%s: %s\u201d % (w, words[w]))\n if words[\u2019p\u2019] < 78: # NB: could raise an exception if p were optional\n return \u201dfailing miserably\u201d\n return INTERP_OK\n \n R\u00fcckgabewerte:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 551 / 1327\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n \u201dein Nachrichtentext\u201d\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25731,15 +25731,15 @@\n # Post-sync()-Ausf\u00fchrung wird hier fortgesetzt:\n pin_status = emccanon.GET_EXTERNAL_DIGITAL_INPUT(0,0);\n print(\u201dpin status=\u201d,pin_status)\n \n Warnung\n The yield feature is fragile. The following restrictions apply to the usage of yield INTERP_EXECUTE_FINISH:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 552 / 1327\n \n \u2022 Python-Code, der ein yield INTERP_EXECUTE_FINISH ausf\u00fchrt, muss Teil einer Remap-Prozedur\n sein. Yield funktioniert nicht in einer Python-O-word-Prozedur.\n \u2022 Eine Python-Remap-Subroutine, welche die Anweisung yield INTERP_EXECUTE_FINISH enth\u00e4lt,\n darf keinen Wert zur\u00fcckgeben, wie dies bei normalen Python-Yield-Anweisungen der Fall ist.\n@@ -25781,15 +25781,15 @@\n return \u201dtestparam forgot to assign #\u201d\n return INTERP_OK\n o sub\n (debug, call_level=#<_call_level> myname=#)\n ; try commenting out the next line and run again\n # = [# * 3]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 553 / 1327\n \n #1 = [#1 * 5]\n #2 = [#2 * 3]\n o endsub\n m2\n@@ -25831,15 +25831,15 @@\n \n except InterpreterException,e:\n msg = \u201d%d: \u2019%s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n return msg # ersetzt regul\u00e4r ausgegebene Fehlermeldung\n \n Canon The canon layer is practically all free functions. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 554 / 1327\n \n import emccanon\n def example(self,*args):\n ....\n emccanon.STRAIGHT_TRAVERSE(line,x0,y0,z0,0,0,0,0,0,0)\n@@ -25876,15 +25876,15 @@\n \u2022 Import that module from the TOPLEVEL script.\n # namedparams.py\n # trivial example\n def _pi(self):\n return 3.1415926535\n # = [2 * # * #<_pi>]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 555 / 1327\n \n Functions in namedparams.py are expected to return a float or int value. If a string is returned, this\n sets the interpreter error message and aborts execution.\n Es werden nur Funktionen mit f\u00fchrendem Unterstrich als Parameter hinzugef\u00fcgt, da dies die RS274NGCKonvention f\u00fcr Globals ist.\n It is possible to redefine an existing predefined parameter by adding a Python function of the same\n@@ -25916,15 +25916,15 @@\n no further action is taken. This can be used for instance to minimally adjust the built in behavior be\n preceding or following it with some other statements.\n \u2022 Otherwise, the # and # parameters are extracted from the subroutine\u2019s parameter\n space. This means that the NGC procedure could change these values, and the epilog takes the\n changed values in account.\n \u2022 Then, the Canon command SELECT_TOOL(#) is executed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 556 / 1327\n \n 9.6.11.2 M6: change_prolog and change_epilog\n Diese schlie\u00dfen ein NGC-Verfahren f\u00fcr den M6-Werkzeugwechsel ein.\n Actions of change_prolog\n \u2022 Die folgenden drei Schritte sind nur anwendbar, wenn die Komponente \u201diocontrol-v2\u201d verwendet\n@@ -25955,15 +25955,15 @@\n be preceding or following it with some other statements.\n \u2022 Otherwise, the # parameter is extracted from the subroutine\u2019s parameter space,\n and used to set the interpreter\u2019s current_pocket variable. Again, the procedure could change this\n value, and the epilog takes the changed value in account.\n \u2022 Then, the Canon command CHANGE_TOOL(#) is executed.\n \u2022 Die neuen Werkzeugparameter (Versatz, Durchmesser usw.) werden eingestellt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 557 / 1327\n \n 9.6.11.3 G-Code-Zyklen: cycle_prolog und cycle_epilog\n These wrap a NGC procedure so it can act as a cycle, meaning the motion code is retained after\n finishing execution. If the next line just contains parameter words (e.g. new X,Y values), the code is\n executed again with the new parameter words merged into the set of the parameters given in the first\n@@ -25995,15 +25995,15 @@\n \u2013 retain the current motion mode so a continuation line without a motion code will execute the same\n motion code.\n 9.6.11.4 S (Set Speed) : setspeed_prolog and setspeed_epilog\n TBD\n 9.6.11.5 F (Set Feed) : setfeed_prolog and setfeed_epilog\n TBD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 558 / 1327\n \n 9.6.11.6 M61 Set tool number : settool_prolog and settool_epilog\n TBD\n \n 9.6.12 Remapped code execution\n@@ -26062,15 +26062,15 @@\n or these flags into the [EMC]DEBUG variable as needed. For a current list of debug flags see src/emc/nml_intf/d\n 9.6.12.5 Fehlersuche in eingebettetem Python-Code\n Debugging of embedded Python code is harder than debugging normal Python scripts, and only a\n limited supply of debuggers exists. A working open-source based solution is to use the Eclipse IDE,\n and the PydDev Eclipse plug in and its remote debugging feature.\n Um diesen Ansatz zu verwenden:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 559 / 1327\n \n \u2022 Installieren Sie Eclipse \u00fcber das Ubuntu Software Center (w\u00e4hlen Sie die erste Option).\n \u2022 Install the PyDev plug in from the Pydev Update Site.\n \u2022 Setup the LinuxCNC source tree as an Eclipse project.\n \u2022 Start the Pydev Debug Server in Eclipse.\n@@ -26087,15 +26087,15 @@\n \n To cover the last two steps: the o procedure helps to get into the debugger from MDI mode.\n See also the call_pydevd function in util.py and its usage in remap.involute to set a breakpoint.\n Here\u2019s a screen-shot of Eclipse/PyDevd debugging the involute procedure from above:\n \n See the Python code in configs/sim/axis/remap/getting-started/python for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 560 / 1327\n \n 9.6.13 Axis Preview and Remapped code execution\n For complete preview of a remapped code\u2019s tool path some precautions need to be taken. To understand what is going on, let\u2019s review the preview and execution process (this covers the AXIS case, but\n others are similar):\n First, note that there are two independent interpreter instances involved:\n@@ -26125,15 +26125,15 @@\n \u2022 M0 (pause a running program temporarily)\n \u2022 M1 (pause a running program temporarily if the optional stop switch is on)\n \u2022 M60 (exchange pallet shuttles and then pause a running program temporarily)\n \u2022 S (set spindle speed)\n \u2022 F (set feed)\n Note that the use of M61 currently requires the use of iocontrol-v2.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 561 / 1327\n \n 9.6.14.2 Currently unallocated G-codes:\n Currently unallocated G-codes (for remapping) must be selected from the blank areas of the following\n tables. All the listed G-codes are already defined in the current implementation of LinuxCNC and may\n not be used to remap new G-codes. (Developers who add new G-codes to LinuxCNC are encouraged\n@@ -26211,15 +26211,15 @@\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n \n G28\n \n G28.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 562 / 1327\n \n Tabelle 9.4: Tabelle der zugewiesenen G-Codes 50-59\n #\n 30\n 31\n@@ -26303,15 +26303,15 @@\n Gxx\n G60\n G61\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G61.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 563 / 1327\n \n Tabelle 9.7: (continued)\n #\n 62\n 63\n@@ -26393,15 +26393,15 @@\n G93\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G90.1\n G91.1\n G92.1 G92.2 G92.3\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 564 / 1327\n \n Tabelle 9.10: (continued)\n #\n 94\n 95\n@@ -26554,15 +26554,15 @@\n 9.6.14.4 Vorauslesezeit und Ausf\u00fchrungszeit\n FIXME F\u00fcge fehlende Informationen hinzu\n 9.6.14.5 Plugin/Pickle-Hack\n FIXME F\u00fcge fehlende Informationen hinzu\n 9.6.14.6 Modul, Methoden, Klassen, usw. Referenz\n FIXME F\u00fcge fehlende Informationen hinzu\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 565 / 1327\n \n 9.6.15 Einf\u00fchrung: Erweiterung der Task-Ausf\u00fchrung\n FIXME F\u00fcge fehlende Informationen hinzu\n 9.6.15.1 Warum sollten Sie die Task-Ausf\u00fchrung \u00e4ndern wollen?\n FIXME F\u00fcge fehlende Informationen hinzu\n@@ -26590,15 +26590,15 @@\n codes - for instance, once the spindle is turned on and the speed is set, it remains at this setting\n until turned off. The same goes for many codes, like feed, units, motion modes (feed or rapid)\n and so forth.\n 4. Interpreter execution state - Holds information about the block currently executed, whether we\n are in a subroutine, interpreter variables, etc. . Most of this state is aggregated in a - fairly\n unsystematic - structure _setup (see interp_internals.hh).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 566 / 1327\n \n 9.6.17.2 Task and Interpreter interaction, Queuing and Read-Ahead\n The task part of LinuxCNC is responsible for coordinating actual machine commands - movement,\n HAL interactions and so forth. It does not by itself handle the RS274NGC language. To do so, task\n calls upon the interpreter to parse and execute the next command - either from MDI or the current\n@@ -26643,15 +26643,15 @@\n \n To pre-compute the move in N90, the interpreter would need to know where the machine is after line\n N80 - and that depends on whether the probe command succeeded or not, which is not known until\n it\u2019s actually executed.\n So, some operations are incompatible with further read-ahead. These are called queue busters, and\n they are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 567 / 1327\n \n \u2022 Reading a HAL pin\u2019s value with M66: value of HAL pin not predictable.\n \u2022 Loading a new tool with M6: tool geometry not predictable.\n \u2022 Executing a probe with G38.n: final position and success/failure not predictable.\n 9.6.17.5 How queue-busters are dealt with\n@@ -26682,15 +26682,15 @@\n 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\n all items are executed, INTERP_OK is returned, signalling that read-ahead may continue.\n When read ahead continues after the synch, task starts executing interpreter read() operations again.\n During the next read operation, the above mentioned flags are checked and corresponding variables\n are set (because the a synch() was just executed, the values are now current). This means that the\n next command already executes in the properly set variable context.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 568 / 1327\n \n 9.6.17.9 Prozedurausf\u00fchrung\n O-word procedures complicate handling of queue busters a bit. A queue buster might be found somewhere in a nested procedure, resulting in a semi-finished procedure call when INTERP_EXECUTE_FINISH\n is returned. Task makes sure to synchronize the world model, and continue parsing and execution as\n long as there is still a procedure executing (call_level > 0).\n@@ -26724,15 +26724,15 @@\n Aktion des Interpreters bei einem Tx-Befehl\n Der Interpreter wertet lediglich den Parameter toolnumber aus, sucht den entsprechenden tooldataIndex, speichert ihn f\u00fcr sp\u00e4ter 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.\n Task-Aktion auf SELECT_TOOL Wenn task dazu kommt, ein SELECT_TOOL zu bearbeiten, sendet\n es eine EMC_TOOL_PREPARE Nachricht an den iocontrol Prozess, der die meisten werkzeugbezogenen Aktionen in LinuxCNC bearbeitet.\n In der derzeitigen Implementierung wartet task tats\u00e4chlich darauf, dass iocontrol die Positionierung des Wechslers abschlie\u00dft, was m.E. nicht notwendig ist, da es die Idee zunichte macht, dass die\n Vorbereitung des Wechslers und die Ausf\u00fchrung des Codes parallel laufen k\u00f6nnen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 569 / 1327\n \n Iocontrol-Aktion auf EMC_TOOL_PREPARE Wenn iocontrol den Befehl \u201dSelect Pocket\u201d sieht,\n f\u00fchrt es das entsprechende HAL-Pin-Wackeln aus - es setzt den \u201dtool-prep-number\u201d-Pin, um anzuzeigen, welches Werkzeug als n\u00e4chstes an der Reihe ist, hebt den \u201dtool-prepare\u201d-Pin an und wartet\n darauf, dass der \u201dtool-prepared\u201d-Pin auf High geht.\n When the changer responds by asserting \u201dtool-prepared\u201d, it considers the prepare phase to be completed and signals task to continue. Again, this wait is not strictly necessary IMO.\n@@ -26767,15 +26767,15 @@\n since M6 is a queue buster.\n Was task tut, wenn es einen CHANGE_TOOL-Befehl sieht Auch hier nicht viel mehr, als die\n Kontrolle an iocontrol zu \u00fcbergeben, indem man ihm eine EMC_TOOL_LOAD Nachricht sendet und\n zu warten, bis iocontrol sein Ding gemacht hat.\n Iocontrol-Aktion auf EMC_TOOL_LOAD\n 1. Es best\u00e4tigt den \u201dTool-Change\u201d-Pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 570 / 1327\n \n 2. Es wartet, bis der \u201dTool-changed\u201d-Pin aktiv wird\n 3. wenn dies geschehen ist:\n a. deassert \u201dWerkzeugwechsel\u201d\n b. Setzen der Pins tool-prep-number und tool-prep-pocket auf Null\n@@ -26804,15 +26804,15 @@\n \n 9.6.19 Changes\n \u2022 The method to return error messages and fail used to be self.set_errormsg(text) followed by return\n INTERP_ERROR. This has been replaced by merely returning a string from a Python handler or\n oword subroutine. This sets the error message and aborts the program. Previously there was no\n clean way to abort a Python O-word subroutine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 571 / 1327\n \n 9.6.20 Debugging\n In the [EMC] section of the INI file the DEBUG parameter can be changed to get various levels of\n debug messages when LinuxCNC is started from a terminal.\n Debug level, 0 means no messages. See src/emc/nml_intf/debugflags.h for others\n@@ -26849,15 +26849,15 @@\n Wegpunkte werden aufgezeichnet, wenn die Komponente \u201dmoveoff\u201d aktiviert ist. Wegpunkte werden\n mit den Pins waypoint-sample-secs und waypoint-threshold verwaltet. Wenn der Pin f\u00fcr die R\u00fcckverfolgungsaktivierung TRUE ist, folgt der automatische R\u00fcckweg den aufgezeichneten Wegpunkten.\n Wenn der f\u00fcr die Wegpunkte verf\u00fcgbare Speicher ersch\u00f6pft ist, werden die Offsets eingefroren und der\n waypoint-limit-Pin wird aktiviert. Diese Einschr\u00e4nkung gilt unabh\u00e4ngig vom Zustand des BacktrackEnable-Pins. Ein Freigabe-Pin muss deaktiviert werden, um eine R\u00fcckkehr zur urspr\u00fcnglichen (nicht\n versetzten) Position zu erm\u00f6glichen.\n Backtracking durch Wegpunkte f\u00fchrt zu langsameren Bewegungsraten, da die Bewegungen Punktzu-Punkt unter Ber\u00fccksichtigung der Geschwindigkeits- und Beschleunigungseinstellungen erfolgen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 572 / 1327\n \n Die Geschwindigkeits- und Beschleunigungsgrenzwerte k\u00f6nnen dynamisch verwaltet werden, um Vers\u00e4tze jederzeit zu kontrollieren.\n Wenn backtrack-enable FALSE ist, wird die automatische R\u00fccklaufbewegung NICHT koordiniert, jede Achse kehrt mit ihrer eigenen Geschwindigkeit auf Null zur\u00fcck. Wenn in diesem Zustand ein kontrollierter Weg gew\u00fcnscht wird, sollte jede Achse manuell auf Null zur\u00fcckgef\u00fchrt werden, bevor ein\n Freigabe-Pin deaktiviert wird.\n Die Pins waypoint-sample-secs, waypoint-threshold und epsilon werden nur ausgewertet, wenn sich\n@@ -26886,15 +26886,15 @@\n \u2022 configs/sim/touchy/ngcgui (touchy-ui)\n \n 9.7.1 \u00c4ndern einer bestehenden Konfiguration\n Eine vom System bereitgestellte HAL-Datei (LIB:hookup_moveoff.tcl) kann verwendet werden, um\n eine bestehende Konfiguration f\u00fcr die Verwendung der moveoff-Komponente anzupassen. Zus\u00e4tzliche Einstellungen in der INI-Datei unterst\u00fctzen die Verwendung einer einfachen Benutzeroberfl\u00e4che\n (moveoff_gui) zur Steuerung von Offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 573 / 1327\n \n Wenn die System-HAL-Datei (LIB:hookup_moveoff.tcl) ordnungsgem\u00e4\u00df in einer Konfigurations-INIDatei angegeben ist, wird sie:\n 1. die urspr\u00fcnglichen Pinverbindungen joint.N.motor-pos-cmd und joint.N.motor-pos-fb trennen\n 2. Die moveoff-Komponente (unter dem Namen mv) mit einem Profil (engl. personality) laden (loadrt),\n die alle in der INI-Datei angegebenen Achsen aufnehmen kann\n@@ -26936,15 +26936,15 @@\n EPSILON =\n WAYPOINT_SAMPLE_SECS =\n WAYPOINT_THRESHOLD =\n \n Das moveoff_gui wird verwendet, um zus\u00e4tzliche erforderliche Verbindungen herzustellen und eine\n Popup-GUI zu erstellen:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 574 / 1327\n \n 1. Aktivieren/Deaktivieren von Offsets \u00fcber eine Umschalttaste (engl. togglebutton).\n 2. Bereitstellung einer Schaltfl\u00e4che zum Aktivieren/Deaktivieren des Backtrackings\n 3. Steuertasten zum Inkrementieren/Dekrementieren/Nullstellen jeder Achsenverschiebung\n 4. Anzeige des aktuellen Wertes jeder Achsenverschiebung\n@@ -26985,15 +26985,15 @@\n sind:\n net external_enable mv.move-enable\n net external_offset_0 mv.offset-in-0\n net external_offset_1 mv.offset-in-1\n net external_offset_2 mv.offset-in-2\n net external_backtrack_en mv.backtrack-enable\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 575 / 1327\n \n Diese Signale (external_enable, external_offset_M, external_backtrack_en) k\u00f6nnen von nachfolgenden\n HALFILES (einschlie\u00dflich POSTGUI_HALFILEs) verwaltet werden, um eine angepasste Steuerung\n der Komponente zu erm\u00f6glichen, w\u00e4hrend die moveoff_gui-Anzeige f\u00fcr aktuelle Offset-Werte und den\n Offset-Status verwendet wird.\n@@ -27042,15 +27042,15 @@\n [-no_display] (Voreinstellung: nicht verwendet)\n (Verwendung, wenn sowohl externe Steuerungen als auch Anzeigen \u2190)\n (verwendet werden (siehe Hinweis))\n Hinweis: Wenn der moveoff move-enable Pin (mv.move-enable) angeschlossen ist w\u00e4hrend\n moveoff_gui gestartet wird, sind externe Steuerungen erforderlich und nur\n die Bildschirm-Anzeigen sind verf\u00fcgbar.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 576 / 1327\n \n 9.8 Eigenst\u00e4ndiger Interpreter\n Der eigenst\u00e4ndige Interpreter rs274 kann \u00fcber die Kommandozeile verwendet werden.\n \n 9.8.1 Anwendung\n@@ -27088,15 +27088,15 @@\n \n Befehl\n rs274 -g test.ngc -t test.tbl\n \n 9.9 Offsets der externen Achse\n External axis offsets are supported during teleop (world) jogs and coordinated (G-code) motion. External axis offsets are enabled on a per-axis basis by INI file settings and controlled dynamically by\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 577 / 1327\n \n INI input pins. The INI interface is similar to that used for wheel jogging. This type of interface is\n typically implemented with a manual-pulse-generator (mpg) connected to an encoder INI component\n that counts pulses.\n \n@@ -27127,15 +27127,15 @@\n 9.9.2.2 Other Motion HAL Pins\n 1. motion.eoffset-active Output(Bit): Externe Offsets ungleich Null angewendet\n 2. motion.eoffset-limited Output(bit): Bewegung gesperrt durch Softlimit\n \n 9.9.3 Anwendung\n The axis input HAL pins (enable,scale,counts) are similar to the pins used for wheel jogging.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 578 / 1327\n \n 9.9.3.1 Offset-Berechnung\n At each servo period, the axis.L.eoffset-counts pin is compared to its value in the prior period. The\n increase or decrease (positive or negative delta) of the axis.L.eoffset-counts pin is multiplied by the\n current axis.L.eoffset-scale pin value. This product is accumulated in an internal register and exported\n@@ -27171,15 +27171,15 @@\n Der HAL-Pin axis.L.eoffset-request zeigt den aktuellen angeforderten Offset an, der das Produkt aus\n dem internen Z\u00e4hlregister und der eoffset-Skala ist. Im Allgemeinen hinkt der Wert des Pins axis.L.eoffset\n dem Wert von axis.L.eoffset-request hinterher, da der externe Offset einer Beschleunigungsgrenze unterliegt. Beim Betrieb an einer weichen Grenze wirken sich zus\u00e4tzliche Aktualisierungen der\n axis.L.eoffset-counts weiterhin auf den angeforderten externen Offset aus, wie er im axis.L.eoffsetrequest-HAL-Pin reflektiert wird.\n Beim Teleop-Jogging mit aktivierten externen Offsets und angewandten Werten ungleich Null wird\n bei Erreichen eines Soft-Limits die Bewegung in der betreffenden Achse ohne Verz\u00f6gerungsintervall angehalten. In \u00e4hnlicher Weise wird bei einer koordinierten Bewegung mit aktivierten externen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 579 / 1327\n \n Offsets das Erreichen eines Soft-Limits zum Anhalten der Bewegung ohne Verz\u00f6gerungsphase f\u00fchren.\n In diesem Fall spielt es keine Rolle, ob die Offsets Null sind.\n Wenn die Bewegung ohne Verz\u00f6gerungsphase gestoppt wird, k\u00f6nnen die Beschleunigungsgrenzen des Systems verletzt werden, was zu Folgefehlern f\u00fchrt: 1) einem Schleppfehler (und/oder\n einem Klopfen) bei einem Servomotor-System, 2) einem Verlust von Schritten bei einem SchrittmotorSystem. Im Allgemeinen wird empfohlen, externe Offsets so zu verwenden, dass eine Ann\u00e4herung an\n@@ -27204,15 +27204,15 @@\n designed and tested before deployment.\n \n 9.9.4 Related HAL Components\n 9.9.4.1 eoffset_per_angle.comp\n Komponente zur Berechnung eines externen Offsets aus einer Funktion auf der Grundlage eines\n gemessenen Winkels (Drehkoordinate oder Spindel). Siehe die Manpage f\u00fcr Details ($ man eoffset_per_angle).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 580 / 1327\n \n 9.9.5 Testen\n Der externe Achsenversatz wird durch Hinzuf\u00fcgen einer [AXIS_L]-Einstellung f\u00fcr jede Kandidatenachse aktiviert. Zum Beispiel:\n [AXIS_Z]\n OFFSET_AV_RATIO = 0.2\n@@ -27249,15 +27249,15 @@\n einen Ausgangspunkt f\u00fcr die Anpassung an die reale Hardware zu bieten.\n Die Sim-Konfigurationen verwenden die INI-Einstellung [HAL]HALFILE = LIB:basic_sim.tcl, um alle Routine-HAL-Verbindungen f\u00fcr die in der INI-Datei [TRAJ]COORDINATES= angegebenen Achsen.\n Die HAL-Logik, die zur Demonstration der externen Offset-Funktionalit\u00e4t ben\u00f6tigt wird und die GUI\n HAL Pin Verbindungen f\u00fcr ein PyVCP Panel sind in getrennten HAL Dateien. Eine Nicht-SimulationsKonfiguration sollte den Eintrag LIB:basic_sim.tcl f\u00fcr den Maschine in den HALFILEs ersetzen. Die\n mitgelieferten PyVCP-Dateien (.hal und .xml) k\u00f6nnen ein Ausgangspunkt f\u00fcr anwendungsspezifische\n Benutzeroberfl\u00e4chen sein.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 581 / 1327\n \n 9.9.6.1 eoffsets.ini\n Die Sim-Konfiguration sim/configs/axis/external_offsets/eoffsets.ini demonstriert eine kartesische XYZMaschine mit Steuerelementen zur Aktivierung externer Offsets auf jeder Achse.\n Alle wichtigen Positions- und Offsetwerte werden angezeigt.\n Ein sim_pin GUI bietet Steuerelemente f\u00fcr die Achsen-Offset-Pins: eoffset-scale & eoffset-counts (\u00fcber\n@@ -27287,15 +27287,15 @@\n typically set by a program (or MDI) M68 command to control a motion.analog-out-NN pin.\n Die LEDs auf dem Bedienfeld dienen zur Anzeige wichtiger Statusinformationen.\n Es werden Funktionen f\u00fcr Innen- und Au\u00dfenpolygone (nsides >= 3), Sinuswellen und Rechteckwellen\n bereitgestellt. Die Funktionen k\u00f6nnen mit dem Stift fmul in der Frequenz multipliziert und mit dem\n Stift rfrac in der Amplitude ver\u00e4ndert werden (Bruchteil des Referenzradius).\n Es gibt Bedienelemente zum Starten/Stoppen von Offset-Wellenformen und zum Einstellen des Funktionstyps und seiner Parameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 582 / 1327\n \n 9.10 Tool Database Interface\n \n Tool data is conventionally described by a tool table file specified by an inifile setting: [EMCIO]TOOL_TABLE=\n A tool table file consists of a text line for each available tool describing the tool\u2019s parameters, see Tool\n@@ -27332,15 +27332,15 @@\n textual reply format is identical to the text line format used in conventional tool table files. A final\n response of \u201dFINI\u201d terminates the reply.\n 4. Das db_program tritt dann in eine Ereignis-Warteschleife ein, um Befehle zu empfangen, die\n anzeigen, dass Werkzeugdaten von LinuxCNC ge\u00e4ndert wurden. Werkzeugdaten \u00c4nderungen\n umfassen:\n \u2022 a) Laden der Spindel(Tn M6)/Entladen(T0 M6)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 583 / 1327\n \n \u2022 b) \u00c4nderung der Werkzeugparameter (z. B. G10L1Pn)\n \u2022 c) Werkzeugauswechslungen (M61Qn).\n Wenn eine Werkzeugdaten\u00e4nderung auftritt, sendet LinuxCNC einen Befehl an das db_program, bestehend aus einem identifizierenden Befehlsbuchstaben, gefolgt von einer vollst\u00e4ndigen oder abgek\u00fcrzten Werkzeugdatenzeile. Das db_program muss mit einer Antwort antworten, um den Empfang\n zu best\u00e4tigen. Enth\u00e4lt die Antwort den Text \u201dNAK\u201d, wird eine Meldung auf stdout ausgegeben, aber\n@@ -27375,15 +27375,15 @@\n Tool data changes made within LinuxCNC (p,u,l commands) are pushed immediately to the db_program\n which is expected to synchronize its source data. By default, LinuxCNC requests for tool data (g commands) are made at startup only. A database program may update tool usage data on a continuous\n basis so long-lived LinuxCNC applications may benefit by refreshing the tool data provided by the\n db_program. The G-code command G10L0 can be used to request a tool data reload (g command)\n from within G-code programs or by MDI. A reload operation is also typically provided by a Graphical User Interface (GUI) so that on-demand reloads can be requested. For example, a Python GUI\n application can use:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 584 / 1327\n \n #!/usr/bin/env python3\n from linuxcnc import command\n command().load_tool_table()\n \n@@ -27421,15 +27421,15 @@\n 9.10.1.5 Python tooldb module\n The example program uses a LinuxCNC provided Python module (tooldb) that manages the low-level\n details for communication and version verification. This module uses callback functions specified by\n the db_program to respond to the g (get) command and the commands that indicate tool data changes\n (p, l, u).\n The db_program uses the tooldb module by implementing the following Python code:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n user_tools = list(...)\n \n 585 / 1327\n \n # list of available tool numbers\n \n@@ -27475,61 +27475,61 @@\n The sim configs demonstrate the use of the Python tooldb interface module and implement a basic\n flat-file database that tracks tool time usage for multiple tools having equal diameters. The database\n rules support selection of the tool having the lowest operating time.\n The sim configs use a primary task to monitor and respond to tool updates initiated from within LinuxCNC. A periodic task updates tool time usage at reguar intervals. Separate, concurrent tasks\n are implemented as threads to demonstrate the code required when changes are initiated by the\n db_program and demonstrate methods for synchronizing LinuxCNC internal tooldata. Examples include:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 586 / 1327\n \n 1. Aktualisierung der Werkzeugparameter\n 2. addition and removal of tool numbers\n A mutual exclusion lock is used to protect data from inconsistencies due to race conditions between\n LinuxCNC tooldata updates and the database application updates.\n 9.10.2.1 Anmerkungen\n \n When a db_program is used in conjunction with a random tool changer ([EMCIO]RANDOM_TOOLCHANGER\n LinuxCNC maintains a file (db_spindle.tbl in the configuration directory) that consists of a single tool\n table line identifying the current tool in the spindle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Teil II\n \n Anwendung\n \n 587 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 588 / 1327\n \n Kapitel 10\n \n Benutzerschnittstellen\n 10.1 AXIS GUI\n 10.1.1 Einf\u00fchrung\n AXIS ist ein grafisches Frontend f\u00fcr LinuxCNC mit Live-Vorschau und Backplot. Es ist in Python geschrieben und verwendet Tk und OpenGL, um seine Benutzeroberfl\u00e4che anzuzeigen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 589 / 1327\n \n Abbildung 10.1: Das AXIS-Fenster\n \n 10.1.2 Erste Schritte\n Wenn Ihre Konfiguration derzeit nicht f\u00fcr die Verwendung von AXIS eingerichtet ist, k\u00f6nnen Sie sie\n \u00e4ndern, indem Sie die .ini Datei (INI-Datei) bearbeiten. \u00c4ndern Sie im Abschnitt [DISPLAY] die Zeile\n [DISPLAY] in DISPLAY = axis.\n Die Beispielkonfiguration \u201dsim/axis.ini\u201d ist bereits f\u00fcr die Verwendung von AXIS als Front-End konfiguriert.\n Wenn AXIS gestartet wird, \u00f6ffnet sich ein Fenster wie das in der Abbildung Abbildung 10.1 oben.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 590 / 1327\n \n 10.1.2.1 INI-Einstellungen\n Weitere Informationen zur Einstellung der Funktionsweise von AXIS in der INI-Datei, finden Sie im\n Abschnitt Anzeige des Kapitels INI-Konfiguration.\n \u2022 CYCLE_TIME - Passen Sie die Antwortrate der GUI in Millisekunden an. Typisch 100, nutzbarer\n@@ -27562,15 +27562,15 @@\n Anmerkung\n Nun notwendige Schritte um dasselbe Programm erneut auszuf\u00fchren, h\u00e4ngen von Ihrem Setup und\n Ihren Anforderungen ab. M\u00f6glicherweise m\u00fcssen Sie mehr Material laden und Offsets setzen oder\n einen Offset verschieben und festlegen und dann das Programm erneut ausf\u00fchren. Wenn Ihr Material\n fixiert ist, m\u00fcssen Sie das Programm m\u00f6glicherweise nur erneut ausf\u00fchren. Weitere Informationen\n zum Befehl run finden Sie im Abschnitt zum Men\u00fc Maschine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 591 / 1327\n \n 10.1.3 AXIS Fenster\n Das AXIS-Fenster enth\u00e4lt die folgenden Elemente:\n \u2022 Ein Anzeigebereich, der Folgendes anzeigt:\n \u2013 Eine Vorschau der geladenen Datei (in diesem Fall axis.ngc) sowie des aktuellen Speicherorts des\n@@ -27607,15 +27607,15 @@\n INI-Datei konfiguriert haben. Weitere Informationen zum Angeben eines zu verwendenden Editors\n finden Sie im Abschnitt DISPLAY.\n \u2022 Reload - Laden Sie die aktuelle G-Code-Datei neu. Wenn Sie es bearbeitet haben, m\u00fcssen Sie es\n neu laden, damit die \u00c4nderungen wirksam werden. Wenn Sie eine Datei stoppen und von vorne\n beginnen m\u00f6chten, laden Sie die Datei neu. Das Neuladen der Symbolleiste ist identisch mit dem\n Men\u00fc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 592 / 1327\n \n \u2022 G-Code speichern unter\u2026 - Speichern Sie die aktuelle Datei unter einem neuen Namen.\n \u2022 Eigenschaften - Die Summe der Eilgang- und Vorschubbewegungen. Ber\u00fccksichtigt keine Beschleunigung, \u00dcberblendung oder den Pfadmodus, sodass die gemeldete Zeit nie weniger als die tats\u00e4chliche Laufzeit ist.\n \u2022 Werkzeugtabelle bearbeiten\u2026 - Wie bei Bearbeiten, wenn Sie einen Editor definiert haben, k\u00f6nnen\n Sie die Werkzeugtabelle \u00f6ffnen und bearbeiten.\n@@ -27648,15 +27648,15 @@\n \u2022 In MDI-Verlauf einf\u00fcgen - Einf\u00fcgen aus der Zwischenablage in das MDI-Verlaufsfenster\n \u2022 Kalibrierung - Startet den Kalibrierungsassistenten (emccalib.tcl). Die Kalibrierung liest die HALDatei und erstellt f\u00fcr jedes setp, das eine Variable aus der INI-Datei verwendet, die sich in einem\n [AXIS_L],[JOINT_N],[SPINDLE_S] oder [TUNE] Abschnitt befindet, ein Eintrag, der bearbeitet und\n getestet werden kann.\n \u2022 HAL-Konfiguration anzeigen - \u00d6ffnet das Fenster HAL-Konfiguration, in dem Sie HAL-Komponenten,\n Pins, Parameter, Signale, Funktionen und Threads \u00fcberwachen k\u00f6nnen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 593 / 1327\n \n \u2022 HAL-Messger\u00e4t - \u00d6ffnet ein Fenster, in dem Sie einen einzelnen HAL-Pin, ein Signal oder einen\n Parameter \u00fcberwachen k\u00f6nnen.\n \u2022 HAL Scope - \u00d6ffnet ein virtuelles Oszilloskop zur Anzeige von HAL-Werten (vertikal) \u00fcber die Zeit\n (horizontal) erm\u00f6glicht.\n@@ -27688,15 +27688,15 @@\n von negativ nach positiv aussieht. Diese Ansicht eignet sich am besten f\u00fcr den Blick auf X & Z.\n \u2022 Perspektivische Ansicht (engl. perspective view) - Die perspektivische Ansicht (oder P-Ansicht) zeigt\n den G-Code an, der das Teil aus einem einstellbaren Blickwinkel betrachtet, standardm\u00e4\u00dfig X+, Y-,\n Z+. Die Position ist mit der Maus und dem Zug-/Drehwahlschalter einstellbar. Diese Ansicht ist eine\n Kompromissansicht, und obwohl sie versucht, drei (bis neun!) Diese Ansicht ist am besten, wenn\n Sie alle drei (bis neun) Achsen gleichzeitig sehen m\u00f6chten.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 594 / 1327\n \n Sichtweise\n Das AXIS-Anzeigeauswahlmen\u00fc \u201dAnsicht\u201d bezieht sich auf die Ansichten \u201dOben\u201d, \u201dVorne\u201d und\n \u201dSeitlich\u201d. Diese Begriffe sind korrekt, wenn die Z-Achse der CNC-Maschine senkrecht steht, mit\n positivem Z nach oben. Dies gilt f\u00fcr vertikale Fr\u00e4smaschinen, was wahrscheinlich die h\u00e4ufigste\n@@ -27736,15 +27736,15 @@\n \u2022 Geschwindigkeit anzeigen - Eine Anzeige der Geschwindigkeit ist manchmal n\u00fctzlich, um zu sehen,\n wie nah Ihre Maschine an ihren Entwurfsgeschwindigkeiten l\u00e4uft. Sie kann auf Wunsch deaktiviert\n werden.\n \u2022 Restweg anzeigen (engl. Show Distance to Go) - Der Restweg ist ein sehr n\u00fctzlicher Hinweis, wenn\n Sie ein unbekanntes G-Code-Programm zum ersten Mal ausf\u00fchren. In Kombination mit den Eilgangund Vorschub-Override-Steuerungen k\u00f6nnen unerw\u00fcnschte Werkzeug- und Maschinensch\u00e4den vermieden werden. Sobald das G-Code-Programm fehlerfrei l\u00e4uft, kann die Restweg-Anzeige auf Wunsch\n deaktiviert werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 595 / 1327\n \n \u2022 Koordinaten in gro\u00dfer Schrift\u2026 - Die Koordinaten der Achsen und die Geschwindigkeit im Voraus\n werden in gro\u00dfer Schrift in der Werkzeugwegansicht angezeigt.\n \u2022 Live Plot l\u00f6schen - W\u00e4hrend 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\u00f6nnen\n die zuvor markierten Pfade gel\u00f6scht werden.\n@@ -27798,15 +27798,15 @@\n \n Zeilen \u00fcberspringen mit \u201d/\u201d [Alt-M-/] umschalten\n \n \u2022\n \n Optionale Pause einschalten [Alt-M-1]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022\n \n Vergr\u00f6\u00dfern (engl. zoom in)\n \n \u2022\n \n@@ -27860,15 +27860,15 @@\n mit X 0,0033 auf Ihrer Fr\u00e4smaschine befehlen, aber ein Schritt Ihres Schrittmotors oder eine Encoderz\u00e4hlung 0,00125 betr\u00e4gt, dann k\u00f6nnte die befohlene Position 0,0033 sein, aber die tats\u00e4chliche\n Position wird 0,0025 (2 Schritte) oder 0,00375 (3 Schritte) sein.\n Vorschau-Plot 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\n im Vorschub (z. B. mit dem Befehl \u201dG1\u201d) werden als durchgezogene wei\u00dfe Linien dargestellt. Verweilzeiten (z. B. durch den Befehl \u201dG4\u201d) werden als kleine rosa \u201dX\u201d-Markierungen dargestellt.\n G0 (Eilgang) Bewegungen vor einer Vorschubbewegung werden nicht in der Vorschau angezeigt. Eilgangbewegungen nach einem T (Werkzeugwechsel) werden erst nach der ersten Vorschubbewegung in der Vorschau angezeigt. Um eine dieser Funktionen auszuschalten, programmieren Sie einen\n G1 ohne Bewegungen vor den G0-Bewegungen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 597 / 1327\n \n Programm-Extents Die Ausdehnungen des Programms in jeder Achse werden angezeigt. An den\n Enden werden die kleinsten und gr\u00f6\u00dften Koordinatenwerte angegeben. In der Mitte ist die Differenz\n zwischen den Koordinaten dargestellt.\n Wenn einige Koordinaten die \u201dweichen Grenzen\u201d in der INI-Datei \u00fcberschreiten, wird die betreffende\n@@ -27903,15 +27903,15 @@\n der Mittelpunkt der Linie. Andernfalls ist der Drehpunkt der Mittelpunkt des gesamten Programms.\n Durch Drehen des Mausrads oder durch Ziehen mit gedr\u00fcckter rechter Maustaste oder durch Ziehen\n mit der Steuerung und gedr\u00fcckter linker Maustaste wird die Vorschaudarstellung vergr\u00f6\u00dfert oder\n verkleinert.\n Durch Anklicken eines der Symbole \u201dVoreingestellte Ansicht\u201d oder durch Dr\u00fccken von \u201dV\u201d k\u00f6nnen\n mehrere voreingestellte Ansichten ausgew\u00e4hlt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 598 / 1327\n \n 10.1.3.4 Textanzeigebereich\n Wenn Sie mit der linken Maustaste auf eine Zeile des Programms klicken, wird diese Zeile sowohl in\n der grafischen als auch in der Textanzeige hervorgehoben.\n Wenn das Programm l\u00e4uft, wird die Zeile, die gerade ausgef\u00fchrt wird, rot hervorgehoben. Wenn der\n@@ -27930,15 +27930,15 @@\n nicht angeschlossen, erscheint die Schaltfl\u00e4che \u201dBrake\u201d nicht auf dem Bildschirm. Ist die Umgebungsvariable AXIS_NO_AUTOCONFIGURE gesetzt, so ist dieses Verhalten deaktiviert und alle Elemente\n werden angezeigt.\n Die Achsengruppe Mit AXIS k\u00f6nnen Sie die Maschine manuell bewegen. Diese Aktion wird als \u201dJogging\u201d bezeichnet. W\u00e4hlen Sie zun\u00e4chst die zu bewegende Achse durch Anklicken aus. Klicken Sie\n dann auf die Schaltfl\u00e4che \u201d+\u201d oder \u201d-\u201d und halten Sie sie gedr\u00fcckt, je nachdem, in welche Richtung\n Sie verfahren m\u00f6chten. Die ersten vier Achsen k\u00f6nnen auch mit den Pfeiltasten (X und Y), den Tasten\n PAGE UP und PAGE DOWN (Z) und den Tasten [ und ] (A) bewegt werden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 599 / 1327\n \n Wenn Sie \u201dKontinuierlich\u201d ausw\u00e4hlen, wird die Bewegung so lange fortgesetzt, wie die Schaltfl\u00e4che\n oder Taste gedr\u00fcckt wird. Wenn ein anderer Wert gew\u00e4hlt wird, bewegt sich die Maschine bei jedem\n Klicken auf die Schaltfl\u00e4che oder Dr\u00fccken der Taste genau um die angezeigte Strecke. Standardm\u00e4\u00dfig\n sind die folgenden Werte verf\u00fcgbar: \u201d0.1000, 0.0100, 0.0010, 0.0001\u201d.\n@@ -27966,15 +27966,15 @@\n Weitere Informationen finden Sie im Kapitel Referenzfahrt Konfiguration.\n Touch-Off\n Durch Dr\u00fccken von Touch Off oder der END-Taste wird der G5x-Offset f\u00fcr die aktuelle Achse ge\u00e4ndert,\n so dass der aktuelle Achsenwert dem angegebenen Wert entspricht. Ausdr\u00fccke k\u00f6nnen nach den\n Regeln f\u00fcr rs274ngc-Programme eingegeben werden, mit der Ausnahme, dass auf Variablen nicht\n Bezug genommen werden darf. Der resultierende Wert wird als Zahl angezeigt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 600 / 1327\n \n Abbildung 10.4: Touch Off Fenster\n Siehe auch die Optionen im Men\u00fc Maschine: \u201dWerkst\u00fcck ber\u00fchren\u201d und \u201dWerkst\u00fcckhalter ber\u00fchren\u201d.\n Werkzeug Touch Off Durch Dr\u00fccken der Schaltfl\u00e4che Tool Touch Off werden die Werkzeugl\u00e4nge und\n die Offsets des aktuell geladenen Werkzeugs so ver\u00e4ndert, dass die aktuelle Position der Werkzeugspitze mit der eingegebenen Koordinate \u00fcbereinstimmt.\n@@ -27992,15 +27992,15 @@\n spindle.0.reverse sein). Die Schaltfl\u00e4chen in der n\u00e4chsten Zeile erh\u00f6hen oder verringern die Drehgeschwindigkeit. Mit dem Kontrollk\u00e4stchen in der dritten Zeile kann die Spindelbremse aktiviert oder\n deaktiviert werden. Je nach Maschinenkonfiguration werden m\u00f6glicherweise nicht alle Elemente in\n dieser Gruppe angezeigt. Durch Dr\u00fccken der Spindelstarttaste wird die S-Drehzahl auf 1 gesetzt.\n Die K\u00fchlmittelgruppe Mit den beiden Schaltfl\u00e4chen k\u00f6nnen die K\u00fchlmittel Nebel und Flut ein- und\n ausgeschaltet werden. Je nach Konfiguration Ihres Ger\u00e4ts werden m\u00f6glicherweise nicht alle Elemente\n in dieser Gruppe angezeigt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 601 / 1327\n \n 10.1.3.6 MDI\n Mit MDI k\u00f6nnen G-Code-Befehle manuell eingegeben werden. Wenn das Ger\u00e4t nicht eingeschaltet ist\n oder wenn ein Programm l\u00e4uft, sind die MDI-Steuerungen nicht verf\u00fcgbar.\n \n@@ -28015,15 +28015,15 @@\n Durch Verschieben dieses Schiebereglers kann der programmierte Vorschub ge\u00e4ndert werden. Wenn\n z.B. ein Programm \u201dF60\u201d verlangt und der Schieberegler auf 120% eingestellt ist, dann ist der resultierende Vorschub 72.\n 10.1.3.8 Spindeldrehzahl-Anpassung\n Durch Verschieben dieses Schiebereglers kann die programmierte Spindeldrehzahl ge\u00e4ndert werden. Wenn ein Programm beispielsweise S8000 anfordert und der Schieberegler auf 80% eingestellt\n ist, betr\u00e4gt die resultierende Spindeldrehzahl 6400. Dieser Punkt erscheint nur, wenn der HAL-Pin\n spindle.0.speed-out angeschlossen ist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 602 / 1327\n \n 10.1.3.9 Jog-Geschwindigkeit\n Durch Bewegen dieses Schiebereglers kann die Geschwindigkeit des Joggens ge\u00e4ndert werden. Zum\n Beispiel, wenn der Schieberegler auf 1 Zoll / min eingestellt ist, dann wird ein 0,01-Zoll-Joggen in etwa\n 0,6 Sekunden oder 1/100 einer Minute abgeschlossen. In der N\u00e4he der linken Seite (langsames Joggen) sind die Werte eng beieinander angeordnet, w\u00e4hrend sie in der N\u00e4he der rechten Seite (schnelle\n@@ -28075,15 +28075,15 @@\n Jede (engl. any)\n Variiert\n Handbuch\n Handbuch\n Handbuch\n Handbuch\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 603 / 1327\n \n Tabelle 10.1: (continued)\n Tastenkombination\n I\n C\n@@ -28173,15 +28173,15 @@\n Jede (engl. any)\n Jede (engl. any)\n \n 10.1.5 Show LinuxCNC Status (linuxcnctop)\n AXIS enth\u00e4lt ein Programm namens linuxcnctop, das einige der Details des LinuxCNC-Status anzeigt.\n Sie k\u00f6nnen dieses Programm ausf\u00fchren, indem Sie Maschine > LinuxCNC-Status anzeigen aufrufen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 604 / 1327\n \n Abbildung 10.7: LinuxCNC-Statusfenster\n Der Name jedes Elements wird in der linken Spalte angezeigt. Der aktuelle Wert wird in der rechten\n Spalte angezeigt. Wenn sich der Wert k\u00fcrzlich ge\u00e4ndert hat, wird er rot unterlegt angezeigt.\n \n@@ -28198,15 +28198,15 @@\n MDI>\n (0.0, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI> G1 F5 X1\n MDI>\n (0.5928500000000374, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI>\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 605 / 1327\n \n (1.0000000000000639, 0.0, 0.0, 0.0, 0.0, 0.0)\n \n 10.1.7 axis-remote\n AXIS enth\u00e4lt ein Programm namens axis-remote, das bestimmte Befehle an einen laufenden AXIS\n@@ -28236,15 +28236,15 @@\n 10.1.9 Python-Module\n AXIS enth\u00e4lt mehrere Python-Module, die f\u00fcr andere n\u00fctzlich sein k\u00f6nnen. F\u00fcr weitere Informationen\n \u00fcber eines dieser Module verwenden Sie pydoc oder lesen Sie den Quellcode. Zu\n diesen Modulen geh\u00f6ren:\n \u2022 emc\u2019 erm\u00f6glicht den Zugriff auf die LinuxCNC Befehls-, Status- und Fehlerkan\u00e4le\n \u2022 gcode bietet Zugriff auf den RS274NGC-Interpreter\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 606 / 1327\n \n \u2022 rs274 bietet zus\u00e4tzliche Tools f\u00fcr die Arbeit mit RS274NGC-Dateien\n \u2022 hal erm\u00f6glicht die Erstellung von in Python geschriebenen Userspace-HAL-Komponenten\n \u2022 _togl stellt ein OpenGL-Widget bereit, das in Tkinter-Anwendungen verwendet werden kann\n \u2022 minigl bietet Zugriff auf die von AXIS verwendete Teilmenge von OpenGL\n@@ -28254,44 +28254,44 @@\n k\u00f6nnen Sie dies mit \u201dscripts/rip-environment\u201d tun.\n \n 10.1.10 Verwendung von AXIS im Drehmaschinenmodus\n Durch Einf\u00fcgen der Zeile LATHE = 1 in den Abschnitt [DISPLAY] der INI-Datei w\u00e4hlt AXIS den Drehmaschinenmodus. Die Y-Achse wird in den Koordinatenanzeigen nicht angezeigt, die Ansicht wird so\n ge\u00e4ndert, dass die Z-Achse nach rechts und die X-Achse zum unteren Rand des Bildschirms zeigt, und\n mehrere Steuerelemente (z. B. die f\u00fcr voreingestellte Ansichten) werden entfernt. Die Koordinatenanzeigen f\u00fcr X werden durch Durchmesser und Radius ersetzt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 607 / 1327\n \n Abbildung 10.9: AXIS-Drehmaschinenmodus\n Durch Dr\u00fccken von V wird die gesamte Datei angezeigt, sofern eine solche geladen ist.\n Im Drehmaschinenmodus wird die Form des geladenen Werkzeugs (falls vorhanden) angezeigt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 608 / 1327\n \n Abbildung 10.10: Drehwerkzeug-Form\n Um die Anzeige in eine Drehbank mit hinterem Werkzeug zu \u00e4ndern, m\u00fcssen Sie sowohl LATHE =\n 1 als auch BACK_TOOL_LATHE = 1 in der Sektion [DISPLAY] eingeben. Dadurch wird die Ansicht\n umgedreht und das Werkzeug auf die R\u00fcckseite der Z-Achse gelegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 609 / 1327\n \n Abbildung 10.11: Lathe Back Tool Shape\n \n 10.1.11 Verwendung von AXIS im Modus Schaumstoffschneiden (engl. foam\n cutting mode)\n Durch Einf\u00fcgen der Zeile FOAM = 1 in den [DISPLAY]-Abschnitt der INI-Datei w\u00e4hlt AXIS den Schaumschneidemodus. In der Programmvorschau werden die XY-Bewegungen in einer Ebene und die UVBewegungen 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\n (XY_Z_POS) und (UV_Z_POS) legen die Z-Koordinaten dieser Ebenen fest, die standardm\u00e4\u00dfig 0 und\n 1,5 Maschineneinheiten betragen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 610 / 1327\n \n Abbildung 10.12: Modus Schaumstoffschneiden\n \n 10.1.12 Erweiterte Konfiguration\n Wenn AXIS gestartet wird, werden die HAL-Pins f\u00fcr die grafische Benutzeroberfl\u00e4che erstellt und\n@@ -28299,15 +28299,15 @@\n kann aber jeder beliebige Dateiname sein. Diese Befehle werden nach der Erstellung des Bildschirms\n ausgef\u00fchrt und garantieren, dass die HAL-Pins des Widgets verf\u00fcgbar sind. Sie k\u00f6nnen mehrere Zeilen\n mit POSTGUI_HALFILE= in der INI haben. Sie werden nacheinander in der Reihenfolge\n ausgef\u00fchrt, in der sie erscheinen.\n Weitere Informationen zu den Einstellungen in der INI-Datei der Funktionsweise von AXIS, finden Sie\n im Kapitel INI-Konfiguration zur Display Section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 611 / 1327\n \n 10.1.12.1 Programm-Filter\n AXIS hat die M\u00f6glichkeit, geladene Dateien durch ein \u201dFilterprogramm\u201d zu schicken. Dieser Filter\n kann jede gew\u00fcnschte Aufgabe erf\u00fcllen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit\n \u201dM2\u201d endet, oder etwas so Kompliziertes wie die Erzeugung von G-Code aus einem Bild.\n@@ -28328,15 +28328,15 @@\n \n Auf diese Weise kann jedes Python-Skript ge\u00f6ffnet werden, und seine Ausgabe wird als G-Code behandelt. Ein solches Beispielskript ist unter \u201dnc_files/holecircle.py\u201d verf\u00fcgbar. Dieses Skript erzeugt\n G-Code f\u00fcr das Bohren einer Reihe von L\u00f6chern entlang des Umfangs eines Kreises.\n \n Abbildung 10.13: Kreisf\u00f6rmige L\u00f6cher\n Wenn die Umgebungsvariable AXIS_PROGRESS_BAR gesetzt ist, werden in stderr Zeilen der Form\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 612 / 1327\n \n FILTER_PROGRESS=%d\n \n setzt den AXIS-Fortschrittsbalken auf den angegebenen Prozentsatz. Diese Funktion sollte von jedem\n Filter verwendet werden, der lange l\u00e4uft.\n@@ -28372,15 +28372,15 @@\n Beispiel einer .axisrc-Datei\n root_window.bind(\u201d\u201d, \u201ddestroy .\u201d)\n help2.append((\u201dControl-Q\u201d, \u201dQuit\u201d))\n \n Das folgende Beispiel stoppt den Dialog \u201dWollen Sie wirklich beenden\u201d.\n root_window.tk.call(\u201dwm\u201d,\u201dprotocol\u201d,\u201d.\u201d,\u201dWM_DELETE_WINDOW\u201d,\u201ddestroy .\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 613 / 1327\n \n 10.1.12.5 USER_COMMAND_FILE\n \n A configuration-specific Python file may be specified with an INI file setting [DISPLAY]USER_COMMAND_FIL\n Like a ~/.axisrc file, this file is sourced just before the AXIS GUI is displayed. This file is specific to\n@@ -28415,15 +28415,15 @@\n wobei (AXIS,hide) an erster Stelle steht. Alles, was nach einem (AXIS,stop) kommt, wird w\u00e4hrend der\n Vorschau nicht gezeichnet.\n Diese Kommentare sind n\u00fctzlich, um die Anzeige der Vorschau zu entschlacken (z. B. kann man bei\n der Fehlersuche in einer gr\u00f6\u00dferen G-Code-Datei die Vorschau f\u00fcr bestimmte Teile, die bereits gut\n funktionieren, deaktivieren).\n \u2022 (AXIS,hide) Stoppt die Vorschau (muss zuerst sein)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 614 / 1327\n \n \u2022 (AXIS,show) Setzt die Vorschau fort (muss auf ein hide folgen)\n \u2022 (AXIS,stop) Stoppt die Vorschau von hier bis zum Ende der Datei.\n \u2022 (AXIS,notify,the_text) Zeigt the_text als Infoanzeige an\n Diese Anzeige kann in der AXIS-Vorschau n\u00fctzlich sein, wenn (Debug-, Nachrichten-) Kommentare\n@@ -28506,15 +28506,15 @@\n \n Dir\n IN\n \n Name\n axisui.resume-inhibit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 615 / 1327\n \n 10.1.14 Hinweise zur AXIS-Anpassung\n AXIS ist eine ziemlich gro\u00dfe und schwer zu durchdringende Codebasis. Das ist hilfreich, um den Code\n stabil zu halten, macht es aber schwierig, ihn anzupassen.\n Hier werden wir Codeschnipsel zeigen, um das Verhalten oder die Darstellung des Bildschirms zu\n@@ -28550,15 +28550,15 @@\n # G-Code-Schriftart ist unabh\u00e4ngig\n root_window.tk.call(\u2019.pane.bottom.t.text\u2019,\u2019configure\u2019,\u2019-foreground\u2019,\u2019blue\u2019)\n #root_window.tk.call(\u2019.pane.bottom.t.text\u2019,\u2019configure\u2019,\u2019-foreground\u2019,\u2019blue\u2019,\u2019-font\u2019,font)\n #root_window.tk.call(\u2019.pane.bottom.t.text\u2019,\u2019configure\u2019,\u2019-foreground\u2019,\u2019blue\u2019,\u2019-font\u2019,font,\u2019- \u2190height\u2019,\u201912\u2019)\n \n 10.1.14.4 \u00c4ndern der Rapid Rate mit Tastenkombinationen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 616 / 1327\n \n # Verwenden Sie Control + \u2018 oder 1-0 als Tastaturk\u00fcrzel f\u00fcr die rapid rate und behalten Sie \u2190\u2018 oder 1-0 f\u00fcr feedrate\n # f\u00fcgt auch Text zur Kurzreferenz in der Hilfe hinzu\n help1.insert(10,(\u201dStrg+ \u2018,1..9,0\u201d, _(\u201dSet Rapid Override from 0% to 100%\u201d)),)\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(0))\n@@ -28600,15 +28600,15 @@\n commands.set_view_z()\n \n 10.1.14.8 Erstellen neuer AXISUI HAL-Pins\n def user_hal_pins():\n comp.newpin(\u2019my-new-in-pin\u2019, hal.HAL_BIT, hal.HAL_IN)\n comp.ready()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 617 / 1327\n \n 10.1.14.9 Neue HAL-Komponente und Pins erstellen\n # Komponente erstellen\n mycomp = hal.component(\u2019meine_Komponente\u2019)\n mycomp.newpin(\u2019idle-led\u2019,hal.HAL_BIT,hal.HAL_IN)\n@@ -28649,15 +28649,15 @@\n elif hal.get_value(\u2019gladevcp.user0-tab\u2019):\n root_window.tk.call(\u2019.pane.top.right\u2019,\u2019raise\u2019,\u2019user_0\u2019)\n except:\n pass\n \n 10.1.14.11 Hinzuf\u00fcgen einer GOTO Referenzpunkt (engl. Home)-Taste\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 618 / 1327\n \n def goto_home(axis):\n if s.interp_state == linuxcnc.INTERP_IDLE:\n home = inifile.find(\u2019JOINT_\u2019 + str(inifile.find(\u2019TRAJ\u2019, \u2019COORDINATES\u2019).upper(). \u2190index(axis)), \u2019HOME\u2019)\n mode = s.task_mode\n@@ -28696,15 +28696,15 @@\n print(\u2019mybutton was released\u2019)\n # jede Funktion, die von Tcl aufgerufen wird, muss zu TclCommands hinzugef\u00fcgt werden\n TclCommands.mybutton_clicked = mybutton_clicked\n TclCommands.mybutton_pressed = mybutton_pressed\n TclCommands.mybutton_released = mybutton_released\n commands = TclCommands(root_window)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10.1.14.13 Interne Variablen lesen\n # die folgenden Variablen k\u00f6nnen aus der vars-Instanz gelesen werden\n print(vars.machine.get())\n print(vars.emcini.get())\n active_codes\n = StringVar\n@@ -28814,15 +28814,15 @@\n task_state\n = IntVar\n taskfile\n = StringVar\n \n 619 / 1327\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n teleop_mode\n tool\n touch_off_system\n trajcoordinates\n tto_g11\n view_type\n@@ -28866,15 +28866,15 @@\n root_window.tk.call(\u2019.pane.top.right.fnumbers.text\u2019,\u2019configure\u2019,\u2019-foreground\u2019,\u2019green\u2019,\u2019- \u2190background\u2019,\u2019black\u2019)\n \n 10.1.14.18 \u00c4ndern der Buttons der Werkzeugleiste\n # \u00e4ndern der Werkzeugleisten-Buttons\n buW = \u20193\u2019\n buH = \u20192\u2019\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 621 / 1327\n \n boW = \u20193\u2019\n root_window.tk.call(\u2019.toolbar.machine_estop\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019ESTOP\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.machine_power\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019POWER\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.file_open\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019OPEN\u2019,\u2019-width\u2019, \u2190buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n@@ -28905,15 +28905,15 @@\n (0,0,255,255),\n (255,255,0,255),\n (255,255,255,255),\n (0,255,255,255))\n except Exception as e:\n print(e)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 622 / 1327\n \n 10.2 GMOCCAPY\n 10.2.1 Einf\u00fchrung\n GMOCCAPY is a GUI for LinuxCNC, designed to be used with a touch screen, but can also be used on\n normal screens with a mouse or hardware buttons and MPG wheels, as it presents HAL Pins for the\n@@ -28929,15 +28929,15 @@\n 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.\n You could just copy the gmoccapy.pot file to something like it.po and translate that file with gtranslator\n or poedit. After rebuilding, you\u2019d get the GUI in your preference language. To facilitate the sharing\n of the translation, GMOCCAPY is available on the Weblate web interface. GMOCCAPY is currently\n 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\u2019t hesitate to contact me on\n nieson@web.de.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 623 / 1327\n \n 10.2.2 Anforderungen\n GMOCCAPY 3 has been tested on Debian Jessie, Debian Stretch and MINT 18 with LinuxCNC master\n and 2.8 release. It fully support joint / axis changes of LinuxCNC, making it suitable as GUI for Scara,\n Robots or any other config with more joints than axes. So it supports also gantry configs. If you use\n@@ -28950,15 +28950,15 @@\n 10.2.3 How to Get GMOCCAPY\n GMOCCAPY 3 is included in the standard distribution of LinuxCNC since release 2.7. So the easiest\n way to get GMOCCAPY on your controlling PC is just to download the ISO and install it from the\n CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n In the release notes aka changelist you can track the latest bugfixes and features.\n Sie erhalten einen \u00e4hnlichen Bildschirm wie den folgenden (das Design kann je nach Ihrer Konfiguration variieren):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 624 / 1327\n \n 10.2.4 Basiseinstellung\n GMOCCAPY 3 unterst\u00fctzt die folgenden Befehlszeilenoptionen:\n \u2022 -user_mode: If set, the setup button will be disabled, so normal machine operators are not able to\n edit the settings of the machine.\n@@ -28968,15 +28968,15 @@\n die Sie beachten sollten, wenn Sie alle Funktionen der GUI nutzen wollen.\n Sie werden eine Reihe von Simulationskonfigurationen (INI-Dateien) finden, die nur die Grundlagen\n zeigen:\n \u2022 gmoccapy.ini\n \u2022 gmoccapy_4_axis.ini\n \u2022 lathe_configs/gmoccapy_lathe.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 625 / 1327\n \n \u2022 lathe_configs/gmoccapy_lathe_imperial.ini\n \u2022 gmoccapy_left_panel.ini\n \u2022 gmoccapy_right_panel.ini\n \u2022 gmoccapy_messages.ini\n@@ -29012,15 +29012,15 @@\n themes, DRO units, colors, and keyboard settings, etc., see settings page for more details.\n Anmerkung\n If no path or file is given, GMOCCAPY will use as default .pref, if no machine\n name is given in your INI File it will use gmoccapy.pref. The file will be stored in your config directory,\n so the settings will not be mixed if you use several configs. If you only want to use one file for several\n machines, you need to include PREFERENCE_FILE_PATH in your INI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 626 / 1327\n \n \u2022 MAX_FEED_OVERRIDE = 1.5 - Sets the maximum feed override, in the example given, you will be\n allowed to override the feed by 150%.\n Anmerkung\n Wenn kein Wert angegeben wird, so wird er auf 1,0 gesetzt.\n@@ -29049,15 +29049,15 @@\n If not set, half of MAX_LINEAR_VELOCITY will be used. If that value is also not given, it will default\n to 180.\n \n \u2022 MAX_LINEAR_VELOCITY = 230.0 - Legt die maximale Geschwindigkeit der Maschine fest.\n Anmerkung\n Der Standardwert ist 600, falls nicht festgelegt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 627 / 1327\n \n 10.2.4.3 Makro-Buttons\n You can add macros to GMOCCAPY, similar to Touchy\u2019s way. A macro is nothing else than a NGC file.\n You are able to execute complete CNC programs in MDI mode by just pushing one button. To do so,\n you first have to specify the search path for macros:\n@@ -29096,15 +29096,15 @@\n GMOCCAPY akzeptiert auch Makros, die nach Parametern wie den folgenden fragen:\n [MACRO]\n MACRO = go_to_position X-pos Y-pos Z-pos\n \n Die Parameter m\u00fcssen durch Leerzeichen getrennt werden. Dieses Beiaspiel ruft eine Datei \u201dgo_to_position.n\n mit dem folgenden Inhalt auf:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 628 / 1327\n \n ; Testdatei \u201dgo to position\u201d (engl. f\u00fcr geh\u2019 zur Position)\n ; f\u00e4hrt die Maschine zu einer bestimmten Position\n O sub\n G17\n@@ -29124,15 +29124,15 @@\n M2\n \n Nach dem Dr\u00fccken der Taste Makro ausf\u00fchren werden Sie aufgefordert, die Werte f\u00fcr X-pos Y-pos\n Z-pos einzugeben, und das Makro wird nur ausgef\u00fchrt, wenn alle Werte angegeben wurden.\n Anmerkung\n Wenn Sie ein Makro ohne Bewegung verwenden m\u00f6chten, beachten Sie auch die Hinweise in bekannte Probleme.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 629 / 1327\n \n Makrobeispiel mit dem \u201dGehe zu Position\u201d-Makro\n 10.2.4.4 Embedded Tabs and Panels\n You can add embedded programs to GMOCCAPY like you can do in AXIS, Touchy and Gscreen. All is\n done by GMOCCAPY automatically if you include a few lines in your INI file in the DISPLAY section.\n@@ -29146,15 +29146,15 @@\n EMBED_TAB_LOCATION = ntb_preview\n EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade\n \n Alles, was Sie beachten m\u00fcssen, ist, dass Sie f\u00fcr jede Registerkarte oder jedes Seitenfeld die genannten drei Zeilen einf\u00fcgen:\n \u2022 EMBED_TAB_NAME = Stellt den Namen der Registerkarte oder des Seitenfensters dar, es ist Ihnen\n \u00fcberlassen, welchen Namen Sie verwenden, aber er muss vorhanden sein!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 630 / 1327\n \n \u2022 EMBED_TAB_LOCATION = Der Ort, an dem Ihr Programm in der GUI platziert wird, siehe Abbildung Embedded tab locations. G\u00fcltige Werte sind:\n \u2013 ntb_user_tabs (als Hauptregisterkarte, die den gesamten Bildschirm abdeckt)\n \u2013 ntb_preview (als Tab auf der Vorschauseite (1))\n \u2013 hbox_jog (blendet die Jog-Buttons aus und f\u00fchrt die Glade-Datei hier ein (2))\n@@ -29188,29 +29188,29 @@\n gladevcp -c gladevcp -u hitcounter.py -H manual-example.hal manual-example.ui\n \n f\u00fcgt das Panel manual-example.ui hinzu, f\u00fcgt einen benutzerdefinierten Python-Handler, hitcounter.py, ein und stellt alle Verbindungen her, nachdem das Panel gem\u00e4\u00df manual-example.hal realisiert wurde.\n hide (engl. f\u00fcr ausblenden)\n \n blendet das gew\u00e4hlte K\u00e4stchen aus.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 631 / 1327\n \n Abbildung 10.14: Eingebettete Registerkartenpositionen\n Anmerkung\n If you make any HAL connections to your custom glade panel, you need to do that in the HAL file\n specified in the EMBED_TAB_COMMAND line, otherwise you may get an error that the HAL pin does\n not exist \u2014 this is because of race conditions loading the HAL files. Connections to GMOCCAPY HAL\n pins need to be made in the postgui HAL file specified in your INI file, because these pins do not exist\n prior of realizing the GUI.\n \n Hier sind einige Beispiele:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ntb_preview\n \n 632 / 1327\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -29231,15 +29231,15 @@\n provide a -response HAL pin.\n For more detailed information of the pins see User Created Message HAL Pins.\n Beispiel f\u00fcr die Konfiguration von Benutzernachrichten\n MESSAGE_TEXT = This is a info-message test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 633 / 1327\n \n MESSAGE_TEXT = This is a yes no dialog test\n MESSAGE_TYPE = yesnodialog\n MESSAGE_PINNAME = yesnodialog\n MESSAGE_TEXT = Text can be small, big, bolditalic,\n@@ -29284,15 +29284,15 @@\n self.widgets.vbtb_main.remove(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.remove(self.widgets.lbl_time)\n self.widgets.vbtb_main.add(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.add(self.widgets.lbl_time)\n \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 634 / 1327\n \n 10.2.4.8 User CSS File\n Similar to the User command file it\u2019s possible to influence the appearance by cascading style sheets\n (CSS). If a file ~/.gmoccapy_css exists, its contents are loaded into the stylesheet provider and are\n so beeing applied to the GUI.\n@@ -29329,15 +29329,15 @@\n are count from up to down and from left to right beginning with 0.\n Anmerkung\n The pin names have changed in GMOCCAPY 2 to order them in a better way.\n \n The pins for the right (vertical) buttons are:\n \u2022 gmoccapy.v-button.button-0 (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 635 / 1327\n \n \u2022 gmoccapy.v-button.button-1 (bit IN)\n \u2022 gmoccapy.v-button.button-2 (bit IN)\n \u2022 gmoccapy.v-button.button-3 (bit IN)\n \u2022 gmoccapy.v-button.button-4 (bit IN)\n@@ -29403,15 +29403,15 @@\n step by step\n run from line if\n enabled in settings,\n otherwise Nothing\n optional blocks\n full-size preview\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 636 / 1327\n \n Tabelle 10.2: (continued)\n Pin\n Manual Mode\n gmoccapy.h-button.button-9\n@@ -29522,15 +29522,15 @@\n back\n \n Wir haben also 67 Reaktionen mit nur 10 HAL-Pins!\n These pins are made available to be able to use the screen without an touch panel, or protect it\n from excessive use by placing hardware buttons around the panel. They are available in a sample\n configuration like shown in the image below.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 637 / 1327\n \n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n 10.2.5.2 Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n@@ -29542,15 +29542,15 @@\n To connect encoders, the following pins are exported:\n \u2022 gmoccapy.jog.jog-velocity.counts (s32 IN) - Jog Geschwindigkeit\n \u2022 gmoccapy.jog.jog-velocity.count-enable (bit IN) - Must be True, to enable counts\n \u2022 gmoccapy.feed.feed-override.counts (s32 IN) - Vorschub Override\n \u2022 gmoccapy.feed.feed-override.count-enable (bit IN) - Muss True sein, um Z\u00e4hlungen zu aktivieren\n \u2022 gmoccapy.feed.reset-feed-override (bit IN) - setzt den Vorschub-Override auf *0% zur\u00fcck\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 638 / 1327\n \n \u2022 gmoccapy.spindle.spindle-override.counts (s32 IN) - Spindel override\n \u2022 gmoccapy.spindle.spindle-override.count-enable (bit IN) - Muss True sein, um Z\u00e4hlungen zu\n aktivieren\n \u2022 gmoccapy.spindle.reset-spindle-override (bit IN) - setzt den Spindel-Override auf *0% zur\u00fcck\n@@ -29580,15 +29580,15 @@\n \u2022 gmoccapy.spc_jog_vel.scaled-value (float OUT) - Skalierter Wert des Widgets .FEED\n \u2022 gmoccapy.spc_feed.increase (bit IN) - Solange True wird der Wert des Schiebereglers erh\u00f6ht\n \u2022 gmoccapy.spc_feed.decrease (bit IN) - Solange True wird der Wert des Schiebereglers verringert\n \u2022 gmoccapy.spc_feed.scale (float IN) - Ein Wert zur Skalierung des Ausgabewerts (praktisch, um\n Einheiten/Min in Einheiten/Sek zu \u00e4ndern)\n \u2022 gmoccapy.spc_feed.value (float OUT) - Wert des Widgets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 639 / 1327\n \n \u2022 gmoccapy.spc_feed.scaled-value (float OUT) - Skalierter Wert des Widgets .SPINDLE (engl. f\u00fcr\n Spindel)\n \u2022 gmoccapy.spc_spindle.increase (bit IN) - Solange True, wird der Wert des Schiebereglers erh\u00f6ht\n \u2022 gmoccapy.spc_spindle.decrease (bit IN) - Solange True, wird der Wert des Schiebereglers verringert\n@@ -29619,15 +29619,15 @@\n Spindle Override Max Value = 120 %\n gmoccapy.analog-enable = 1\n gmoccapy.spindle-override-value = 0.25\n value to set = Min Value + (Max Value - Min Value) * gmoccapy.spindle-override-value\n value to set = 20 + (120 - 20) * 0.25\n value to set = 45 %\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 640 / 1327\n \n 10.2.5.3 Jog HAL Pins\n Alle Achsen, die in der INI-Datei angegeben sind, haben einen Jog-Plus- und einen Jog-Minus-Pin, so\n dass Hardware-Taster verwendet werden k\u00f6nnen, um die Achse zu joggen.\n Anmerkung\n@@ -29656,15 +29656,15 @@\n GMOCCAPY bietet diesen HAL-Pin an, um zwischen Hasen- und Igel-Joggen zu wechseln:\n \u2022 gmoccapy.jog.turtle-jog (bit IN)\n 10.2.5.5 Jog Increment HALPins\n The jog increments given in the INI file like\n [DISPLAY]\n INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 641 / 1327\n \n are selectable through HAL pins, so a selection hardware switch can be used to select the increment\n to use. There will be a maximum of 10 HAL pins for the increments given in the INI file. If you give\n more increments in your INI file, they will be not reachable from the GUI as they will not be displayed.\n Wenn Sie 6 Inkremente in Ihrer INI-Datei haben, wie im obigen Beispiel, erhalten Sie 7 Pins:\n@@ -29694,15 +29694,15 @@\n \n 10.2.5.8 Vom Benutzer erstellte HAL-Pins f\u00fcr Nachrichten\n GMOCCAPY may be configured to react to external errors, using 3 different user messages:\n status\n \u2022 gmoccapy.messages.status (bit IN) - L\u00f6st den Dialog aus.\n okdialog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 642 / 1327\n \n \u2022 gmoccapy.messages.okdialog (bit IN) - L\u00f6st den Dialog aus.\n \u2022 gmoccapy.messages.okdialog-waiting (bit OUT) - Wird 1 sein, solange der Dialog ge\u00f6ffnet ist.\n Beim Schlie\u00dfen der Nachricht wird dieser Pin zur\u00fcckgesetzt.\n yesnodialog\n@@ -29737,15 +29737,15 @@\n There are three pins giving information about the program progress:\n \u2022 gmoccapy.program.length (s32 OUT) - Shows the total number of lines of the program.\n \u2022 gmoccapy.program.current-line (s32 OUT) - Indicates the current working line of the program.\n \u2022 gmoccapy.program.progress (float OUT) - Gives the program progress in percentage.\n The values may not be very accurate if you are working with subroutines or large remap procedures.\n Also loops will cause different values.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 643 / 1327\n \n 10.2.5.11 Tool Related Pins\n Werkzeugwechsel-Pins These pins are provided to use GMOCCAPY\u2019s internal tool change dialog,\n similar to the one known from AXIS, but with several modifications. So you will not only get the\n message to change to tool number 3, but also the description of that tool like 7.5 mm 3 flute cutter.\n@@ -29764,15 +29764,15 @@\n \n Anmerkung\n Bitte beachten Sie, dass diese Verbindungen in der postgui HAL Datei vorgenommen werden m\u00fcssen.\n \n Werkzeug-Offset Pins These pins allow you to show the active tool offset values for X and Z in the\n tool information frame. You should know that they are only active after G43 has been sent.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 644 / 1327\n \n Abbildung 10.16: Tool information area\n \u2022 gmoccapy.tooloffset-x (float IN)\n \u2022 gmoccapy.tooloffset-z (float IN)\n Anmerkung\n@@ -29802,15 +29802,15 @@\n siehe Videos zur Werkzeugvermessung.\n Tool Measurement in GMOCCAPY is done a little bit different to many other GUIs. You should follow\n these steps:\n 1. Touch off your workpiece in X and Y.\n 2. Messen Sie die H\u00f6he Ihres Blocks von der Basis, an der sich Ihr Werkzeugschalter befindet, bis\n zur Oberseite des Blocks (einschlie\u00dflich Spannfutter usw.).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 645 / 1327\n \n 3. Dr\u00fccken Sie die Taste Blockh\u00f6he und geben Sie den Messwert ein.\n 4. Gehen Sie in den Automatikmodus und starten Sie Ihr Programm.\n Hier ist eine kleine Skizze:\n \n@@ -29827,15 +29827,15 @@\n from a G-code subroutine, so the code can react to different values.\n \u2022 gmoccapy.toolmeasurement (bit OUT) - Werkzeugmessung einschalten oder nicht\n \u2022 gmoccapy.blockheight (float OUT) - Der gemessene Wert der oberen Fl\u00e4che des Werkst\u00fccks\n \u2022 gmoccapy.probeheight (float OUT) - The probe switch height\n \u2022 gmoccapy.searchvel (float OUT) - Die Geschwindigkeit, mit der nach dem Schalter des Werkzeugmesstasters gesucht wird\n \u2022 gmoccapy.probevel (float OUT) - Die Geschwindigkeit zum Antasten der Werkzeugl\u00e4nge\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 646 / 1327\n \n 10.2.6.2 \u00c4nderungen an der INI-Datei f\u00fcr Werkzeugmessungen\n \u00c4ndern Sie Ihre INI-Datei so, dass sie die folgenden Abschnitte enth\u00e4lt.\n Der RS274NGC-Abschnitt\n [RS274NGC]\n@@ -29879,15 +29879,15 @@\n 10.2.6.3 Ben\u00f6tigte Dateien\n Erstellen Sie zun\u00e4chst ein Verzeichnis \u201dpython\u201d in Ihrem Konfigurationsverzeichnis. Kopieren Sie von\n /configs/sim/gmoccapy/python die folgenden Dateien in den gerade erstellten Ordner config_dir/python:\n \u2022 toplevel.py\n \u2022 remap.py\n \u2022 stdglue.py\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 647 / 1327\n \n Von /configs/sim/gmoccapy/macros kopieren\n \u2022 on_abort.ngc\n \u2022 change.ngc\n to the directory specified as SUBROUTINE_PATH, see RS274NGC Section.\n@@ -29924,15 +29924,15 @@\n \n To enter the page you will have to click on\n and give an unlock code, which is 123 by\n default. If you want to change it at this time you will have to edit the hidden preference file, see the\n display section for details.\n Die Seite ist in drei Hauptregisterkarten unterteilt:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 648 / 1327\n \n 10.2.7.1 Erscheinungsbild\n \n Abbildung 10.18: GMOCCAPY Einstellungsseite Erscheinungsbild\n Auf dieser Registerkarte finden Sie die folgenden Optionen:\n@@ -29943,15 +29943,15 @@\n \u2022 Start maximized\n \u2022 Start als Fenster - Wenn Sie \u201dStart als Fenster\u201d w\u00e4hlen, werden die Spinboxen zum Einstellen der\n Position und Gr\u00f6\u00dfe aktiv. Einmal eingestellt, startet die GUI jedes Mal an der gew\u00e4hlten Stelle\n und mit der gew\u00e4hlten Gr\u00f6\u00dfe. Dennoch kann der Benutzer die Gr\u00f6\u00dfe und Position mit der Maus\n ver\u00e4ndern, was aber keinen Einfluss auf die Einstellungen hat.\n \u2022 hide the cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 649 / 1327\n \n Tastatur The checkboxes allow the user to select if he wants the on board keyboard to be shown\n immediately, when entering the MDI Mode, when entering the offset page, the tooledit widget or\n when open a program in the EDIT mode. The keyboard button on the bottom button list will not be\n affected by these settings, so you are able to show or hide the keyboard by pressing the button. The\n@@ -29976,15 +29976,15 @@\n execute this file before starting LinuxCNC, it can be done also adding a starter to your local folder.\n ./config/autostart\n \n Damit das Layout beim Start automatisch eingestellt wird.\n F\u00fcr matchbox-keyboard m\u00fcssen Sie Ihr eigenes Layout erstellen, f\u00fcr ein deutsches Layout fragen Sie\n im Forum.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 650 / 1327\n \n GMOCCAPY with Onboard keyboard in edit mode\n On Touch Off This gives the option whether to show the preview tab or the offset page tab when you\n enter the touch off mode by clicking the corresponding bottom button.\n \u2022 show preview\n@@ -29995,15 +29995,15 @@\n \u2022 Relativer Modus = schwarz\n \u2022 Absoluter Modus = blau\n \u2022 Verbleibende Entfernung = gelb\n Die Vordergrundfarbe der DRO kann ausgew\u00e4hlt werden mit:\n \u2022 homed color = green\n \u2022 unhomed color = red\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 651 / 1327\n \n Anmerkung\n Sie k\u00f6nnen durch die DRO-Modi (absolut, relativ, Entfernung zu gehen) wechseln, indem Sie auf die\n Zahl auf dem DRO klicken! Wenn Sie auf den linken Seitenbuchstaben des DRO klicken, k\u00f6nnen Sie\n in einem Popup-Fenster den Wert der Achsen festlegen, was das Einstellen des Werts erleichtert, da\n@@ -30041,15 +30041,15 @@\n move or zoom within the preview:\n \u2013 Links drehen, Mitte verschieben, rechts zoomen\n \u2013 Links zoomen, Mitte verschieben, rechts rotieren\n \u2013 links bewegen, mitte drehen, rechts zoomen\n \u2013 Links zoomen, Mitte drehen, rechts bewegen\n \u2013 Links verschieben, Mitte zoomen, rechts rotieren\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 652 / 1327\n \n \u2013 Links drehen, Mitte zoomen, rechts bewegen\n Die Standardeinstellung ist links verschieben, Mitte zoomen, rechts drehen.\n Mit dem Mausrad k\u00f6nnen Sie die Vorschau in jedem Modus vergr\u00f6\u00dfern.\n Tipp\n@@ -30066,15 +30066,15 @@\n Themen und Kl\u00e4nge Hier kann der Benutzer ausw\u00e4hlen, welches Desktop-Thema angewendet werden soll und welche Fehler- und Meldungst\u00f6ne abgespielt werden sollen. Standardm\u00e4\u00dfig ist \u201dSystemthema folgen\u201d eingestellt.\n Es erm\u00f6glicht weiterhin, das Symbolthema zu \u00e4ndern. Derzeit stehen drei Themen zur Verf\u00fcgung:\n \u2022 classic\n \u2022 material\n \u2022 material light\n To create custom icon themes, see section Icon Theme for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 653 / 1327\n \n 10.2.7.2 Hardware\n \n Hardware MPG Scale For the different HAL pins to connect MPG wheels to, you may select individual\n scales to be applied. The main reason for this was my own test to solve this through HAL connections,\n@@ -30090,15 +30090,15 @@\n werden dies niemals zulassen. Jeder kann also w\u00e4hlen, ob er sie verwenden m\u00f6chte oder nicht.\n Tastaturk\u00fcrzel sind standardm\u00e4\u00dfig deaktiviert.\n \n Warnung\n Es wird nicht empfohlen, Tastatur-Jogging zu verwenden, da dies ein ernsthaftes Risiko f\u00fcr\n Bediener und Maschine darstellt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 654 / 1327\n \n Please take care if you use a lathe, then the shortcuts will be different, see the Lathe Specific Section.\n Allgemeines\n \u2022 F1 - Trigger Estop (will work even if keyboard shortcuts are disabled)\n \u2022 F2 - Toggle machine on/off\n@@ -30129,15 +30129,15 @@\n Spindel\n \u2022 Starting RPM - Sets the rpm to be used if the spindle is started and no S value has been set.\n Anmerkung\n This value will be presetted according to your settings in [DISPLAY] DEFAULT_SPINDLE_SPEED of\n your INI file. If you change the settings on the settings page, that value will be default from that\n moment, your INI file will not be modified.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 655 / 1327\n \n \u2022 Spindelstange min und Spindelstange max - Legt die Grenzen der Spindelstange fest, die im INFORahmen auf dem Hauptbildschirm angezeigt werden.\n Standardwerte sind\n MIN = 0\n MAX = 6000\n@@ -30151,15 +30151,15 @@\n please take care that the \u201drabbit mode\u201d is activated, otherwise you will not be able to jog faster\n than the turtle jog velocity, which is calculated using the turtle jog factor.\n \u2022 Turtle jog factor - Sets the scale to apply for turtle jog mode (button pressed, showing the turtle). If\n you set a factor of 20, the turtle max. jog velocity will be 1/20 of the max. velocity of the machine.\n Anmerkung\n This button can be controlled using the Turtle-Jog HAL Pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 656 / 1327\n \n 10.2.7.3 Erweiterte Einstellungen\n \n Werkzeugmessung Bitte pr\u00fcfen Sie Auto Tool Measurement\n Anmerkung\n@@ -30173,15 +30173,15 @@\n \u2013 X Pos. - Die X-Position des Werkzeugschalters.\n \u2013 Y Pos. - Die Y-Position des Werkzeugschalters.\n \u2013 Z Pos. - Die Z-Position des Werkzeugschalters, wir fahren im Eilgang zu dieser Koordinate.\n \u2013 Max. Probe The distance to search for contact, an error will be launched, if no contact is given\n in this range. The distance has to be given in relative coordinates, beginning the move from\n Z Pos., so you have to give a negative value to go down!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 657 / 1327\n \n \u2013 Probe Height - The height of your probe switch, you can measure it. Just touch off the base\n where the probe switch is located and set that to zero. Then make a tool change and watch\n the tool_offset_z value, that is the height you must enter here.\n Geschwindigkeiten der Sonde\n@@ -30214,15 +30214,15 @@\n the 11th message will delete the first one, so you will only see the last 10.\n \u2022 Font - The font and size you want to use to display the messages.\n \u2022 Use frames - If you activate the checkbox, each message will be displayed in a frame, so it is much\n easier to distinguish the messages. But you will need a little bit more space.\n \u2022 Launch test message-button - It will show a message, so you can see the changes of your settings\n without the need to generate an error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 658 / 1327\n \n 10.2.8 Icon Themen\n Icon-Themen werden verwendet, um das Aussehen der Icons von GMOCCAPY anzupassen.\n GMOCCAPY wird mit drei verschiedenen Symbolthemen geliefert:\n \u2022 classic - The classic GMOCCAPY icons.\n@@ -30258,15 +30258,15 @@\n 16x16/actions sollte alle Icons mit der Kategorie \u201dactions\u201d in der Gr\u00f6\u00dfe 16x16 Pixel als Pixelgrafiken (z.B. png-Dateien) enthalten. Ein Sonderfall ist das Verzeichnis \u201dscalable/actions\u201d, dieses\n enth\u00e4lt skalierbare Icons, die nicht an eine bestimmte Gr\u00f6\u00dfe gebunden sind (z.B. svg-Dateien).\n Durch die Bereitstellung unterschiedlich gro\u00dfer Versionen der Icons k\u00f6nnen wir ein sch\u00f6n aussehendes Icon in verschiedenen Gr\u00f6\u00dfen garantieren, und wir haben auch die M\u00f6glichkeit, das\n Icon entsprechend seiner Gr\u00f6\u00dfe zu ver\u00e4ndern, zum Beispiel kann ein 64x64 px gro\u00dfes Icon mehr\n Details enthalten als seine 16x16 px Version.\n \u2022 F\u00fcr jedes Verzeichnis m\u00fcssen wir auch einen Abschnitt in die Datei index.theme schreiben:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 659 / 1327\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -30309,28 +30309,28 @@\n green\u2019ish).\n #00ff00\n Warning: this color indicates \u201dwarning\u201d (usually something\n yellow/orange\u2019ish).\n #0000ff\n Error: this color indicates \u201derror\u201d (usually something red\u2019ish).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 660 / 1327\n \n Tipp\n Examples of symbolic icons can be found at linuxcnc/share/gmoccapy/icons/material.\n \n 10.2.9 Drehmaschinen-spezifischer Abschnitt\n If in the INI file LATHE = 1 is given, the GUI will change its appearance to the special needs for a\n lathe. Mainly the Y axis will be hidden and the jog buttons will be arranged in a different order.\n \n Abbildung 10.19: Normale Drehmaschine\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 661 / 1327\n \n Abbildung 10.20: Back Tool Lathe\n As you see the R DRO has a black background and the D DRO is gray. This will change according to\n the active G-code G7 or G8. The active mode is visible by the black background, meaning in the shown\n images G8 is active.\n@@ -30341,15 +30341,15 @@\n Normale Drehmaschine:\n \u2022 Arrow_Left or NumPad_Left - Jog Z minus\n \u2022 Arrow_Right or NumPad_Right - Jog Z plus\n \u2022 Arrow_up or NumPad_Up - Jog X minus\n \u2022 Arrow_Down or NumPad_Down - Jog X plus\n Back Tool Lathe:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 662 / 1327\n \n \u2022 Arrow_Left or NumPad_Left - Jog Z minus\n \u2022 Arrow_Right or NumPad_Right - Jog Z plus\n \u2022 Arrow_up or NumPad_Up - Jog X plus\n \u2022 Arrow_Down or NumPad_Down - Jog X minus\n@@ -30361,15 +30361,15 @@\n There is a very good WIKI, which is actually growing, maintained by Marius, see Plasma wiki page.\n \n 10.2.11 Videos on YouTube\n Below is a series of videos that show GMOCCAPY in action. Unfortunately, these videos don\u2019t show\n the latest version of GMOCCAPY, but the way to use it will still be the same as in the current version.\n I will update the videos as soon as possible.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 663 / 1327\n \n 10.2.11.1 Grundlegende Verwendung\n https://youtu.be/O5B-s3uiI6g\n 10.2.11.2 Simulierte Jog-Wheels\n https://youtu.be/ag34SGxt97o\n@@ -30388,15 +30388,15 @@\n 10.2.12 Bekannte Probleme\n 10.2.12.1 Seltsame Zahlen im Infobereich\n Wenn Sie im Infobereich von GMOCCAPY seltsame Zahlen erhalten wie:\n \n 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\n MAX_VELOCITY = xxx.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 664 / 1327\n \n 10.2.12.2 Nicht endendes Makro\n Wenn Sie ein Makro ohne Bewegung verwenden, wie dieses hier:\n o sub\n G92.1\n@@ -30421,15 +30421,15 @@\n 10.3 Die Touchy Grafische Benutzeroberfl\u00e4che\n Touchy ist eine Benutzeroberfl\u00e4che f\u00fcr LinuxCNC, die f\u00fcr die Verwendung auf Maschinenbedienfeldern gedacht ist und daher keine Tastatur oder Maus ben\u00f6tigt.\n Es ist f\u00fcr die Verwendung mit einem Touchscreen gedacht und funktioniert in Kombination mit einem\n Rad/MPG und einigen Tasten und Schaltern.\n Die Registerkarte \u201dHandrad\u201d verf\u00fcgt \u00fcber Optionsfelder zur Auswahl zwischen den Funktionen \u201dVorschubOverride\u201d, \u201dSpindel-Override\u201d, \u201dMaximale Geschwindigkeit\u201d und \u201dTippen\u201d f\u00fcr den Rad/MPG-Eingang.\n Optionsfelder f\u00fcr die Achsenauswahl und die Schrittweite f\u00fcr den Tippbetrieb sind ebenfalls vorhanden.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 665 / 1327\n \n 10.3.1 Panel-Konfiguration\n 10.3.1.1 HAL-Verbindungen\n \n Touchy sucht in der INI-Datei unter der \u00dcberschrift [HAL] nach Eintr\u00e4gen von POSTGUI_HALFILE=

.pin--out (bit) Drives a physical output pin.\n \u2022 parport.

.pin--in (bit) Tracks a physical input pin.\n \u2022 parport.

.pin--in-not (bit) Tracks a physical input pin, but inverted.\n@@ -17557,15 +17557,15 @@\n pins to values indicated by -out-invert and -out-invert settings. reset must be later in the same\n thread as write. \u2019If \u2019-reset is TRUE, then the reset function will set the pin to the value of -outinvert. This can be used in conjunction with stepgen\u2019s doublefreq to produce one step per period.\n The stepgen stepspace for that pin must be set to 0 to enable doublefreq.\n The individual functions are provided for situations where one port needs to be updated in a very fast\n thread, but other ports can be updated in a slower thread to save CPU time. It is probably not a good\n idea to use both an -all function and an individual function at the same time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 327 / 1279\n \n 6.1.6 Common problems\n If loading the module reports\n insmod: error inserting \u2019/home/jepler/emc2/rtlib/hal_parport.ko\u2019:\n -1 Device or resource busy\n@@ -17606,15 +17606,15 @@\n \n Then use of this module will probably be necessary.\n Finally, HAL parport components should be loaded:\n loadrt probe_parport\n loadrt hal_parport ...\n 1 In the LinuxCNC packages for Ubuntu, the file /etc/modprobe.d/emc2 generally prevents parport_pc from being automatically loaded.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 328 / 1279\n \n 6.2 AX5214H Driver\n The Axiom Measurement & Control AX5214H is a 48 channel digital I/O board. It plugs into an ISA\n bus, and resembles a pair of 8255 chips. In fact it may be a pair of 8255 chips, but I\u2019m not sure.\n If/when someone starts a driver for an 8255 they should look at the ax5214 code, much of the work is\n@@ -17653,15 +17653,15 @@\n module, and FALSE drives it high, turning OFF the OPTO-22 module. If -invert is TRUE, then setting\n the HAL out- pin TRUE will drive the physical pin high and turn the module OFF.\n \n 6.2.4 Functions\n \u2022 (funct) ax5214..read \u2014 Reads all digital inputs on one board.\n \u2022 (funct) ax5214..write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 329 / 1279\n \n 6.3 General Mechatronics Driver\n General Mechatronics GM6-PCI card based motion control system\n For detailed description, please refer to the System integration manual.\n The GM6-PCI motion control card is based on an FPGA and a PCI bridge interface ASIC. A small\n@@ -17680,15 +17680,15 @@\n loadrt hal_gm\n \n During loading (or attempted loading) the driver prints some useful debugging messages to the kernel\n log, which can be viewed with dmesg.\n Up to 3 boards may be used in one system.\n The following connectors can be found on the GM6-PCI card:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 330 / 1279\n \n Figure 6.2: GM6-PCI card connectors and LEDs\n \n 6.3.1 I/O connectors\n \n@@ -17724,15 +17724,15 @@\n 2\n IOx/0\n \n Each pin can be configured as digital input or output. GM6-PCI motion control card has 4 general\n purpose I/O (GPIO) connectors, with eight configurable I/O on each. Every GPIO pin and parameter\n name begins as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n gm..gpio.\n \n where is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n gm.0.gpio.0.in-0\n \n@@ -17780,15 +17780,15 @@\n \n 6.3.2 Axis connectors\n \n Figure 6.4: Pin numbering of axis connectors\n \n 331 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 332 / 1279\n \n Table 6.5: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17816,15 +17816,15 @@\n modules to the axis connectors. Seven different system configurations are presented in the System integration manual for evaluating typical applications. Also the detailed description of the Axis modules\n can be found in the System integration manual.\n For evaluating the appropriate servo-drive structure the modules have to be connected as the following\n block diagram shows:\n \n Figure 6.5: Servo axis interfaces\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 333 / 1279\n \n 6.3.2.2 Encoder\n The GM6-PCI motion control card has six encoder modules. Each encoder module has three channels:\n \u2022 Channel-A\n \u2022 Channel-B\n@@ -17888,15 +17888,15 @@\n calculate velocity. It greatly reduces\n quantization noise as compared to\n simply differentiating the position\n output. When the measured velocity is\n below min-speed-estimate, the\n velocity output is 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 334 / 1279\n \n Table 6.7: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17971,15 +17971,15 @@\n example, if position-scale is 2000, then\n 1000 counts of the encoder will\n produce a position of 0.5 units.\n \n Setting encoder module of axis 0 to receive 500 CPR quadrature encoder signal and use\n reset to round position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 335 / 1279\n \n setp gm.0.encoder.0.counter-mode 0\n # 0: quad, 1: stepDir\n setp gm.0.encoder.0.index-mode 1\n # 0: reset pos at index, 1:round pos at index\n@@ -18050,15 +18050,15 @@\n \n Parameter description\n When 0, module produces Step/Dir signal.\n When 1, it produces Up/Down step signals.\n And when it is 2, it produces quadrature\n output signals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 336 / 1279\n \n Table 6.9: (continued)\n Parameters\n .control-type\n \n@@ -18115,15 +18115,15 @@\n Minimum time between two step pulses in\n nano-seconds.\n Minimum time between step pulse and\n direction change in nanoseconds.\n \n For evaluating the appropriate values see the timing diagrams below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 337 / 1279\n \n Figure 6.6: Reference signal timing diagrams\n Setting StepGen module of axis 0 to generate 1000 step pulse per position unit\n setp gm.0.stepgen.0.step-type 0\n setp gm.0.stepgen.0.control-type 0\n@@ -18141,15 +18141,15 @@\n # step generator, let interpolator control it.\n setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit\n setp gm.0.stepgen.0.steplen 1000\n # 1000 ns = 1 \u00b5s\n setp gm.0.stepgen.0.stepspace1000\n # 1000 ns = 1 \u00b5s\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n 338 / 1279\n \n # 2000 ns = 2 \u00b5s\n \n@@ -18202,15 +18202,15 @@\n direction\n (bit, In)\n \n Pin description\n Enable DAC output. When enable is\n false, DAC output is 0.0 V.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 339 / 1279\n \n Table 6.11: (continued)\n Pins\n \n Type and\n@@ -18273,15 +18273,15 @@\n gm..can-gm.\n \n where is from 0 to 5. For example, gm.0.can-gm.0.position refers to the output position\n of axis 0 in position units.\n HAL pins are updated by function:\n gm..write\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 340 / 1279\n \n 6.3.3.1 Pins\n Table 6.13: CAN module pins\n Pins\n \n@@ -18327,15 +18327,15 @@\n \n Pin description\n Indicates that watchdog timer is expired.\n \n Watchdog timer overrun causes the set of power-enable to low in hardware.\n 6.3.4.2 Parameters\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 341 / 1279\n \n Table 6.16: Watchdog parameters\n Parameters\n \n Type and\n@@ -18440,15 +18440,15 @@\n 2\n V+\n (Ext.)\n \n The GM6-PCI motion control card has two limit- and one homing switch input for each joint. All the\n names of these pins begin as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 342 / 1279\n \n gm..joint.\n \n where is from 0 to 5. For example, gm.0.joint.0.home-sw-in indicates the state of the\n axis 0 home switch.\n@@ -18504,15 +18504,15 @@\n 6.3.6 Status LEDs\n 6.3.6.1 CAN\n Color: Orange\n \u2022 Blink, during data communication.\n \u2022 On, when any of the buffers are full - communication error.\n \u2022 Off, when no data communication.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 343 / 1279\n \n 6.3.6.2 RS485\n Color: Orange\n \u2022 Blink, during initialization of modules on the bus\n \u2022 On, when the data communication is up between all initialized modules.\n@@ -18537,15 +18537,15 @@\n Available module types:\n \u2022 8-channel relay output module - gives eight NO-NC relay output on a three pole terminal connector\n for each channel.\n \u2022 8-channel digital input module - gives eight optical isolated digital input pins.\n \u2022 8 channel ADC and 4-channel DAC module - gives four digital-to-analogue converter outputs and\n eight analogue-to-digital inputs. This module is also optically isolated from the GM6-PCI card.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 344 / 1279\n \n Automatic node recognizing Each node connected to the bus was recognized by the GM6-PCI card\n automatically. During starting LinuxCNC, the driver export pins and parameters of all available modules automatically.\n Fault handling If a module does not answer regularly the GM6-PCI card drops down the module. If\n a module with output do not gets data with correct CRC regularly, the module switch to error state\n@@ -18575,15 +18575,15 @@\n Type and\n direction\n (bit, Out)\n \n Pin description\n Output pin for relay\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 345 / 1279\n \n Table 6.21: Relay output module parameters\n Parameters\n \n Type and\n@@ -18646,15 +18646,15 @@\n # First input of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address\n # Selects node with address 0 on the RS485 bus\n # Selects the first digital input module\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 346 / 1279\n \n 6.3.7.3 DAC & ADC module\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n All the pins and parameters are updated by the following function:\n gm..rs485\n@@ -18726,15 +18726,15 @@\n #\n .adc-0\n \n # First analogue channel of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address \u2190# Selects node with address 0 on the RS485 bus\n # Selects the first analogue input of the module\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 347 / 1279\n \n 6.3.7.4 Teach Pendant module\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n All the pins and parameters are updated by the following function:\n gm..rs485\n@@ -18816,15 +18816,15 @@\n # First analogue channel of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address\n # Selects node with address 0 on the RS485 bus\n # Selects the first analogue input of the module\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 348 / 1279\n \n 6.3.8 Errata\n 6.3.8.1 GM6-PCI card Errata\n The revision number in this section refers to the revision of the GM6-PCI card device.\n Rev. 1.2\n@@ -18857,15 +18857,15 @@\n number you set on the GS2.\n \u2022 -v or --verbose Turn on debug messages.\n \u2022 -A or --accel-seconds (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.\n \u2022 -D or --decel-seconds (default: 0.0) Seconds to decelerate the spindle from max. RPM to 0. If\n set to 0.0 the spindle will be allowed to coast to a stop without controlled deceleration.\n 2 In Europe the equivalent can be found under the brand name Omron.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 349 / 1279\n \n \u2022 -R or --braking-resistor This argument should be used when a braking resistor is installed on the\n GS2 VFD (see Appendix A of the GS2 manual). It disables deceleration over-voltage stall prevention\n (see GS2 modbus Parameter 6.05), allowing the VFD to keep braking even in situations where the\n motor is regenerating high voltage. The regenerated voltage gets safely dumped into the braking\n@@ -18895,15 +18895,15 @@\n \u2022 .spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n \u2022 .status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n \u2022 .status-2 (s32, out) Drive Status of the VFD (see the GS2 manual)\n Note\n The status value is a sum of all the bits that are on. So a 163 which means the drive is in the run\n mode is the sum of 3 (run) + 32 (freq set by serial) + 128 (operation set by serial).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 350 / 1279\n \n 6.4.3 Parameters\n With being gs2_vfd or the name given during loading with the -n option:\n \u2022 .error-count (s32, RW)\n \u2022 .loop-time (float, RW) how often the modbus is polled (default: 0.1)\n@@ -18938,15 +18938,15 @@\n \u2013 4-channel servo plus 8 step/dir generators\n \u2022 7I43 (48 I/O pins): using hm2_7i43 module\n \u2013 8-channel servo (8 PWM generators & 8 encoders)\n \u2013 4-channel servo plus 4 step/dir generators\n DB25 FPGA cards The 5I25 Superport FPGA card is preprogrammed when purchased and does not\n need a firmware binary.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 351 / 1279\n \n 6.5.3 Installing Firmware\n Depending on how you installed LinuxCNC you may have to open the Synaptic Package Manager from\n the System menu and install the package for your Mesa card. The quickest way to find them is to do a\n search for hostmot2 in the Synaptic Package Manager. Mark the firmware for installation, then apply.\n@@ -18982,15 +18982,15 @@\n \u2022 has_bit - (bit i/o) True if the watchdog has bit, False if the watchdog has not bit. If the watchdog\n has bit and the has_bit bit is True, the user can reset it to False to resume operation.\n 6.5.5.2 Parameters\n \u2022 timeout_ns - (u32 read/write) Watchdog timeout, in nanoseconds. This is initialized to 5,000,000\n (5 milliseconds) at module load time. If more than this amount of time passes between calls to the\n hm2 write function, the watchdog will bite.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 352 / 1279\n \n 6.5.6 HostMot2 Functions\n \u2022 hm2_..read - Read all inputs, update input HAL pins.\n \u2022 hm2_..write - Write all outputs.\n \u2022 hm2_..read_gpio - Read the GPIO input pins only. (This function is not\n@@ -19033,15 +19033,15 @@\n [ 1141.053386] hm2/hm2_5i20.0: 72 I/O Pins used:\n [ 1141.053394] hm2/hm2_5i20.0: IO Pin 000 (P2-01): IOPort\n [ 1141.053397] hm2/hm2_5i20.0: IO Pin 001 (P2-03): IOPort\n [ 1141.053401] hm2/hm2_5i20.0: IO Pin 002 (P2-05): Encoder #0, pin B (Input)\n [ 1141.053405] hm2/hm2_5i20.0: IO Pin 003 (P2-07): Encoder #0, pin A (Input)\n [ 1141.053408] hm2/hm2_5i20.0: IO Pin 004 (P2-09): IOPort\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 353 / 1279\n \n [ 1141.053411] hm2/hm2_5i20.0: IO Pin 005 (P2-11): Encoder #0, pin Index (Input)\n [ 1141.053415] hm2/hm2_5i20.0: IO Pin 006 (P2-13): IOPort\n [ 1141.053418] hm2/hm2_5i20.0: IO Pin 007 (P2-15): PWMGen #0, pin Out0 (PWM or Up) (Output)\n [ 1141.053422] hm2/hm2_5i20.0: IO Pin 008 (P2-17): IOPort\n@@ -19078,15 +19078,15 @@\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware- package. There is more information about firmware and configuration in the Configurations section.\n \n 6.5.10 HAL Pins\n The HAL pins for each configuration can be seen by opening up Show HAL Configuration from the\n Machine menu. All the HAL pins and parameters can be found there. The following figure is of the\n 5I20 configuration used above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 354 / 1279\n \n Figure 6.9: 5i20 HAL Pins\n \n 6.5.11 Configurations\n 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\u2019s look\n@@ -19102,15 +19102,15 @@\n (and save a 7I47). So in this way we can save two ports (48 bits) for GPIO.\n Here are tables of the firmwares available in the official packages. There may be additional firmwares\n available at the Mesanet.com website that have not yet made it into the LinuxCNC official firmware\n packages, so check there too.\n 3x20 (6-port various) Default Configurations (The 3x20 comes in 1M, 1.5M, and 2M gate versions. So\n far, all firmware is available in all gate sizes.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19323,15 +19323,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19436,15 +19436,15 @@\n \u2022 in - (Bit, Out) Normal state of the hardware input pin. Both full GPIO pins and I/O pins used as\n inputs by active module instances have this pin.\n \u2022 in_not - (Bit, Out) Inverted state of the hardware input pin. Both full GPIO pins and I/O pins used\n as inputs by active module instances have this pin.\n \u2022 out - (Bit, In) Value to be written (possibly inverted) to the hardware output pin. Only full GPIO pins\n have this pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 357 / 1279\n \n 6.5.12.2 Parameters\n \u2022 invert_output - (Bit, RW) This parameter only has an effect if the is_output parameter is true. If this\n parameter is true, the output value of the GPIO will be the inverse of the value on the out HAL pin.\n Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter.\n@@ -19481,15 +19481,15 @@\n \u2022 position-cmd - (Float, In) Target position of stepper motion, in user-defined position units.\n \u2022 position-fb - (Float, Out) Feedback position in user-defined position units (counts / position_scale).\n \u2022 velocity-cmd - (Float, In) Target velocity of stepper motion, in user-defined position units per second.\n This pin is only used when the stepgen is in velocity control mode (control-type=1).\n \u2022 velocity-fb - (Float, Out) Feedback velocity in user-defined position units per second.\n 3 At present, the firmware supports multi-phase stepper outputs, but the driver doesn\u2019t. Interested volunteers are solicited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 358 / 1279\n \n 6.5.13.2 Parameters\n \u2022 dirhold - (u32, RW) Minimum duration of stable Direction signal after a step ends, in nanoseconds.\n \u2022 dirsetup - (u32, RW) Minimum duration of stable Direction signal before a step begins, in nanoseconds.\n \u2022 maxaccel - (Float, RW) Maximum acceleration, in position units per second per second. If set to 0,\n@@ -19524,15 +19524,15 @@\n The function of the Out0 and Out1 I/O pins varies with output-type parameter (see below).\n The hm2 pwmgen representation is similar to the software pwmgen component. Each pwmgen instance has the following pins and parameters:\n 6.5.14.1 Pins\n \u2022 enable - (Bit, In) If true, the pwmgen will set its Not-Enable pin false and output its pulses. If enable\n is false, pwmgen will set its Not-Enable pin true and not output any signals.\n \u2022 value - (Float, In) The current pwmgen command value, in arbitrary units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 359 / 1279\n \n 6.5.14.2 Parameters\n \u2022 output-type - (s32, RW) This emulates the output_type load-time argument to the software pwmgen\n component. This parameter may be changed at runtime, but most of the time you probably want\n to set it at startup and then leave it alone. Accepted values are 1 (PWM on Out0 and Direction on\n@@ -19574,15 +19574,15 @@\n the resulting value on the I/O pin is available on the in and in_not pins. Only full GPIO pins and\n I/O pins used as outputs by active module instances have this parameter.\n \n 6.5.15 Encoder\n Encoders have names like hm2_..encoder... Instance is a twodigit number that corresponds to the HostMot2 encoder instance number. There are num_encoders\n instances, starting with 00.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 360 / 1279\n \n Each encoder uses three or four input I/O pins, depending on how the firmware was compiled. Threepin encoders use A, B, and Index (sometimes also known as Z). Four-pin encoders use A, B, Index, and\n Index-mask.\n The hm2 encoder representation is similar to the one described by the Canonical Device Interface\n (in the HAL General Reference document), and to the software encoder component. Each encoder\n@@ -19619,15 +19619,15 @@\n direction is B.\n \u2022 vel-timeout - (Float, RW) When the encoder is moving slower than one pulse for each time that the\n driver reads the count from the FPGA (in the hm2_read() function), the velocity is harder to estimate.\n The driver can wait several iterations for the next pulse to arrive, all the while reporting the upper\n bound of the encoder velocity, which can be accurately guessed. This parameter specifies how long\n to wait for the next pulse, before reporting the encoder stopped. This parameter is in seconds.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 361 / 1279\n \n 6.5.16 5I25 Configuration\n 6.5.16.1 Firmware\n The 5I25 firmware comes preloaded for the daughter card it is purchased with. So the firmware=xxx.BIT\n is not part of the hm2_pci configuration string when using a 5I25.\n@@ -19661,15 +19661,15 @@\n maxlimit: +10\n maxfullscale: 10\n If you wanted to say scale the analog out of a channel to IPS for a velocity mode servo (say 24 IPS\n max) you could set the limits like this:\n minlimit: -24\n maxlimit: +24\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 362 / 1279\n \n maxfullscale: 24\n If you wanted to scale the analog out of a channel to RPM for a 0 to 6000 RPM spindle with 0-10 V\n control you could set the limits like this:\n minlimit: 0\n@@ -19701,15 +19701,15 @@\n to facilitate the low level protocol debug.\n \u2022 You have more than one device to connect. MB2HAL is very efficiently managing multiple devices,\n transactions and links. Currently I am monitoring two axis drivers using a Rs232 port, a VFD driver\n using another Rs232 port, and a remote I/O using TCP/IP.\n \u2022 You want a protocol to connect your Arduino to HAL. Look the included sample configuration file,\n sketch and library for Arduino Modbus.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 363 / 1279\n \n 6.6.2 Usage\n a. Create a config file from the example below\n 1. Set component name (optional)\n Set HAL_MODULE_NAME=mymodule (default HAL_MODULE_NAME=mb2hal)\n@@ -19789,15 +19789,15 @@\n The serial port. For example \u201d/dev/ttyS0\u201d. Ignored if\n LINK_TYPE=serial\n LINK_TYPE=tcp.\n SERIAL_BAUD Integer If\n The baud rate. Ignored if LINK_TYPE=tcp.\n LINK_TYPE=serial\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 364 / 1279\n \n Value\n Type\n Required\n Description\n@@ -19890,15 +19890,15 @@\n parameter above.\n \n 6.6.3.3 Error codes\n While debugging transactions, note the returned \u201dret[]\u201d value correspond to:\n Modbus protocol exceptions:\n \u2022 0x01 - ILLEGAL_FUNCTION - the FUNCTION code received in the query is not allowed or invalid.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 365 / 1279\n \n \u2022 0x02 - ILLEGAL_DATA_ADDRESS - the DATA ADDRESS received in the query is not an allowable\n address for the slave or is invalid.\n \u2022 0x03 - ILLEGAL_DATA_VALUE - a VALUE contained in the data query field is not an allowable value\n or is invalid.\n@@ -19934,15 +19934,15 @@\n # ++++++++++++++++++++++++\n [MB2HAL_INIT]\n #OPTIONAL: Debug level of init and INI file parsing.\n # 0 = silent.\n # 1 = error messages (default).\n # 2 = OK confirmation messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 366 / 1279\n \n # 3 = debugging messages.\n # 4 = maximum debugging messages (only in transactions).\n INIT_DEBUG=3\n #OPTIONAL: Set to 1.1 to enable the new functions:\n@@ -19987,15 +19987,15 @@\n SERIAL_BAUD=115200\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n #if LINK_TYPE=tcp then IGNORED\n #Data bits. One of 5,6,7,8.\n SERIAL_BITS=8\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 367 / 1279\n \n #if LINK_TYPE=tcp then IGNORED\n #Data parity. One of: even, odd, none.\n SERIAL_PARITY=none\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n@@ -20079,15 +20079,15 @@\n #\n Both pin values are added and limited to 65535 (UINT16_MAX). Normally use one and let \u2190the other open (read as 0).\n # fnct_15_write_multiple_coils:\n #\n mb2hal.m.n.bit\n (input)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 368 / 1279\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20150,15 +20150,15 @@\n -0x07 Unsuccessful programming request using function code 13 or \u219014.\n #MEMORY_PARITY_ERROR\n -0x08 SLAVE parity error in MEMORY.\n #GATEWAY_PROBLEM_PATH\n -0x0A (-10) Gateway path(s) not available.\n #GATEWAY_PROBLEM_TARGET -0x0B (-11) The target device failed to repond (generated by \u2190master, not slave).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20215,15 +20215,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 369 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 370 / 1279\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20256,15 +20256,15 @@\n 6.6.5.3 fnct_03_read_holding_registers\n \u2022 mb2hal.m.n.float float out\n \u2022 mb2hal.m.n.int s32 out\n 6.6.5.4 fnct_04_read_input_registers\n \u2022 mb2hal.m.n.float float out\n \u2022 mb2hal.m.n.int s32 out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 371 / 1279\n \n 6.6.5.5 fnct_05_write_single_coil\n \u2022 mb2hal.m.n.bit bit in\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.\n 6.6.5.6 fnct_06_write_single_register\n@@ -20295,15 +20295,15 @@\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n \n The above command says:\n loadusr, wait for coolant pins to be ready, component mitsub_vfd, with 2 slaves named spindle (slave\n #2) and coolant (slave #1)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 372 / 1279\n \n 6.7.1 Command Line Options\n The command line options are:\n \u2022 -b or --baud : set the baud rate - all networked VFDs must be the same\n \u2022 -p or --port : sets the port to use such as /dev/ttyUSB0\n@@ -20329,15 +20329,15 @@\n \u2022 .scale-fb (float, in) Scales the motor-fb pin to arbitrary units. default 1 = Hertz.\n \u2022 .scale-amps (float, in) Scales the motor-amps pin to arbitrary units. default 1 = amps.\n \u2022 .scale-power (float, in) Scales the motor-power pin to arbitrary units. default 1 = .\n \u2022 .estop (bit, in) puts the VFD into emergency-stopped status.\n \u2022 .status-bit-N (bit, out) N = 0 to 7, Status bits are user configurable on the VFD. bit 3 should be\n set to at speed and bit 7 should be set to alarm. others are free to be set as required.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6.7.3 HAL example\n #\n # example usage of the Mitsubishi VFD driver\n #\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n # **************** Spindle VFD setup slave 2 *********************\n@@ -20396,15 +20396,15 @@\n One must power cycle the VFD for some of these to register eg PR 79\n \u2022 PR 77 set to 1 -to unlock other PR modification.\n \u2022 PR 79 set to 1 or 0 -for communication thru serial.\n \u2022 PR 117 set to 0-31 -slave number, driver must reference same number.\n \n 373 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 374 / 1279\n \n \u2022 PR 118 tested with 96 -baud rate (can be set to 48,96,192) if driver is also set.\n \u2022 PR 119 set to 0 -stop bit/data length (8 bits, two stop)\n \u2022 PR 120 set to 0 -no parity\n \u2022 PR 121 set to 1-10 -if 10 (maximuim) COM errors then VFD faults.\n@@ -20440,15 +20440,15 @@\n \u2022 (bit) motenc..enc--reset-count - If this pin is true, the counter will immediately\n be reset to zero, and the pin will be cleared.\n \u2022 (float) motenc..dac--value - Analog output value for DAC (in user units, see -gain\n and -offset)\n \u2022 (float) motenc..adc--value - Analog input value read by ADC (in user units, see\n -gain and -offset)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 375 / 1279\n \n \u2022 (bit) motenc..in- - State of digital input pin, see canonical digital input.\n \u2022 (bit) motenc..in--not - Inverted state of digital input pin, see canonical digital\n input.\n \u2022 (bit) motenc..out- - Value to be written to digital output, seen canonical digital\n@@ -20494,15 +20494,15 @@\n \u2022 (funct) motenc..encoder-read - Reads all encoder counters.\n \u2022 (funct) motenc..adc-read - Reads the analog-to-digital converters.\n \u2022 (funct) motenc..digital-in-read - Reads digital inputs.\n \u2022 (funct) motenc..dac-write - Writes the voltages to the DACs.\n \u2022 (funct) motenc..digital-out-write - Writes digital outputs.\n \u2022 (funct) motenc..misc-update - Updates misc stuff.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 376 / 1279\n \n 6.9 Opto22 Driver\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n 6.9.1 The Adapter Card\n@@ -20538,15 +20538,15 @@\n signal to this pin to write to an I/O point of the card. The PINNUMBER represents the position in\n the relay rack.Eg. PINNUMBER 23 is position 23 in a Opto22 relay rack and would be pin 1 on the\n 50 pin header connector.\n \u2022 opto_ac5.[BOARDNUMBER].led[NUMBER] OUT bit - Turns one of the 4 onboard LEDs on/off. LEDs\n are numbered 0 to 3.\n BOARDNUMBER can be 0-3 PORTNUMBER can be 0 or 1. Port 0 is closest to the card bracket.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 377 / 1279\n \n 6.9.4 Parameters\n \u2022 opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit - When TRUE,\n invert the meaning of the corresponding -out pin so that TRUE gives LOW and FALSE gives HIGH.\n \n@@ -20583,15 +20583,15 @@\n 24 bits represented in a BINARY number. Bit 1 is the rightmost number:\n 16 zeros for the 16 inputs and 8 ones for the 8 outputs\n 000000000000000011111111\n \n This converts to FF on the calculator, so 0xff is the number to use for portconfig0 and/or portconfig1\n when loading the driver.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 378 / 1279\n \n 6.9.7 Pin Numbering\n HAL pin 00 corresponds to bit 1 (the rightmost) which represents position 0 on an Opto22 relay rack.\n HAL pin 01 corresponds to bit 2 (one spot to the left of the rightmost) which represents position 1 on\n an Opto22 relay rack. HAL pin 23 corresponds to bit 24 (the leftmost) which represents position 23\n@@ -20634,15 +20634,15 @@\n addresses, so if one is at 00, the next would have to be 02.)\n Alternatively, the 8 digital output pins can be used as additional digital outputs, it works the same\n way as above with the syntax : extradout=0xnn\u2019. The extradac and extradout options are mutually\n exclusive on each board, you can only specify one.\n 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\n term response. The syntax is : timestamp=0xnn[,0xmm], this works the same way as above to select\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 379 / 1279\n \n which board is being configured. Default is to not enable the timestamp option. If you put this option\n on the command line, it enables the option. The first n selects the EPP bus, the second one matches\n the address of the board having the option enabled. The driver checks the revision level of the board\n to make sure it has firmware supporting the feature, and produces an error message if the board does\n@@ -20685,15 +20685,15 @@\n function has to be enabled in the HAL command line that starts the PPMC driver, with the timestamp=0x00 option.\n \u2022 (All float output) ppmc..encoder..position - Encoder position, in user units.\n \u2022 (All bit bidir) ppmc..encoder..index-enable - Connect to joint.#.index-enable for\n home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware\n to reset the count to zero on the next encoder index pulse. The driver will detect this and set the\n signal back to false.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 380 / 1279\n \n \u2022 (PPMC float output) ppmc..DAC..value - sends a signed value to the 16-bit Digital\n to Analog Converter on the PPMC DAC16 board commanding the analog output voltage of that DAC\n channel.\n \u2022 (UPC bit input) ppmc..pwm..enable - Enables a PWM generator.\n@@ -20732,15 +20732,15 @@\n an output value equal to the 1/scale value will produce an output of + or - value Volts. So, if the\n scale parameter is 0.1 and you send a value of 0.5, the output will be 5.0 Volts.\n \u2022 (UPC float) ppmc..pwm..scale - Scaling for PWM generator. If scale is X, then the\n duty cycle will be 100% when the value pin is X (or -X).\n \u2022 (UPC float) ppmc..pwm..max-dc - Maximum duty cycle, from 0.0 to 1.0.\n \u2022 (UPC float) ppmc..pwm..min-dc - Minimum duty cycle, from 0.0 to 1.0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 381 / 1279\n \n \u2022 (UPC float) ppmc..pwm..duty-cycle - Actual duty cycle (used mostly for troubleshooting.)\n \u2022 (UPC bit) ppmc..pwm..bootstrap - If true, the PWM generator will generate a\n short sequence of pulses of both polarities when E-stop goes false, to reset the shutdown latches\n on some PWM servo drives.\n@@ -20775,15 +20775,15 @@\n These writes are organized into blocks of contiguous registers to be written in a block to minimize\n CPU overhead.\n \n 6.11 Pluto P Driver\n 6.11.1 General Info\n The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 382 / 1279\n \n 6.11.1.1 Requirements\n 1. A Pluto-P board\n 2. An EPP-compatible parallel port, configured for EPP mode in the system BIOS or a PCI EPP\n compatible parallel port card.\n@@ -20820,15 +20820,15 @@\n isolation and protection. Traditional parallel port optoisolator boards do not work with pluto_servo\n due to the bidirectional nature of the EPP protocol.\n 6.11.1.4 LED\n \u2022 When the device is unprogrammed, the LED glows faintly. When the device is programmed, the\n LED glows according to the duty cycle of PWM0 (LED = UP0 xor DOWN0) or STEPGEN0 (LED =\n STEP0 xor DIR0).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 383 / 1279\n \n 6.11.1.5 Power\n \u2022 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\n these VCC pins. The required current is not yet known, but is probably around 50mA plus I/O\n current.\n@@ -20859,15 +20859,15 @@\n The PWM period is approximately 19.5 kHz (40 MHz / 2047). A PDM-like mode is also available.\n \u2022 18 digital outputs: 10 dedicated, 8 shared with PWM functions. (Example: A lathe with unidirectional PWM spindle control may use 13 total digital outputs)\n \u2022 20 digital inputs: 8 dedicated, 12 shared with Quadrature functions. (Example: A lathe with index\n pulse only on the spindle may use 13 total digital inputs.)\n \u2022 EPP communication with the PC. The EPP communication typically takes around 100 \u00b5s on machines\n tested so far, enabling servo rates above 1 kHz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 384 / 1279\n \n 6.11.2.1 Pinout\n \u2022 UPx - The up (up/down mode) or pwm (pwm+direction mode) signal from PWM generator X. May be\n used as a digital output if the corresponding PWM channel is unused, or the output on the channel\n is always negative. The corresponding digital output invert may be set to TRUE to make UPx active\n@@ -20897,15 +20897,15 @@\n \n Behavior if both\n functions used\n When pwm-0-pwmdir is\n TRUE, this pin is the PWM\n output\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 385 / 1279\n \n Table 6.27: (continued)\n Primary function\n \n Alternate Function\n@@ -21018,15 +21018,15 @@\n \n 6.11.2.2 Input latching and output updating\n \u2022 PWM duty cycles for each channel are updated at different times.\n \u2022 Digital outputs OUT0 through OUT9 are all updated at the same time. Digital outputs OUT10\n through OUT17 are updated at the same time as the pwm function they are shared with.\n \u2022 Digital inputs IN0 through IN19 are all latched at the same time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 386 / 1279\n \n \u2022 Quadrature positions for each channel are latched at different times.\n 6.11.2.3 HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n page, pluto_servo.9.\n@@ -21053,15 +21053,15 @@\n \u2022 OUTx - Dedicated digital output #x\n \u2022 GND - Ground\n \u2022 VCC - +3.3V regulated DC\n While the extended main connector has a superset of signals usually found on a Step & Direction DB25\n connector\u20144 step generators, 9 inputs, and 6 general-purpose outputs\u2014the layout on this header is\n different than the layout of a standard 26-pin ribbon cable to DB25 connector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 387 / 1279\n \n Figure 6.11: Pluto-Step Pinout\n \n 6.11.3.2 Input latching and output updating\n \u2022 Step frequencies for each channel are updated at different times.\n@@ -21070,15 +21070,15 @@\n \u2022 Feedback positions for each channel are latched at different times.\n 6.11.3.3 Step Waveform Timings\n The firmware and driver enforce step length, space, and direction change times. Timings are rounded\n up to the next multiple of 1.6\u03bcs, with a maximum of 49.6\u03bcs. The timings are the same as for the software stepgen component, except that dirhold and dirsetup have been merged into a single parameter\n dirtime which should be the maximum of the two, and that the same step timings are always applied\n to all channels.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 388 / 1279\n \n Figure 6.12: Pluto-Step Timings\n \n 6.11.3.4 HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n@@ -21095,15 +21095,15 @@\n \n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn pmx485 pmx485 /dev/ttyUSB0\n \n This will load the pmx485 component using the /dev/ttyUSB0 port and wait for it to become ready.\n It is necessary to name the port to use for communications.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 389 / 1279\n \n 6.12.1 Pins\n \u2022 pmx485.mode-set (bit, in) # set cutting mode\n \u2022 pmx485.current-set (bit, in) # set cutting current\n \u2022 pmx485.pressure-set (bit, in) # set gas pressure\n@@ -21134,15 +21134,15 @@\n \u2022 Disconnect the Powermax power supply from its power source for approximately 30 seconds. When\n you power the system back ON, it will no longer be in remote mode.\n \n 6.12.3 Reference:\n \u2022 Hypertherm Application Note #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serial Communication Protocol\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 390 / 1279\n \n 6.13 Servo To Go Driver\n The Servo-To-Go (STG) is one of the first PC motion control cards supported by LinuxCNC. It is an\n ISA card and it exists in different flavors (all supported by this driver). The board includes up to 8\n channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, an\n@@ -21182,15 +21182,15 @@\n 6.13.2 Pins\n \u2022 stg..counts - (s32) Tracks the counted encoder ticks.\n \u2022 stg..position - (float) Outputs a converted position.\n \u2022 stg..dac-value - (float) Drives the voltage for the corresponding DAC.\n \u2022 stg..adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n \u2022 stg.in- - (bit) Tracks a physical input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 391 / 1279\n \n \u2022 stg.in--not - (bit) Tracks a physical input pin, but inverted.\n \u2022 stg.out- - (bit) Drives a physical output pin\n For each pin, is the axis number, and is the logic pin number of the STG if\n IIOO is defined, there are 16 input pins (in-00 .. in-15) and 16 output pins (out-00 .. out-15), and they\n@@ -21224,15 +21224,15 @@\n and ShuttlePRO2 devices with LinuxCNC\u2019s HAL.\n If the driver is started without command-line arguments, it will probe all /dev/hidraw* device files for\n Shuttle devices, and use all devices found. If it is started with command-line arguments, it will only\n probe the devices specified.\n The ShuttleXpress has five momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 392 / 1279\n \n The ShuttlePRO has 13 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n The ShuttlePRO2 has 15 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n@@ -21270,15 +21270,15 @@\n .spring-wheel-s32 (s32 out)\n The current deflection of the spring-wheel (the outer wheel). It\u2019s 0 at rest, and ranges from -7 at\n the counter-clockwise extreme to +7 at the clockwise extreme.\n .spring-wheel-f (float out)\n The current deflection of the spring-wheel (the outer wheel). It\u2019s 0.0 at rest, -1.0 at the counterclockwise extreme, and +1.0 at the clockwise extreme. The Shuttle devices report the springwheel position as an integer from -7 to +7, so this pin reports only 15 discrete values in it\u2019s\n range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 393 / 1279\n \n 6.15 VFS11 VFD Driver\n This is a userspace HAL program to control the S11 series of VFD\u2019s from Toshiba.\n vfs11_vfd supports serial and TCP connections. Serial connections may be RS232 or RS485. RS485 is\n 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\n@@ -21311,15 +21311,15 @@\n \u2022 .acceleration-pattern (bit, in) when true, set acceleration and deceleration times as defined in\n registers F500 and F501 respectively. Used in PID loops to choose shorter ramp times to avoid\n oscillation.\n \u2022 .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.\n \u2022 .at-speed (bit, out) when drive is at commanded speed (see speed-tolerance below)\n \u2022 .current-load-percentage (float, out) reported from the VFD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 394 / 1279\n \n \u2022 .dc-brake (bit, in) engage the DC brake. Also turns off spindle-on.\n \u2022 .enable (bit, in) enable the VFD. If false, all operating parameters are still read but control is\n released and panel control is enabled (subject to VFD setup).\n \u2022 .err-reset (bit, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may\n@@ -21356,15 +21356,15 @@\n \u2022 .status (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function\n Instruction Manual, register FD01). A bitmap.\n \u2022 .trip-code (s32, out) trip code if VF-S11 is in tripped state.\n \u2022 .error-count (s32, out) number of Modbus transactions which returned an error\n \u2022 .max-speed (bit, in) ignore the loop-time parameter and run Modbus at maximum speed, at the\n expense of higher CPU usage. Suggested use during spindle positioning.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 395 / 1279\n \n 6.15.3 Parameters\n Where is vfs11_vfd or the name given during loading with the -n option.\n \u2022 .frequency-limit (float, RO) upper limit read from VFD setup.\n \u2022 .loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n@@ -21400,15 +21400,15 @@\n # 1 2\n STOPBITS=1\n #rs232 rs485\n SERIAL_MODE=rs485\n # up down none\n # this feature might not work with a stock Ubuntu\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # libmodbus5/libmodbus-dev package, and generate a warning\n # execution will continue as if RTS_MODE=up were given.\n RTS_MODE=up\n #--------------------# modbus timers in seconds\n # inter-character timer\n BYTE_TIMEOUT=0.5\n@@ -21447,15 +21447,15 @@\n # see orient.9 and motion.9\n net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode\n # take precedence over control panel\n setp spindle-vfd.enable 1\n \n 396 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 397 / 1279\n \n 6.15.6 Panel operation\n 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\n be set, but will not be written to the VFD untile the enable pin is set. Operating parameters are still\n read while bus control is disabled. Exiting the vfs11_vfd driver in a controlled way will release the\n@@ -21489,15 +21489,15 @@\n protocol. So the last parameter which you\u2019d want to change is the protocol - set from Toshiba Inverter\n Protocol to Modbus; thereafter, the Windows app is useless.\n To increase the upper frequency limit, the UL and FH parameters must be changed on the panel. I\n increased them from 50 to 80.\n See dump-params.mio for a description of non-standard VF-S11 parameters of my setup. This file is\n for the modio Modbus interactive utility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 398 / 1279\n \n 6.15.9 Programming Note\n The vfs11_vfd driver uses the libmodbus version 3 library which is more recent than the version 2\n code used in gs2_vfd.\n The Ubuntu libmodbus5 and libmodbus-dev packages are only available starting from Ubuntu 12\n@@ -21505,15 +21505,15 @@\n Therefore, building vfs11_vfd using this library might generate a warning if RTS_MODE= is specified\n in the INI file.\n To use the full functionality on lucid and precise:\n \u2022 remove the libmodbus packages: sudo apt-get remove libmodbus5 libmodbus-dev\n \u2022 build and install libmodbus version 3 from source as outlined here.\n Libmodbus does not build on Ubuntu Hardy, hence vfs11_vfd is not available on Hardy.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 399 / 1279\n \n Chapter 7\n \n Hardware Examples\n 7.1 PCI Parallel Port\n@@ -21544,15 +21544,15 @@\n and then added the following lines so the parport will be read and written:\n addf parport.1.read base-thread\n addf parport.1.write base-thread\n \n After doing the above then run your config and verify that the parallel port got loaded in Machine/Show\n HAL Configuration window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 400 / 1279\n \n 7.2 Spindle Control\n LinuxCNC can control up to 8 spindles. The number is set in the INI file. The examples below all\n refer to a single-spindle config with spindle control pins with names like spindle.0... In the case of a\n multiple spindle machine all that changes is that additional pins exist with names such as spindle.6...\n@@ -21588,15 +21588,15 @@\n \n 7.2.3 Spindle Enable\n If you need a spindle enable signal, link your output pin to spindle.0.on. To link these pins to a\n parallel port pin put something like the following in your .hal file, making sure you pick the pin that\n is connected to your control device.\n net spindle-enable spindle.0.on => parport.0.pin-14-out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 401 / 1279\n \n 7.2.4 Spindle Direction\n If you have direction control of your spindle, then the HAL pins spindle.N.forward and spindle.N.reverse\n are controlled by the G-codes M3 and M4. Spindle speed Sn must be set to a positive non-zero value\n for M3/M4 to turn on spindle motion.\n@@ -21638,15 +21638,15 @@\n # the output of spindle ramp is sent to the scale in\n net spindle-ramped <= spindle-ramp.out => scale.0.in\n # to know when to start the motion we send the near component\n # (named spindle-at-speed) to the spindle commanded speed from\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 402 / 1279\n \n # the signal spindle-cmd and the actual spindle speed\n # provided your spindle can accelerate at the maxv setting.\n net spindle-cmd => spindle-at-speed.in1\n net spindle-ramped => spindle-at-speed.in2\n@@ -21686,15 +21686,15 @@\n 1 In this example, we will assume that some encoders have already been issued to axes/joints 0, 1, and 2. So the next encoder\n available for us to attach to the spindle would be number 3. Your situation may differ.\n 2 The HAL encoder index-enable is an exception to the rule in that it behaves as both an input and an output, see the Encoder\n Section for details\n 3 It is because we selected non-quadrature simple counting\u2026 above that we can get away with quadrature counting without\n having any B quadrature input.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 403 / 1279\n \n 7.2.6.2 Spindle At Speed\n To enable LinuxCNC to wait for the spindle to be at speed before executing a series of moves, the\n spindle.N.at-speed needs to turn true at the moment the spindle is at the commanded speed. To\n achieve this you need spindle feedback from an encoder. Since the feedback and the commanded\n@@ -21734,15 +21734,15 @@\n loadrt encoder num_chan=1\n loadrt mux4 count=1\n addf encoder.capture-position servo-thread\n addf encoder.update-counters base-thread\n addf mux4.0 servo-thread\n # If your MPG outputs a quadrature signal per click set x4 to 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 404 / 1279\n \n # If your MPG puts out 1 pulse per click set x4 to 0\n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n@@ -21789,15 +21789,15 @@\n loadrt ilowpass\n addf ilowpass.0 servo-thread\n setp ilowpass.0.scale 1000\n setp ilowpass.0.gain 0.01\n # If your MPG outputs a quadrature signal per click set x4 to 1\n # If your MPG puts out 1 pulse per click set x4 to 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 405 / 1279\n \n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n # even if that means the commanded motion is not completed,\n@@ -21840,15 +21840,15 @@\n 7.4.1 Example\n This example shows the connections needed to use an Automation Direct GS2 VFD to drive a spindle.\n The spindle speed and direction is controlled by LinuxCNC.\n Using the GS2 component involves very little to set up. We start with a StepConf Wizard generated\n config. Make sure the pins with \u201dSpindle CW\u201d and \u201dSpindle PWM\u201d are set to unused in the parallel\n port setup screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 406 / 1279\n \n In the custom.hal file we place the following to connect LinuxCNC to the GS2 and have LinuxCNC\n control the drive.\n GS2 Example\n # load the user space component for the Automation Direct GS2 VFD\u2019s\n@@ -21877,15 +21877,15 @@\n \u2022 P4.00 (Source of Frequency Command) must be set to Frequency determined by RS232C/RS485\n communication interface, 05.\n \u2022 P9.01 (Transmission Speed) must be set to 9600 baud, 01.\n \u2022 P9.02 (Communication Protocol) must be set to \u201dModbus RTU mode, 8 data bits, no parity, 2 stop\n bits\u201d, 03.\n A PyVCP panel based on this example is here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 407 / 1279\n \n Chapter 8\n \n ClassicLadder\n 8.1 ClassicLadder Introduction\n@@ -21915,15 +21915,15 @@\n along the top and bottom of the page while the rungs are drawn vertically from left to right.\n A program in ladder logic, also called a ladder diagram, is similar to a schematic for a set of relay\n circuits. Ladder logic is useful because a wide variety of engineers and technicians can understand\n and use it without much additional training because of the resemblance.\n Ladder logic is widely used to program PLCs, where sequential control of a process or manufacturing\n operation is required. Ladder logic is useful for simple but critical control systems, or for reworking\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 408 / 1279\n \n old hardwired relay circuits. As programmable logic controllers became more sophisticated it has\n also been used in very complex automation systems.\n Ladder logic can be thought of as a rule-based language, rather than a procedural language. A rung in\n the ladder represents a rule. When implemented with relays and other electromechanical devices, the\n@@ -21953,15 +21953,15 @@\n \n The input on the left, B0, a normally open contact, is connected to the coil (output) on the right, Q0.\n Now imagine a voltage gets applied to the leftmost end, because the input B0 turns true (e.g. the\n input is activated, or the user pushed the NO contact). The voltage has a direct path to reach the coil\n (output) on the right, Q0. As a consequence, the Q0 coil (output) will turn from 0/off/false to 1/on/true.\n If the user releases B0, the Q0 output quickly returns to 0/off/false.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 409 / 1279\n \n 8.1.4 Basic Latching On-Off Circuit\n Building on the above example, suppose we add a switch that closes whenever the coil Q0 is active.\n This would be the case in a relay, where the coil can activate the switch contacts; or in a contactor,\n where there are often several small auxiliary contacts in addition to the large 3-phase contacts that\n@@ -21993,15 +21993,15 @@\n back on.\n 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\n also a very safe circuit, in that if start and stop are both pressed at the same time, the stop function\n always wins.\n This is the basic building block of much of ladder programming, so if you are new to it, you would do\n well to make sure that you understand how this circuit operates.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 410 / 1279\n \n 8.2 ClassicLadder Programming\n 8.2.1 Ladder Concepts\n ClassicLadder is a type of programming language originally implemented on industrial PLCs (it\u2019s\n called Ladder Programming). It is based on the concept of relay contacts and coils, and can be used\n@@ -22030,15 +22030,15 @@\n 8.2.3.1 Files\n Typically ClassicLadder components are placed in the custom.hal file if your working from a Stepconf\n generated configuration. These must not be placed in the custom_postgui.hal file or the Ladder Editor\n menu will be grayed out.\n Note\n Ladder files (.clp) must not contain any blank spaces in the name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 411 / 1279\n \n 8.2.3.2 Realtime Module\n Loading the ClassicLadder real time module (classicladder_rt) is possible from a HAL file, or directly\n using a halcmd instruction. The first line loads real time the ClassicLadder module. The second line\n adds the function classicladder.0.refresh to the servo thread. This line makes ClassicLadder update\n@@ -22117,15 +22117,15 @@\n \n Objects of most interest are numPhysInputs, numPhysOutputs, numS32in, and numS32out.\n Changing these numbers will change the number of HAL bit pins available. numPhysInputs and\n numPhysOutputs control how many HAL bit (on/off) pins are available. numS32in and numS32out\n control how many HAL signed integers (+- integer range) pins are available.\n For example (you don\u2019t need all of these to change just a few):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 412 / 1279\n \n loadrt classicladder_rt numRungs=12 numBits=100 numWords=10\n numTimers=10 numMonostables=10 numCounters=10 numPhysInputs=10\n numPhysOutputs=10 numArithmExpr=100 numSections=4 numSymbols=200\n numS32in=5 numS32out=5\n@@ -22159,29 +22159,29 @@\n If you first load ladder program with the --nogui option then load ClassicLadder again with no options\n the GUI will display the last loaded ladder program.\n In AXIS you can load the GUI from File/Ladder Editor\u2026\n \n 8.2.5 ClassicLadder GUI\n If you load ClassicLadder with the GUI it will display two windows: section display, and section manager.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 413 / 1279\n \n 8.2.5.1 Sections Manager\n When you first start up ClassicLadder you get an empty Sections Manager window.\n \n Figure 8.1: Sections Manager Default Window\n This window allows you to name, create or delete sections and choose what language that section\n uses. This is also how you name a subroutine for call coils.\n 8.2.5.2 Section Display\n When you first start up ClassicLadder you get an empty Section Display window. Displayed is one\n empty rung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 414 / 1279\n \n Figure 8.2: Section Display Default Window\n Most of the buttons are self explanatory:\n The Vars button is for looking at variables, toggle it to display one, the other, both, then none of the\n windows.\n@@ -22199,15 +22199,15 @@\n and the first %W (in an equation) You might see some funny labels, such as (103) in the rungs. This is\n displayed (on purpose) because of an old bug- when erasing elements older versions sometimes didn\u2019t\n erase the object with the right code. You might have noticed that the long horizontal connection button\n sometimes didn\u2019t work in the older versions. This was because it looked for the free code but found\n something else. The number in the brackets is the unrecognized code. The ladder program will still\n work properly, to fix it erase the codes with the editor and save the program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 415 / 1279\n \n 8.2.5.3 The Variable Windows\n 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\n other, both, then none of the variable windows.\n \n@@ -22218,28 +22218,28 @@\n areas at the top allow you to select what 15 variables will be displayed in each column. For instance,\n if the %B Variable column were 15 entries high, and you entered 5 at the top of the column, variables\n %B5 to %B19 would be displayed. The check boxes allow you to set and unset %B variables manually\n as long as the ladder program isn\u2019t setting them as outputs. Any Bits that are set as outputs by the\n program when ClassicLadder is running can not be changed and will be displayed as checked if on\n and unchecked if off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 416 / 1279\n \n Figure 8.4: Watch Window\n The Watch Window displays variable status. The edit box beside it is the number stored in the variable\n and the drop-down box beside that allow you to choose whether the number to be displayed in hex,\n decimal or binary. If there are symbol names defined in the symbols window for the word variables\n showing and the display symbols checkbox is checked in the section display window, symbol names\n will be displayed. To change the variable displayed, type the variable number, e.g. %W2 (if the\n display symbols check box is not checked) or type the symbol name (if the display symbols checkbox\n is checked) over an existing variable number/name and press the Enter Key.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 417 / 1279\n \n 8.2.5.4 Symbol Window\n \n Figure 8.5: Symbol Names window\n This is a list of symbol names to use instead of variable names to be displayed in the section window\n@@ -22247,30 +22247,30 @@\n and capital letters), symbol name . If the variable can have a HAL signal connected to it (%I, %Q, and\n %W-if you have loaded s32 pin with the real time module) then the comment section will show the\n current HAL signal name or lack thereof. Symbol names should be kept short to display better. Keep\n in mind that you can display the longer HAL signal names of %I, %Q and %W variable by clicking on\n them in the section window. Between the two, one should be able to keep track of what the ladder\n program is connected to!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8.2.5.5 The Editor window\n \n Figure 8.6: Editor Window\n \u2022 Add - adds a rung after the selected rung\n \u2022 Insert - inserts a rung before the selected rung\n \u2022 Delete - deletes the selected rung\n \u2022 Modify - opens the selected rung for editing\n Starting from the top left image:\n \u2022 Object Selector, Eraser\n \u2022 N.O. Input, N.C. Input, Rising Edge Input , Falling Edge Input\n \n 418 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 419 / 1279\n \n \u2022 Horizontal Connection, Vertical Connection , Long Horizontal Connection\n \u2022 Timer IEC Block, Counter Block, Compare Variable\n \u2022 Old Timer Block, Old Monostable Block (These have been replaced by the IEC Timer)\n \u2022 COILS - N.O. Output, N.C. Output, Set Output, Reset Output\n@@ -22300,21 +22300,21 @@\n or %W1=%W2) Compare cannot be placed in the right most side of the section display.\n \u2022 Variable Assignment - creates an assignment block so you to assign values to variables. (eg %W2=7\n or %W1=%W2) ASSIGNMENT functions can only be placed at the right most side of the section\n display.\n 8.2.5.6 Config Window\n The config window shows the current project status and has the Modbus setup tabs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.7: Config Window\n \n 420 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 421 / 1279\n \n 8.2.6 Ladder objects\n 8.2.6.1 CONTACTS\n Represent switches or relay contacts. They are controlled by the variable letter and number assigned\n to them.\n@@ -22352,15 +22352,15 @@\n The time intervals can be set in multiples of 100ms, seconds, or minutes.\n There are also Variables for IEC timers that can be read and/or written to in compare or operate\n blocks.\n \u2022 %TMxxx.Q - timer done (Boolean, read write)\n \u2022 %TMxxx.P - timer preset (read write)\n \u2022 %TMxxx.V - timer value (read write)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 422 / 1279\n \n 8.2.6.3 TIMERS\n Represent count down timers. This is deprecated and replaced by IEC Timers.\n Timers have 4 contacts.\n \u2022 E - enable (input) starts timer when true, resets when goes false\n@@ -22390,15 +22390,15 @@\n 8.2.6.5 COUNTERS\n Represent up/down counters.\n There are 7 contacts:\n \u2022 R - reset (input) will reset the count to 0.\n \u2022 P - preset (input) will set the count to the preset number assigned from the edit menu.\n \u2022 U - up count (input) will add one to the count.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 423 / 1279\n \n \u2022 D - down count (input) will subtract one from the count.\n \u2022 E - under flow (output) will be true when the count rolls over from 0 to 9999.\n \u2022 D - done (output) will be true when the count equals the preset.\n \u2022 F - overflow (output) will be true when the count rolls over from 9999 to 0.\n@@ -22431,15 +22431,15 @@\n %W1<2*%C0.V\n \n To find out if S32in bit 2 is equal to 10 the syntax would be:\n %IW2=10\n \n Note: Compare uses the arithmetic equals not the double equals that programmers are used to.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 424 / 1279\n \n 8.2.6.7 VARIABLE ASSIGNMENT\n For variable assignment, e.g. assign this number (or evaluated number) to this variable %xxx, there\n 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.\n When a new variable assignment block is opened be sure to delete the # symbol when you enter an\n@@ -22455,23 +22455,23 @@\n you assign a new value using the variable assignment block. The last value assigned will be restored\n when LinuxCNC is started.\n \n The following figure shows an Assignment and a Comparison Example. %QW0 is a S32out bit and\n %IW0 is a S32in bit. In this case the HAL pin classicladder.0.s32out-00 will be set to a value of 5 and\n when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will be set to True.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.8: Assign/Compare Ladder Example\n \n Figure 8.9: Assignment Expression Example\n \n 425 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 426 / 1279\n \n Figure 8.10: Comparison Expression Example\n \n 8.2.6.8 COILS\n Coils represent relay coils. They are controlled by the variable letter and number assigned to them.\n@@ -22497,15 +22497,15 @@\n If you use a N.C. contact with a N.C. coil the logic will work (when the coil is energized the\n contact will be closed) but that is really hard to follow!\n \n A JUMP COIL is used to JUMP to another section, like a goto in BASIC programming language.\n If you look at the top left of the sections display window you will see a small label box and a longer\n comment box beside it. Now go to Editor\u2192Modify then go back to the little box, type in a name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 427 / 1279\n \n Go ahead and add a comment in the comment section. This label name is the name of this rung only\n and is used by the JUMP COIL to identify where to go.\n When placing a JUMP COIL, add it in the rightmost position and change the label to the rung you want\n to JUMP to.\n@@ -22540,15 +22540,15 @@\n \u2022 %TMxxx.V - Timer xxx value (integer, read write)\n \u2022 %Mxx.R - Monostable xx running (Boolean)\n \u2022 %Mxx.V - Monostable xx current value (integer, user read only)\n \u2022 %Mxx.P - Monostable xx preset (integer)\n \u2022 %Cxx.D - Counter xx done (Boolean, user read only)\n \u2022 %Cxx.E - Counter xx empty overflow (Boolean, user read only)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 428 / 1279\n \n \u2022 %Cxx.F - Counter xx full overflow (Boolean, user read only)\n \u2022 %Cxx.V - Counter xx current value (integer)\n \u2022 %Cxx.P - Counter xx preset (integer)\n \u2022 %Ixxx - Physical input xxx (Boolean) (HAL input bit)\n@@ -22583,15 +22583,15 @@\n Selector arrow , Eraser\n Ordinary step , Initial (Starting) step\n Transition , Step and Transition\n Transition Link-Downside , Transition Link-Upside\n Pass-through Link-Downside , Pass-through Link-Upside Jump\n Link, Comment Box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 429 / 1279\n \n Figure 8.11: Sequence Editor Window\n \u2022 ORDINARY STEP - has a unique number for each one\n \u2022 STARTING STEP - a sequential program must have one. This is where the program will start.\n \u2022 TRANSITION - This shows the variable that must be true for control to pass through to the next\n@@ -22603,15 +22603,15 @@\n \u2022 PASS-THROUGH LINK-DOWNSIDE - splits the logic flow to two lines that BOTH must be true to\n continue (Think AND logic)\n \u2022 PASS-THROUGH LINK-UPSIDE - combines two concurrent (AND logic) logic lines back together\n \u2022 JUMP LINK - connects steps that are not underneath each other such as connecting the last step to\n the first\n \u2022 COMMENT BOX - used to add comments\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 430 / 1279\n \n To use links, you must have steps already placed. Select the type of link, then select the two steps or\n transactions one at a time. It takes practice!\n With sequential programming: The variable %Xxxx (eg. %X5) is used to see if a step is active. The\n variable %Xxxx.V (eg. %X5.V) is used to see how long the step has been active. The %X and %X.v\n@@ -22642,21 +22642,21 @@\n \u2022 6 - write single register\n \u2022 8 - echo test\n \u2022 15 - write multiple coils\n \u2022 16 - write multiple registers\n If you do not specify a -- modmaster when loading the ClassicLadder user program this page will not\n be displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.12: Modbus I/O Config\n \n 431 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 432 / 1279\n \n Figure 8.13: Modbus Communication Config\n \u2022 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).\n \u2022 SERIAL SPEED - Should be set to speed the slave is set for - 300, 600, 1200, 2400, 4800, 9600,\n 19200, 38400, 57600, 115200 are supported.\n@@ -22670,15 +22670,15 @@\n \u2022 DEBUG LEVEL - Set this to 0-3 (0 to stop printing debug info besides no-response errors).\n \u2022 READ COILS/INPUTS MAP TO - Select what variables that read coils/inputs will update. (B or Q).\n \u2022 WRITE COILS MAP TO - Select what variables that write coils will updated from (B,Q,or I).\n \u2022 READ REGISTERS/HOLDING - Select what variables that read registers will update (W or QW).\n \u2022 WRITE REGISTERS MAP TO - Select what variables that read registers will updated from (W, QW,\n or IW).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 433 / 1279\n \n \u2022 SLAVE ADDRESS - For serial the slaves ID number usually settable on the slave device (usually\n 1-256) For IP the slave IP address plus optionally the port number.\n \u2022 TYPE ACCESS - This selects the MODBUS function code to send to the slave (eg what type of\n request).\n@@ -22717,15 +22717,15 @@\n \u2022 ClassicLadder uses RTU protocol (not ASCII).\n \u2022 8 data bits, No parity is used, and 1 stop bit is also known as 8-N-1.\n \u2022 Baud rate must be the same for slave and master. ClassicLadder can only have one baud rate so all\n the slaves must be set to the same rate.\n \u2022 Pause inter frame is the time to pause after receiving an answer.\n \u2022 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).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 434 / 1279\n \n 8.2.10.1 MODBUS Info\n \u2022 ClassicLadder can use distributed inputs/outputs on modules using the modbus protocol (\u201dmaster\u201d:\n polling slaves).\n \u2022 The slaves and theirs I/O can be configured in the config window.\n@@ -22755,24 +22755,24 @@\n 8.2.11 Debugging modbus problems\n A good reference for the protocol: https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf.\n If you run linuxcnc/classicladder from a terminal, it will print the Modbus commands and slave responses.\n Here we set ClassicLadder to request slave 1, to read holding registers (function code 3) starting\n at address 8448 (0x2100). We ask for 1 (2 byte wide) data element to be returned. We map it to a\n ClassicLadder variable starting at 2.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 435 / 1279\n \n Figure 8.14: Modbus I/O Register Setup\n Note in this image we have set the debug level to 1 so modbus messages are printed to the terminal. We\n have mapped our read and written holding registers to ClassicLadder\u2019s %W variables so our returned\n data will be in %W2 as in the other image we mapped the data starting at the 2nd element.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.15: Modbus Communication Setup\n \n 8.2.11.1 Request\n Lets look at an example of reading one hold register at 8448 Decimal (0x2100 Hex).\n Looking in the Modbus protocol reference:\n Table 8.2: Read holding register request\n@@ -22800,15 +22800,15 @@\n Bytes)\n (2\n Calculated\n bytes) automatically\n \n 436 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 437 / 1279\n \n Here is an example sent command as printed in the terminal (all Hex):\n INFO CLASSICLADDERModbus I/O module to send: Lgt=8 \n code-83 ) 2 C0 F1\n \n 438 / 1279\n \n (Slave address-1\n@@ -22919,15 +22919,15 @@\n \u2022 Slave number = 1 (0x1) = Slave address 1\n \u2022 Requested function code = 3 (0x3) = read holding register requested\n \u2022 count of byte registers = 2 (0x1) = return 2 bytes (each register value is 2 bytes wide)\n \u2022 value of highbyte = 0 (0x0) = high byte value of address 8448 (0x2100)\n \u2022 value of lowbyte = 0 (0x0) = high byte value of address 8448 (0x2100)\n \u2022 Checksum = (0xB844)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 439 / 1279\n \n (high and low bytes are combined to create a 16 bit value and then transferred to ClassicLadder\u2019s\n variable.) Read Registers can be mapped to %W or %QW (internal memory or HAL out pins). Write\n registers can be mapped from %W, %QW or %IW (internal memory, HAL out pins or HAL in pins). The\n variable number will start at the number entered in the modbus I/O registry setup page\u2019s column:\n@@ -22946,15 +22946,15 @@\n \n 8.2.12 Setting up ClassicLadder\n In this section we will cover the steps needed to add ClassicLadder to a Stepconf Wizard generated\n config. On the advanced Configuration Options page of Stepconf Wizard check off \u201dInclude ClassicLadder PLC\u201d.\n \n Figure 8.16: Stepconf ClassicLadder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 440 / 1279\n \n 8.2.12.1 Add the Modules\n If you used the Stepconf Wizard to add ClassicLadder you can skip this step.\n To manually add ClassicLadder you must first add the modules. This is done by adding a couple of\n lines to the custom.hal file.\n@@ -22970,48 +22970,48 @@\n window open the Editor. In the Editor window select Modify. Now a Properties window pops up and\n the Section Display shows a grid. The grid is one rung of ladder. The rung can contain branches.\n A simple rung has one input, a connector line and one output. A rung can have up to six horizontal\n branches. While it is possible to have more than one circuit in a run the results are not predictable.\n \n Figure 8.17: Section Display with Grid\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Now click on the N.O. Input in the Editor Window.\n \n Figure 8.18: Editor Window\n Now click in the upper left grid to place the N.O. Input into the ladder.\n \n 441 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 442 / 1279\n \n Figure 8.19: Section Display with Input\n Repeat the above steps to add a N.O. Output to the upper right grid and use the Horizontal Connection\n to connect the two. It should look like the following. If not, use the Eraser to remove unwanted\n sections.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 443 / 1279\n \n Figure 8.20: Section Display with Rung\n Now click on the OK button in the Editor window. Now your Section Display should look like this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 444 / 1279\n \n Figure 8.21: Section Display Finished\n To save the new file select Save As and give it a name. The .clp extension will be added automatically.\n It should default to the running config directory as the place to save it.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 445 / 1279\n \n Figure 8.22: Save As Dialog\n Again if you used the Stepconf Wizard to add ClassicLadder you can skip this step.\n To manually add a ladder you need to add add a line to your custom.hal file that will load your ladder\n file. Close your LinuxCNC session and add this line to your custom.hal file.\n@@ -23022,15 +23022,15 @@\n \n 8.3 ClassicLadder Examples\n 8.3.1 Wrapping Counter\n To have a counter that wraps around you have to use the preset pin and the reset pin. When you\n create the counter set the preset at the number you wish to reach before wrapping around to 0. The\n logic is if the counter value is over the preset then reset the counter and if the underflow is on then\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 446 / 1279\n \n set the counter value to the preset value. As you can see in the example when the counter value is\n greater than the counter preset the counter reset is triggered and the value is now 0. The underflow\n output %Q2 will set the counter value at the preset when counting backwards.\n \n@@ -23040,15 +23040,15 @@\n This example shows you how to reject extra pulses from an input. Suppose the input pulse %I0 has\n an annoying habit of giving an extra pulse that spoils our logic. The TOF (Timer Off Delay) prevents\n the extra pulse from reaching our cleaned up output %Q0. How this works is when the timer gets\n an input the output of the timer is on for the duration of the time setting. Using a normally closed\n contact %TM0.Q the output of the timer blocks any further inputs from reaching our output until it\n times out.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 447 / 1279\n \n Figure 8.24: Reject Extra Pulse\n \n 8.3.3 External E-Stop\n The External E-Stop example is in the /config/classicladder/cl-estop folder. It uses a PyVCP panel to\n@@ -23062,15 +23062,15 @@\n \n Next we add ClassicLadder to our custom.hal file by adding these two lines:\n loadrt classicladder_rt\n addf classicladder.0.refresh servo-thread\n \n Next we run our config and build the ladder as shown here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 448 / 1279\n \n Figure 8.25: E-Stop Section Display\n After building the ladder select Save As and save the ladder as estop.clp\n Now add the following line to your custom.hal file.\n # Load the ladder\n@@ -23081,15 +23081,15 @@\n \u2022 %I1 = Input from LinuxCNC\u2019s E-Stop\n \u2022 %I2 = Input from LinuxCNC\u2019s E-Stop Reset Pulse\n \u2022 %I3 = Input from the PyVCP panel reset button\n \u2022 %Q0 = Output to LinuxCNC to enable\n \u2022 %Q1 = Output to external driver board enable pin (use a N/C output if your board had a disable pin)\n Next we add the following lines to the custom_postgui.hal file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 449 / 1279\n \n # E-Stop example using PyVCP buttons to simulate external components\n # The PyVCP checkbutton simulates a normally closed external E-Stop\n net ext-estop classicladder.0.in-00 <= pyvcp.py-estop\n # Request E-Stop Enable from LinuxCNC\n@@ -23123,36 +23123,36 @@\n \u201dpy-reset\u201d\n \u201dReset\u201d\n \n \n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 450 / 1279\n \n Figure 8.26: AXIS E-Stop\n Note that in this example like in real life you must clear the remote E-Stop (simulated by the checkbox)\n before the AXIS E-Stop or the external Reset will put you in OFF mode. If the E-Stop in the AXIS screen\n was pressed, you must press it again to clear it. You cannot reset from the external after you do an\n E-Stop in AXIS.\n \n 8.3.4 Timer/Operate Example\n In this example we are using the Operate block to assign a value to the timer preset based on if an\n input is on or off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 451 / 1279\n \n Figure 8.27: Timer/Operate Example\n In this case %I0 is true so the timer preset value is 10. If %I0 was false the timer preset would be 5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 452 / 1279\n \n Chapter 9\n \n Advanced Topics\n 9.1 Kinematics\n@@ -23180,15 +23180,15 @@\n Cartesian coordinates. The A B C axes refer to rotational coordinates about the X Y Z axes respectively.\n The U V W axes refer to additional coordinates that are commonly made colinear to the X Y Z axes\n respectively.\n 1 The word \u201daxes\u201d is also commonly (and wrongly) used when talking about CNC machines, and referring to the moving\n directions of the machine.\n 2 Kinematics: a two way function to transform from Cartesian space to joint space.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 453 / 1279\n \n 9.1.2 Trivial Kinematics\n The simplest machines are those in which which each joint is placed along one of the Cartesian axes.\n On these machines the mapping from Cartesian space (the G-code program) to the joint space (the\n actual actuators of the machine) is trivial. It is a simple 1:1 mapping:\n@@ -23242,15 +23242,15 @@\n 3 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\n \n the definition of these 3 joints, then the previous assertion is false. Because we currently have (joint0=X, joint1=Z, joint2=A)\n which assumes that joint1=Y. To make this work in LinuxCNC just define all the axes (XYZA), LinuxCNC will then use a simple\n loop in HAL for unused Y axis.\n 4 Another way to make it work is to change the corresponding code and recompile the software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 454 / 1279\n \n Use of the coordinates= parameter is recommended for configurations that omit axis letters. 5\n The trivkins kinematics module also allows the same coordinate to be specified for more than one\n joint. This feature can be useful on machines like a gantry having two independent motors for the y\n coordinate. Such a machine could use coordinates=xyyz resulting in joint assignments:\n@@ -23271,15 +23271,15 @@\n \n Figure 9.1: Bipod setup\n 5 Historically, the trivkins module did not support the coordinates= parameter so lathe configs were often configured as XYZ\n machines. The unused Y axis was configured to 1) home immediately, 2) use a simple loopback to connect its position command\n HAL pin to its position feedback HAL pin, and 3) hidden in gui displays. Numerous sim configs use these methods in order to\n share common HAL files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 455 / 1279\n \n The Bipod we are talking about is a device that consists of 2 motors placed on a wall, from which a\n device is hung using some wire. The joints in this case are the distances from the motors to the device\n (named AD and BD in the figure).\n The position of the motors is fixed by convention. Motor A is in (0,0), which means that its X coordinate\n@@ -23311,15 +23311,15 @@\n double x = (AD2 - BD2 + Bx * Bx) / (2 * Bx);\n double y2 = AD2 - x * x;\n if(y2 < 0) return -1;\n pos->tran.x = x;\n pos->tran.y = sqrt(y2);\n return 0;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 456 / 1279\n \n 9.1.3.2 Inverse transformation\n The inverse kinematics is much easier in our example, as we can write it directly:\n \n or translated to actual code:\n@@ -23354,15 +23354,15 @@\n \n int kinematicsSwitchable(void)\n int kinematicsSwitch(int switchkins_type)\n KINS_NOT_SWITCHABLE\n \n The function kinematicsSwitchable() returns 1 if multiple kinematics types are supported. The function kinematicsSwitch() selects the kinematics type. See Switchable Kinematitcs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 457 / 1279\n \n Note\n The majority of provided kinematics modules support a single kinematics type and use the directive\n \u201dKINS_NOT_SWITCHABLE\u201d to supply defaults for the required kinematicsSwitchable() and kinematicsSwitch() functions.\n \n@@ -23397,15 +23397,15 @@\n Note\n This document does not cover the creation of a vismach model which, while certainly very useful,\n requires just as much careful modeling if it is to match the genserkins model derived in this document.\n \n Note\n There may be errors and/or shortcomings \u2014 use at your own risk!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 458 / 1279\n \n 9.2.2 General\n With the proliferation of industrial robots comes an increased interest to control used robots with\n LinuxCNC. A common type of robot used in industry and manufacturing is the \u201dserial manipulator\u201d\n designed as a series of motorized joints connected by rigid links. Serial robots often have six joints\n@@ -23448,15 +23448,15 @@\n \n 9.2.4 Modified DH-Parameters as used in genserkins\n Note that genserkins does not handle offsets to theta-values \u2014 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\n the rotation commanded to that joint by LinuxCNC. This makes it impossible to define the 0\u00b0 position\n of our robots joints arbitrarily.\n The three configurable parameters are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 459 / 1279\n \n 1. alpha : positive or negative rotation (in radians) around the X-axis of the \u201dcurrent coordinate\n system\u201d\n 2. a : positive distance, along X, between two joint axes specified in machine units (mm or inch)\n defined in the system\u2019s INI file.\n@@ -23488,87 +23488,87 @@\n but there is no point in setting it other than 0.\n \n 9.2.8 Detailed Example (RV-6SL)\n Described below is a method to derive the required \u201dmodified DH-parameters\u201d for a Mitsubishi RV6SDL and how to set the parameters in the HAL file to be used with the genserkins kinematics in\n LinuxCNC. The necessary dimensions are best taken from a dimensional drawing provided by the\n manufacturer of the robot.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 460 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 461 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 462 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 463 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 464 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 465 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 466 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 467 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 468 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 469 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 470 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 471 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 472 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 473 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 474 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 475 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 476 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 477 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 478 / 1279\n \n 9.2.9 Credits\n Thanks to user Aciera for all text and the graphics for the RV-6SL robot!\n \n 9.3 5-Axis Kinematics\n@@ -23594,27 +23594,27 @@\n the cutter tip position and the cutter orientation relative to the workpiece coordinate system. Two\n vectors, as generated by most CAM systems and shown in Fig. 1, contain this information:\n \n The K vector is equivalent to the 3rd vector from the pose matrix E6 that was used in the 6-axis robot\n kinematics [3] and the Q vector is equivalent to the 4th vector of E6 . In MASTERCAM for example\n this information is contained in the intermediate output \u201d.nci\u201d file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 479 / 1279\n \n Figure 9.2: Cutter location data\n \n 9.3.4 Translation and Rotation Matrices\n 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\n 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\n \n There are four fundamental transformation matrices on which 5-axis kinematics can be based:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 480 / 1279\n \n The matrix T(a,b,c) implies a translation in the X, Y, Z coordinate directions by the amounts a, b, c\n respectively. The R matrices imply rotations of the angle theta about the X, Y and Z coordinate axes\n respectively. The C and S symbols refer to cosine and sine functions respectively.\n \n@@ -23624,15 +23624,15 @@\n \u2022 A rotary table which rotates about the vertical Z-axes (C-rotation, secondary) mounted on a tilting\n table which rotates about the X- or Y-axis (A- or B-rotation, primary). The workpiece is mounted on\n the rotary table.\n \u2022 A tilting table which rotates about the X- or Y-axis (A- or B-rotation, secondary) is mounted on a\n rotary table which rotates about the Z-axis (C-rotation, primary), with the workpiece on the tilting\n table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 481 / 1279\n \n Figure 9.3: General configuration and coordinate systems\n 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\n describe the relative position and orientation between these coordinate frames\n 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 At , which can be found by subsequent\n@@ -23640,43 +23640,43 @@\n defined coordinate system. In general such a transformation may look as follows:\n \n where each matrix i-1 Aj is a translation matrix T or a rotation matrix R of the form (2,3).\n Matrix multiplication is a simple process in which the elements of each row of the lefthand matrix\n A is multiplied by the elements of each column of the righthand matrix B and summed to obtain an\n element in the result matrix C, ie.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 482 / 1279\n \n In Fig. 2 a generic configuration with coordinate systems is shown [4]. It includes table rotary/tilting\n axes as well as spindle rotary/tilting axes. Only two of the rotary axes are actually used in a machine\n tool.\n First we will develop the transformations for the first type of configuration mentioned above, ie. a table\n tilting/rotary (trt) type with no rotating axis offsets. We may give it the name xyzac-trt configuration.\n We also develop the transformations for the same type (xyzac-trt), but with rotating axis offsets.\n Then we develop the transformations for a xyzbc-trt configuration with rotating axis offsets.\n 9.3.5.1 Transformations for a xyzac-trt machine tool with work offsets\n \n Figure 9.4: vismach model of xyzac-trt with coincident rotation axes\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 483 / 1279\n \n We deal here with a simplified configuration in which the tilting axis and rotary axis intersects at a\n point called the pivot point as shown in Fig. 4. therefore the two coordinate systems Ows and Owp of\n Fig. 2 are coincident.\n \n Figure 9.5: Table tilting/rotary configuration\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 484 / 1279\n \n In these equations Lx , Ly , Lz defines the offsets of the pivot point of the two rotary axes A and C\n relative to the workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances\n of the pivot point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot\n point. The pivot point is at the intersection of the two rotary axes. The signs of the SA and SC terms\n@@ -23695,56 +23695,56 @@\n Equating the last column of (8) with the tool position vector Q, we can write:\n \n The vector on the right hand side can also be written as the product of a matrix and a vector resulting\n in:\n \n This can be expanded to give\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 485 / 1279\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (13) as P = (Q AP )-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\n be written as:\n \n where R^T is the transpose of R (rows and columns swappped). We therefore obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 486 / 1279\n \n 9.3.5.2 Transformations for a xyzac-trt machine with rotary axis offsets\n \n Figure 9.6: vismach model of xyzac-trt with rotational axis offsets (positive)\n We deal here with a extended configuration in which the tilting axis and rotary axis do not intersect\n at a point but have an offset Dy . Furthermore, there is also an z-offset between the two coordinate\n systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 5 and the offsets are\n shown in Fig. 6 (positive offsets in this example). To simplify the configuration, the offsets Lx , Ly , Lz\n of the previous case are not included. They are probably not necessary if one uses the G54 offsets in\n LinuxCNC by means of the \u201dtouch of\u201d facility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 487 / 1279\n \n Figure 9.7: Table tilting/rotary xyzac-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dy , Dz defines the offsets of the pivot point of the rotary axes A relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the A rotary axis.\n When multiplied in accordance with (18), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 488 / 1279\n \n We can now equate the third column of this matrix with our given tool orientation vector K, ie.:\n \n From these equations we can solve for the rotation angles thetaA , thetaC . From the third row we find:\n \n@@ -23758,42 +23758,42 @@\n in:\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (25) as P = (Q AP )-1 * Q using (15) as before. We thereby obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 489 / 1279\n \n 9.3.5.3 Transformations for a xyzbc-trt machine with rotary axis offsets\n \n Figure 9.8: vismach model of xyzbc-trt with rotational axis offsets (negative)\n We deal here again with a extended configuration in which the tilting axis (about the y-axis) and rotary\n axis do not intersect at a point but have an offset Dx . Furthermore, there is also an z-offset between\n the two coordinate systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 7\n (negative offsets in this example) and the positive offsets are shown in Fig. 8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 490 / 1279\n \n Figure 9.9: Table tilting/rotary xyzbc-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dx , Dz defines the offsets of the pivot point of the rotary axes B relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the B rotary axis.\n When multiplied in accordance with (29), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 491 / 1279\n \n We can now equate the third column of this matrix with our given tool orientation vector K, i.e.:\n \n From these equations we can solve for the rotation angles thetaB , thetaC . From the third row we find:\n \n@@ -23808,15 +23808,15 @@\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (37) as P = (Q AP )-1 * Q.\n With the same approach as before, we obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 492 / 1279\n \n 9.3.6 Table Rotary/Tilting Examples\n LinuxCNC includes kinematics modules for the xyzac-trt and xyzbc-trt topologies described in the\n mathematics detailed above. For interested users, the source code is available in the git tree in the\n src/emc/kinematics/ directory.\n@@ -23860,15 +23860,15 @@\n \n 9.3.7 Custom Kinematics Components\n LinuxCNC implements kinematics using a HAL component that is loaded at startup of LinuxCNC. The\n most common kinematics module, trivkins, implements identity (trivial) kinematics where there is a\n one-to-one correspondence between an axis coordinate letter and a motor joint. Additional kinematics\n modules for more complex systems (including xyzac-trt and xyzbc-trt described above) are available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 493 / 1279\n \n See the kins manpage (\\$ man kins) for brief descriptions of the available kinematics modules.\n 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\n source file to a user file with a new name, modifying it, and then installing.\n Installation is done using halcompile:\n@@ -23890,29 +23890,29 @@\n module. These pins can be connected to a signal for dynamic control or set once with HAL connections\n like:\n # set offset parameters\n net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset\n setp xyzac-trt-kins.y-offset 0\n setp xyzac-trt-kins.z-offset 20\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9.3.8 Figures\n \n Figure 9.10: Table tilting/rotating configuration\n \n 494 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 9.11: Spindle/table tilting configuration\n \n 495 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 496 / 1279\n \n Figure 9.12: Spindle tilting/rotary configuration\n \n 9.3.9 REFERENCES\n 1. A Postprocessor Based on the Kinematics Model for General Five-Axis machine Tools: C-H She,\n@@ -23927,15 +23927,15 @@\n 9.4.1 Introduction\n A number of kinematics modules support the switching of kinematics calculations. These modules\n support a default kinematics method (type0), a second built-in method (type1), and (optionally) a userprovided kinematics method (type2). Identity kinematics are typically used for the type1 method.\n 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\n calculations for most operations but can be switched to identity kinematics for control of individual\n joints after homing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 497 / 1279\n \n The kinematics type is selected by a motion module HAL pin that can be updated from a G-code\n program or by interactive MDI commands. The halui provisions for activating MDI commands can be\n used to allow buttons to select the kinematics type using hardware controls or a virtual panel (PyVCP,\n GladeVCP, etc.).\n@@ -23969,15 +23969,15 @@\n # custom identity ordering: joint0==c, joint1==b, ...\n # KINEMATICS = genhexkins coordinates=cbazyx\n \n Note\n If the coordinates= parameter is omitted, the default joint-letter identity assignments are\n joint0==x,joint1=y,\u2026\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 498 / 1279\n \n The joint assignments provided for identity kinematics when using the coordinates parameter are\n identical to those provided for the trivkins module. However, duplication of axis letters to assign\n multiple joints for a coordinate letter is not generally applicable for serial or parallel kinematics (like\n genserkins, pumakins, genhexkins, etc.) where there is no simple relationship between joints and\n@@ -24009,15 +24009,15 @@\n 9.4.4 Usage\n 9.4.4.1 HAL Connections\n Switchkins functionality is enabled by the pin motion.switchkins-type. Typically, this pin is sourced\n by an analog output pin like motion.analog-out-03 so that it can be set by M68 commands. Example:\n net :kinstype-select <= motion.analog-out-03\n net :kinstype-select => motion.switchkins-type\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 499 / 1279\n \n 9.4.4.2 G-/M-code commands\n Kinstype selection is managed using G-code sequences like:\n ...\n M68 E3 Q1 ;update analog-out-03 to select kinstype 1\n@@ -24056,15 +24056,15 @@\n XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 500 / 1279\n \n The INI file limits specified apply to the type 0 default kinematics type that is activated at startup.\n These limits may not be applicable when switching to alternative kinematics. However, since an\n interpreter-motion synchronization is required when switching kinematics, INI-HAL pins can be used\n to setup limits for a pending kinematics type.\n@@ -24108,15 +24108,15 @@\n the set XYZABCUVW. The INI file settings ([AXIS_L]) are not applicable when operating with identity\n (type1) kinematics. To address this use case, the user M-code scripts can be designed as follows:\n M129 (Switch to identity type1)\n 1. read and parse INI file\n 2. HAL: setp the INI-HAL limit pins for each axis letter ([AXIS_L]) according to the identity-referenced\n joint number INI file setting ([JOINT_N])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 501 / 1279\n \n 3. HAL: setp motion.switchkins-type 1\n 4. MDI: execute a syncing G-code (M66E0L0)\n M128 (restore robot default kinematics type 0)\n 1. read and parse INI file\n@@ -24161,15 +24161,15 @@\n directory and edited to supply custom kinematics with kinstype==2.\n The user custom kinematics file can be compiled from out-of-tree source locations for rt-preempt\n implementations or by replacing the in-tree template file (src/emc/kinematics/userkfuncs.c) for rtai\n systems.\n Preempt-rt make example:\n $ userkfuncs=/home/myname/kins/mykins.c make && sudo make setuid\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 502 / 1279\n \n 9.4.7 Warnings\n Unexpected behavior can result if a G-code program is inadvertently started with an incompatible\n kinematics type. Unwanted behavior can be circumvented in G-code programs by:\n 1. Connecting appropriate kinstype.is.N HAL pins to digital input pins (like motion.digital-in-0m).\n@@ -24202,15 +24202,15 @@\n manipulable input to the process that brings the process measured value back to its desired set point.\n Unlike simpler control algorithms, the PID controller can adjust process outputs based on the history\n and rate of change of the error signal, which gives more accurate and stable control. (It can be\n shown mathematically that a PID loop will produce accurate, stable control in cases where a simple\n proportional control would either have a steady-state error or would cause the process to oscillate).\n 6 This Subsection is taken from an much more extensive article found at https://en.wikipedia.org/wiki/PID_controller\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 503 / 1279\n \n 9.5.1.1 Control loop basics\n Intuitively, the PID loop tries to automate what an intelligent operator with a gauge and a control\n knob would do. The operator would read a gauge showing the output measurement of a process, and\n use the knob to adjust the input of the process (the action) until the process\u2019s output measurement\n@@ -24249,15 +24249,15 @@\n set point. A simple proportional system either oscillates, moving back and forth around the set point\n because there\u2019s nothing to remove the error when it overshoots, or oscillates and/or stabilizes at a\n too low or too high value. By adding a negative proportion of (i.e. subtracting part of) the average\n error from the process input, the average difference between the process output and the set point is\n always being reduced. Therefore, eventually, a well-tuned PID loop\u2019s process output will settle down\n at the set point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 504 / 1279\n \n Derivative To handle the future, the first derivative (the slope of the error) over time is calculated,\n 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\n derivative term, the more rapidly the controller responds to changes in the process\u2019s output.\n More technically, a PID loop can be characterized as a filter applied to a complex frequency-domain\n@@ -24335,15 +24335,15 @@\n D\n \n Pc /1.2\n \n 7 Introduced in the 1942 paper Optimum Settings for Automatic Controllers, DOI 10.1115/1.2899060 also available from\n The Internet Archive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Control type\n PID\n \n P\n .6Kc\n \n@@ -24387,15 +24387,15 @@\n deficient code by a an O-word procedure call.\n In its simplest form, a remapped code isn\u2019t 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\n the NGC program level.\n Generally, the behavior of a remapped code may be defined in the following ways:\n \u2022 You define a O-word subroutine which implements the desired behavior\n \u2022 Alternatively, you may employ a Python function which extends the interpreter\u2019s behavior.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 506 / 1279\n \n How to glue things together M- and G-codes, and O-words subroutine calls have some fairly different syntax.\n O-word procedures, for example, take positional parameters with a specific syntax like so:\n o call [1.234] [4.65]\n \n@@ -24431,15 +24431,15 @@\n 9.6.2 Getting started\n Defining a code involves the following steps:\n \u2022 Pick a code - either use an unallocated code, or redefine an existing code.\n \u2022 Decide how parameters are handled.\n \u2022 Decide if and how results are handled.\n \u2022 Decide about the execution sequence.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 507 / 1279\n \n 9.6.2.1 Builtin Remaps\n Please note that currently only some existing codes can be redefined, while there are many free codes\n that may be available for remapping. When developing redefined existing code, it is a good idea to\n start with an unassigned G- or M- code, so that you can use both an existing behavior as well as a new\n@@ -24477,15 +24477,15 @@\n which might be made available by remapping. When developing a redefined existing code, it might\n be a good idea to start with an unallocated G- or M-code, so both the existing and new behavior can\n be exercised. When done, redefine the existing code to use your remapping setup.\n \u2022 The current set of unused M-codes open to user definition can be found here.\n \u2022 Unallocated G-codes are listed here.\n \u2022 Existing codes which may be remapped are listed here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 508 / 1279\n \n 9.6.2.3 Parameter handling\n Let\u2019s assume the new code will be defined by an NGC procedure, and needs some parameters, some\n of which might be required, others might be optional. We have the following options to feed values to\n the procedure:\n@@ -24522,15 +24522,15 @@\n [RS274NGC]\n REMAP=M400\n \n modalgroup=10 argspec=Pq ngc=myprocedure\n \n In a nutshell, this means:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 509 / 1279\n \n \u2022 The M400 code takes a required parameter P and an optional parameter Q. Other words in the current\n block are ignored with respect to the M400 code. If the P word is not present, fail execution with an\n error.\n \u2022 When an M400 code is encountered, execute myprocedure.ngc along the other modal group 10 Mcodes as per order of execution.\n@@ -24568,15 +24568,15 @@\n for in the directories specified in the directory specified in [DISPLAY]PROGRAM_PREFIX, then in\n [RS274NGC]SUBROUTINE_PATH. Mutually exclusive with python=. It is an error to omit both ngc=\n and python=.\n python=\n Instead of calling an ngc O-word procedure call a Python function. The function is expected to\n be defined in the module_basename.oword module. Mutually exclusive with ngc=.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 510 / 1279\n \n prolog=\n Before executing an ngc procedure, call this Python function. The function is expected to be\n defined in the module_basename.remap module. Optional.\n epilog=\n@@ -24615,15 +24615,15 @@\n An empty argspec, or no argspec argument at all implies the remapped code does not receive any\n parameters from the block. It will ignore any extra parameters present.\n Note that RS274NGC rules still apply - for instance you may use axis words (e.g., X, Y, Z) only in the\n context of a G-code.\n Axis words may also only be used if the axis is enabled. If only XYZ are enabled, ABCUVW will not be\n available to be used in argspec.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 511 / 1279\n \n Words F, S and T (short FST) will have the normal functions but will be available as variables in the\n remapped function. F will set feedrate, S will set spindle RPM, T will trigger the tool prepare function.\n Words FST should not be used if this behavior is not desired.\n Words DEIJKPQR have no predefined function and are recommended for use as argspec parameters.\n@@ -24665,15 +24665,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#]]\n (debug, Q word set: #)\n o100 endif\n o endsub\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 512 / 1279\n \n \u2022 Executing M400 will fail with the message user-defined M400: missing: P.\n \u2022 Executing M400 P123 will display P word=123.000000.\n \u2022 Executing M400 P123 Q456 will display P word=123.000000 and Q word set: 456.000000\n Example for positional parameter passing to NGC procedures Assume the code is defined as\n@@ -24714,15 +24714,15 @@\n Advanced example: Remapped codes in pure Python The interpreter and emccanon modules\n expose most of the Interpreter and some Canon internals, so many things which so far required coding\n in C/C+\\+ can be now be done in Python.\n The following example is based on the nc_files/involute.py script - but canned as a G-code with\n some parameter extraction and checking. It also demonstrates calling the interpreter recursively (see\n self.execute()).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 513 / 1279\n \n Assuming a definition like so (NB: this does not use argspec):\n REMAP=G88.1 modalgroup=1 py=involute\n The involute function in python/remap.py listed below does all word extraction from the current\n block directly. Note that interpreter errors can be translated to Python exceptions. Remember this is\n@@ -24766,15 +24766,15 @@\n y = y0 + a * (sin(t) - t * cos(t))\n self.execute(\u201dG1 X%f Y%f\u201d % (x,y),lineno())\n if c.z_flag: # retract to starting height\n self.execute(\u201dG0 Z%f\u201d % (old_z),lineno())\n except InterpreterException,e:\n msg = \u201d%d: \u2019%s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 514 / 1279\n \n return msg\n return INTERP_OK\n \n The examples described so far can be found in configs/sim/axis/remap/getting-started with complete\n@@ -24818,15 +24818,15 @@\n (dire but necessary).\n Note than when remapping an existing code, we completely disable this codes\u2019 built-in functionality\n of the interpreter.\n So our remapped code will need to do a bit more than just generating some commands to move the\n machine as we like - it will also need to replicate those steps from this sequence which are needed to\n keep the interpreter and task happy.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 515 / 1279\n \n However, this does not affect the processing of tool change-related commands in task and iocontrol.\n This means when we execute step 6b this will still cause iocontrol to do its thing.\n Decisions, decisions:\n \u2022 Do we want to use an O-word procedure or do it all in Python code?\n@@ -24861,15 +24861,15 @@\n the \u201draise tool-change and wait for tool-changed to become high\u201d HAL sequence in iocontrol,\n besides setting the XXXX pins\n What you need to decide is whether the existing iocontrol HAL sequences are sufficient to drive your\n changer. Maybe you need a different interaction sequence - for instance more HAL pins, or maybe a\n more complex interaction. Depending on the answer, we might continue to use the existing iocontrol\n HAL sequences, or define our own ones.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 516 / 1279\n \n For the sake of documentation, we\u2019ll disable these iocontrol sequences, and roll our own - the result\n will look and feel like the existing interaction, but now we have complete control over them because\n they are executed in our own O-word procedure.\n So what we\u2019ll do is use some motion.digital-* and motion.analog-* pins, and the associated M62\n@@ -24920,15 +24920,15 @@\n follows:\n REMAP=M6\n \n modalgroup=6\n \n prolog=change_prolog ngc=change epilog=change_epilog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 517 / 1279\n \n So the prolog covering steps 1 and 2 would look like so - we decide to pass a few variables to the\n remap procedure which can be inspected and changed there, or used in a message. Those are:\n tool_in_spindle, selected_tool (tool numbers) and their respective tooldata indices current_pocket\n and selected_pocket:\n@@ -24974,15 +24974,15 @@\n if self.return_value > 0.0:\n # commit change\n self.selected_pocket = int(self.params[\u201dselected_pocket\u201d])\n emccanon.CHANGE_TOOL(self.selected_pocket)\n # cause a sync()\n self.tool_change_flag = True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 518 / 1279\n \n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n@@ -25019,15 +25019,15 @@\n \u2022 M6 (change_prolog): #, #, #, #\n \u2022 M61 (settool_prolog): # , #\n \u2022 S (setspeed_prolog): #\n \u2022 F (setfeed_prolog): #\n If you have specific needs for extra parameters to be made visible, that can simply be added to the\n prolog - practically all of the interpreter internals are visible to Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 519 / 1279\n \n 9.6.5.6 Making minimal changes to the built in codes, including M6\n Remember that normally remapping a code completely disables all internal processing for that code.\n However, in some situations it might be sufficient to add a few codes around the existing M6 built in\n implementation, like a tool length probe, but other than that retain the behavior of the built in M6.\n@@ -25076,15 +25076,15 @@\n cblock = self.blocks[self.remap_level]\n if not cblock.t_flag:\n return \u201dT requires a tool number\u201d\n tool\n \n = cblock.t_number\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 520 / 1279\n \n if tool:\n (status, pocket) = self.find_tool_pocket(tool)\n if status != INTERP_OK:\n return \u201dT%d: pocket not found\u201d % (tool)\n@@ -25132,15 +25132,15 @@\n remap is aborted.\n The way to do this is by using the [RS274NGC]ON_ABORT_COMMAND feature. This INI option specifies a\n O-word procedure call which is executed if task for some reason aborts program execution. on_abort\n receives a single parameter indicating the cause for calling the abort procedure, which might be used\n for conditional cleanup.\n The reasons are defined in nml_intf/emc.hh\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 521 / 1279\n \n EMC_ABORT_TASK_EXEC_ERROR = 1,\n EMC_ABORT_AUX_ESTOP = 2,\n EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n EMC_ABORT_TASK_STATE_OFF = 4,\n@@ -25189,15 +25189,15 @@\n Make sure on_abort.ngc is along the interpreter search path (recommended location: SUBROUTINE_PATH\n so as not to clutter your NC_FILES directory with internal procedures).\n Statements in that procedure typically would assure that post-abort any state has been cleaned up,\n like HAL pins properly reset. For an example, see configs/sim/axis/remap/rack-toolchange.\n Note that terminating a remapped code by returning INTERP_ERROR from the epilog (see previous\n section) will also cause the on_abort procedure to be called.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 522 / 1279\n \n 9.6.5.9 Error handling: failing a remapped code NGC procedure\n If you determine in your handler procedure that some error condition occurred, do not use M2 to end\n your handler - see above:\n If displaying an operator error message and stopping the current program is good enough, use the\n@@ -25231,15 +25231,15 @@\n change gears appropriately if not.\n 9.6.6.2 Adjusting the behavior of M0, M1, M60\n A use case for remapping M0/M1 would be to customize the behavior of the existing code. For instance, it could be desirable to turn off the spindle, mist and flood during an M0 or M1 program\n pause, and turn these settings back on when the program is resumed.\n For a complete example doing just that, see configs/sim/axis/remap/extend-builtins/, which\n adapts M1 as laid out above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 523 / 1279\n \n 9.6.7 Creating new G-code cycles\n A G-code cycle as used here is meant to behave as follows:\n \u2022 On first invocation, the associated words are collected and the G-code cycle is executed.\n \u2022 If subsequent lines just continue parameter words applicable to this code, but no new G-code, the\n@@ -25283,15 +25283,15 @@\n [PYTHON]\n TOPLEVEL = \n Filename of the initial Python script to execute on startup. This script is responsible for\n setting up the package name structure, see below.\n PATH_PREPEND = \n Prepend this directory to PYTHON_PATH. A repeating group.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 524 / 1279\n \n PATH_APPEND = \n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = \n Log level of plugin-related actions. Increase this if you suspect problems. Can be very\n@@ -25331,15 +25331,15 @@\n 9.6.9.2 The Interpreter as seen from Python\n \n The interpreter is an existing C++ class (Interp) defined in src/emc/rs274ngc. Conceptually all oword. Python calls are methods of this Interp class, although there is no explicit\n Python definition of this class (it\u2019s a Boost.Python wrapper instance) and hence receive the as the first\n parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 525 / 1279\n \n 9.6.9.3 The Interpreter __init__ and __delete__ functions\n If the TOPLEVEL module defines a function __init__, it will be called once the interpreter is fully\n configured (INI file read, and state synchronized with the world model).\n If the TOPLEVEL module defines a function __delete__, it will be called once before the interpreter is\n@@ -25379,15 +25379,15 @@\n \u2013 when a comment like ;py, is executed - during execution of a remapped\n code: any prolog=, python= and epilog= handlers.\n Calling O-word Python subroutines\n Arguments:\n self\n The interpreter instance\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 526 / 1279\n \n *args\n The list of actual positional parameters. Since the number of actual parameters may vary, it is\n best to use this style of declaration:\n # this would be defined in the oword module\n@@ -25425,15 +25425,15 @@\n print(\u201d%s: %s\u201d % (w, words[w]))\n if words[\u2019p\u2019] < 78: # NB: could raise an exception if p were optional\n return \u201dfailing miserably\u201d\n return INTERP_OK\n \n Return values:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 527 / 1279\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n \u201da message text\u201d\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25470,15 +25470,15 @@\n emccanon.WAIT(0,1,2,5.0)\n # cede control after executing the queue buster:\n yield INTERP_EXECUTE_FINISH\n # post-sync() execution resumes here:\n pin_status = emccanon.GET_EXTERNAL_DIGITAL_INPUT(0,0);\n print(\u201dpin status=\u201d,pin_status)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Warning\n The yield feature is fragile.\n TERP_EXECUTE_FINISH:\n \n 528 / 1279\n \n@@ -25522,15 +25522,15 @@\n print(\u201d#2=\u201d, self.params[2])\n try:\n print(\u201dresult=\u201d, self.params[\u201dresult\u201d])\n except Exception,e:\n return \u201dtestparam forgot to assign #\u201d\n return INTERP_OK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 529 / 1279\n \n o sub\n (debug, call_level=#<_call_level> myname=#)\n ; try commenting out the next line and run again\n # = [# * 3]\n@@ -25574,15 +25574,15 @@\n \n raise InterpreterException\n \n except InterpreterException,e:\n msg = \u201d%d: \u2019%s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n return msg # replace builtin error message\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 530 / 1279\n \n Canon The canon layer is practically all free functions. Example:\n import emccanon\n def example(self,*args):\n ....\n@@ -25621,15 +25621,15 @@\n \u2022 Import that module from the TOPLEVEL script.\n # namedparams.py\n # trivial example\n def _pi(self):\n return 3.1415926535\n # = [2 * # * #<_pi>]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 531 / 1279\n \n Functions in namedparams.py are expected to return a float or int value. If a string is returned, this\n sets the interpreter error message and aborts execution.\n \u00d2nly functions with a leading underscore are added as parameters, since this is the RS274NGC convention for globals.\n It is possible to redefine an existing predefined parameter by adding a Python function of the same\n@@ -25660,15 +25660,15 @@\n no further action is taken. This can be used for instance to minimally adjust the built in behavior\n be preceding or following it with some other statements.\n \u2022 Otherwise, the # and # parameters are extracted from the subroutine\u2019s parameter\n space. This means that the NGC procedure could change these values, and the epilog takes the\n changed values in account.\n \u2022 Then, the Canon command SELECT_TOOL(#) is executed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 532 / 1279\n \n 9.6.11.2 M6: change_prolog and change_epilog\n These wrap a NGC procedure for M6 Tool Change.\n Actions of change_prolog\n \u2022 The following three steps are applicable only if the iocontrol-v2 component is used:\n@@ -25698,15 +25698,15 @@\n behavior be preceding or following it with some other statements.\n \u2022 Otherwise, the # parameter is extracted from the subroutine\u2019s parameter space,\n and used to set the interpreter\u2019s current_pocket variable. Again, the procedure could change this\n value, and the epilog takes the changed value in account.\n \u2022 Then, the Canon command CHANGE_TOOL(#) is executed.\n \u2022 The new tool parameters (offsets, diameter etc) are set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 533 / 1279\n \n 9.6.11.3 G-code Cycles: cycle_prolog and cycle_epilog\n These wrap a NGC procedure so it can act as a cycle, meaning the motion code is retained after\n finishing execution. If the next line just contains parameter words (e.g. new X,Y values), the code is\n executed again with the new parameter words merged into the set of the parameters given in the first\n@@ -25739,15 +25739,15 @@\n \u2013 retain the current motion mode so a continuation line without a motion code will execute the same\n motion code.\n 9.6.11.4 S (Set Speed) : setspeed_prolog and setspeed_epilog\n TBD\n 9.6.11.5 F (Set Feed) : setfeed_prolog and setfeed_epilog\n TBD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 534 / 1279\n \n 9.6.11.6 M61 Set tool number : settool_prolog and settool_epilog\n TBD\n \n 9.6.12 Remapped code execution\n@@ -25802,15 +25802,15 @@\n user-defined - not interpreted\n by LinuxCNC\n user-defined - not interpreted\n by LinuxCNC\n \n or these flags into the [EMC]DEBUG variable as needed. For a current list of debug flags see src/emc/nml_intf/debugflags.h.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 535 / 1279\n \n 9.6.12.5 Debugging Embedded Python code\n Debugging of embedded Python code is harder than debugging normal Python scripts, and only a\n limited supply of debuggers exists. A working open-source based solution is to use the Eclipse IDE,\n and the PydDev Eclipse plug in and its remote debugging feature.\n@@ -25830,15 +25830,15 @@\n pydevd.settrace() will block execution if Eclipse and the Pydev debug server have not been\n started.\n \n To cover the last two steps: the o procedure helps to get into the debugger from MDI mode.\n See also the call_pydevd function in util.py and its usage in remap.involute to set a breakpoint.\n Here\u2019s a screen-shot of Eclipse/PyDevd debugging the involute procedure from above:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 536 / 1279\n \n See the Python code in configs/sim/axis/remap/getting-started/python for details.\n \n 9.6.13 Axis Preview and Remapped code execution\n For complete preview of a remapped code\u2019s tool path some precautions need to be taken. To understand what is going on, let\u2019s review the preview and execution process (this covers the AXIS case, but\n@@ -25854,15 +25854,15 @@\n Now, what about preview of this procedure? At preview time, of course it\u2019s not known whether the\n probe succeeds or fails - but you would likely want to see what the maximum depth of the probe is, and\n assume it succeeds and continues execution to preview further movements. Also, there is no point in\n displaying a probe failed message and aborting during preview.\n The way to address this issue is to test in your procedure whether it executes in preview or execution\n mode. This can be checked for by testing the #<_task> predefined named parameter - it will be 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 537 / 1279\n \n during actual execution and 0 during preview. See configs/sim/axis/remap/manual-toolchange-withtool-length-switch/nc_subroutines/manual_change.ngc for a complete usage example.\n Within Embedded Python, the task instance can be checked for by testing self.task - this will be 1 in\n the milltask instance, and 0 in the preview instance(s).\n \n@@ -25906,15 +25906,15 @@\n G07\n G08\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n \n G05.1 G05.2 G05.3\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 538 / 1279\n \n Table 9.2: Table of Allocated G-codes 10-19\n #\n 10\n 11\n@@ -25997,15 +25997,15 @@\n G41\n G42\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G41.1\n G42.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 539 / 1279\n \n Table 9.5: (continued)\n #\n 43\n 44\n@@ -26086,15 +26086,15 @@\n G71\n G72\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G71.1 G71.2\n G72.1 G72.2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 540 / 1279\n \n Table 9.8: (continued)\n #\n 76\n 77\n@@ -26187,15 +26187,15 @@\n \n Mx7\n \n Mx8\n \n Mx9\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 541 / 1279\n \n Table 9.11: (continued)\n #\n 10-19\n 20-29\n@@ -26325,15 +26325,15 @@\n FIXME Write missing information\n \n 9.6.16 Models of Task execution\n FIXME Write missing information\n 9.6.16.1 Traditional iocontrol/iocontrolv2 execution\n FIXME Write missing information\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 542 / 1279\n \n 9.6.16.2 Redefining IO procedures\n FIXME Write missing information\n 9.6.16.3 Execution-time Python procedures\n FIXME Write missing information\n@@ -26367,15 +26367,15 @@\n 9.6.17.3 Predicting the machine position\n To compute canonical machine operations in advance during read ahead, the interpreter must be able\n to predict the machine position after each line of G-code, and that is not always possible.\n Let\u2019s look at a simple example program which does relative moves (G91), and assume the machine\n starts at x=0,y=0,z=0. Relative moves imply that the outcome of the next move relies on the position\n of the previous one:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 543 / 1279\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G1 Y20 Z-5\n N40 G0 Z30\n@@ -26416,15 +26416,15 @@\n \u2022 This return code signals to task to stop read ahead for now, execute all queued canonical commands built up so far (including the last one, which is the queue buster), and then synchronize\n the interpreter state with the world model. Technically, this means updating internal variables to\n reflect HAL pin values, reload tool geometries after an M6, and convey results of a probe.\n \u2022 The interpreter\u2019s synch() method is called by task and does just that - read all the world model\n actual values which are relevant for further execution.\n \u2022 At this point, task goes ahead and calls the interpreter for more read ahead - until either the program ends or another queue-buster is encountered.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 544 / 1279\n \n 9.6.17.6 Word order and execution order\n One or several words may be present on an NGC block if they are compatible (some are mutually\n exclusive and must be on different lines). The execution model however prescribes a strict ordering\n of execution of codes, regardless of their appearance on the source line (G-code Order of Execution).\n@@ -26460,15 +26460,15 @@\n Tool information is held in the emcStatus structure, which is shared by all parties. One of its fields\n is the toolTable array, which holds the description as loaded from the tool table file (tool number,\n diameter, frontangle, backangle and orientation for lathe, tool offset information).\n The authoritative source and only process actually setting tool information in this structure is the\n iocontrol process. All others processes just consult this structure. The interpreter holds actually a\n local copy of the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 545 / 1279\n \n For the curious, the current emcStatus structure can be accessed by Python statements. The interpreter\u2019s perception of the tool currently loaded for instance is accessed by:\n ;py,from interpreter import *\n ;py,print(this.tool_table[0])\n \n@@ -26505,15 +26505,15 @@\n When the interpreter sees an M6, it:\n 1. checks whether a T command has already been executed (test settings->selected_pocket to be\n >= 0) and fail with Need tool prepared -Txx- for toolchange message if not.\n 2. check for cutter compensation being active, and fail with Cannot change tools with cutter radius\n compensation on if so.\n 3. stop the spindle except if the \u201dTOOL_CHANGE_WITH_SPINDLE_ON\u201d INI option is set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 546 / 1279\n \n 4. generate a rapid Z up move if if the \u201dTOOL_CHANGE_QUILL_UP\u201d INI option is set.\n 5. if TOOL_CHANGE_AT_G30 was set:\n a. move the A, B and C indexers if applicable\n b. generate rapid move to the G30 position\n@@ -26548,15 +26548,15 @@\n in configs/sim/axis/remap/toolchange/python/toolchange.py.\n 9.6.17.13 How M61 (Change tool number) works\n M61 requires a non-negative \u0300Q \u0300parameter (tool number). If zero, this means unload tool, else set\n current tool number to Q.\n Building the replacement for M61 An example Python redefinition for M61 can be found in the\n set_tool_number function in configs/sim/axis/remap/toolchange/python/toolchange.py.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 547 / 1279\n \n 9.6.18 Status\n 1. The RELOAD_ON_CHANGE feature is fairly broken. Restart after changing a Python file.\n 2. M61 (remapped or not) is broken in iocontrol and requires iocontrol-v2 to actually work.\n \n@@ -26599,15 +26599,15 @@\n internally. A warning pin is set and a message issued if the apply-offsets pin is deasserted while\n offsets are applied. The warning pin remains TRUE until the offsets are removed or the apply-offsets\n pin is set.\n Typically, the move-enable pin is connected to external controls and the apply-offsets pin is connected\n to halui.program.is-paused (for offsets only while paused) or set to TRUE (for continuously applied\n offsets).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 548 / 1279\n \n Applied offsets are automatically returned to zero (respecting limits) when either of the enabling\n inputs is deactivated. The zero value tolerance is specified by the epsilon input pin value.\n Waypoints are recorded when the moveoff componenent is enabled. Waypoints are managed with the\n waypoint-sample-secs and waypoint-threshold pins. When the backtrack-enable pin is TRUE, the autoreturn path follows the recorded waypoints. When the memory available for waypoints is exhausted,\n@@ -26650,15 +26650,15 @@\n \u2022 configs/sim/touchy/ngcgui (touchy-ui)\n \n 9.7.1 Modifying an existing configuration\n A system-provided HAL file (LIB:hookup_moveoff.tcl) can be used to adapt an existing configuration to\n use the moveoff component. Additional INI file settings support the use of a simple GUI (moveoff_gui)\n for controlling offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 549 / 1279\n \n When the system HAL file (LIB:hookup_moveoff.tcl) is properly specified in a configuration INI file, it\n will:\n 1. Disconnect the original joint.N.motor-pos-cmd and joint.N.motor-pos-fb pin connections\n 2. Load (loadrt) the moveoff component (using the name mv) with a personality set to accommodate\n@@ -26699,15 +26699,15 @@\n EPSILON =\n WAYPOINT_SAMPLE_SECS =\n WAYPOINT_THRESHOLD =\n \n The moveoff_gui is used to make additional required connections and provide a popup GUI to:\n 1. Provide a control togglebutton to Enable/Disable offsets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 550 / 1279\n \n 2. Provide a control togglebutton to Enable/Disable backtracking\n 3. Provide control pushbuttons to Increment/Decrement/Zero each axis offset\n 4. Display each axis offset current value\n 5. Display current offset status (disabled, active, removing, etc)\n@@ -26750,15 +26750,15 @@\n net external_offset_1 mv.offset-in-1\n net external_offset_2 mv.offset-in-2\n net external_backtrack_en mv.backtrack-enable\n \n 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\n while using the moveoff_gui display for current offset values and offset status.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 551 / 1279\n \n The moveoff_gui is configured with command line options. For details on the operation of moveoff_gui,\n see the man page:\n $ man moveoff_gui\n \n@@ -26823,15 +26823,15 @@\n Note: If the moveoff move-enable pin (mv.move-enable) is connected when\n moveoff_gui is started, external controls are required and only\n displays are provided.\n \n 9.8 Stand Alone Interpreter\n The rs274 stand alone interpreter is available for use via the command line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 552 / 1279\n \n 9.8.1 Usage\n Usage: rs274 [-p interp.so] [-t tool.tbl] [-v var-file.var] [-n 0|1|2]\n [-b] [-s] [-g] [input file [output file]]\n -p: Specify the pluggable interpreter to use\n@@ -26869,15 +26869,15 @@\n \n 9.9 External Axis Offsets\n External axis offsets are supported during teleop (world) jogs and coordinated (G-code) motion. External axis offsets are enabled on a per-axis basis by INI file settings and controlled dynamically by\n INI input pins. The INI interface is similar to that used for wheel jogging. This type of interface is\n typically implemented with a manual-pulse-generator (mpg) connected to an encoder INI component\n that counts pulses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 553 / 1279\n \n 9.9.1 INI File Settings\n For each axis letter (L in xyzabcuvw):\n [AXIS_L]OFFSET_AV_RATIO = value (controls accel/vel for external offsets)\n \n@@ -26908,15 +26908,15 @@\n 9.9.2.2 Other Motion HAL Pins\n 1. motion.eoffset-active Output(bit): non-zero external offsets applied\n 2. motion.eoffset-limited Output(bit): motion inhibited due to soft limit\n \n 9.9.3 Usage\n The axis input HAL pins (enable,scale,counts) are similar to the pins used for wheel jogging.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 554 / 1279\n \n 9.9.3.1 Offset Computation\n At each servo period, the axis.L.eoffset-counts pin is compared to its value in the prior period. The\n increase or decrease (positive or negative delta) of the axis.L.eoffset-counts pin is multiplied by the\n current axis.L.eoffset-scale pin value. This product is accumulated in an internal register and exported\n@@ -26954,15 +26954,15 @@\n limit will stop motion in the offending axis without a deacceleration interval. Similarly, during\n 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.\n When motion is stopped with no deacceleration phase, system acceleration limits may be violated\n and lead to: 1) a following error (and/or a thump) for a servo motor system, 2) a loss of steps for a\n stepper motor system. In general, it is recommended that external offsets are applied in a manner to\n avoid approaching soft limits.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 555 / 1279\n \n 9.9.3.4 Notes\n External offsets apply to axis coordinate letters (xyzabcuvw). All joints must be homed before external\n axis offsets are honored.\n If an axis.L.eoffset-enable HAL pin is reset when its offset is non-zero, the offset is maintained. The\n@@ -26997,15 +26997,15 @@\n a terminal:\n $ sim_pin axis.z.eoffset-enable axis.z.eoffset-scale axis.z.eoffset-counts\n \n The use of external offsets is aided by displaying information related to the current offsets: the current eoffset value and the requested eoffset value, the axis pos-cmd, and (for an identity kinematics\n machine) the corresponding joint motor pos-cmd and motor-offset. The provided sim configuration\n (see below) demonstrates an example PyVCP panel for the AXIS GUI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 556 / 1279\n \n In the absence of a custom display, halshow can be started as an auxiliary application with a custom\n watch list.\n Example INI file settings to simulate the HAL pin eoffset connections and display eoffset information\n for the z axis (for identity kinematics with z==joint2):\n@@ -27043,15 +27043,15 @@\n 9.9.6.2 jwp_z.ini\n The sim config sim/configs/axis/external_offsets/jwp_z.ini demonstrates a jog-while-pause capability\n for a single (Z) coordinate:\n Panel LEDs are provided to show important status items.\n Controls are provided to set the eoffset scale factor and to increment/decrement/clear the eoffset\n counts.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 557 / 1279\n \n 9.9.6.3 dynamic_offsets.ini\n This sim config sim/configs/axis/external_offsets/dynamic_offsets.ini demonstrates dynamically applied\n offsets by connecting a sinusoidal waveform to the z coordinate external offset inputs.\n Panel LEDs are provided to show important status items.\n@@ -27086,15 +27086,15 @@\n INI file settings enable the (optional) operation of a user-provided tool database program:\n [EMCIO]\n DB_PROGRAM = db_program [args]\n \n When included, db_program specifies the path to a user-provided executable program that provides\n tooldata. Up to 10 space-separated args may be included and passed to the db_program at startup.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 558 / 1279\n \n Note\n INI file settings for [EMCIO]TOOL_TABLE are ignored when a db_program is specified.\n \n Note\n@@ -27128,15 +27128,15 @@\n \u2022 \u201dl\u201d spindle_load (TnM6). The tool data line includes only the T and P items identifying the relevant\n tool number and pocket number.\n \u2022 \u201du\u201d spindle_unload (T0M6). The tool data line includes only the T and P items identifying the relevant tool number and pocket number.\n Note\n When a NON_RANDOM tool changer is specified using [EMCIO]RANDOM_TOOL_CHANGER=0 (the default), the spindle_load command issued for TnM6 (or M61Qn) is: l Tn P0 (pocket 0 is the spindle).\n The spindle_unload command issued for T0M6 is u T0 P0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 559 / 1279\n \n Note\n When a RANDOM tool changer is specified using [EMCIO]RANDOM_TOOL_CHANGER=1, a pair of spindle_unload/spindle_load commands are issued at each tool exchange. The pair of commands issued\n for TnM6 (or M61Qn) are u Tu Pm followed by l Tn P0, where u is the current tool to be sent to pocket\n m and n is the new tool to load in the spindle (pocket 0). By convention, a tool number of 0 is used\n@@ -27179,15 +27179,15 @@\n Removal of a tool number should only be done if the tool number is not currently loaded in spindle.\n \n Exporting the environmental variable DB_SHOW enables LinuxCNC prints (to stdout) that show tool\n data retrieved from the db_program at startup and at subsequent reloading of tool data.\n Exporting the environmental variable DB_DEBUG enables LinuxCNC prints (to stdout) for additional\n debugging information about interface activity.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 560 / 1279\n \n 9.10.1.4 Example program\n An example db_program (implemented as a Python script) is provided with the simulation examples.\n The program demonsrates the required operations to:\n 1. acknowledge startup version\n@@ -27232,15 +27232,15 @@\n )\n tooldb_loop()\n \n Note\n Use of tooldb is not required \u2014 it is provided as a demonstration of the required interface and as a\n convenience for implementing Python-based applications that interface with an external database.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 561 / 1279\n \n 9.10.2 Simulation configs\n Simulation configs using the AXIS gui:\n 1. configs/sim/axis/db_demo/db_ran.ini (random_toolchanger)\n 2. configs/sim/axis/db_demo/db_nonran.ini (nonrandom_toolchanger)\n@@ -27260,50 +27260,50 @@\n LinuxCNC tooldata updates and the database application updates.\n 9.10.2.1 Notes\n \n When a db_program is used in conjunction with a random tool changer ([EMCIO]RANDOM_TOOLCHANGER\n LinuxCNC maintains a file (db_spindle.tbl in the configuration directory) that consists of a single tool\n table line identifying the current tool in the spindle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Part II\n \n Usage\n \n 562 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 563 / 1279\n \n Chapter 10\n \n User Interfaces\n 10.1 AXIS GUI\n 10.1.1 Introduction\n AXIS is a graphical front-end for LinuxCNC which features a live preview and backplot. It is written\n in Python and uses Tk and OpenGL to display its user interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 564 / 1279\n \n Figure 10.1: The AXIS Window\n \n 10.1.2 Getting Started\n If your configuration is not currently set up to use AXIS, you can change it by editing the .ini file (INI\n file). In the section [DISPLAY] change the [DISPLAY] line to read DISPLAY = axis.\n The sample configuration sim/axis.ini is already configured to use AXIS as its front-end.\n When AXIS starts, a window like the one in the figure Figure 10.1 above opens.\n 10.1.2.1 INI settings\n For more information on INI file settings that can change how AXIS works see the Display Section of\n the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 565 / 1279\n \n \u2022 CYCLE_TIME - Adjust the response rate of the GUI in milliseconds. Typical 100, useable range 50\n - 200\n (will accept time in seconds (.05 -.2) for legacy reasons - milliseconds preferred to match other\n screens).\n@@ -27337,15 +27337,15 @@\n The AXIS window contains the following elements:\n \u2022 A display area that shows one of the following:\n \u2013 A preview of the loaded file (in this case, axis.ngc), as well as the current location of the CNC\n machine\u2019s controlled point. Later, this area will display the path the CNC machine has moved\n through, called the backplot.\n \u2013 A large readout showing the current position and all offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 566 / 1279\n \n \u2022 A menu bar and toolbar that allow you to perform various actions\n \u2022 Manual Control Tab - which allows you to make the machine move, turn the spindle on or off, and\n turn the coolant on or off if included in the INI file.\n \u2022 MDI Tab - where G-code programs can be entered manually, one line at a time. This also shows the\n@@ -27381,15 +27381,15 @@\n \u2022 Reload tool table - After editing the tool table you must reload it.\n \u2022 Ladder editor - If you have loaded ClassicLadder you can edit it from here. See the ClassicLadder\n chapter for more information.\n \u2022 Quit - Terminates the current LinuxCNC session.\n \u2022 Toggle Emergency Stop F1 - Change the state of the Emergency Stop.\n \u2022 Toggle Machine Power F2 - Change the state of the Machine Power if the Emergency Stop is not on.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 567 / 1279\n \n \u2022 Run Program - Run the currently loaded program from the beginning.\n \u2022 Run From Selected Line - Select the line you want to start from first. Use with caution as this will\n move the tool to the expected position before the line first then it will execute the rest of the code.\n \n@@ -27425,15 +27425,15 @@\n G10 L10 in the G-code chapter.\n \u2013 Tool touch off to fixture - When performing Touch Off, the value entered is relative to the ninth\n (G59.3) coordinate system, with the axis offset (G92) ignored. This is useful when there is a tool\n touch-off fixture at a fixed location on the machine, with the ninth (G59.3) coordinate system set\n such that the tip of a zero-length tool is at the fixture\u2019s origin when the Relative coordinates are\n 0. See G10 L11 in the G-code chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 568 / 1279\n \n \u2022 Top View - The Top View (or Z view) displays the G-code looking along the Z axis from positive to\n negative. This view is best for looking at X & Y.\n \u2022 Rotated Top View - The Rotated Top View (or rotated Z view) also displays the G-code looking along\n the Z axis from positive to negative. But sometimes it\u2019s convenient to display the X & Y axes rotated\n@@ -27473,15 +27473,15 @@\n \u2022 Show Tool - The display of the tool cone/cylinder can be disabled if desired.\n \u2022 Show Extents - The display of the extents (maximum travel in each axis direction) of the loaded\n G-code program can be disabled if desired.\n \u2022 Show Offsets - The selected fixture offset (G54-G59.3) origin location can be shown as a set of three\n orthogonal lines, one each of red, blue, and green. This offset origin (or fixture zero) display can be\n disabled if desired.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 569 / 1279\n \n \u2022 Show Machine Limits - The machine\u2019s maximum travel limits for each axis, as set in the INI file,\n are shown as a rectangular box drawn in red dashed lines. This is useful when loading a new Gcode program, or when checking for how much fixture offset would be needed to bring the G-code\n program within the travel limits of your machine. It can be shut off if not needed.\n \u2022 Show Velocity - A display of velocity is sometimes useful to see how close your machine is running\n@@ -27531,15 +27531,15 @@\n \n Execute next line [T]\n \n \u2022\n \n Pause Execution [P] Resume Execution [S]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022\n \n Stop Program Execution [ESC]\n \n \u2022\n \n@@ -27606,15 +27606,15 @@\n from commanded position due to following error, dead band, encoder resolution, or step size. For\n instance, if you command a movement to X 0.0033 on your mill, but one step of your stepper motor or\n one encoder count is 0.00125, then the Commanded position might be 0.0033, but the Actual position\n will be 0.0025 (2 steps) or 0.00375 (3 steps).\n Preview Plot When a file is loaded, a preview of it is shown in the display area. Fast moves (such as\n those produced by the G0 command) are shown as cyan lines. Moves at a feed rate (such as those\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 571 / 1279\n \n produced by the G1 command) are shown as solid white lines. Dwells (such as those produced by the\n G4 command) are shown as small pink X marks.\n 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\n@@ -27648,15 +27648,15 @@\n By dragging with shift and the left mouse button pressed, or by dragging with the mouse wheel\n pressed, the preview plot will be rotated. When a line is highlighted, the center of rotation is the\n center of the line. Otherwise, the center of rotation is the center of the entire program.\n By rotating the mouse wheel, or by dragging with the right mouse button pressed, or by dragging\n with control and the left mouse button pressed, the preview plot will be zoomed in or out.\n By clicking one of the Preset View icons, or by pressing V, several preset views may be selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 572 / 1279\n \n 10.1.3.4 Text Display Area\n By left-clicking a line of the program, the line will be highlighted in both the graphical and text displays.\n When the program is running, the line currently being executed is highlighted in red. If no line has\n been selected by the user, the text display will automatically scroll to show the current line.\n@@ -27677,15 +27677,15 @@\n the desired direction of motion. The first four axes can also be moved by the arrow keys (X and Y),\n PAGE UP and PAGE DOWN keys (Z), and the [ and ] keys (A).\n If Continuous is selected, the motion will continue as long as the button or key is pressed. If another\n value is selected, the machine will move exactly the displayed distance each time the button is clicked\n or the key is pressed. By default, the available values are 0.1000, 0.0100, 0.0010, 0.0001.\n See the DISPLAY Section for more information on setting the increments.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 573 / 1279\n \n Homing (Identity Kinematics) The INI file setting [KINS]JOINTS defines the total number of joints\n for the system. A joint may be configured with a home switch or for immediate homing. Joints may\n specify a home sequence that organizes the order for homing groups of joints.\n If all joints are configured for homing and have valid home sequences, the homing button will show\n@@ -27711,15 +27711,15 @@\n programs, except that variables may not be referred to. The resulting value is shown as a number.\n \n Figure 10.4: Touch Off Window\n See also the Machine menu options: Touch part and Touch part holder.\n Tool Touch Off By pressing the Tool Touch Off button the tool length and offsets of the currently\n loaded tool will be changed so that the current tool tip position matches the entered coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 574 / 1279\n \n Figure 10.5: Tool Touch Off Window\n See also the Tool touch off to workpiece and Tool touch off to fixture options in the Machine menu.\n Override Limits By pressing Override Limits, the machine will temporarily be allowed to jog off of\n a physical limit switch. This check box is only available when a limit switch is tripped. The override\n@@ -27733,15 +27733,15 @@\n Pressing the spindle start button sets the S speed to 1.\n The Coolant group The two buttons allow the Mist and Flood coolants to be turned on and off.\n Depending on your machine configuration, not all the items in this group may appear.\n 10.1.3.6 MDI\n MDI allows G-code commands to be entered manually. When the machine is not turned on, or when\n a program is running, the MDI controls are unavailable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 575 / 1279\n \n Figure 10.6: The MDI tab\n \u2022 History - This shows MDI commands that have been typed earlier in this session.\n \u2022 MDI Command - This allows you to enter a G-code command to be executed. Execute the command\n by pressing Enter or by clicking Go.\n@@ -27755,15 +27755,15 @@\n By moving this slider, the programmed spindle speed can be modified. For instance, if a program\n requests S8000 and the slider is set to 80%, then the resulting spindle speed will be 6400. This item\n only appears when the HAL pin spindle.0.speed-out is connected.\n 10.1.3.9 Jog Speed\n By moving this slider, the speed of jogs can be modified. For instance, if the slider is set to 1 in/min,\n then a .01 inch jog will complete in about .6 seconds, or 1/100 of a minute. Near the left side (slow\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 576 / 1279\n \n jogs) the values are spaced closely together, while near the right side (fast jogs) they are spaced much\n further apart, allowing a wide range of jog speeds with fine control when it is most important.\n On machines with a rotary axis, a second jog speed slider is shown. This slider sets the jog rate for\n the rotary axes (A, B and C).\n@@ -27840,15 +27840,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Manual\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 577 / 1279\n \n Table 10.1: (continued)\n Keystroke\n R\n P\n@@ -27891,15 +27891,15 @@\n Any\n Any\n \n 10.1.5 Show LinuxCNC Status (linuxcnctop)\n AXIS includes a program called linuxcnctop which shows some of the details of LinuxCNC\u2019s state. You\n can run this program by invoking Machine > Show LinuxCNC Status\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 578 / 1279\n \n Figure 10.7: LinuxCNC Status Window\n The name of each item is shown in the left column. The current value is shown in the right column. If\n the value has recently changed, it is shown on a red background.\n \n@@ -27916,15 +27916,15 @@\n (0.0, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI> G1 F5 X1\n MDI>\n (0.5928500000000374, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI>\n (1.0000000000000639, 0.0, 0.0, 0.0, 0.0, 0.0)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 579 / 1279\n \n 10.1.7 axis-remote\n AXIS includes a program called axis-remote which can send certain commands to a running AXIS.\n The available commands are shown by running axis-remote --help and include checking whether AXIS\n is running (--ping), loading a file by name, reloading the currently loaded file (--reload), and making\n@@ -27956,50 +27956,50 @@\n \u2022 hal allows the creation of userspace HAL components written in Python\n \u2022 _togl provides an OpenGL widget that can be used in Tkinter applications\n \u2022 minigl provides access to the subset of OpenGL used by AXIS\n To use these modules in your own scripts, you must ensure that the directory where they reside\n is on Python\u2019s module path. When running an installed version of LinuxCNC, this should happen\n automatically. When running in-place, this can be done by using scripts/rip-environment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 580 / 1279\n \n 10.1.10 Using AXIS in Lathe Mode\n By including the line LATHE = 1 in the [DISPLAY] section of the INI file, AXIS selects lathe mode. The\n Y axis is not shown in coordinate readouts, the view is changed to show the Z axis extending to the\n right and the X axis extending towards the bottom of the screen, and several controls (such as those\n for preset views) are removed. The coordinate readouts for X are replaced with diameter and radius.\n \n Figure 10.9: AXIS Lathe Mode\n Pressing V zooms out to show the entire file, if one is loaded.\n When in lathe mode, the shape of the loaded tool (if any) is shown.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 581 / 1279\n \n Figure 10.10: Lathe Tool Shape\n To change the display to a back tool lathe you need to have both LATHE = 1 and BACK_TOOL_LATHE\n = 1 in the [DISPLAY] section. This will invert the view and put the tool on the back side of the Z axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 582 / 1279\n \n Figure 10.11: Lathe Back Tool Shape\n \n 10.1.11 Using AXIS in Foam Cutting mode\n By including the line FOAM = 1 in the [DISPLAY] section of the INI file, AXIS selects foam-cutting\n mode. In the program preview, XY motions are displayed in one plane, and UV motions in another. In\n the live plot, lines are drawn between corresponding points on the XY plane and the UV plane. The\n special comments (XY_Z_POS) and (UV_Z_POS) set the Z coordinates of these planes, which default\n to 0 and 1.5 machine units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 583 / 1279\n \n Figure 10.12: Foam Cutting Mode\n \n 10.1.12 Advanced Configuration\n When AXIS is started it creates the HAL pins for the GUI then it executes the HAL file named in the INI\n@@ -28007,15 +28007,15 @@\n + _postgui + .hal eg. lathe_postgui.hal, but can be any legal filename. These commands are executed\n after the screen is built, guaranteeing the widget\u2019s HAL pins are available. You can have multiple line\n of POSTGUI_HALFILE= in the INI. Each will be run one after the other in the order they\n appear.\n For more information on the INI file settings that can change the way AXIS works, see the Display\n Section of the INI configuration chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 584 / 1279\n \n 10.1.12.1 Program Filters\n AXIS has the ability to send loaded files through a filter program. This filter can do any desired task:\n Something as simple as making sure the file ends with M2, or something as complicated as generating\n G-code from an image.\n@@ -28037,15 +28037,15 @@\n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n Figure 10.13: Circular Holes\n If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 585 / 1279\n \n FILTER_PROGRESS=%d\n \n will set the AXIS progress bar to the given percentage. This feature should be used by any filter that\n runs for a long time.\n@@ -28081,15 +28081,15 @@\n Example of .axisrc file\n root_window.bind(\u201d\u201d, \u201ddestroy .\u201d)\n help2.append((\u201dControl-Q\u201d, \u201dQuit\u201d))\n \n The following stops the \u201dDo you really want to quit\u201d dialog.\n root_window.tk.call(\u201dwm\u201d,\u201dprotocol\u201d,\u201d.\u201d,\u201dWM_DELETE_WINDOW\u201d,\u201ddestroy .\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 586 / 1279\n \n 10.1.12.5 USER_COMMAND_FILE\n \n A configuration-specific Python file may be specified with an INI file setting [DISPLAY]USER_COMMAND_FIL\n Like a ~/.axisrc file, this file is sourced just before the AXIS GUI is displayed. This file is specific to\n@@ -28126,15 +28126,15 @@\n G-code file, one can disable the preview on certain parts that are already working OK).\n \u2022 (AXIS,hide) Stops the preview (must be first)\n \u2022 (AXIS,show) Resumes the preview (must follow a hide)\n \u2022 (AXIS,stop) Stops the preview from here to the end of the file.\n \u2022 (AXIS,notify,the_text) Displays the_text as an info display\n This display can be useful in the AXIS preview when (debug,message) comments are not displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 587 / 1279\n \n 10.1.13 Axisui\n To improve the interaction of AXIS with physical jog wheels, the axis currently selected in the GUI is\n also reported on a pin with a name like axisui.jog.x. One of these pins is TRUE at one time, and the\n rest are FALSE. These are meant to control motion\u2019s jog-enable pins.\n@@ -28217,15 +28217,15 @@\n 10.1.14 AXIS Customization Hints\n AXIS is a fairly large and difficult-to-penetrate code base, this is helpful To keep the code stable but\n makes it difficult to customize.\n Here we will show code snippets to modify behaviours or visuals of the screen. Keep in mind the\n internal code of AXIS can change from time to time.\n these snippets are not guaranteed to continue to work - they may need adjustment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 588 / 1279\n \n 10.1.14.1 The update function\n There is a function in AXIS named user_live_update that is called every time AXIS updates itself. You\n can use this to update your own functions.\n # continuous update function\n@@ -28264,15 +28264,15 @@\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n root_window.bind(\u2019\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(50))\n@@ -28311,15 +28311,15 @@\n # connect pins\n hal.new_sig(\u2019idle-led\u2019,hal.HAL_BIT)\n hal.connect(\u2019halui.program.is-idle\u2019,\u2019idle-led\u2019)\n hal.connect(\u2019my_component.idle-led\u2019,\u2019idle-led\u2019)\n \n 589 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 590 / 1279\n \n # set a pin\n hal.set_p(\u2019my_component.pause-led\u2019,\u20191\u2019)\n # get a pin 2,8+ branch\n value = hal.get_value(\u2019halui.program.is-idle\u2019)\n@@ -28360,15 +28360,15 @@\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-text\u2019,\u2019Home Y\u2019,\u2019-command\u2019,\u2019 \u2190goto_home Y\u2019,\u2019-height\u2019,\u20192\u2019)\n # place the button\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20197\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n # any function called from Tcl needs to be added to TclCommands\n TclCommands.goto_home = goto_home\n commands = TclCommands(root_window)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 591 / 1279\n \n 10.1.14.12 Add Button to manual frame\n # make a new button and put it in the manual frame\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-text\u2019,\u2019My Button\u2019,\u2019- \u2190command\u2019,\u2019mybutton_clicked\u2019,\u2019-height\u2019,\u20192\u2019)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20196\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n@@ -28424,15 +28424,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 592 / 1279\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28529,15 +28529,15 @@\n # use \u2019grid\u2019 or \u2019pack\u2019 depending on how it was originally placed\n root_window.tk.call(\u2019grid\u2019,\u2019forget\u2019,\u2019.pane.top.tabs.fmanual.jogf.zerohome.tooltouch\u2019)\n \n 10.1.14.15 Change a label\n # change label of a widget\n root_window.tk.call(\u2019setup_widget_accel\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019Downdraft\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 593 / 1279\n \n # make sure it appears (only needed in this case if the mist button was hidden)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20195\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n \n 10.1.14.16 Redirect an existing command\n@@ -28567,15 +28567,15 @@\n root_window.tk.call(\u2019.toolbar.program_run\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019RUN\u2019,\u2019-width\u2019, \u2190buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_step\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STEP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_pause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019PAUSE\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_stop\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STOP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_blockdelete\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Skip /\u2019 \u2190,\u2019-width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_optpause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019M1\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 594 / 1279\n \n root_window.tk.call(\u2019.toolbar.view_zoomin\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom+\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_zoomout\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom-\u2019,\u2019-width \u2190\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top X\u2019,\u2019-width\u2019,buW, \u2190\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z2\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top Y\u2019,\u2019-width\u2019,buW \u2190,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n@@ -28610,15 +28610,15 @@\n support the joint / axis changes in LinuxCNC it does not work on 2.7 or 2.6 branch!\n It has support for integrated virtual keyboard (onboard or matchbox-keyboard), so there is no need\n for a hardware keyboard or mouse, but it can also be used with that hardware. GMOCCAPY offers a\n separate settings page to configure most settings of the GUI without editing files.\n 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.\n You could just copy the gmoccapy.pot file to something like it.po and translate that file with gtranslator or poedit. After rebuilding, you\u2019d get the GUI in your preference language. To facilitate the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 595 / 1279\n \n sharing of the translation, GMOCCAPY is available on the Weblate web interface. GMOCCAPY is currently available in English, German, Spanish, Polish, Serbian and Hungarian. Feel free to help me to\n introduce more languages, be it locally or via the web. If you need help, don\u2019t hesitate to contact me\n on nieson@web.de.\n \n@@ -28632,15 +28632,15 @@\n it should fit to every standard screen. It is recommended to use screens with minimum resolution of\n 1024x748.\n \n 10.2.3 How to Get GMOCCAPY\n GMOCCAPY 3 is included in the standard distribution of LinuxCNC since release 2.7. So the easiest\n way to get GMOCCAPY on your controlling PC is just to download the ISO and install it from the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 596 / 1279\n \n CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n In the release notes aka changelist you can track the latest bugfixes and features.\n You will get a similar screen to the following (the design may vary depending on your config):\n \n@@ -28651,15 +28651,15 @@\n \u2022 -logo : If given, the logo will hide the jog button tab in manual mode, this is only\n useful for machines with hardware buttons for jogging and increment selection.\n There is really not to much to configure just to run GMOCCAPY, but there are some points you should\n take care off if you want to use all the features of the GUI.\n You will find a lot of simulation configurations (INI files) included, just to show the basics:\n \u2022 gmoccapy.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 597 / 1279\n \n \u2022 gmoccapy_4_axis.ini\n \u2022 lathe_configs/gmoccapy_lathe.ini\n \u2022 lathe_configs/gmoccapy_lathe_imperial.ini\n \u2022 gmoccapy_left_panel.ini\n@@ -28692,15 +28692,15 @@\n PROGRAM_PREFIX = ../../nc_files/\n \n \u2022 DISPLAY = gmoccapy - This tells LinuxCNC to use GMOCCAPY.\n \u2022 PREFERENCE_FILE_PATH - Gives the location and name of the preferences file to be used. In most\n cases this line will not be needed, it is used by GMOCCAPY to store your settings of the GUI, like\n themes, DRO units, colors, and keyboard settings, etc., see settings page for more details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 598 / 1279\n \n Note\n If no path or file is given, GMOCCAPY will use as default .pref, if no machine\n name is given in your INI File it will use gmoccapy.pref. The file will be stored in your config directory,\n so the settings will not be mixed if you use several configs. If you only want to use one file for\n@@ -28735,15 +28735,15 @@\n If not set, half of MAX_LINEAR_VELOCITY will be used. If that value is also not given, it will default\n to 180.\n \n \u2022 MAX_LINEAR_VELOCITY = 230.0 - Sets the maximal velocity of the machine.\n Note\n Defaults to 600 if not set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 599 / 1279\n \n 10.2.4.3 Macro Buttons\n You can add macros to GMOCCAPY, similar to Touchy\u2019s way. A macro is nothing else than a NGC file.\n You are able to execute complete CNC programs in MDI mode by just pushing one button. To do so,\n you first have to specify the search path for macros:\n@@ -28784,15 +28784,15 @@\n GMOCCAPY will also accept macros asking for parameters like:\n [MACRO]\n MACRO = go_to_position X-pos Y-pos Z-pos\n \n The parameters must be separated by spaces. This example calls a file go_to_position.ngc with the\n following content:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 600 / 1279\n \n ; Test file \u201dgo to position\u201d\n ; will jog the machine to a given position\n O sub\n G17\n@@ -28812,15 +28812,15 @@\n M2\n \n After pushing the execute macro button, you will be asked to enter the values for X-pos Y-pos Z-pos\n and the macro will only run if all values have been given.\n Note\n If you would like to use a macro without any movement, see also the notes in known problems.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 601 / 1279\n \n Macro example using the \u201dgo to position\u201d-macro\n 10.2.4.4 Embedded Tabs and Panels\n You can add embedded programs to GMOCCAPY like you can do in AXIS, Touchy and Gscreen. All is\n done by GMOCCAPY automatically if you include a few lines in your INI file in the DISPLAY section.\n@@ -28834,15 +28834,15 @@\n EMBED_TAB_LOCATION = ntb_preview\n EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade\n \n All you have to take care of, is that you include for every tab or side panel the mentioned three lines:\n \u2022 EMBED_TAB_NAME = Represents the name of the tab or side panel, it is up to you what name you\n use, but it must be present!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 602 / 1279\n \n \u2022 EMBED_TAB_LOCATION = The place where your program will be placed in the GUI, see figure\n Embedded tab locations. Valid values are:\n \u2013 ntb_user_tabs (as main tab, covering the complete screen)\n \u2013 ntb_preview (as tab on the preview side (1))\n@@ -28878,29 +28878,29 @@\n \n will add a the panel manual-example.ui, include a custom Python handler, hitcounter.py and make\n all connections after realizing the panel according to manual-example.hal.\n hide\n \n will hide the chosen box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 603 / 1279\n \n Figure 10.14: Embedded tab locations\n Note\n If you make any HAL connections to your custom glade panel, you need to do that in the HAL file\n specified in the EMBED_TAB_COMMAND line, otherwise you may get an error that the HAL pin does\n not exist \u2014 this is because of race conditions loading the HAL files. Connections to GMOCCAPY HAL\n pins need to be made in the postgui HAL file specified in your INI file, because these pins do not exist\n prior of realizing the GUI.\n \n Here are some examples:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ntb_preview\n \n 604 / 1279\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -28923,15 +28923,15 @@\n provide a -response HAL pin.\n For more detailed information of the pins see User Created Message HAL Pins.\n Example of User Message Configuration\n MESSAGE_TEXT = This is a info-message test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 605 / 1279\n \n MESSAGE_TEXT = This is a yes no dialog test\n MESSAGE_TYPE = yesnodialog\n MESSAGE_PINNAME = yesnodialog\n MESSAGE_TEXT = Text can be small, big, bolditalic,\n@@ -28976,15 +28976,15 @@\n self.widgets.vbtb_main.remove(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.remove(self.widgets.lbl_time)\n self.widgets.vbtb_main.add(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.add(self.widgets.lbl_time)\n \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 606 / 1279\n \n 10.2.4.8 User CSS File\n Similar to the User command file it\u2019s possible to influence the appearance by cascading style sheets\n (CSS). If a file ~/.gmoccapy_css exists, its contents are loaded into the stylesheet provider and are\n so beeing applied to the GUI.\n@@ -29023,15 +29023,15 @@\n buttons are count from up to down and from left to right beginning with 0.\n Note\n The pin names have changed in GMOCCAPY 2 to order them in a better way.\n \n The pins for the right (vertical) buttons are:\n \u2022 gmoccapy.v-button.button-0 (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 607 / 1279\n \n \u2022 gmoccapy.v-button.button-1 (bit IN)\n \u2022 gmoccapy.v-button.button-2 (bit IN)\n \u2022 gmoccapy.v-button.button-3 (bit IN)\n \u2022 gmoccapy.v-button.button-4 (bit IN)\n@@ -29103,15 +29103,15 @@\n enabled in settings,\n otherwise Nothing\n optional blocks\n full-size preview\n \n edit code\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 608 / 1279\n \n Table 10.3: Functional assignment of horizontal buttons\n (2)\n Pin\n Settings Mode\n@@ -29202,15 +29202,15 @@\n \n So we have 67 reactions with only 10 HAL pins!\n These pins are made available to be able to use the screen without an touch panel, or protect it\n from excessive use by placing hardware buttons around the panel. They are available in a sample\n configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 609 / 1279\n \n 10.2.5.2 Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n Note\n For GMOCCAPY 3 some HAL pin names have changed when new controls have been implemented.\n@@ -29222,15 +29222,15 @@\n \u2022 gmoccapy.jog.jog-velocity.count-enable (bit IN) - Must be True, to enable counts\n \u2022 gmoccapy.feed.feed-override.counts (s32 IN) - feed override\n \u2022 gmoccapy.feed.feed-override.count-enable (bit IN) - Must be True, to enable counts\n \u2022 gmoccapy.feed.reset-feed-override (bit IN) - reset the feed override to *0%\n \u2022 gmoccapy.spindle.spindle-override.counts (s32 IN) - spindle override\n \u2022 gmoccapy.spindle.spindle-override.count-enable (bit IN) - Must be True, to enable counts\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 610 / 1279\n \n \u2022 gmoccapy.spindle.reset-spindle-override (bit IN) - reset the spindle override to *0%\n \u2022 gmoccapy.rapid.rapid-override.counts (s32 IN) - Maximal Velocity of the *chine\n \u2022 gmoccapy.rapid.rapid-override.count-enable (bit IN) - Must be True, to enable counts\n To connect potentiometers, use the following pins:\n@@ -29260,15 +29260,15 @@\n \u2022 gmoccapy.spc_spindle.increase (bit IN) - As long as True the value of the slider will increase\n \u2022 gmoccapy.spc_spindle.decrease (bit IN) - As long as True the value of the slider will decrease\n \u2022 gmoccapy.spc_spindle.scale (float IN) - A value to scale the output value (handy to change units/min to units/sec)\n \u2022 gmoccapy.spc_spindle.value (float OUT) - Value of the widget\n \u2022 gmoccapy.spc_spindle.scaled-value (float OUT) - Scaled value of the widget .RAPIDS\n \u2022 gmoccapy.spc_rapid.increase (bit IN) - As long as True the value of the slider will increase\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 611 / 1279\n \n \u2022 gmoccapy.spc_rapid.decrease (bit IN) - As long as True the value of the slider will decrease\n \u2022 gmoccapy.spc_rapid.scale (float IN) - A value to scale the output value (handy to change units/min\n to units/sec)\n \u2022 gmoccapy.spc_rapid.value (float OUT) - Value of the widget\n@@ -29303,15 +29303,15 @@\n For the standard XYZ config following HAL pins will be available:\n \u2022 gmoccapy.jog.axis.jog-x-plus (bit IN)\n \u2022 gmoccapy.jog.axis.jog-x-minus (bit IN)\n \u2022 gmoccapy.jog.axis.jog-y-plus (bit IN)\n \u2022 gmoccapy.jog.axis.jog-y-minus (bit IN)\n \u2022 gmoccapy.jog.axis.jog-z-plus (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 612 / 1279\n \n \u2022 gmoccapy.jog.axis.jog-z-minus (bit IN)\n If you use a 4 axes configuration, there will be two additional pins:\n \u2022 gmoccapy.jog.jog--plus (bit IN)\n \u2022 gmoccapy.jog.jog--minus (bit IN)\n@@ -29342,15 +29342,15 @@\n \u2022 gmoccapy.jog.jog-inc-3 (bit IN)\n \u2022 gmoccapy.jog.jog-inc-4 (bit IN)\n \u2022 gmoccapy.jog.jog-inc-5 (bit IN)\n \u2022 gmoccapy.jog.jog-inc-6 (bit IN)\n GMOCCAPY offers also a HAL pin to output the selected jog increment:\n \u2022 gmoccapy.jog.jog-increment (float OUT)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 613 / 1279\n \n 10.2.5.6 Hardware Unlock Pin\n To be able to use a key switch to unlock the settings page, the following pin is exported:\n \u2022 gmoccapy.unlock-settings (bit IN) - The settings page is unlocked if the pin is high. To use this\n pin, you need to activate it on the settings page.\n@@ -29384,15 +29384,15 @@\n MESSAGE_TEXT = LUBE FAULT\n MESSAGE_TYPE = okdialog\n MESSAGE_PINNAME = lube-fault\n MESSAGE_TEXT = X SHEAR PIN BROKEN\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 614 / 1279\n \n 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.\n Example Connection of User Messages (HAL file)\n net gmoccapy-lube-fault gmoccapy.messages.lube-fault\n net gmoccapy-lube-fault-waiting gmoccapy.messages.lube-fault-waiting\n@@ -29412,15 +29412,15 @@\n Also loops will cause different values.\n 10.2.5.11 Tool Related Pins\n Tool Change Pins These pins are provided to use GMOCCAPY\u2019s internal tool change dialog, similar\n to the one known from AXIS, but with several modifications. So you will not only get the message\n to change to tool number 3, but also the description of that tool like 7.5 mm 3 flute cutter. The\n information is taken from the tool table, so it is up to you what to display.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 615 / 1279\n \n Figure 10.15: GMOCCAPY tool change dialog\n \u2022 gmoccapy.toolchange-number (s32 IN) - The number of the tool to be changed\n \u2022 gmoccapy.toolchange-change (bit IN) - Indicates that a tool has to be changed\n \u2022 gmoccapy.toolchange-changed (bit OUT) - Indicates tool has been changed\n@@ -29436,15 +29436,15 @@\n \n Tool Offset Pins These pins allow you to show the active tool offset values for X and Z in the tool\n information frame. You should know that they are only active after G43 has been sent.\n \n Figure 10.16: Tool information area\n \u2022 gmoccapy.tooloffset-x (float IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 616 / 1279\n \n \u2022 gmoccapy.tooloffset-z (float IN)\n Note\n The tooloffset-x line is not needed on a mill, and will not be displayed on a mill with trivial kinematics.\n \n@@ -29473,15 +29473,15 @@\n 1. Touch off your workpiece in X and Y.\n 2. Measure the height of your block from the base where your tool switch is located, to the upper\n face of the block (including chuck etc.).\n 3. Push the button block height and enter the measured value.\n 4. Go to auto mode and start your program.\n Here is a small sketch:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 617 / 1279\n \n Figure 10.17: Tool measurement data\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of the GMOCCAPY way is, that you do not need a reference tool.\n Note\n@@ -29497,15 +29497,15 @@\n \u2022 gmoccapy.probeheight (float OUT) - The probe switch height\n \u2022 gmoccapy.searchvel (float OUT) - The velocity to search for the tool probe switch\n \u2022 gmoccapy.probevel (float OUT) - The velocity to probe tool length\n 10.2.6.2 Tool Measurement INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 618 / 1279\n \n [RS274NGC]\n # is the sub, with is called when a error during tool change happens, not needed on every\n machine configuration\n ON_ABORT_COMMAND=O call\n@@ -29547,15 +29547,15 @@\n \u2022 toplevel.py\n \u2022 remap.py\n \u2022 stdglue.py\n From /configs/sim/gmoccapy/macros copy\n \u2022 on_abort.ngc\n \u2022 change.ngc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 619 / 1279\n \n to the directory specified as SUBROUTINE_PATH, see RS274NGC Section.\n Open change.ngc with a editor and uncomment the following lines (49 and 50):\n F #<_hal[gmoccapy.probevel]>\n G38.2 Z-4\n@@ -29591,15 +29591,15 @@\n \n To enter the page you will have to click on\n and give an unlock code, which is 123 by\n default. If you want to change it at this time you will have to edit the hidden preference file, see the\n display section for details.\n The page is separated in three main tabs:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 620 / 1279\n \n 10.2.7.1 Appearance\n \n Figure 10.18: GMOCCAPY settings page Appearance\n On this tab you will find the following options:\n@@ -29609,15 +29609,15 @@\n \u2022 Start as full screen\n \u2022 Start maximized\n \u2022 Start as window - If you select start as window the spinboxes to set the position and size will get\n 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\n on the settings.\n \u2022 hide the cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 621 / 1279\n \n Keyboard The checkboxes allow the user to select if he wants the on board keyboard to be shown\n immediately, when entering the MDI Mode, when entering the offset page, the tooledit widget or when\n open a program in the EDIT mode. The keyboard button on the bottom button list will not be affected\n by these settings, so you are able to show or hide the keyboard by pressing the button. The default\n@@ -29641,15 +29641,15 @@\n The letters \u201dde\u201d are for German, you will have to set them according to your locale settings. Just\n execute this file before starting LinuxCNC, it can be done also adding a starter to your local folder.\n ./config/autostart\n \n So that the layout is set automatically on starting.\n For matchbox-keyboard you will have to make your own layout, for a German layout ask in the forum.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 622 / 1279\n \n GMOCCAPY with Onboard keyboard in edit mode\n On Touch Off This gives the option whether to show the preview tab or the offset page tab when you\n enter the touch off mode by clicking the corresponding bottom button.\n \u2022 show preview\n@@ -29660,15 +29660,15 @@\n \u2022 Relative mode = black\n \u2022 Absolute mode = blue\n \u2022 Distance to go = yellow\n The foreground color of the DRO can be selected with:\n \u2022 homed color = green\n \u2022 unhomed color = red\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 623 / 1279\n \n Note\n You can change through the DRO modes (absolute, relative, distance to go) by clicking the number\n on the DRO! If you click on the left side letter of the DRO a popup window will allow you to set the\n value of the axes, making it easier to set the value, as you will not need to go over the touch off\n@@ -29706,15 +29706,15 @@\n \u2013 left zoom, middle move, right rotate\n \u2013 left move, middle rotate, right zoom\n \u2013 left zoom, middle rotate, right move\n \u2013 left move, middle zoom, right rotate\n \u2013 left rotate, middle zoom, right move\n Default is left move, middle zoom, right rotate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 624 / 1279\n \n The mouse wheel will still zoom the preview in every mode.\n Tip\n If you select an element in the preview, the selected element will be taken as rotation center point\n and in auto mode the corresponding code line will be highlighted.\n@@ -29731,15 +29731,15 @@\n messages sounds should be played. By default \u201dFollow System Theme\u201d is set.\n It further allows to change the icon theme. Currently there are three themes available:\n \u2022 classic\n \u2022 material\n \u2022 material light\n To create custom icon themes, see section Icon Theme for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 625 / 1279\n \n 10.2.7.2 Hardware\n \n Hardware MPG Scale For the different HAL pins to connect MPG wheels to, you may select individual\n scales to be applied. The main reason for this was my own test to solve this through HAL connections,\n@@ -29755,15 +29755,15 @@\n are others that will never allow this. So everybody can select whether to use them or not.\n Keyboard shortcuts are disabled by default.\n \n Warning\n It is not recommended to use keyboard jogging, as it represents a serious risk for operator and\n machine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 626 / 1279\n \n Please take care if you use a lathe, then the shortcuts will be different, see the Lathe Specific Section.\n General\n \u2022 F1 - Trigger Estop (will work even if keyboard shortcuts are disabled)\n \u2022 F2 - Toggle machine on/off\n@@ -29794,15 +29794,15 @@\n Spindle\n \u2022 Starting RPM - Sets the rpm to be used if the spindle is started and no S value has been set.\n Note\n This value will be presetted according to your settings in [DISPLAY] DEFAULT_SPINDLE_SPEED of\n your INI file. If you change the settings on the settings page, that value will be default from that\n moment, your INI file will not be modified.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 627 / 1279\n \n \u2022 Spindle bar min and Spindle bar max - Sets the limits of the spindle bar shown in the INFO frame\n on the main screen.\n Default values are:\n MIN = 0\n@@ -29817,15 +29817,15 @@\n please take care that the \u201drabbit mode\u201d is activated, otherwise you will not be able to jog faster\n than the turtle jog velocity, which is calculated using the turtle jog factor.\n \u2022 Turtle jog factor - Sets the scale to apply for turtle jog mode (button pressed, showing the turtle). If\n you set a factor of 20, the turtle max. jog velocity will be 1/20 of the max. velocity of the machine.\n Note\n This button can be controlled using the Turtle-Jog HAL Pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 628 / 1279\n \n 10.2.7.3 Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n Note\n@@ -29838,15 +29838,15 @@\n \u2013 X Pos. - The X position of the tool switch.\n \u2013 Y Pos. - The Y position of the tool switch.\n \u2013 Z Pos. - The Z position of the tool switch, we will go as rapid move to this coordinate.\n \u2013 Max. Probe The distance to search for contact, an error will be launched, if no contact is\n given in this range. The distance has to be given in relative coordinates, beginning the move\n from Z Pos., so you have to give a negative value to go down!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 629 / 1279\n \n \u2013 Probe Height - The height of your probe switch, you can measure it. Just touch off the base\n where the probe switch is located and set that to zero. Then make a tool change and watch\n the tool_offset_z value, that is the height you must enter here.\n Probe velocities\n@@ -29881,15 +29881,15 @@\n the 11th message will delete the first one, so you will only see the last 10.\n \u2022 Font - The font and size you want to use to display the messages.\n \u2022 Use frames - If you activate the checkbox, each message will be displayed in a frame, so it is much\n easier to distinguish the messages. But you will need a little bit more space.\n \u2022 Launch test message-button - It will show a message, so you can see the changes of your settings\n without the need to generate an error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 630 / 1279\n \n 10.2.8 Icon Theme\n Icon themes are used to customize the look and feel of GMOCCAPY\u2019s icons.\n GMOCCAPY ships with three different icon themes:\n \u2022 classic - The classic GMOCCAPY icons.\n@@ -29926,15 +29926,15 @@\n png files). A special case is the directory called \u201dscalable/actions\u201d, this contains scalable icons\n not tied to a specific size (e.g. svg files).\n By supplying different sized versions of the icons, we can guarantee a nice looking icon if different\n sizes and we also have the ability to change the icon according to its size, for example a 64x64 px\n sized icon may contain more details than its 16x16 px version.\n \u2022 For each directory we also have to write a section in the index.theme file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 631 / 1279\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -29984,25 +29984,25 @@\n yellow/orange\u2019ish).\n Error: this color indicates \u201derror\u201d (usually something\n red\u2019ish).\n \n Tip\n Examples of symbolic icons can be found at linuxcnc/share/gmoccapy/icons/material.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 632 / 1279\n \n 10.2.9 Lathe Specific Section\n If in the INI file LATHE = 1 is given, the GUI will change its appearance to the special needs for a\n lathe. Mainly the Y axis will be hidden and the jog buttons will be arranged in a different order.\n \n Figure 10.19: Normal Lathe\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 633 / 1279\n \n Figure 10.20: Back Tool Lathe\n As you see the R DRO has a black background and the D DRO is gray. This will change according\n to the active G-code G7 or G8. The active mode is visible by the black background, meaning in the\n shown images G8 is active.\n@@ -30013,15 +30013,15 @@\n Normal Lathe:\n \u2022 Arrow_Left or NumPad_Left - Jog Z minus\n \u2022 Arrow_Right or NumPad_Right - Jog Z plus\n \u2022 Arrow_up or NumPad_Up - Jog X minus\n \u2022 Arrow_Down or NumPad_Down - Jog X plus\n Back Tool Lathe:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 634 / 1279\n \n \u2022 Arrow_Left or NumPad_Left - Jog Z minus\n \u2022 Arrow_Right or NumPad_Right - Jog Z plus\n \u2022 Arrow_up or NumPad_Up - Jog X plus\n \u2022 Arrow_Down or NumPad_Down - Jog X minus\n@@ -30033,15 +30033,15 @@\n There is a very good WIKI, which is actually growing, maintained by Marius, see Plasma wiki page.\n \n 10.2.11 Videos on YouTube\n Below is a series of videos that show GMOCCAPY in action. Unfortunately, these videos don\u2019t show\n the latest version of GMOCCAPY, but the way to use it will still be the same as in the current version.\n I will update the videos as soon as possible.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 635 / 1279\n \n 10.2.11.1 Basic Usage\n https://youtu.be/O5B-s3uiI6g\n 10.2.11.2 Simulated Jog Wheels\n https://youtu.be/ag34SGxt97o\n@@ -30060,15 +30060,15 @@\n 10.2.12 Known problems\n 10.2.12.1 Strange numbers in the info area\n If you get strange numbers in the info area of GMOCCAPY like:\n \n 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\n MAX_VELOCITY = xxx.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 636 / 1279\n \n 10.2.12.2 Not ending macro\n If you use a macro without movement, like this one:\n o sub\n G92.1\n@@ -30094,15 +30094,15 @@\n Touchy is a user interface for LinuxCNC meant for use on machine control panels, and therefore does\n not require keyboard or mouse.\n It is meant to be used with a touch screen, and works in combination with a wheel/MPG and a few\n buttons and switches.\n The Handwheel tab has radio buttons to select between Feed Override, Spindle Override, Maximum\n Velocity and Jogging functions for the wheel/MPG input. Radio buttons for axis selection and increment for jogging are also provided.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 637 / 1279\n \n 10.3.1 Panel Configuration\n 10.3.1.1 HAL connections\n Touchy looks in the INI file, under the heading [HAL] for entries of POSTGUI_HALFILE=.\n Typically would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -30115,15 +30115,15 @@\n are preferred.\n \n For more information on HAL files and the net command see the HAL Basics.\n Touchy has several output pins that are meant to be connected to the motion controller to control\n wheel jogging:\n \u2022 touchy.jog.wheel.increment, which is to be connected to the axis.N.jog-scale pin of each axis N.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 638 / 1279\n \n \u2022 touchy.jog.wheel.N, which is to be connected to axis.N.jog-enable for each axis N.\n Note\n N represents the axis number 0-8.\n \n@@ -30155,15 +30155,15 @@\n When you start Touchy the first time, check the Preferences tab. If using a touchscreen, choose the\n option to hide the pointer for best results.\n The Status Window is a fixed height, set by the size of a fixed font. This can be affected by the Gnome\n DPI, configured in System / Preferences / Appearance / Fonts / Details. If the bottom of the screen is\n cut off, reduce the DPI setting.\n All other font sizes can be changed on the Preferences tab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 639 / 1279\n \n 10.3.2.3 Macros\n Touchy can invoke O-word macros using the MDI interface. To configure this, in the [TOUCHY] section\n of the INI file, add one or more MACRO lines. Each should be of the following format:\n MACRO=increment xinc yinc\n@@ -30194,39 +30194,39 @@\n from GladeVCP. GladeVCP uses the GTK widget editor GLADE to build virtual control panels (VCP) by\n point and click. Gscreen combines this with Python programming to create a GUI screen for running\n a CNC machine.\n Gscreen is customizable if you want different buttons and status LEDs. Gscreen supports GladeVCP\n which is used to add controls and indicators. To customize Gscreen you use the Glade editor. Gscreen\n is not restricted to adding a custom panel on the right or a custom tab it is fully editable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.21: Gscreen Default Screen\n \n 640 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.22: Gscreen Silverdragon Screen\n \n 641 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.23: Gscreen Spartan Screen\n \n 642 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.24: Gscreen Gaxis Screen\n \n 643 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 644 / 1279\n \n Figure 10.25: Gscreen Industrial Screen\n Gscreen is based on Glade (the editor), PyGTK (the widget toolkit), and GladeVCP (LinuxCNC\u2019s connection to Glade and PyGTK). GladeVCP has some special widgets and actions added just for LinuxCNC\n A widget is just the generic name used for the buttons, sliders, labels etc of the PyGTK toolkit.\n 10.4.1.1 Glade File\n@@ -30234,15 +30234,15 @@\n of the screen. PyGTK uses this file to actually display and react to those widgets. The Glade editor\n makes it relatively easy to build and edit this file You must use the Glade 3.38.2 editor that uses the\n GTK3 widgets.\n 10.4.1.2 PyGTK\n PyGTK is the Python binding to GTK. GTK is the toolkit of visual widgets, it\u2019s programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 645 / 1279\n \n 10.4.2 GladeVCP\n 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\n creates the HAL pins for the special widgets described in the Glade file. GladeVCP also allows one\n to add Python commands to interact with the widgets, to make them do things not available in their\n@@ -30288,15 +30288,15 @@\n named widgets. This ties the theme file to the Glade file more tightly. Some of the sample screen skins\n allow the user to select any of the themes on the system. The sample gscreen is an example. Some\n will load the theme that is the same name in the config file. The sample gscreen-gaxis is an example.\n This is done by putting the theme folder in the config folder that has the INI and HAL files and naming\n it: SCREENNAME_theme (SCREENNAME being the base name of the files eg. gaxis_theme). Inside\n this folder is another folder call gtk-2.0, inside that is the theme files. If you add this file, Gscreen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 646 / 1279\n \n will default to this theme on start up. gscreen-gaxis has a sample custom theme that looks for certain\n named widgets and changes the visual behavior of those specific widgets. The Estop and machine-on\n buttons use different colors then the rest of the buttons so that they stand out. This is done in the\n handler file by giving them specific names an by adding specific commands in the theme\u2019s gtkrc file.\n@@ -30327,15 +30327,15 @@\n about GladeVCP widgets is a prerequisite. If the existing widgets give you the function you want or\n need then no Python code needs be added, just save the Glade file in your configuration folder. If you\n need something more custom then you must do some Python programming. The name of the parent\n window needs to be window1. Gscreen assumes this name.\n Remember, if you use a custom screen option YOU are responsible for fixing it (if required) when\n updating LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 647 / 1279\n \n 10.4.3 Building a simple clean-sheet custom screen\n \n Lets build a simple usable screen. Build this in the Glade editor (if using a RIP package run it from a\n terminal after using . scripts/rip-environment ).\n@@ -30348,15 +30348,15 @@\n \u2022 The sourceview widget will try to use the whole window so adding it to a scrolled window will cover\n this (This is already been done in the example).\n \u2022 The buttons will expand as the window is made larger which is ugly so we will set the box they are\n in, to not expand (see below).\n \u2022 The button types to use depend on the VCP_action used -eg vcp_toggle_action usually require toggle\n buttons (Follow the example for now).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 648 / 1279\n \n \u2022 The buttons in this example are regular buttons not HAL buttons. We don\u2019t need the HAL pins.\n \n In this screen we are using VCP_actions to communicate to LinuxCNC the actions we want. This\n allows us standard functions without adding Python code in the handler file. Let\u2019s link the estop\n@@ -30364,15 +30364,15 @@\n Related Action and click the button beside it. Now select the toggle estop action. Now the button will\n toggle estop on and off when clicked. Under the general tab you can change the text of the button\u2019s\n label to describe it\u2019s function. Do this for all the buttons.\n Select the gremlin widget click the common tab and set the requested height to 100 and click the\n checkbox beside it.\n Click the horizontal box that holds the buttons. Click the packing tab and click expand to No.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 649 / 1279\n \n Save it as tester.glade and save it in sim/gscreen/gscreen_custom/ folder. Now launch LinuxCNC and\n click to sim/gscreen/gscreen_custom/tester and start it. If all goes well our screen will pop up and the\n buttons will do their job This works because the tester.ini tells gscreen to look for and load tester.glade\n and tester_handler.py. The tester_handler.py file is included in that folder and is coded just show the\n@@ -30412,15 +30412,15 @@\n manual tool change dialog. Called when the dialog is closed.\n \u2022 periodic(self): This is called every (default 100) milliseconds. Use it to update your widgets/HAL\n pins. You can call Gscreen regular periodic afterwards too, self.gscreen.update_position() or just\n add pass to not update anything. Gscreen\u2019s update_position() actually calls many separate functions. If you wish to incorporate some of those widgets then just call those functions directly.\n You can also add you own functions to be called in this file. Usually you would add a signal to a widget\n to call your function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 650 / 1279\n \n 10.4.4.1 Adding Keybindings Functions\n Our tester example would be more useful if it responded to keyboard commands. There is a function\n called keybindings() that tries to set this up. While you can override it completely, we didn\u2019t - but it\n assumes some things:\n@@ -30467,15 +30467,15 @@\n pressed. Then we add the function to the handle file to call a Gscreen builtin function to start halmeter.\n 10.4.4.2 Linuxcnc State Status\n The module Gstat polls LinuxCNC\u2019s state every 100ms and sends callback messages to user functions\n when state changes. You can register messages to act on specific state changes. As an example we\n will register to get file-loaded messages when LinuxCNC loads a new file. First we must import the\n module and instantiate it: In the import section of the handler file add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 651 / 1279\n \n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n@@ -30518,15 +30518,15 @@\n 2. Gscreen sets the debug mode and set the optional skin name.\n 3. Gscreen checks to see if there are local XML, handler and/or locale files in the configuration\n folder. It will use them instead of the default ones (in share/gscreen/skins/) (There can be two\n separate screens displayed).\n 4. The main screen is loaded and translations set up. If present the second screen will be loaded\n and translations set up.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 652 / 1279\n \n 5. Optional Audio is initialized if available.\n 6. It reads some of the INI file to initialize the units, and the number/type of axes.\n 7. Initializes Python\u2019s binding to HAL to build a userspace component with the Gscreen name.\n 8. GladeVCP\u2019s makepins is called to parse the XML file to build HAL pins for the HAL widgets and\n@@ -30563,15 +30563,15 @@\n 29. Gscreen set up messages specified in the INI file.\n 30. Gscreen tells HAL the Gscreen HAL component is finished making pins and is ready. If there is\n a terminal widget in the screen it will print all the Gscreen pins to it.\n 31. Gscreen sets the display cycle time based on the INI file.\n 32. Gscreen checks the handler file for timer_interupt(self) function call otherwise use Gscreen\u2019s\n default function call.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 653 / 1279\n \n 10.4.6 INI Settings\n Under the [DISPLAY] heading:\n DISPLAY = gscreen -c tester\n options:\n@@ -30612,15 +30612,15 @@\n # This just shows in the status bar and desktop notify popup.\n MESSAGE_BOLDTEXT = NONE\n MESSAGE_TEXT = This is a statusbar test\n MESSAGE_DETAILS = STATUS DETAILS\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 654 / 1279\n \n # This will pop up a dialog that asks a yes no question\n MESSAGE_BOLDTEXT = NONE\n MESSAGE_TEXT = This is a yes no dialog test\n MESSAGE_DETAILS = Y/N DETAILS\n@@ -30664,15 +30664,15 @@\n \n The line:\n **** GSCREEN INFO: handler file path: [\u2019/home/chris/emc-dev/share/gscreen/skins/industrial/ \u2190industrial_handler.py\u2019]\n \n shows where the stock file lives. Copy this file to your config folder. This works the same for the Glade\n file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 655 / 1279\n \n 10.5 QtDragon GUI\n 10.5.1 Introduction\n QtDragon and QtDragon_hd are built with the QtVCP framework. It is the creative vision of forum\n personality Persei8. Much of it is based on the excellent work of others in the LinuxCNC community.\n@@ -30687,15 +30687,15 @@\n \n 10.5.1.1 QtDragon\n \n Figure 10.26: QtDragon - 3 or 4 Axes Sample (1440x860) in silver theme\n QtDragon is resizable from a resolution of 1280x768 to 1680x1200. It will work in window mode on\n any monitor with higher resolution but not on monitors with lower resolution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 656 / 1279\n \n 10.5.1.2 QtDragon_hd\n \n Figure 10.27: QtDragon_hd - 3 or 4 Axis Sample for larger monitors (1920x1056) in dark theme\n QtDragon_hd is a similar design as QtDragon but modified to utilize the extra space of modern larger\n@@ -30710,15 +30710,15 @@\n In the section [DISPLAY] change the DISPLAY line to read:\n \u2022 qtdragon for a small version\n \u2022 qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for verbose, debug, info or quiet (respectably) output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 657 / 1279\n \n 10.5.2.2 Preferences\n To keep track of preferences, QtDragon looks for a preference text file. add the following entry under\n the [DISPLAY] heading. This example will save the file in the config folder of the launch screen. (other\n options are possible see the QtVCP\u2019s screenoption widget docs.)\n@@ -30754,15 +30754,15 @@\n [DISPLAY]\n INCREMENTS = Continuous, .001 mm, .01 mm, .1 mm, 1 mm, 1.0 inch, 0.1 inch, 0.01 inch\n ANGULAR_INCREMENTS = 1, 5, 10, 30, 45, 90, 180, 360\n \n 10.5.2.7 Jog speed\n Set jog speed controls (in units per second)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 658 / 1279\n \n [DISPLAY]\n MIN_LINEAR_VELOCITY\n = 0\n MAX_LINEAR_VELOCITY\n@@ -30810,15 +30810,15 @@\n On very large programs the preview can take a long time to load. You can control what is shown and\n what is hidden the the graphics screen by adding the appropriate comments from this list into your\n G-code:\n (PREVIEW,stop)\n (PREVIEW,hide)\n (PREVIEW,show)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 659 / 1279\n \n 10.5.2.11 Program Extensions/Filters\n You can control what programs are displayed in the filemanager window with program extensions:\n 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.\n [FILTER]\n@@ -30858,15 +30858,15 @@\n routines if desired. This example shows how to move Z axis up first. The commands are separated by\n the ; The label is set after the comma. The symbols \\n adds a line break.\n [MDI_COMMAND_LIST]\n # for macro buttons\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 660 / 1279\n \n 10.5.2.14 Post GUI HAL File\n These HAL files will be called after QtDragon has loaded everything else.\n You can add multiple line for multiple file. Each one will be called in the order they appear.\n Calling HAL files after QtDragon is already loaded assures that QtDragon\u2019s HAL pins are available.\n@@ -30905,15 +30905,15 @@\n \n 10.5.5 Virtual Keyboard\n QtDragon includes a virtual keyboard for use with touchscreens.\n To enable the keyboard, check the Use Virtual Keyboard checkbox in the Settings page.\n Clicking on any input field, such as probe parameters or tool table entries, will show the keyboard.\n To hide the keyboard, do one of the following:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 661 / 1279\n \n \u2022 click the MAIN page button\n \u2022 The currently selected page button.\n \u2022 go into AUTO mode\n It should be noted that keyboard jogging is disabled when using the virtual keyboard.\n@@ -30967,15 +30967,15 @@\n \n These float output pins reflect the current slider override rates:\n qtdragon.slider-override-feed\n qtdragon.slider-override-maxv\n qtdragon.slider-override-rapid\n qtdragon.slider-override-spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 662 / 1279\n \n These pins are available when setting the Versa Probe INI option. They can be used for auto-toollength-probe at tool change - with added remap code.\n qtdragon.versaprobe-blockheight\n qtdragon.versaprobe-probeheight\n qtdragon.versaprobe-probevel\n@@ -31030,15 +31030,15 @@\n qtdragon.eoffset-value <= axis.z.eoffset\n # uncomment for dragon_hd\n #net limited\n qtdragon.led-limits-tripped <= motion.eoffset-limited\n setp axis.z.eoffset-enable 1\n setp axis.z.eoffset-scale 1.0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 663 / 1279\n \n 10.5.11 Z level compensation\n QtDragon_hd can be set up to probe and compensate for Z level height changes by utilizing the external program G-code Ripper.\n Note\n This is only available in the QtDragon_hd version.\n@@ -31054,15 +31054,15 @@\n The probe data file is generated by a probing program, which itself is generated by an external python\n program called gcode_ripper, which can be launched from the file manager tab using the G-code\n Ripper button.\n 10.5.11.1 Using G-code Ripper for Z level Compensation\n \n Figure 10.28: QtDragon_hd showing G-code Ripper\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 664 / 1279\n \n Note\n G-code Ripper offers many functions that we will not go in to here. This is only available in the\n QtDragon_hd version.\n \n@@ -31104,15 +31104,15 @@\n axis.z.eoffset\n setp axis.z.eoffset-enable True\n # external offsets for spindle pause function\n ########################################################################\n net eoffset-spindle-count\n <= qtdragon.eoffset-spindle-count\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 665 / 1279\n \n # Z level compensation\n ########################################################################\n net xpos-cmd\n z_level_compensation.x-pos\n@@ -31145,15 +31145,15 @@\n Probe routines run without blocking the main GUI. This gives the operator the opportunity to watch\n the DROs and stop the routine at any time.\n Note\n Probing is very unforgiving to mistakes; be sure to check settings before using.\n \n Figure 10.29: QtDragon - Versa Probe Option\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 666 / 1279\n \n QtDragon has 2 methods for setting Z0. The first is a touchplate, where a metal plate of known\n thickness is placed on top of the workpiece and then the tool is lowered until it touches the plate,\n triggering the probe signal. Z0 is set to probe height - plate thickness.\n The second method uses a tool setter in a fixed position and a known height above the table where\n@@ -31170,15 +31170,15 @@\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n The combo box allows selecting the basic type of probing buttons shown:\n \u2022 Outside Corners\n \u2022 Inside Corners\n \u2022 Edge Angles\n \u2022 Boss and Pockets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 667 / 1279\n \n \u2022 Ridge and Valleys\n \u2022 Calibration\n You must carefully set the Probing Parameters:\n \u2022 Probe Tool: will only allow probing if this tool number is in the spindle\n@@ -31202,15 +31202,15 @@\n \u2022 Manually move the probe to the approximate position represented by the green target on the button.\n \u2022 Confirm the parameters are reasonable.\n \u2022 Press the desired probing button.\n The probing routine will start immediately.\n Note\n Pressing the stop button or the keyboard escape key, will abort the probing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 668 / 1279\n \n 10.5.13 Touch plate\n \n Figure 10.31: QtDragon - Touch Plate\n You can use a conductive touch plate or equivalent to auto touch off (zero the user coordinate) for the\n@@ -31229,15 +31229,15 @@\n calculation from the touchplate height setting.\n \n 10.5.14 Auto Tool Measurement\n QtDragon can be setup to do integrated auto tool measurement using the Versa Probe widget and\n remap code. To use this feature, you will need to do some additional settings and you may want to\n use the offered HAL pin to get values in your own ngc remap procedure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 669 / 1279\n \n Important\n Before starting the first test, do not forget to enter the probe height and probe velocities on\n the versa probe settings page.\n \n@@ -31252,15 +31252,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it\u2019s easy to break a tool/probe. Abort will be honoured while the probe is in motion.\n \n Figure 10.32: Auto tool measurement\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of this way is, that you do not need a reference tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 670 / 1279\n \n Note\n Your program must contain a tool change at the beginning. The tool will be measured, even it has\n been used before, so there is no danger if the block height has changed. There are several videos\n on you tube that demonstrate the technique using GMOCCAPY. The GMOCCAPY screen pioneered the\n@@ -31275,15 +31275,15 @@\n \n Enable Probe Position Set Buttons\n \u2022 Wwhen checked, the SET buttons are enabled.\n \u2022 This allows the user to automatically fill in the X, Y and Z parameters with the current position as\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 671 / 1279\n \n \u2022 When checked, the calculated height is automatically transferred to the Workpiece Height field in\n the main screen.\n \u2022 Otherwise, the main screen is not affected.\n Workpiece Probe At\n@@ -31310,15 +31310,15 @@\n \u2022 Units are irrelevant in this program. The probed values are not saved and only the difference is\n reported.\n \n Caution\n Setting incorrect values can lead to crashes into fixtures on the machine work surface. Initial\n testing with no tool and safe heights is recommended.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 672 / 1279\n \n 10.5.14.2 Tool Measurement Pins\n Versaprobe offers 5 pins for tool measurement purpose. The pins are used to be read from a remap\n G-code subroutine, so the code can react to different values.\n \u2022 qtversaprobe.toolmeasurement (HAL_BIT) enable or not tool measurement\n@@ -31358,15 +31358,15 @@\n o endsub\n m2\n \n The position of the tool sensor and the start position of the probing movement, all values are absolute\n (G53) coordinates, except MAXPROBE, what must be given in relative movement. All values are in\n machine native units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 673 / 1279\n \n [TOOLSENSOR]\n X = 10\n Y = 10\n Z = -20\n@@ -31411,15 +31411,15 @@\n In ~/linuxcnc/nc_files/examples/remap_lib/python_stdglue/ folder.\n Note\n These file names and location could be different depending on installed verses development (RIP) version of LinuxCNC. For instance ~/linuxcnc/nc_files/macros is\n ~/linuxcnc/nc_files/examples/macros in installed versions of LinuxCNC. You could use customized versions of the same files or name them differently. The entries in the [RS274NGC] section\n dictate to LinuxCNC what and where to look. The names and location quoted should be available in\n either system by default.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 674 / 1279\n \n 10.5.14.5 Needed HAL Connections\n Make sure to connect the tool probe input in your HAL file: If connected properly, you should be able\n to toggle the probe LED in QtDragon if you press the probe stylus.\n net probe\n@@ -31456,15 +31456,15 @@\n \u2022 P,X,Y,Z: Set standard views\n \u2022 D: Toggle display of dimensions\n \u2022 +, -: Zoom controls\n \u2022 C: Clear graphics of tool movement lines\n In QtDragon_hd there are also macro buttons available on the right side. Up to tens buttons can be\n defined in the INI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 675 / 1279\n \n 10.5.17.2 File Tab\n You can use this tab to load or transfer programs. Editing of G-code programs can be selected from\n this tab. With qtdragon_hd, this is where you can load Gcode Ripper\n 10.5.17.3 Offsets Tab\n@@ -31492,15 +31492,15 @@\n 10.5.17.7 Camview Tab\n If the recognized webcam is connected, this tab will display the video image overlayed with a crosshair, circle and degree readout. This can be adjusted to suit a part feature for such things as touchoff.\n The underlying library uses openCV Python module to connect to the webcam.\n 10.5.17.8 G-codes Tab\n This tab will display a list of LinuxCNC\u2019s G-code. if you click on a line, a description of the code will\n be displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 676 / 1279\n \n 10.5.17.9 Setup Tab\n It\u2019s possible to load HTML or PDF file (.html / .pdf ending) with setup notes. HTML/PDF docs will\n be displayed in the setup tab. Some program, such as Fusion 360 and Aspire will create these files\n for you. If you load a G-code program and there is an HTML/PDF file of the same name, it will load\n@@ -31514,15 +31514,15 @@\n 10.5.17.11 Utilities Tab\n This tabs will display another stab election of G-code utility programs:\n \u2022 Facing: allows quick face milling of a definable area at angles of 0,45 and 90 degrees\n \u2022 Hole Circle: allows quick setting of a program to drill a bolt circle of definable diameter and number\n of holes.\n \u2022 NGCGUI: is a QtVCP version of the popular G-code subroutine builder/selector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 677 / 1279\n \n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_utilities\n 10.5.17.12 User Tab\n \n This tab will only be displayed if an embedded panel has been designated for the location stackedWidget_mai\n@@ -31550,15 +31550,15 @@\n border: 1px solid black;\n border-radius: 4px;\n font: 20pt \u201dNoto Mono\u201d;\n }\n \n To change the DRO display font and display format:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019%9.5f\u2019;\n qproperty-metric_template: \u2019%10.4f\u2019;\n qproperty-angular_template: \u2019%11.2f\u2019;\n }\n@@ -31609,26 +31609,26 @@\n qproperty-styleFont5: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n qproperty-styleFont6: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n qproperty-styleFont7: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n }\n \n 678 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 679 / 1279\n \n 10.5.19.2 Qt Designer and Python code\n 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\n 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. See QtVCP\n Overview for more information.\n \n Figure 10.36: QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 680 / 1279\n \n 10.6 NGCGUI\n \n Figure 10.37: NGCGUI embedded into AXIS\n \n@@ -31638,15 +31638,15 @@\n \u2022 NGCGUI can run as a standalone application or can be embedded in multiple tab pages in the AXIS\n GUI.\n \u2022 PyNGCGUI is an alternate, Python implementation of NGCGUI.\n \u2022 PyNGCGUI can run as a standalone application or can be embedded as a tab page (with its own set\n of multiple subroutine tabs) in any GUI that supports embedding of GladeVCP applications AXIS,\n Touchy, Gscreen and GMOCCAPY.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 681 / 1279\n \n Using NGCGUI or PyNGCGUI:\n \u2022 Tab pages are provided for each subroutine specified in the INI file.\n \u2022 New subroutines tab pages can be added on the fly using the custom tab.\n \u2022 Each subroutine tab page provides entry boxes for all subroutine parameters.\n@@ -31678,15 +31678,15 @@\n (.ngc) files and G-code-meta-compiler (.gcmc) files:\n \u2022 nc_files/ngcgui_lib\n \u2013 ngcgui.ngc - An easy to understand example using subroutines\n \u2013 arc1.ngc - basic arc using cutter radius compensation\n \u2013 arc2.ngc - arc speced by center, offset, width, angle (calls arc1)\n \u2013 backlash.ngc - routine to measure an axis backlash with dial indicator\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 682 / 1279\n \n \u2013 db25.ngc - creates a DB25 plug cutout\n \u2013 gosper.ngc - a recursion demo (flowsnake)\n \u2013 helix.ngc - helix or D-hole cutting\n \u2013 helix_rtheta.ngc - helix or D-hole positioned by radius and angle\n@@ -31726,15 +31726,15 @@\n the Run\n different tab pages.\n To create several subroutines concatenated into a single file, go to each tab fill in the blanks, press\n Create Feature then using the arrow keys move any tabs needed to put them in order. Now press\n Finalize and answer the prompt to create\n Other GUIs will have similar functionality but the buttons and names may be different.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 683 / 1279\n \n Note\n The demonstration configs create tab pages for just a few of the provided examples. Any GUI with a\n custom tab can open any of the library example subroutines or any user file if it is in the LinuxCNC\n subroutine path.\n@@ -31771,15 +31771,15 @@\n And then create or copy system-provided files to these user-writable directories. For instance, a user\n might create a NGCGUI-compatible subfile named:\n /home/myusername/mysubs/example.ngc\n \n To use files in new directories, the INI file must be edited to include the new subfiles and to augment\n the search path(s). For this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 684 / 1279\n \n [RS274NGC]\n ...\n SUBROUTINE_PATH = /home/myusername/mysubs:../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib \u2190:../../nc_files/ngcgui_lib/utilitysubs\n USER_M_PATH\n@@ -31832,15 +31832,15 @@\n \n 10.6.4.2 Standalone PyNGCGUI\n For usage, type in a terminal:\n pyngcgui --help\n Usage:\n pyngcgui [Options] []\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 685 / 1279\n \n Options requiring values:\n [-d | --demo] [0|1|2] (0: DEMO standalone toplevel)\n (1: DEMO embed new notebook)\n (2: DEMO embed within existing notebook)\n@@ -31892,15 +31892,15 @@\n \u2022 NGCGUI_SUBFILE = simp.ngc - Creates a tab from the named subroutine.\n \u2022 NGCGUI_SUBFILE = \u201d\u201d - Creates a custom tab\n \u2022 #NGCGUI_OPTIONS = opt1 opt2 \u2026 - NGCGUI options:\n \u2013 nonew \u2014 Prohibits creation of new custom tab\n \u2013 noremove \u2014 Prohibits deleting a tab page\n \u2013 noauto \u2014 Do not run automatically (makeFile, then manual run)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 686 / 1279\n \n \u2013 noiframe \u2014 No internal image, image on separate top level\n \u2022 TTT = truetype-tracer - name of the truetype tracer program (it must be in user PATH)\n \u2022 TTT_PREAMBLE = in_std.ngc - Optional, specifies filename for preamble used for ttt created subfiles. (alternate: mm_std.ngc)\n Note\n@@ -31931,15 +31931,15 @@\n concatenating several common subroutine invocations, this preamble is only added once. For mmbased machines, use mm_std.ngc\n \u2022 NGCGUI_SUBFILE = filename1.ngc - creates a tab from the filename1 subroutine\n \u2022 NGCGUI_SUBFILE = filename2.ngc - creates a tab from the filename2 subroutine\n \u2022 \u2026 etc.\n \u2022 NGCGUI_SUBFILE = gcmcname1.gcmc - creates a tab from the gcmcname1 file\n \u2022 NGCGUI_SUBFILE = gcmcname2.gcmc - creates a tab from the gcmcname2 file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 687 / 1279\n \n \u2022 \u2026 etc.\n \u2022 NGCGUI_SUBFILE = \u201d\u201d - creates a custom tab that can open any subroutine in the search path\n \u2022 NGCGUI_OPTIONS = opt1 opt2 \u2026 - NGCGUI options\n \u2013 nonew - disallow making a new custom tab\n@@ -32013,15 +32013,15 @@\n #\n noauto\n -- no auto send (makeFile, then manually send)\n #\n noiframe\n -- no internal image, image on separate top level\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 688 / 1279\n \n GCMC_INCLUDE_PATH = /home/myname/gcmc_includes\n TTT\n TTT_PREAMBLE\n \n@@ -32068,15 +32068,15 @@\n [RS274NGC]SUBROUTINE_PATH = directory1_name:directory1_name:directory3_name ...\n \n Directories Directories may be specified as absolute paths or relative paths.\n \u2022 Example: [DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files\n \u2022 Example: [DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files\n \u2022 Example: [DISPLAY]PROGRAM_PREFIX = ../../nc_files\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 689 / 1279\n \n Absolute Paths An absolute path beginning with a \u201d/\u201d specifies a complete filesystem location. A\n path beginning with a \u201d~/\u201d specifies a path starting from the user\u2019s home directory. A path beginning\n with \u201d~username/\u201d specifies a path starting in username\u2019s home directory.\n Relative Paths Relative paths are based on the startup directory which is the directory containing\n@@ -32115,15 +32115,15 @@\n message.\n 10.6.5.6 Summary of INI File item details for NGCGUI usage\n \n [RS274NGC]SUBROUTINE_PATH = dirname1:dirname2:dirname3 \u2026\n Example: [RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_li\n Note: Optional, but very useful to organize subfiles and utility files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 690 / 1279\n \n [RS274NGC]USER_M_PATH = dirname1:dirname2:dirname3 \u2026\n Example: [RS274NGC]USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles\n Note: Optional, needed to locate custom user M-files.\n [DISPLAY]EMBED_TAB_NAME = name to display on embedded tab page\n@@ -32169,15 +32169,15 @@\n Note: Optional, when specified, the file is appended to a subfiles.\n Files created with \u201dCustom\u201d tab pages use the postamble specified with the page.\n [DISPLAY]NGCGUI_OPTIONS = opt1 opt2 \u2026\n Example: [DISPLAY]NGCGUI_OPTIONS = nonew noremove\n Note: Multiple options are separated by blanks.\n By default, NGCGUI configures tab pages so that:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 691 / 1279\n \n 1) a user can make new tabs;\n 2) a user can remove tabs (except for the last remaining one);\n 3) finalized files are automatically sent to LinuxCNC;\n 4) an image frame (iframe) is made available to display an image for the subfile (if an image is\n@@ -32221,15 +32221,15 @@\n \n The body of the subroutine should begin with a set of statements that define local named parameters\n for each positional parameter expected for the subroutine call. These definitions must be consecutive\n beginning with #1 and ending with the last used parameter number. Definitions must be provided for\n each of these parameters (no omissions).\n Parameter Numbering\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 692 / 1279\n \n # = #1\n # = #2\n # = #3\n \n@@ -32278,15 +32278,15 @@\n o call [#] [#] (call a subroutine)\n # = #<_helper:answer> (immediately localize the helper global result)\n #<_helper:answer> = 0.0\n (nullify global named parameter used by subroutine)\n ...\n o endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 693 / 1279\n \n In the above example, the utility subroutine will be found in a separate file named helper.ngc. The\n helper routine returns a result in a global named parameter named #<_helper:answer.\n For good practice, the calling subfile immediately localizes the result for use elsewhere in the subfile\n and the global named parameter used for returning the result is nullified in an attempt to mitigate\n@@ -32328,15 +32328,15 @@\n //ngcgui: varname3 = value3, label3;\n \n Variable Tags Examples\n //ngcgui: zsafe =\n //ngcgui: feedrate = 10\n //ngcgui: xl = 0, x limit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 694 / 1279\n \n For these examples, the entry box for varname1 will have no default, the entry box for varname2 will\n have a default of value2, and the entry box for varname 3 will have a default of value 3 and a label\n label3 (instead of varname3). The default values must be numbers.\n To make it easier to modify valid lines in a gcmc file, alternate tag line formats accepted. The alternate\n@@ -32378,28 +32378,28 @@\n [DISPLAY]\n GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib\n \n 10.6.7 DB25 Example\n The following shows the DB25 subroutine. In the first photo you see where you fill in the blanks for\n each variable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n This photo shows the backplot of the DB25 subroutine.\n \n 695 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 696 / 1279\n \n This photo shows the use of the new button and the custom tab to create three DB25 cutouts in one\n program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 697 / 1279\n \n 10.6.8 Creating a subroutine\n \u2022 For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the\n same.\n \u2022 The file must be placed in the subdirectory pointed to in the INI file.\n@@ -32417,15 +32417,15 @@\n # = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i# f#\n g3 i[0-#]\n o endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 698 / 1279\n \n 10.7 TkLinuxCNC GUI\n 10.7.1 Introduction\n TkLinuxCNC is one of the first graphical front-ends for LinuxCNC. It is written in Tcl and uses the Tk\n toolkit for the display. Being written in Tcl makes it very portable (it runs on a multitude of platforms).\n@@ -32441,15 +32441,15 @@\n Then, start LinuxCNC and select that INI file. The sample configuration sim/tklinuxcnc/tklinuxcnc.ini\n is already configured to use TkLinuxCNC as its front-end.\n When LinuxCNC is launched the TKLinuxCNC window is opened.\n 10.7.2.1 A typical session with TkLinuxCNC\n 1. Start LinuxCNC and select a configuration file.\n 2. Clear the E-STOP condition and turn the machine on (by pressing F1 then F2).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 699 / 1279\n \n 3. Home each axis.\n 4. Load the file to be milled.\n 5. Put the stock to be milled on the table.\n 6. Set the proper offsets for each axis by jogging and either homing again or right-clicking an axis\n@@ -32481,15 +32481,15 @@\n \u2022 Abort\n then on the second line:\n \u2022 Operation mode: MANUAL > MDI > AUTO\n \u2022 Toggle flood coolant\n \u2022 Toggle spindle brake control\n 1 For some of these actions it might be necessary to change the mode LinuxCNC is currently running in.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 700 / 1279\n \n 10.7.3.2 Offset display status bar\n The Offset display status bar displays the currently selected tool (selected with Txx M6), the tool\n length offset (if active), and the work offsets (set by right-clicking the coordinates).\n 10.7.3.3 Coordinate Display Area\n@@ -32521,15 +32521,15 @@\n execution will be stopped on any M1 encountered).\n Text Program Display Area When the program is running, the line currently being executed is\n highlighted in white. The text display will automatically scroll to show the current line.\n 10.7.3.5 Manual Control\n Implicit keys TkLinuxCNC allows you to manually move the machine. This action is known as jogging.\n First, select the axis to be moved by clicking it. Then, click and hold the + or - button depending on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 701 / 1279\n \n the desired direction of motion. The first four axes can also be moved by the keyboard arrow keys (X\n and Y), the PAGE UP and PAGE DOWN keys (Z) and the [ and ] keys (A/4th).\n + If Continuous is selected, the motion will continue as long as the button or key is pressed. If another\n value is selected, the machine will move exactly the displayed distance each time the button is clicked\n@@ -32552,15 +32552,15 @@\n The Coolant groupCoolant The two buttons allow the Mist and Flood coolants to be turned on and\n off. Depending on your machine configuration, not all the items in this group may appear.\n 10.7.3.6 Code Entry\n Manual Data Input (also called MDI), allows G-code programs to be entered manually, one line at\n a time. When the machine is not turned on, and not set to MDI mode, the code entry controls are\n unavailable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 702 / 1279\n \n This allows you to enter a G-code command to be executed. Execute the command by pressing Enter.\n Active G-Codes This shows the modal codes that are active in the interpreter. For instance, G54\n indicates that the G54 offset is applied to all coordinates that are entered.\n 10.7.3.7 Jog Speed\n@@ -32609,15 +32609,15 @@\n Send active axis Home\n Jog first axis\n Jog second axis\n Jog third axis\n Jog fourth axis\n Stop execution\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 703 / 1279\n \n 10.8 QtPlasmaC\n 10.8.1 Preamble\n Except where noted, this guide assumes the user is using the latest version of QtPlasmaC.\n Version history can be seen by visiting this link which will show the latest available version.\n@@ -32637,25 +32637,25 @@\n enough hardware I/O pins to fulfill the requirements of a plasma configuration.\n There are three available formats:\n \u2022 16:9 with a minimum resolution of 1366 x 768\n \u2022 9:16 with a minimum resolution of 768 x 1366\n \u2022 4:3 with a minimum resolution of 1024 x 768\n Screenshot examples of QtPlasmaC are below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.40: 16:9\n \n 704 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 705 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 706 / 1279\n \n Figure 10.42: 4:3\n \n 10.8.4 Installing LinuxCNC\n The preferred method for installing LinuxCNC is via an ISO image as described below.\n@@ -32663,15 +32663,15 @@\n It is possible to install and run LinuxCNC on a variety of Linux distributions however that is beyond\n 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\n v2.9 or later along with any required dependencies.\n \n 10.8.4.1 If The User Does Not Have Linux Installed\n Installation instructions are available at: link:../getting-started/getting-linuxcnc.html\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 707 / 1279\n \n Following these instructions will yield a machine with the current stable branch (v2.8) of LinuxCNC\n on Debian Buster.\n 10.8.4.2 Package Installation (Buildbot) If The User Has Linux with LinuxCNC v2.8\n A package installation (Buildbot) uses prebuilt packages from the LinuxCNC Buildbot, instructions\n@@ -32712,15 +32712,15 @@\n to use a reed relay as an alternative method to establish an Arc OK signal when the power\n source does not provide one.\n \n Note\n For fine tuning of Mode 0 Ark OK see Tuning Mode 0 Arc OK in the Advanced Topics section of the\n manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 708 / 1279\n \n 10.8.5.2 Available I/Os\n Note\n This section only touches on the hardware I/O\u2019s required for QtPlasmaC. Base machine requirements\n such as limit switches, home switches, etc. are in addition to these.\n@@ -32801,15 +32801,15 @@\n This signal senses if the torch has broken away from its cradle.\n Digital output; required.\n HAL pin name plasmac.torch-on\n Connected from a breakout board output to the torch-on input\n of the plasma power supply. This signal is used to control the\n plasma power supply and start the arc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -32875,15 +32875,15 @@\n then set the Z minimum to 5 mm (0.2\u201d) plus an allowance for overrun (either calculated using the\n equation below or allow 5 mm (0.2\u201d) below the lowest slat).\n \u2022 [AXIS_Z] MAX_LIMIT should be the highest the user wants the Z axis to travel (it must not be\n lower than Z HOME_OFFSET).\n \u2022 [AXIS_Z] HOME should be set to be approximately 5 mm-10 mm (0.2\u201d-0.4\u201d) below the maximum\n limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 710 / 1279\n \n \u2022 Floating Head - it is recommended that a floating head be used and that it has enough movement\n to allow for overrun during probing. Overrun can be calculated using the following formula:\n o = 0.5 * a * (v / a)^2\n \n@@ -32914,33 +32914,33 @@\n Fill in the required entries to suit the machine wiring/breakout board configuration.\n QtPlasmaC adds two pages to the LinuxCNC configuration wizards for QtPlasmaC specific parameters,\n the two pages are QtPlasmaC options and User Buttons. Complete each of the wizards QtPlasmaC\n page to suit the machine that is being configured and the user button requirements.\n Note that PnCconf options allow user selection of Feed Override, Linear Velocity, and Jog Increments,\n whereas in StepConf these are automatically calculated and set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.43: PnCConf QtPlasmaC Options\n \n 711 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.44: StepConf QtPlasmaC Options\n \n 712 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.45: QtPlasmaC User Buttons\n \n 713 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 714 / 1279\n \n Figure 10.46: QtPlasmaC THCAD\n The THCAD screen will only appear if a Plasma Encoder is selected in the card screen. The the\n dedicated section on Mesa THCAD for more information.\n When the configuration is complete, the wizard will save a copy of the configuration that may be\n@@ -32950,15 +32950,15 @@\n depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/__/__.ini\n \n For a run in place installation:\n \\~/linuxcnc‑dev/scripts/linuxcnc ~/linuxcnc/configs/__/__material.cfg file to the existing QtPlasmaC configuration.\n To run the cfg2prefs conversion program, use the following instructions:\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 721 / 1279\n \n Figure 10.47: qtplasmac-cfg2prefs\n Select the INI file of the old PlasmaC configuration, select the INI file of the new QtPlasmaC configuration, then press CONVERT.\n \n 10.8.7 Other QtPlasmaC Setup Considerations\n@@ -33171,15 +33171,15 @@\n file in the machine\u2019s configuration directory to add the appropriate cutoff frequency as measured in\n Hertz (Hz).\n For example:\n setp plasmac.lowpass-frequency 100\n \n The above example would give a cutoff frequency of 100Hz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 722 / 1279\n \n 10.8.7.2 Contact Bounce\n Contact bounce from mechanical relays, switches, or external interference may cause some inconsistent behavior of the following switches:\n \u2022 Float Switch\n \u2022 Ohmic Probe\n@@ -33216,15 +33216,15 @@\n Depending on the specified minimum contact current and the current drawn by the input device there\n may be a need to provide a method to increase the current through the contacts.\n Most relays using gold contacts will not require any additional current for reliable operation.\n There are two different methods available to provide this minimum current if it is required:\n 1. A 0.1 \u03bcF film capacitor placed across the contacts.\n 2. A 1200 \u03a9 1 W resistor across the load (see calculations below).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 723 / 1279\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page III of Finder Relays General Technical\n Information\n Calculations:\n@@ -33264,15 +33264,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs//.ini\u201d\n Type=Application\n Icon=/usr/share/pixmaps/linuxcncicon.png\n 2 In the US, the letter V is commonly used as a symbol (Voltage) and as a unit (Volt).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 724 / 1279\n \n If the user would like a terminal window to open behind the GUI window then change the Terminal\n line to:\n Terminal=true\n \n@@ -33325,15 +33325,15 @@\n Note\n The configuration files (.ini and .hal) that are created by configuration wizard are notated to explain the requirements to aid in manual manipulation of these\n configurations. They may be edited with any text editor.\n \n Note\n The .prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 725 / 1279\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific .ini file variables as follows:\n [FILTER] Section These variables are mandatory.\n PROGRAM_EXTENSION = .ngc,.nc,.tap G-code File (*.ngc, *.nc, *.tap)\n@@ -33382,15 +33382,15 @@\n [DISPLAY] Section\n This variable is mandatory.\n DISPLAY = qtvcp qtplasmac\n (use 16:9 resolution)\n = qtvcp qtplasmac_9x16 (use 9:16 resolution)\n = qtvcp qtplasmac_4x3 (use 4:3 resolution)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 726 / 1279\n \n There are multiple QtVCP options that are described here: QtVCP INI Settings\n For example the following would start a 16:9 resolution QtPlasmaC screen in full screen mode:\n DISPLAY = qtvcp -f qtplasmac\n \n@@ -33431,15 +33431,15 @@\n 10.8.8.1 Exiting QtPlasmaC\n Exiting or shutting down QtPlasmaC is done by either:\n 1. Click the window shutdown button on the window title bar\n 2. Long press the POWER button on the MAIN Tab.\n A shutdown warning can be displayed on every shutdown by checking the Exit Warning checkbox on\n the SETTINGS Tab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 727 / 1279\n \n 10.8.8.2 MAIN Tab\n Screenshot example of the QtPlasmaC MAIN Tab in 16:9 aspect ratio:\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n@@ -33456,15 +33456,15 @@\n used to manually select the current material cut parameters. If there are\n no materials in the material file then only the default material will be\n displayed.\n This displays the actual cut feed rate the table is moving at.\n If \u201dView Material\u201d is selected on the SETTINGS Tab, this displays the\n currently selected material\u2019s Feed Rate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 728 / 1279\n \n Table 10.7: (continued)\n Name\n PH:\n PD:\n@@ -33541,15 +33541,15 @@\n - Probe Test\n - Framing\n - Manual Cut\n This slider overrides the feed rate for all feed moves.\n Any value other than 100% will cause the label to flash.\n Clicking the label will return the slider to 100%.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 729 / 1279\n \n Table 10.8: (continued)\n Name\n RAPID\n \n@@ -33623,15 +33623,15 @@\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Each press of this button will lower the target voltage by\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Clicking this label will return any voltage override to 0.00.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 730 / 1279\n \n Table 10.10: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -33723,15 +33723,15 @@\n LED will still show the status of the probe input, but the\n Ohmic Probe results will be ignored.\n This box will enable or disable the communications to a\n PowerMax. This button is only visible if a PM_PORT is\n configured in the [POWERMAX] section of the\n .prefs file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 731 / 1279\n \n Table 10.10: (continued)\n Name\n Status\n \n@@ -33799,15 +33799,15 @@\n This button moves the Z axis in the negative direction.\n \n Note\n During Paused Motion, this section will be shown on top of the JOGGING panel. The following section\n will cover each button encountered in this panel. Please see CUT RECOVERY for a detailed description\n of the cut recovery functionality.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -33884,15 +33884,15 @@\n This drop down button will display the following options:\n Zero - zeros the axis.\n Set - launches a dialog box to manually input the axis\u2019 coordinate.\n Divide By 2 - divides the currently displayed coordinate in the DRO by\n two.\n Set To Last - sets the axis to the previously set coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 733 / 1279\n \n 10.8.8.3 Preview Views\n The QtPlasmaC preview screen has the ability to be switched between different views and displays,\n as well as zooming in and out, and panning horizontally and vertically.\n When QtPlasmaC is first started, the Z (top down) view will be selected as the default view for a loaded\n@@ -33905,30 +33905,30 @@\n orientation, then pressing either Z or P will change the display to the newly selected view. If the user\n then wishes to display the full table while maintaining the currently selected view as the default view\n for a loaded G-code file, then pressing CLEAR will achieve this and allow the selected view orientation\n to prevail the next time a G-code file is loaded.\n 10.8.8.4 CONVERSATIONAL Tab\n Screenshot example of the QtPlasmaC CONVERSATIONAL Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 734 / 1279\n \n The CONVERSATIONAL Tab enables the user to quickly program various simple shapes for quick\n cutting without the need for CAM software.\n See Conversational Shape Library for detailed information on the Conversational feature.\n It is possible to disable this tab so the conversational feature cannot be used by an operator. This may\n be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a HAL\n file using the following command:\n setp qtplasmac.conv_disable 1\n \n 10.8.8.5 PARAMETERS Tab\n Screenshot example of the QtPlasmaC PARAMETERS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 735 / 1279\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n required by the chosen QtPlasmaC mode.\n Due to space constraints, the 4x3 GUI\u2019s PARAMETERS Tab will be spread across two tabs, PARAMETERS and SETTINGS.\n This tab is used to display configuration parameters that are modified infrequently.\n@@ -33945,15 +33945,15 @@\n 0, 1, 2\n \n Description\n This sets the amount of time (in seconds) QtPlasmaC will wait\n between commanding a \u201dTorch On\u201d and receiving an Arc OK\n signal before timing out and displaying an error message.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 736 / 1279\n \n Table 10.15: (continued)\n Name\n Max Starts\n \n@@ -34036,15 +34036,15 @@\n This sets the distance threshold used to determine if an Initial Height\n Sense (probe) can be skipped for the current cut, see IHS Skip.\n \n Note\n If the amount of time between the torch contacting the material and when the torch moves up and\n comes to rest at the Pierce Height seems excessive, see the probing section for a possible solution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 737 / 1279\n \n Table 10.17: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34095,15 +34095,15 @@\n \n CONFIGURATION - THC Two methods of THC activation are available and are selected with the\n Auto Activation checkbutton. Both methods begin their calculations when the current velocity of\n the torch matches the cut feed rate specified for the selected material:\n 1. Delay Activation (the default) is selected when Auto Activation is unchecked. This method uses\n a time delay set with the Delay parameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 738 / 1279\n \n 2. Auto Activation is selected when Auto Activation is checked. This method determines that the\n arc voltage is stable by using the Sample Counts and Sample Threshold parameters.\n Name\n Delay\n@@ -34190,15 +34190,15 @@\n Description\n The top drop down menu is used to manually select the current material\n cut parameters. If there are no materials in the material file then only the\n default material will be displayed.\n This sets the kerf width for the currently selected material. Refer to the\n Heights Diagram diagram for a visual representation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 739 / 1279\n \n Table 10.21: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34260,15 +34260,15 @@\n The Cut Parameters for the new material will then need to be adjusted and saved.\n The DELETE this button is used to delete a material. After pressing it, the user will be prompted for\n a material number to be deleted, and prompted again to ensure the user is sure. After deletion, the\n material file will be reloaded and the drop down list will display the default material.\n 10.8.8.6 SETTINGS Tab\n Screenshot example of the QtPlasmaC SETTINGS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 740 / 1279\n \n This tab is used to display GUI configuration parameters, button text, and shutdown text that are\n modified infrequently as well as some utility buttons.\n It is possible to disable this tab so machine settings cannot be modified by unauthorized personnel.\n This may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set\n@@ -34284,15 +34284,15 @@\n Foreground\n Highlight\n \n Description\n This button allows the user to change the color of the GUI Foreground.\n This button allows the user to change the color of the GUI Highlight.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 741 / 1279\n \n Table 10.22: (continued)\n Name\n LED\n Background\n@@ -34370,15 +34370,15 @@\n current tool) in the Preview Window on the MAIN Tab.\n This allows a user to change the default zoom level for the top down full\n table view in the Preview Window on the MAIN Tab.\n \n USER BUTTON ENTRIES USERBUTTON\n This section shows the text that appears on the Custom User Buttons as well as the code associated\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 742 / 1279\n \n with the user button. User buttons may be changed and the new settings used without restarting\n LinuxCNC.\n The text and/or code may be edited at any time and will be loaded ready for use if the SAVE button is\n clicked.\n@@ -34417,15 +34417,15 @@\n current QtPlasmaC version the user is on, is the current date (YY-MM-DD), and

refer to\n the same parameter. Named parameters must be enclosed with < > marks.\n@@ -38822,15 +38822,15 @@\n \u2022 #<_motion_mode> - Return the interpreter\u2019s current motion mode:\n Motion return\n mode\n value\n G1\n 10\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Motion return\n mode\n value\n G2\n 20\n G3\n@@ -38912,15 +38912,15 @@\n \u2022 #<_absolute> - Return 1 if G90 is on, else 0.\n \u2022 #<_incremental> - Return 1 if G91 is on, else 0.\n \u2022 #<_inverse_time> - Return 1 if inverse feed mode (G93) is on, else 0.\n \u2022 #<_units_per_minute> - Return 1 if Units/minute feed mode (G94) is on, else 0.\n \n 846 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 847 / 1279\n \n \u2022 #<_units_per_rev> - Return 1 if Units/revolution mode (G95) is on, else 0.\n \u2022 #<_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\n value is 591.000000.\n Mode\n@@ -38966,15 +38966,15 @@\n \u2022 #<_adaptive_feed> - Return 1 if adaptive feed (M52 or M52 P1) is on, else 0.\n \u2022 #<_feed_hold> - Return 1 if feed hold switch is enabled (M53 P1), else 0.\n \u2022 #<_feed> - Return the current value of F, not the actual feed rate.\n \u2022 #<_rpm> - Return the current value of S, not the actual spindle speed.\n \u2022 #<_x> - Return current relative X coordinate including all offsets. Same as #5420. In a lathe\n configuration, it always returns radius.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 848 / 1279\n \n \u2022 #<_y> - Return current relative Y coordinate including all offsets. Same as #5421.\n \u2022 #<_z> - Return current relative Z coordinate including all offsets. Same as #5422.\n \u2022 #<_a> - Return current relative A coordinate including all offsets. Same as #5423.\n \u2022 #<_b> - Return current relative B coordinate including all offsets. Same as #5424.\n@@ -39009,15 +39009,15 @@\n If enabled in the INI file G-code has access to the values of INI file entries and HAL pins.\n \u2022 #<_ini[section]name> Returns the value of the corresponding item in the INI file.\n For example, if the INI file looks like so:\n [SETUP]\n XPOS = 3.145\n YPOS = 2.718\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 849 / 1279\n \n you may refer to the named parameters #<_ini[setup]xpos> and #<_ini[setup]ypos> within Gcode.\n EXISTS can be used to test for presence of a given INI file variable:\n o100 if [EXISTS[#<_ini[setup]xpos>]]\n (debug, [setup]xpos exists: #<_ini[setup]xpos>)\n@@ -39060,15 +39060,15 @@\n Binary operators only appear inside expressions. There are four basic mathematical operations: addition (+), subtraction (-), multiplication (*), and division (/). There are three logical operations:\n non-exclusive or (OR), exclusive or (XOR), and logical and (AND). The eighth operation is the modulus\n operation (MOD). The ninth operation is the power operation (**) of raising the number on the left of\n the operation to the power on the right. The relational operators are equality (EQ), inequality (NE),\n strictly greater than (GT), greater than or equal to (GE), strictly less than (LT), and less than or equal\n to (LE).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 850 / 1279\n \n The binary operations are divided into several groups according to their precedence. If operations\n in different precedence groups are strung together (for example in the expression [2.0 / 3 * 1.5 - 5.5\n / 11.0]), operations in a higher group are to be performed before operations in a lower group. If an\n expression contains more than one operation from the same group (such as the first / and * in the\n@@ -39127,15 +39127,15 @@\n Round to nearest integer\n Base-e logarithm\n Sine\n Square Root\n Tangent\n Check named Parameter\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 851 / 1279\n \n The FIX function rounds towards the left (less positive or more negative) on a number line, so that\n FIX[2.8] =2 and FIX[-2.8] = -3.\n The FUP operation rounds towards the right (more positive or less negative) on a number line;\n FUP[2.8] = 3 and FUP[-2.8] = -2.\n@@ -39180,15 +39180,15 @@\n If the third group (the comments) contains more than one comment and is reordered, only the last\n comment will be used.\n If each group is kept in order or reordered without changing the meaning of the line, then the three\n groups may be interleaved in any way without changing the meaning of the line. For example, the\n line g40 g1 #3=15 (foo) #4=-7.0 has five items and means exactly the same thing in any of the 120\n possible orders (such as #4=-7.0 g1 #3=15 g40 (foo)) for the five items.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 852 / 1279\n \n 11.4.11 Commands and Machine Modes\n Many commands cause the controller to change from one mode to another, and the mode stays active\n until some other command changes it implicitly or explicitly. Such commands are called modal. For\n example, if coolant is turned on, it stays on until it is explicitly turned off. The G-codes for motion are\n@@ -39215,15 +39215,15 @@\n @.5 ^90\n @.5 ^90\n G90 G0 X0 Y0 M2\n \n You can see from the following figure that the output is not what you might expect. Because we added\n 0.5 to the distance each time the distance from the XY zero position increased with each line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 853 / 1279\n \n Figure 11.10: Polar Spiral\n The following code will produce our square pattern:\n F100 G1 @.5 ^90\n G91 ^90\n@@ -39231,15 +39231,15 @@\n ^90\n ^90\n G90 G0 X0 Y0 M2\n \n As you can see by only adding to the angle by 90 degrees each time the end point distance is the same\n for each line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 854 / 1279\n \n Figure 11.11: Polar Square\n It is an error if:\n \u2022 An incremental move is started at the origin\n \u2022 A mix of Polar and X or Y words are used\n@@ -39263,15 +39263,15 @@\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81\n G82, G83, G84, G85, G86, G87, G88, G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 855 / 1279\n \n Table 11.7: (continued)\n Modal Group Meaning\n Arc IJK Distance Mode\n (Group 4)\n@@ -39336,15 +39336,15 @@\n \n 11.4.14 Comments\n Comments are purely informative and have no influence on machine behaviour.\n Comments can be added to lines of G-code to help clear up the intention of the programmer. Comments\n can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon. The\n semi-colon is not treated as the start of a comment when enclosed in parentheses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 856 / 1279\n \n Comments may appear between words, but not between words and their corresponding parameter.\n So, S100(set speed)F200(feed) is OK while S(speed)100F(feed) is not.\n Here is an example of a commented program:\n G0 (Rapid to start) X1 Y1\n@@ -39379,15 +39379,15 @@\n \u2022 (LOGAPPEND,filename) - opens the named log file. If the file already exists, the data is appended.\n \u2022 (LOGCLOSE) - closes an open log file.\n \u2022 (LOG,) - everything past the , is written to the log file if it is open. Supports expansion of parameters\n as described below.\n Examples of logging are in nc_files/examples/smartprobe.ngc and in nc_files/ngcgui_lib/rectange_probe.ngc\n sample G-code files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 857 / 1279\n \n 11.4.18 Debug Messages\n \u2022 (DEBUG,) - displays a message like (MSG,) with the addition of special handling for comment parameters as described below.\n \n 11.4.19 Print Messages\n@@ -39421,15 +39421,15 @@\n 11.4.21 File Requirements\n A G-code file must contain one or more lines of G-code and be terminated with a Program End. Any\n G-code past the program end is not evaluated.\n If a program end code is not used a pair of percent signs % with the first percent sign on the first\n line of the file followed by one or more lines of G-code and a second percent sign. Any code past the\n second percent sign is not evaluated.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 858 / 1279\n \n Warning\n Using % to wrap a G-code file will not do the same thing as using a program end. The machine\n will be in what ever state the program left it in using %, the spindle and coolant may still be on\n and things like G90/91 are left as the last program set them. If you don\u2019t use a proper preamble\n@@ -39464,15 +39464,15 @@\n \u2022 Enable or disable overrides (M48, M49,M50,M51,M52,M53).\n \u2022 User-defined Commands (M100-M199).\n \u2022 Dwell (G4).\n \u2022 Set active plane (G17, G18, G19).\n \u2022 Set length units (G20, G21).\n \u2022 Cutter radius compensation on or off (G40, G41, G42)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 859 / 1279\n \n \u2022 Cutter length compensation on or off (G43, G49)\n \u2022 Coordinate system selection (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).\n \u2022 Set path control mode (G61, G61.1, G64)\n \u2022 Set distance mode (G90, G91).\n@@ -39508,15 +39508,15 @@\n Don\u2019t use line numbers Line numbers offer no benefits. When line numbers are reported in error\n messages, the numbers refer to the line number in the file, not the N-word value.\n When several coordinate systems are moved Consider using the inverse time speed mode.\n Because the meaning of an F word in meters per minute varies depending on the type of axis to be\n moved and because the amount of removed material does not depend only on the feed rate, it can be\n simpler to use G93, inverse speed of time, to achieve the removal of desired material.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 860 / 1279\n \n 11.4.25 Linear and Rotary Axis\n 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,\n it may be easier to use G93 inverse time feed mode to achieve the desired material removal rate.\n \n@@ -39550,15 +39550,15 @@\n Any items in the G-code prototypes not explicitly described as optional are required.\n The values following letters are often given as explicit numbers. Unless stated otherwise, the explicit\n numbers can be real values. For example, G10 L2 could equally well be written G[2*5] L[1+1]. If the\n value of parameter 100 were 2, G10 L#100 would also mean the same.\n If L- is written in a prototype the - will often be referred to as the L number, and so on for any other\n letter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11.5.2 G-Code Quick Reference Table\n Code\n G0\n G1\n G2 G3\n G4\n@@ -39664,15 +39664,15 @@\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n 861 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -39720,15 +39720,15 @@\n G1 axes\n \n For linear (straight line) motion at programmed feed rate (for cutting or not), program G1 \u2019axes\u2019,\n where all the axis words are optional. The G1 is optional if the current motion mode is G1. This will\n produce coordinated motion to the destination point at the current feed rate (or slower).\n G1 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 863 / 1279\n \n G90 (set absolute distance mode)\n G1 X1.2 Y-3 F10 (linear move at a feed rate of 10 from current position to X1.2 Y-3)\n Z-2.3 (linear move at same feed rate from current position to Z-2.3)\n Z1 F25 (linear move at a feed rate of 25 from current position to Z1)\n@@ -39769,15 +39769,15 @@\n If the pitch of the helix is very small (less than the naive CAM tolerance) then the helix might\n be converted into a straight line. Bug #222\n \n If a line of code makes an arc and includes rotary axis motion, the rotary axes turn at a constant rate\n so that the rotary motion starts and finishes when the XYZ motion starts and finishes. Lines of this\n sort are hardly ever programmed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 864 / 1279\n \n If cutter compensation is active, the motion will differ from the above; see the Cutter Compensation\n section.\n The arc center is absolute or relative as set by G90.1 or G91.1 respectively.\n Two formats are allowed for specifying an arc: Center Format and Radius Format.\n@@ -39812,15 +39812,15 @@\n \u2022 Z - helix\n \u2022 I - X offset\n \u2022 J - Y offset\n \u2022 P - number of turns\n XZ-plane (G18)\n G2 or G3 \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 865 / 1279\n \n \u2022 Y - helix\n \u2022 I - X offset\n \u2022 K - Z offset\n \u2022 P - number of turns\n@@ -39852,28 +39852,28 @@\n In the following figure you can see the start position is X0 Y0, the end position is X1 Y1. The arc center\n 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\n axis. In this case only an I offset is needed.\n G2 Example Line\n G0 X0 Y0\n G2 X1 Y1 I1 F10 (clockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 866 / 1279\n \n Figure 11.12: G2 Example\n In the next example we see the difference between the offsets for Y if we are doing a G2 or a G3 move.\n 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\n for both moves. The G2 move the J offset is 0.5 and the G3 move the J offset is -0.5.\n G2-G3 Example Line\n G0 X0 Y0\n G2 X0 Y1 I1 J0.5 F25 (clockwise arc in the XY plane)\n G3 X0 Y0 I1 J-0.5 F25 (counterclockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 867 / 1279\n \n Figure 11.13: G2-G3 Example\n In the next example we show how the arc can make a helix in the Z axis by adding the Z word.\n G2 Example Helix\n G0 X0 Y0 Z0\n@@ -39892,15 +39892,15 @@\n \u2022 R - radius from current position\n It is not good practice to program radius format arcs that are nearly full circles or nearly semicircles\n because a small change in the location of the end point will produce a much larger change in the\n location of the center of the circle (and, hence, the middle of the arc). The magnification effect is\n large enough that rounding error in a number can produce out-of-tolerance cuts. For instance, a 1%\n displacement of the endpoint of a 180 degree arc produced a 7% displacement of the point 90 degrees\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 868 / 1279\n \n along the arc. Nearly full circles are even worse. Other size arcs (in the range tiny to 165 degrees or\n 195 to 345 degrees) are OK.\n In the radius format, the coordinates of the end point of the arc in the selected plane are specified\n along with the radius of the arc. Program G2 axes R- (or use G3 instead of G2 ). R is the radius. The\n@@ -39935,15 +39935,15 @@\n G5 X- Y- P- Q-\n \n \u2022 I - X incremental offset from start point to first control point\n \u2022 J - Y incremental offset from start point to first control point\n \u2022 P - X incremental offset from end point to second control point\n \u2022 Q - Y incremental offset from end point to second control point\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 869 / 1279\n \n G5 creates a cubic B-spline in the XY plane with the X and Y axes only. P and Q must both be specified\n for every G5 command.\n For the first G5 command in a series of G5 commands, I and J must both be specified. For subsequent\n G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting\n@@ -39980,15 +39980,15 @@\n G5.1 X2 I2 J-8\n \n It is an error if:\n \u2022 both I and J offset are unspecified or zero\n \u2022 An axis other than X or Y is specified\n \u2022 The active plane is not G17\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 870 / 1279\n \n 11.5.9 G5.2 G5.3 NURBS Block\n G5.2 \n X- Y- \n ...\n@@ -40015,15 +40015,15 @@\n ; The rapid moves show the same path without the NURBS Block\n G0 X0 Y1\n X2 Y2\n X2 Y0\n X0 Y0\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 871 / 1279\n \n Sample NURBS Output\n More information on NURBS can be found here:\n https://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS\n \n@@ -40033,15 +40033,15 @@\n Program G7 to enter the diameter mode for axis X on a lathe. When in the diameter mode the X axis\n moves on a lathe will be 1/2 the distance to the center of the lathe. For example X1 would move the\n cutter to 0.500\u201d from the center of the lathe thus giving a 1\u201d diameter part.\n \n 11.5.11 G8 Lathe Radius Mode\n G8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 872 / 1279\n \n Program G8 to enter the radius mode for axis X on a lathe. When in Radius mode the X axis moves\n on a lathe will be the distance from the center. Thus a cut at X1 would result in a part that is 2\u201d in\n diameter. G8 is default at power up.\n \n@@ -40071,15 +40071,15 @@\n It is an error if:\n \u2022 Cutter Compensation is on\n \u2022 The P number is unspecified\n \u2022 The P number is not a valid tool number from the tool table\n \u2022 The P number is 0\n For more information on cutter orientation used by the Q word, see the Lathe Tool Orientation diagram.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 873 / 1279\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- \n \n \u2022 P - coordinate system (0-9)\n@@ -40139,15 +40139,15 @@\n afterwards.\n \u2022 When programming a coordinate system with R, any G52 or G92 will be applied after the rotation.\n \u2022 The coordinate system whose origin is set by a G10 command may be active or inactive at the time\n the G10 is executed. If it is currently active, the new coordinates take effect immediately.\n It is an error if:\n \u2022 The P number does not evaluate to an integer in the range 0 to 9.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 874 / 1279\n \n \u2022 An axis is programmed that is not defined in the configuration.\n G10 L2 Example Line\n G10 L2 P1 X3.5 Y17.2\n \n@@ -40181,15 +40181,15 @@\n \u2022 See T & M6, and G43/G43.1 sections for more information.\n It is an error if:\n \u2022 Cutter Compensation is on\n \u2022 The P number is unspecified\n \u2022 The P number is not a valid tool number from the tool table\n \u2022 The P number is 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 875 / 1279\n \n 11.5.16 G10 L11 Set Tool Table\n G10 L11 P- axes \n \n \u2022 P - tool number\n@@ -40217,15 +40217,15 @@\n G10 L20 Example Line\n G10 L20 P1 X1.5 (set the X axis current location in coordinate system 1 to 1.5)\n \n It is an error if:\n \u2022 The P number does not evaluate to an integer in the range 0 to 9.\n \u2022 An axis is programmed that is not defined in the configuration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 876 / 1279\n \n 11.5.18 G17 - G19.1 Plane Select\n These codes set the current plane as follows:\n \u2022 G17 - XY (default)\n \u2022 G18 - ZX\n@@ -40259,15 +40259,15 @@\n \u2022 G28.1 - stores the current absolute position into parameters 5161-5166.\n G28 Example Line\n G28 Z2.5 (rapid to Z2.5 then to Z location specified in #5163)\n \n It is an error if :\n \u2022 Cutter Compensation is turned on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 877 / 1279\n \n 11.5.21 G30, G30.1 Go/Set Predefined Position\n \n Warning\n Only use G30 when your machine is homed to a repeatable position and the desired G30\n@@ -40304,15 +40304,15 @@\n The (optional) $ argument sets which spindle the motion is synchronised to (default is zero). For\n example G33 Z10 K1 $1 will move the spindle in synchrony with the spindle.N.revs HAL pin value.\n Spindle-synchronized motion waits for the spindle index and spindle at speed pins, so multiple passes\n line up. G33 moves end at the programmed endpoint. G33 could be used to cut tapered threads or a\n fusee.\n All the axis words are optional, except that at least one must be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 878 / 1279\n \n Note\n K follows the drive line described by X- Y- Z-. K is not parallel to the Z axis if X or Y endpoints are\n used for example when cutting tapered threads.\n \n@@ -40349,15 +40349,15 @@\n \u2022 $ - optional spindle selector\n Warning\n For Z only tapping preposition the XY location prior to calling G33.1 and only use a Z word in\n the G33.1. If the coordinates specified are not the current coordinates when calling G33.1 for\n tapping the move will not be along the Z axis but will be a coordinated, spindle-synchronized\n move from the current location to the location specified and back.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 879 / 1279\n \n For rigid tapping (spindle synchronized motion with return), code G33.1 X- Y- Z- K- where K- gives the\n distance moved for each revolution of the spindle.\n A rigid tapping move consists of the following sequence:\n \u2022 A move from the current coordinate to the specified coordinate, synchronized with the selected\n@@ -40392,15 +40392,15 @@\n G38.n axes\n \n \u2022 G38.2 - probe toward workpiece, stop on contact, signal error if failure\n \u2022 G38.3 - probe toward workpiece, stop on contact\n \u2022 G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure\n \u2022 G38.5 - probe away from workpiece, stop on loss of contact\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 880 / 1279\n \n Important\n You will not be able to use a probe move until your machine has been set up to provide a probe\n input signal. The probe input signal must be connected to motion.probe-input in a .hal file.\n G38.n uses motion.probe-input to determine when the probe has made (or lost) contact. TRUE\n@@ -40456,15 +40456,15 @@\n It is an error if:\n \u2022 the current point is the same as the programmed point.\n \u2022 no axis word is used\n \u2022 cutter compensation is enabled\n \u2022 the feed rate is zero\n \u2022 the probe is already in the target state\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 881 / 1279\n \n 11.5.25 G40 Compensation Off\n \u2022 G40 - turn cutter compensation off. If tool compensation was on the next move must be a linear\n move and longer than the tool diameter. It is OK to turn compensation off when it is already off.\n G40 Example\n@@ -40503,15 +40503,15 @@\n The lead in move must be at least as long as the tool radius. The lead in move can be a rapid move.\n Cutter compensation may be performed if the XY-plane or XZ-plane is active.\n User M100-M199 commands are allowed when Cutter Compensation is on.\n The behavior of the machining center when cutter compensation is on is described in the Cutter\n Compensation section along with code examples.\n It is an error if:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 882 / 1279\n \n \u2022 The D number is not a valid tool number or 0.\n \u2022 The YZ plane is active.\n \u2022 Cutter compensation is commanded to turn on when it is already on.\n \n@@ -40549,15 +40549,15 @@\n \n It is an error if:\n \u2022 the H number is not an integer, or\n \u2022 the H number is negative, or\n \u2022 the H number is not a valid tool number (though note that 0 is a valid tool number on nonrandom\n tool changer machines, it means \u201dthe tool currently in the spindle\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 883 / 1279\n \n 11.5.29 G43.1 Dynamic Tool Length Offset\n G43.1 axes\n \n \u2022 G43.1 axes - change subsequent motions by replacing the current offset(s) of axes. G43.1 does\n@@ -40594,15 +40594,15 @@\n It is an error if:\n \u2022 H is unspecified and no axis offsets are specified.\n \u2022 H is specified and the given tool number does not exist in the tool table.\n \u2022 H is specified and axes are also specified.\n Note\n G43.2 does not write to the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 884 / 1279\n \n 11.5.31 G49 Cancel Tool Length Compensation\n \u2022 G49 - cancels tool length compensation\n It is OK to program using the same offset already in use. It is also OK to program using no tool length\n offset if none is currently being used.\n@@ -40637,15 +40637,15 @@\n \u2022 G57 - select coordinate system 4\n \u2022 G58 - select coordinate system 5\n \u2022 G59 - select coordinate system 6\n \u2022 G59.1 - select coordinate system 7\n \u2022 G59.2 - select coordinate system 8\n \u2022 G59.3 - select coordinate system 9\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 885 / 1279\n \n The coordinate systems store the axis values and the XY rotation angle around the Z axis in the parameters shown in the following table.\n Table 11.11: Coordinate System Parameters\n Select CS\n G54\n@@ -40795,15 +40795,15 @@\n away from the programmed point you end up.\n \u2022 G64 P- - Blend between best speed and deviation tolerance\n \u2022 G64 P- blending with tolerance. It is a way to fine tune your system for best compromise\n between speed and accuracy. The P- tolerance means that the actual path will be no more than Paway from the programmed endpoint. The velocity will be reduced if needed to maintain the path.\n If you set Q to a non-zero value it turns on the Naive CAM Detector: when there are a series of\n linear XYZ feed moves at the same feed rate that are less than Q- away from being collinear, they\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 886 / 1279\n \n are collapsed into a single linear move. On G2/G3 moves in the G17 (XY) plane when the maximum\n deviation of an arc from a straight line is less than the G64 P- tolerance the arc is broken into two\n lines (from start of arc to midpoint, and from midpoint to end). those lines are then subject to the\n naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases as well as line-line benefit\n@@ -40841,15 +40841,15 @@\n this point.\n \u2022 Fillet and chamfers in the profile. It is possible to add fillets or chamfers in the profile, see Section 11.5.39 for more details.\n It is an error if:\n \u2022 There is no subroutine defined with the number given in Q.\n \u2022 The path given in the profile is not monotonic in Z or X.\n \u2022 Section 11.5.18 has not been used to select the ZX plane.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 887 / 1279\n \n 11.5.39 G71 G72 Lathe roughing cycles\n G71\n Q- \n G71.1 Q- \n@@ -40891,15 +40891,15 @@\n finishing.\n It is an error if:\n \u2022 There is no subroutine defined with the number given in Q.\n \u2022 The path given in the profile is not monotonic in Z or X.\n \u2022 Section 11.5.18 has not been used to select the ZX plane.\n \u2022 Section 11.5.26 is active.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 888 / 1279\n \n 11.5.40 G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- \n \n \u2022 R - retract position along the Z axis.\n@@ -40930,15 +40930,15 @@\n \n Warning\n G74 does not use synchronized motion.\n \n The G74 cycle is intended for tapping with floating chuck and dwell at the bottom of the hole.\n 1. Preliminary motion, as described in the Preliminary and In-Between Motion section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 889 / 1279\n \n 2. Disable Feed and Speed Overrides.\n 3. Move the Z-axis at the current feed rate to the Z position.\n 4. Stop the selected spindle (chosen by the $ parameter)\n 5. Start spindle rotation clockwise.\n@@ -40953,15 +40953,15 @@\n G76 P- Z- I- J- R- K- Q- H- E- L- $-\n \n Figure 11.14: G76 Threading\n \u2022 Drive Line - A line through the initial X position parallel to the Z.\n \u2022 P- - The thread pitch in distance per revolution.\n \u2022 Z- - The final position of threads. At the end of the cycle the tool will be at this Z position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 890 / 1279\n \n Note\n When G7 Lathe Diameter Mode is in force the values for I, J and K are diameter measurements. When\n G8 Lathe Radius Mode is in force the values for I, J and K are radius measurements.\n \n@@ -41001,15 +41001,15 @@\n taper. No entry taper and the tool will rapid to the cut depth then synchronize and begin the cut.\n The tool is moved to the initial X and Z positions prior to issuing the G76. The X position is the drive\n line and the Z position is the start of the threads.\n The tool will pause briefly for synchronization before each threading pass, so a relief groove will be\n required at the entry unless the beginning of the thread is past the end of the material or an entry\n taper is used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 891 / 1279\n \n Unless using an exit taper, the exit move is not synchronized to the spindle speed and will be a rapid\n move. With a slow spindle, the exit move might take only a small fraction of a revolution. If the\n spindle speed is increased after several passes are complete, subsequent exit moves will require a\n larger portion of a revolution, resulting in a very heavy cut during the exit move. This can be avoided\n@@ -41036,15 +41036,15 @@\n \n In the figure the tool is in the final position after the G76 cycle is completed. You can see the entry\n path on the right from the Q29.5 and the exit path on the left from the L2 E0.045. The white lines are\n the cutting moves.\n \n Figure 11.15: G76 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 892 / 1279\n \n 11.5.43 G80-G89 Canned Cycles\n The canned cycles G81 through G89 and the canned cycle stop G80 are described in this section.\n All canned cycles are performed with respect to the currently-selected plane. Any of the nine planes\n may be selected. Throughout this section, most of the descriptions assume the XY-plane has been\n@@ -41078,15 +41078,15 @@\n L=1.\n 11.5.43.4 Retract Mode\n The height of the retract move at the end of each repeat (called clear Z in the descriptions below) is\n determined by the setting of the retract mode, either to the original Z position (if that is above the\n R position and the retract mode is G98, OLD_Z), or otherwise to the R position. See the G98 G99\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 893 / 1279\n \n 11.5.43.5 Canned Cycle Errors\n It is an error if:\n \u2022 axis words are all missing during a canned cycle,\n \u2022 axis words from different groups (XYZ) (UVW) are used together,\n@@ -41117,15 +41117,15 @@\n same order as the earlier example. But the program writing economy of a good canned cycle should\n be obvious.\n Note\n Line numbers are not needed but help clarify these examples.\n \n Eight Holes\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 894 / 1279\n \n N100 G90 G0 X0 Y0 Z0 (move coordinate home)\n N110 G1 F10 X0 G4 P0.1\n N120 G91 G81 X1 Y0 Z-1 R1 L4(canned drill cycle)\n N130 G90 G0 X0 Y1\n@@ -41148,15 +41148,15 @@\n N1050 X0 Y-1 L2 (repeat)\n N1060 G80 (turn off canned cycle)\n N1070 G90 G0 X0 (rapid move home)\n N1080 Y0\n N1090 Z0\n N1100 M2 (program end)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 895 / 1279\n \n The second reason to use a canned cycle is that they all produce preliminary moves and returns that\n you can anticipate and control regardless of the start point of the canned cycle.\n \n 11.5.44 G80 Cancel Canned Cycle\n@@ -41178,15 +41178,15 @@\n first set of blocks, the programmer must turn motion back on with G0, as is done in the next line, or\n any other motion mode G word.\n If a canned cycle is not turned off with G80 or another motion word, the canned cycle will attempt\n to repeat itself using the next block of code that contains an X, Y, or Z word. The following file drills\n (G81) a set of eight holes as shown in the following caption.\n G80 Example 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 896 / 1279\n \n N100 G90 G0 X0 Y0 Z0 (coordinate home)\n N110 G1 X0 G4 P0.1\n N120 G81 X1 Y0 Z0 R1 (canned drill cycle)\n N130 X2\n@@ -41215,15 +41215,15 @@\n \n The G81 cycle is intended for drilling.\n The cycle functions as follows:\n \u2022 Preliminary motion, as described in the Preliminary and In-Between Motion section.\n \u2022 Move the Z-axis at the current feed rate to the Z position.\n \u2022 The Z-axis does a rapid move to clear Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 897 / 1279\n \n Figure 11.16: G81 Cycle\n Example 1 - Absolute Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n@@ -41236,15 +41236,15 @@\n \u2022 The R value and clear Z are 2.8. OLD_Z is 3.\n The following moves take place:\n \u2022 A rapid move parallel to the XY plane to (X4, Y5)\n \u2022 A rapid move move parallel to the Z-axis to (Z2.8).\n \u2022 Move parallel to the Z-axis at the feed rate to (Z1.5)\n \u2022 A rapid move parallel to the Z-axis to (Z3)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 898 / 1279\n \n Example 2 - Relative Position G81\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n Suppose the current position is (X1, Y2, Z3) and the preceding line of NC code is interpreted.\n@@ -41265,27 +41265,27 @@\n \u2022 A rapid move parallel to the Z-axis to (X9, Y12, Z4.8)\n The third repeat consists of 3 moves. The X position is reset to 13 (=9+4) and the Y position to 17\n (=12+5).\n \u2022 A rapid move parallel to the XY-plane to (X13, Y17, Z4.8)\n \u2022 Move parallel to the Z-axis at the feed rate to (X13, Y17, Z4.2)\n \u2022 A rapid move parallel to the Z-axis to (X13, Y17, Z4.8)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 899 / 1279\n \n Example 3 - Relative Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n Now suppose that you execute the first G81 block of code but from (X0, Y0, Z0) rather than from (X1,\n Y2, Z3).\n Since OLD_Z is below the R value, it adds nothing for the motion but since the initial value of Z is less\n than the value specified in R, there will be an initial Z move during the preliminary moves.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 900 / 1279\n \n Example 4 - Absolute G81 R > Z This is a plot of the path of motion for the second g81 block of\n code.\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n@@ -41295,15 +41295,15 @@\n \n Example 5 - Relative position R > Z\n G90 G98 G81 X4 Y5 Z-0.6 R1.8\n \n Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves\n to that location as in Example 4. After that initial Z move, the rapid move to X4 Y5 is done. Then the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 901 / 1279\n \n final Z depth being 0.6 below the R value. The repeat function would make the Z move in the same\n location again.\n \n 11.5.46 G82 Drilling Cycle, Dwell\n@@ -41336,15 +41336,15 @@\n \u2022 Rapid move back out to the retract plane specified by the R word.\n \u2022 Rapid move back down to the current hole bottom, less .010 of an inch or 0.254 mm.\n \u2022 Repeat steps 2, 3, and 4 until the Z position is reached at step 2.\n \u2022 The Z-axis does a rapid move to clear Z.\n It is an error if:\n \u2022 the Q number is negative or zero.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 902 / 1279\n \n 11.5.48 G84 Right-hand Tapping Cycle, Dwell\n G84 (X- Y- Z-) or (U- V- W-) R- L- P- $- F-\n \n \u2022 R- - Retract position along the Z axis.\n@@ -41374,15 +41374,15 @@\n \n The G85 cycle is intended for boring or reaming, but could be used for drilling or milling.\n \u2022 Preliminary motion, as described in the Preliminary and In-Between Motion section.\n \u2022 Move the Z-axis only at the current feed rate to the Z position.\n \u2022 Retract the Z-axis at the current feed rate to the R plane if it is lower than the initial Z.\n \u2022 Retract at the traverse rate to clear Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 903 / 1279\n \n 11.5.50 G86 Boring Cycle, Spindle Stop, Rapid Move Out\n G86 (X- Y- Z-) or (U- V- W-) R- L- P- $-\n \n The G86 cycle is intended for boring. This cycle uses a P number for the number of seconds to dwell.\n@@ -41414,15 +41414,15 @@\n 11.5.54 G90, G91 Distance Mode\n \u2022 G90 - absolute distance mode In absolute distance mode, axis numbers (X, Y, Z, A, B, C, U, V, W)\n usually represent positions in terms of the currently active coordinate system. Any exceptions to\n that rule are described explicitly in the G80 G89 section.\n \u2022 G91 - incremental distance mode In incremental distance mode, axis numbers usually represent\n increments from the current coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 904 / 1279\n \n G90 Example\n G90 (set absolute distance mode)\n G0 X2.5 (rapid move to coordinate X2.5 including any offsets in effect)\n \n@@ -41460,15 +41460,15 @@\n Being in incremental distance mode (G91 instead of G90) has no effect on the action of G92.\n G92 offsets may be already be in effect when the G92 is called. If this is the case, the offset is replaced\n with a new offset that makes the current point become the specified value.\n It is an error if all axis words are omitted.\n LinuxCNC stores the G92 offsets and reuses them on the next run of a program. To prevent this, one\n can program a G92.1 (to erase them), or program a G92.2 (to remove them - they are still stored).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 905 / 1279\n \n Note\n The G52 command can also be used to change this offset; see the Offsets section for more details\n about G92 and G52 and how they interact.\n See the Coordinate System section for an overview of coordinate systems.\n@@ -41506,15 +41506,15 @@\n threading, for threading use G33 or G76. G95 requires that spindle.N.speed-in to be connected.\n The actual spindle to which the feed is synchronised is chosen by the $ parameter.\n It is an error if:\n \u2022 Inverse time feed mode is active and a line with G1, G2, or G3 (explicitly or implicitly) does not have\n an F-word.\n \u2022 A new feed rate is not specified after switching to G94 or G95\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 906 / 1279\n \n 11.5.60 G96, G97 Spindle Control Mode\n G96 S- <$-> (Constant Surface Speed Mode)\n G97 S- <$-> (RPM Mode)\n \n@@ -41552,15 +41552,15 @@\n \n The G98 to the second line above means that the return move will be to the value of Z in the first line\n since it is higher that the R value specified.\n The initial (G98) plane is reset any time cycle motion mode is abandoned, whether explicitly (G80) or\n implicitly (any motion code that is not a cycle). Switching among cycle modes (say G81 to G83) does\n NOT reset the initial plane. It is possible to switch between G98 and G99 during a series of cycles.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 907 / 1279\n \n 11.6 M-Codes\n 11.6.1 M-Code Quick Reference Table\n Code\n M0 M1\n@@ -41626,15 +41626,15 @@\n \n 11.6.3 M2, M30 Program End\n \u2022 M2 - end the program. Pressing Cycle Start (\u201dR\u201d in the Axis GUI) will restart the program at the\n beginning of the file.\n \u2022 M30 - exchange pallet shuttles and end the program. Pressing Cycle Start will start the program\n at the beginning of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 908 / 1279\n \n Both of these commands have the following effects:\n \u2022 Change from Auto mode to MDI mode.\n \u2022 Origin offsets are set to the default (like G54).\n \u2022 Selected plane is set to XY plane (like G17).\n@@ -41668,15 +41668,15 @@\n S100 $0\n S200 $1\n S300 $2\n M3 $-1\n \n This example will then reverse spindle 1 but leave the other spindles rotating forwards:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 909 / 1279\n \n M4 $1\n \n And this will stop spindle 2 and leave the other spindles rotating:\n M5 $2\n@@ -41713,15 +41713,15 @@\n \n The tool change may include axis motion. It is OK (but not useful) to program a change to the tool\n already in the spindle. It is OK if there is no tool in the selected slot; in that case, the spindle will\n be empty after the tool change. If slot zero was last selected, there will definitely be no tool in the\n spindle after a tool change. The tool changer will have to be setup to perform the tool change in HAL\n and possibly ClassicLadder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 910 / 1279\n \n 11.6.7 M7, M8, M9 Coolant Control\n \u2022 M7 - turn mist coolant on. M7 controls iocontrol.0.coolant-mist pin.\n \u2022 M8 - turn flood coolant on. M8 controls iocontrol.0.coolant-flood pin.\n \u2022 M9 - turn both M7 and M8 off.\n@@ -41756,15 +41756,15 @@\n \u2013 spindle.N.is-oriented (in bit) Acknowledge pin for spindle-orient. Completes orient cycle. If\n spindle-orient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared\n and the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.\n \u2013 spindle.N.orient-fault (in s32) Fault code input for orient cycle. Any value other than zero will\n cause the orient cycle to abort.\n \u2013 spindle.N.locked (out bit) Spindle orient complete pin. Cleared by any of M3,M4,M5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 911 / 1279\n \n 11.6.9 M48, M49 Speed and Feed Override Control\n \u2022 M48 - enable the spindle speed and feed rate override controls.\n \u2022 M49 - disable both controls.\n These commands also take an optional $ parameter to determine which spindle they operate on.\n@@ -41797,15 +41797,15 @@\n \n 11.6.13 M53 Feed Stop Control\n \u2022 M53 - enable the feed stop switch. The P1 is optional. Enabling the feed stop switch will allow\n motion to be interrupted by means of the feed stop control. In LinuxCNC, the HAL pin motion.feedhold is used for this purpose. A true value will cause the motion to stop when M53 is active.\n \u2022 M53 P0 - disable the feed stop switch. The state of motion.feed-hold will have no effect on feed\n when M53 is not active.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 912 / 1279\n \n 11.6.14 M61 Set Current Tool\n \u2022 M61 Q- - change the current tool number while in MDI or Manual mode without a tool change.\n One use is when you power up LinuxCNC with a tool currently in the spindle you can set that tool\n number without doing a tool change.\n@@ -41839,15 +41839,15 @@\n 11.6.16 M66 Wait on Input\n M66 P- | E- \n \n \u2022 P- - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio)\n \u2022 E- - specifies the analog input number from 0 to 3. (Adjustable from motmod argument num_aio)\n \u2022 L- - specifies the wait mode type.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 913 / 1279\n \n \u2013 Mode 0: IMMEDIATE - no waiting, returns immediately. The current value of the input is stored\n in parameter #5399\n \u2013 Mode 1: RISE - waits for the selected input to perform a rise event.\n \u2013 Mode 2: FALL - waits for the selected input to perform a fall event.\n@@ -41883,15 +41883,15 @@\n always program a motion G-code (G0, G1, etc) right after the M67. M67 functions the same as M6263.\n The number of I/O can be increased by using the num_dio or num_aio parameter when loading the\n motion controller. See the Motion section for more information.\n Note\n M67 will not function unless the appropriate motion.analog-out-nn pins are connected in your HAL\n file to outputs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 914 / 1279\n \n 11.6.18 M68 Analog Output, Immediate\n M68 E- Q-\n \n \u2022 M68 - set an analog output immediately.\n@@ -41922,15 +41922,15 @@\n \u2022 spindle mode (G96-css or G97-RPM)\n \u2022 arc distance mode (G90.1, G91.1)\n \u2022 lathe radius/diameter mode (G7,G8)\n \u2022 path control mode (G61, G61.1, G64)\n \u2022 current feed and speed (F and S values)\n \u2022 spindle status (M3,M4,M5) - on/off and direction\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 915 / 1279\n \n \u2022 mist (M7) and flood (M8) status\n \u2022 speed override (M51) and feed override (M50) settings\n \u2022 adaptive feed setting (M52)\n \u2022 feed hold setting (M53)\n@@ -41968,15 +41968,15 @@\n g20 (imperial)\n g91 (relative mode)\n F5 (low feed)\n S300 (low rpm)\n (debug, in subroutine, state now:)\n o call\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 916 / 1279\n \n O endsub\n ; main program\n g21 (metric)\n g90 (absolute)\n@@ -42022,15 +42022,15 @@\n (debug, in main, state now:)\n o call\n o call\n (debug, back in main, state now:)\n o call\n m2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 917 / 1279\n \n 11.6.23 M98 and M99\n The interpreter supports Fanuc-style main- and sub-programs with the M98 and M99 M-codes. See\n Fanuc-Style Programs.\n 11.6.23.1 Selectively Restoring Modal State\n@@ -42072,15 +42072,15 @@\n and Q values as its two arguments.\n Execution of the G-code file pauses until the external program exits. Any valid executable file can\n be used. The file must be located in the search path specified in the INI file configuration. See the\n Display section for more information on search paths.\n After creating a new M1nn program, the GUI should be restarted so that the new program is taken\n into account, otherwise a Unknown M-code error will occur.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 918 / 1279\n \n Warning\n Do not use a word processor to create or edit the files. A word processor will leave unseen\n codes that will cause problems and may prevent a bash or python file from working. Use a\n text editor like Geany in Debian or Notepad++ in other operating systems to create or edit the\n@@ -42122,15 +42122,15 @@\n To display a graphic message and stop until the message window is closed use a graphic display\n program like Eye of Gnome to display the graphic file. When you close it the program will resume.\n M110 Example file\n #!/bin/bash\n eog /home/john/linuxcnc/nc_files/message.png\n exit 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 919 / 1279\n \n To display a graphic message and continue processing the G-code file suffix an ampersand to the\n command.\n M110 Example display and keep going\n #!/bin/bash\n@@ -42164,15 +42164,15 @@\n \u2022 The same number is used for more than one block.\n \u2022 Other words are used on a line with an O- word.\n \u2022 Comments are used on a line with an O-word.\n Note\n Using the lower case o makes it easier to distinguish from a 0 that might have been mistyped. For\n example o100 is easier to see than O100 that it is not a 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 920 / 1279\n \n 11.7.4 Subroutines\n Subroutines starts at Onnn sub and ends at Onnn endsub. The lines between Onnn sub and Onnn\n endsub are not executed until the subroutine is called with Onnn call. Each subroutine must use a\n unique number.\n@@ -42220,15 +42220,15 @@\n \n Subroutine bodies may not be nested. They may only be called after they are defined. They may\n be called from other functions, and may call themselves recursively if it makes sense to do so. The\n maximum subroutine nesting level is 10.\n Subroutines can change the value of parameters above #30 and those changes will be visible to the\n calling code. Subroutines may also change the value of global named parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 921 / 1279\n \n 11.7.4.1 Fanuc-Style Numbered Programs\n Numbered programs (both main and subprograms), the M98 call and M99 return M-codes, and their\n respective semantic differences are an alternative to the rs274ngc subroutines described above, provided for compatibility with Fanuc and other machine controllers.\n Numbered programs are enabled by default, and may be disabled by placing DISABLE_FANUC_STYLE_SUB\n@@ -42274,15 +42274,15 @@\n \u2022 M98 subprogram call blocks may contain an optional L-word specifying a loop repeat count. Without\n the L-word, the subprogram will execute once only (equivalent to M98 L1). An M98 L0 block will not\n execute the subprogram.\n In rare cases, the M99 M-code may be used to terminate the main program, where it indicates an\n endless program. When the interpreter reaches an M99 in the main program, it will skip back to the\n beginning of the file and resume execution at the first line. An example use of an endless program is\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 922 / 1279\n \n in a machine warm-up cycle; a block delete program end /M30 block might be used to stop the cycle\n at a tidy point when the operator is ready.\n Numbered Subprogram Full Example\n O1\n@@ -42348,15 +42348,15 @@\n #1 = 3 (assign the value of 3 to parameter #1)\n (msg, #1 has been assigned the value of 3)\n o100 continue (skip to start of loop)\n o110 endif\n (some code here)\n #1 = [#1 + 1] (increment the test counter)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 923 / 1279\n \n o100 while [#1 LT 3]\n (msg, Loop Done!)\n M2\n \n@@ -42402,15 +42402,15 @@\n O102 elseif [#2 LT 2]\n F20\n (parameter #2 is between 2 and 5)\n O102 else\n F200\n O102 endif\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 924 / 1279\n \n 11.7.7 Repeat\n The repeat will execute the statements inside of the repeat/endrepeat the specified number of times.\n The example shows how you might mill a diagonal series of shapes starting at the present position.\n Example with repeat\n@@ -42451,15 +42451,15 @@\n M2\n \n Note\n The file names are lowercase letters only so o is converted to o by the interpreter.\n More information about the search path and options for the search path are in the INI configuration\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 925 / 1279\n \n 11.7.10 Subroutine return values\n Subroutines may optionally return a value by an optional expression at an endsub or return statement.\n Return value example\n o123 return [#2 *5]\n@@ -42495,15 +42495,15 @@\n spindle speed for a specific spindle. Without the $ the command will default to spindle.0.\n The spindle(s) or selected spindle will turn at that speed when a M3 or M4 is in effect. It is OK to\n program an S word whether the spindle is turning or not. If the speed override switch is enabled and\n not set at 100%, the speed will be different from what is programmed.\n It is OK to program S0, the spindle will not turn if that is done.\n It is an error if:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 926 / 1279\n \n \u2022 the S number is negative.\n As described in the section Right-hand Tapping Cycle with Dwell, if a G84 (tapping) drilling cycle is\n active and the speed and feed potentiometers are enabled, the one with the lowest setting will be\n used. The rotational speed and feed rate will remain synchronized. In this case, the speed may differ\n@@ -42540,37 +42540,37 @@\n file is appropriate for your machine before running.\n \n 11.9.1 Mill Examples\n 11.9.1.1 Helical Hole Milling\n \u2022 File Name: useful-subroutines.ngc\n \u2022 Description: Subroutine for milling a hole using parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 927 / 1279\n \n 11.9.1.2 Slotting\n \u2022 File Name: useful-subroutines.ngc\n \u2022 Description: Subroutine for milling a slot using parameters.\n \n 11.9.1.3 Grid Probe\n \u2022 File Name: gridprobe.ngc\n \u2022 Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 928 / 1279\n \n 11.9.1.4 Smart Probe\n \u2022 File Name: smartprobe.ngc\n \u2022 Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file. This is improved from the grid probe file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 929 / 1279\n \n 11.9.1.5 Tool Length Probe\n \u2022 File Name: tool-length-probe.ngc\n \u2022 Description: Tool Length Probing\n This program shows an example of how to measure tool lengths automatically using a switch hooked\n@@ -42580,15 +42580,15 @@\n \u2022 File Name: probe-hole.ngc\n \u2022 Description: Finding the Center and Diameter of a hole.\n The program demonstrates how to find the center of a hole, measure the hole diameter and record\n the results.\n 11.9.1.7 Cutter Compensation\n \u2022 File Name: comp-g1.ngc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 930 / 1279\n \n \u2022 Description: Entry and exit movements with compensation of tool radius.\n This program demonstrates the peculiarity of the toolpath without and with tool radius compensation.\n The tool radius is taken from the tool table.\n \n@@ -42600,15 +42600,15 @@\n \n 11.10 Image to G-Code\n \n 11.10.1 What is a depth map?\n A depth map is a greyscale image where the brightness of each pixel corresponds to the depth (or\n height) of the object at each point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 931 / 1279\n \n 11.10.2 Integrating image-to-gcode with the AXIS user interface\n Add the following lines to the [FILTER] section of your INI file to make AXIS automatically invoke\n image-to-gcode when you open a PNG, GIF, or JPEG image:\n PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image\n@@ -42642,15 +42642,15 @@\n cut off. If White or Black, then a border of pixels equal to the tool diameter is added on all sides, and\n details which are at the very edges of the images will not be cut off.\n 11.10.4.5 Tolerance (units)\n When a series of points are within tolerance of being a straight line, they are output as a straight line.\n Increasing tolerance can lead to better contouring performance in LinuxCNC, but can also remove or\n blur small details in the image.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 932 / 1279\n \n 11.10.4.6 Pixel Size (units)\n One pixel in the input image will be this many units\u2014usually this number is much smaller than 1.0. For\n instance, to mill a 2.5x2.5-inch object from a 400x400 image file, use a pixel size of .00625, because\n 2.5 / 400 = .00625.\n@@ -42673,15 +42673,15 @@\n \u2022 Alternating: Start on the same end of the X or Y axis travel that the last move ended on. This reduces\n the amount of traverse movements.\n \u2022 Up Milling: Start milling at low points, moving towards high points.\n \u2022 Down Milling: Start milling at high points, moving towards low points.\n 11.10.4.12 Depth (units)\n The top of material is always at Z = 0. The deepest cut into the material is at Z = -depth.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 933 / 1279\n \n 11.10.4.13 Step Over (pixels)\n 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\n size=.006 and the desired step over distance=.015, then use a Step Over of 2 or 3 pixels, because\n .015/.006=2.5.\n@@ -42705,15 +42705,15 @@\n \u2022 Full: When milling in the first direction, areas that strongly slope in the second direction are\n skipped. When milling in the second direction, areas that do not strongly slope in that direction\n are skipped.\n 11.10.4.18 Contact angle\n When Lace bounding is not None, slopes greater than Contact angle are considered to be strong\n slopes, and slopes less than that angle are considered to be weak slopes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 934 / 1279\n \n 11.10.4.19 Roughing offset and depth per pass\n Image-to-gcode can optionally perform roughing passes. The depth of successive roughing passes is\n given by Roughing depth per pass. For instance, entering 0.2 will perform the first roughing pass\n with a depth of 0.2, the second roughing pass with a depth of 0.4, and so on until the full Depth of\n@@ -42735,15 +42735,15 @@\n coordinate systems, and the G92 offset are in \u201dINI file units\u201d. This change was made because\n otherwise the meaning of a location changed depending on whether G20 or G21 was active when\n G28, G30, G10 L2, or G92.3 is programmed.\n Tool table lengths/diameters are in INI file units\n In LinuxCNC, the tool lengths (offsets) and diameters in the tool table are specified in INI file\n units only. This change was made because otherwise the length of a tool and its diameter would\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 935 / 1279\n \n change based on whether G20 or G21 was active when initiating G43, G41, G42 modes. This made\n it impossible to run G-code in the machine\u2019s non-native units, even when the G-code was simple\n and well-formed (starting with G20 or G21, and didn\u2019t change units throughout the program),\n without changing the tool table.\n@@ -42780,28 +42780,28 @@\n primarily useful on lathes.\n Dynamic tool lengths\n LinuxCNC allows specification of a computed tool length through G43.1 I K.\n G41.1, G42.1\n LinuxCNC allows specification of a tool diameter and, if in lathe mode, orientation in the Gcode. The format is G41.1/G42.1 D L, where D is diameter and L (if specified) is the lathe tool\n orientation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 936 / 1279\n \n G43 without H word\n In NGC this is not allowed. In LinuxCNC, it sets length offsets for the currently loaded tool. If no\n tool is currently loaded, it is an error. This change was made so the user doesn\u2019t have to specify\n the tool number in two places for each tool change, and because it\u2019s consistent with the way\n G41/G42 work when the D word is not specified.\n U, V, and W axes\n LinuxCNC allows machines with up to 9 axes by defining an additional set of 3 linear axes known\n as U, V and W\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 937 / 1279\n \n Chapter 12\n \n Virtual Control Panels\n 12.1 PyVCP\n@@ -42811,15 +42811,15 @@\n Hardware machine control panels can use up a lot of I/O pins and can be expensive. That is where\n Virtual Control Panels have the advantage as well as it cost nothing to build a PyVCP.\n Virtual Control Panels can be used for testing or monitoring things to temporarily replace real I/O\n devices while debugging ladder logic, or to simulate a physical panel before you build it and wire it\n to an I/O board.\n The following graphic displays many of the PyVCP widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 938 / 1279\n \n Figure 12.1: PyVCP Widgets Showcase\n \n 12.1.2 Panel Construction\n The layout of a PyVCP panel is specified with an XML file that contains widget tags between \n@@ -42827,15 +42827,15 @@\n \n \n \n Figure 12.2: Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 939 / 1279\n \n If you place this text in a file called tiny.xml, and run\n halcmd loadusr pyvcp -c mypanel tiny.xml\n \n PyVCP will create the panel for you, which includes two widgets, a Label with the text This is a LED\n@@ -42880,15 +42880,15 @@\n \n \n Here we\u2019ve made a panel with a Label and a Bar widget, specified that the HAL pin connected to\n the Bar should be named spindle-speed, and set the maximum value of the bar to 5000 (see widget\n reference below for all options). To make AXIS aware of this file, and call it at start up, we need to\n specify the following in the [DISPLAY] section of the INI file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 940 / 1279\n \n PYVCP = spindle.xml\n \n If the panel should appear at the bottom of the AXIS user interface then we need to specify the\n following in the [DISPLAY] section of the INI file:\n@@ -42906,15 +42906,15 @@\n assuming that a signal called spindle-rpm-filtered already exists. Note that when running together\n with AXIS, all PyVCP panel widget HAL pins have names that start with pyvcp., all PyVCP embedded\n tab widget HAL pins start with the name specified as EMBED_TAB_NAME converted to lower case.\n \n This is what the newly created PyVCP panel should look like in AXIS. The sim/lathe configuration is\n already configured this way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 941 / 1279\n \n 12.1.5 Stand Alone\n This section describes how PyVCP panels can be displayed on their own with or without LinuxCNC\u2019s\n machine controller.\n To load a stand alone PyVCP panel with LinuxCNC use these commands:\n@@ -42953,15 +42953,15 @@\n An optional command to use if you want the panel to stop HAL from continuing commands / shutting\n down. After loading any other components you want the last HAL command to be:\n waitusr panelname\n \n This tells HAL to wait for component panelname to close before continuing HAL commands. This is\n usually set as the last command so that HAL shuts down when the panel is closed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 942 / 1279\n \n 12.1.6 Widgets\n HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be float,\n s32 or u32. For more information on HAL data types see the HAL Data section. The PyVCP widget\n can either display the value of the signal with an indicator widget, or modify the signal value with a\n@@ -42998,15 +42998,15 @@\n Editing the XML file Edit the XML file with a text editor. In most cases you can right click on the\n file and select open with text editor or similar.\n Colors\n Colors can be specified using the X11 rgb colors by name gray75 or hex #0000ff. A complete list is\n located here https://sedition.com/perl/rgb.html.\n Common Colors (colors with numbers indicate shades of that color)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 943 / 1279\n \n \u2022 white\n \u2022 black\n \u2022 blue and blue1 - 4\n \u2022 cyan and cyan1 - 4\n@@ -43035,15 +43035,15 @@\n (\u201dHelvetica\u201d,20)\n \n \n The above code produced this example:\n \n Figure 12.3: Simple Label Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 944 / 1279\n \n 12.1.6.4 Multi_Label\n An extension of the text label.\n Selectable text label, can display up to 6 label legends when associated bit pin is activated.\n Attach each legend pin to a signal and get a descriptive label when the signal is TRUE.\n@@ -43080,15 +43080,15 @@\n red.\n \u2022 n - sets the height of the LED in pixels.\n \u2022 n - sets the width of the LED in pixels.\n \u2022 false - when true adds a disable pin to the led.\n \u2022 color - sets the color of the LED to color when the pin is disabled.\n Round LED\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 945 / 1279\n \n \n \u201dmy-led\u201d\n 50\n \u201dgreen\u201d\n@@ -43117,15 +43117,15 @@\n \n 12.1.6.6 Buttons\n A button is used to control a BIT pin. The pin will be set True when the button is pressed and held\n down, and will be set False when the button is released. Buttons can use the following optional options.\n \u2022 n - where n is the amount of extra horizontal extra space.\n \u2022 n - where n is the amount of extra vertical extra space.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 946 / 1279\n \n \u2022 \u201dcolor\u201d - the cursor over color set to color.\n \u2022 \u201dcolor\u201d - the foreground color set to color.\n \u2022 \u201dcolor\u201d - the background color set to color.\n \u2022 True - disable pin.\n@@ -43154,15 +43154,15 @@\n \n Figure 12.8: Checked button\n Checkbutton Code Example\n \n \u201dcoolant-chkbtn\u201d\n \u201dCoolant\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 947 / 1279\n \n 1\n \n \n \u201dchip-chkbtn\u201d\n@@ -43190,15 +43190,15 @@\n Figure 12.10: Simple Radiobutton Example\n Note that the HAL pins in the example above will be named my-radio.one, my-radio.two, and myradio.three. In the image above, one is the selected value. Use the tag HORIZONTAL\n to display horizontally.\n 12.1.6.7 Number Displays\n Number displays can use the following formatting options\n \u2022 (\u201dFont Name\u201d,n), where n is the font size.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 948 / 1279\n \n \u2022 _n_, where n is the overall width of the space used.\n \u2022 _pos_, where pos is LEFT, CENTER, or RIGHT (doesn\u2019t work).\n \u2022 _n_, where n is the amount of extra horizontal extra space.\n \u2022 _n_, where n is the amount of extra vertical extra space.\n@@ -43227,15 +43227,15 @@\n 6\n \n \n The above code produced this example:\n \n Figure 12.12: Simple s32 Number Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 949 / 1279\n \n u32 Number The u32 number widget displays the value of a u32 number. The syntax is the same as\n number except the name which is .\n Bar 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\n set to change color, dependent upon the value of the halpin (range1, range2 range3 must all be set,\n@@ -43270,15 +43270,15 @@\n \n \n The above code produced this example:\n \n Figure 12.13: Simple Bar Example\n Meter Meter displays the value of a FLOAT signal using a traditional dial indicator.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 950 / 1279\n \n \n \u201dmymeter\u201d\n \u201dBattery\u201d\n \u201dVolts\u201d\n@@ -43304,15 +43304,15 @@\n \n \u201dmy-spinbox\u201d\n -12\n 33\n 0\n 0.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 951 / 1279\n \n \u201d2.3f\u201d\n (\u201dArial\u201d,30)\n 1\n \n@@ -43346,15 +43346,15 @@\n 100\n 0\n 1\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 952 / 1279\n \n Figure 12.16: Simple Scale Example\n Note\n Note that by default it is \u201dmin\u201d which is displayed even if it is greater than \u201dmax\u201d, unless \u201dmin\u201d is\n negative.\n@@ -43377,15 +43377,15 @@\n \u201dgreen\u201d\n \u201dblack\u201d\n 1\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 953 / 1279\n \n Figure 12.17: Simple Dial Example\n Jogwheel Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as\n the wheel is turned, either by dragging in a circular motion, or by rolling the mouse-wheel.\n \n@@ -43397,15 +43397,15 @@\n \u201dmy-wheel\u201d\n 45\n 250\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 954 / 1279\n \n Figure 12.18: Simple Jogwheel Example\n \n 12.1.6.9 Images\n Image displays use only .gif image format. All of the images must be the same size. The images must\n@@ -43419,15 +43419,15 @@\n \n \n This example was produced from the above code. Using the two image files fwd.gif and rev.gif. FWD\n is displayed when selectimage is false and REV is displayed when selectimage is true.\n \n Figure 12.19: Selectimage False Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 955 / 1279\n \n Figure 12.20: Selectimage True Example\n Image u32 The image_u32 is the same as image_bit, except you have essentially an unlimited number\n of images and you select the image by setting the halpin to a integer value with 0 for the first image\n in the images list and 1 for the second image, etc.\n@@ -43440,15 +43440,15 @@\n \n The above code produced the following example by adding the stb.gif image.\n \n Figure 12.21: Simple image_u32 Example with halpin=0\n \n Figure 12.22: Simple image_u32 Example withhalpin=1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 956 / 1279\n \n Figure 12.23: Simple image_u32 Example withhalpin=2\n Notice that the default is the min even though it is set higher than max unless there is a negative min.\n 12.1.6.10 Containers\n Containers are widgets that contain other widgets. Containers are used to group other widgets.\n@@ -43484,15 +43484,15 @@\n \u201dRIDGE\u201d\n 3\n \n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 957 / 1279\n \n Figure 12.24: Containers Borders Showcase\n Fill Container fill are specified with the tag. Valid entries are none, x, y and both.\n The x fill is a horizontal fill and the y fill is a vertical fill\n \n@@ -43519,15 +43519,15 @@\n The above code produced this example:\n \n Figure 12.25: Simple hbox Example\n Inside an Hbox, you can use the , , and tags to choose how items in the box behave when the window is re-sized. The default is\n fill=\u201dy\u201d, anchor=\u201dcenter\u201d, expand=\u201dyes\u201d for an Hbox.\n Vbox Use a Vbox when you want to stack widgets vertically on top of each other.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 958 / 1279\n \n \n RIDGE\n 6\n \n@@ -43553,15 +43553,15 @@\n \n The above code produced this example:\n \n Figure 12.27: Simple labelframe Example\n Table A table is a container that allows layout in a grid of rows and columns. Each row is started by\n a tag. A contained widget may span rows or columns through the use of the tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the tag. A table expands on its flexible rows and columns.\n Table Code Example\n \n@@ -43605,15 +43605,15 @@\n \n \u201dspindle-speed\u201d\n 5000\n \n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \n \n \n \n \n \n The above code produced this example showing each tab selected.\n \n 960 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 961 / 1279\n \n Figure 12.29: Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -43651,15 +43651,15 @@\n \u2022 Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to\n LinuxCNC.\n The following is an example of a loadusr command to load two PyVCP panels and name each one so\n the connection names in HAL will be known.\n loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml\n loadusr -Wn sppanel pyvcp -c sppanel panel2.xml\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 962 / 1279\n \n The -Wn makes HAL Wait for name to be loaded before proceeding.\n The pyvcp -c makes PyVCP name the panel.\n The HAL pins from panel1.xml will be named btnpanel.<_pin name_>.\n The HAL pins from panel2.xml will be named sppanel.<_pin name_>.\n@@ -43668,27 +43668,27 @@\n 12.2.3 Jog Buttons Example\n In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be\n built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure\n our machine, then on the Advanced Configuration Options page we make a couple of selections to add\n a blank PyVCP panel as shown in the following figure. For this example we named the configuration\n pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 963 / 1279\n \n Figure 12.30: XYZ Wizard Configuration\n 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.\n 12.2.3.1 Create the Widgets\n Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between\n the tags we will add the widgets for our panel.\n Look in the PyVCP Widgets Reference section of the manual for more detailed information on each\n widget documentation des widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n In your custompanel.xml file we will add the description of the widgets.\n \n \n (\u201dHelvetica\u201d,16)\n \n \n@@ -43742,15 +43742,15 @@\n \n \n \n \n \n 964 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 965 / 1279\n \n RAISED\n 3\n \n \n The above gives us a PyVCP panel that looks like the following.\n \n 970 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 971 / 1279\n \n 12.2.5.2 The Connections\n To make it work we add the following code to the custom_postgui.hal file.\n # display the rpm based on freq * rpm per hz\n loadrt mult2\n@@ -44102,15 +44102,15 @@\n custom.hal file whereas the rev led needs to use the spindle-rev bit. You can\u2019t link the spindle-fwd bit\n twice so you use the signal that it was linked to.\n \n 12.2.6 Rapid to Home Button\n This example creates a button on the PyVCP side panel when pressed will send all the axis back to\n the home position. This example assumes you don\u2019t have a PyVCP panel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 972 / 1279\n \n In your configuration directory create the XML file. In this example it\u2019s named rth.xml. In the rth.xml\n file add the following code to create the button.\n \n \n@@ -44126,15 +44126,15 @@\n \n If you don\u2019t have a [HALUI] section in the INI file create it and add the following MDI command.\n MDI_COMMAND = G53 G0 X0 Y0 Z0\n \n Note\n Information about G53 and G0 G-codes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 973 / 1279\n \n In the [HAL] section if you don\u2019t have a post gui file add the following and create a file called postgui.hal.\n POSTGUI_HALFILE = postgui.hal\n \n In the postgui.hal file add the following code to link the PyVCP button to the MDI command.\n@@ -44165,15 +44165,15 @@\n \u2022 Widget set: uses TkInter widgets.\n \u2022 User interface creation: \u201dedit XML file / run result / evaluate looks\u201d cycle.\n \u2022 No support for embedding user-defined event handling.\n \u2022 No LinuxCNC interaction beyond HAL pin I/O supported.\n GladeVCP:\n \u2022 Widget set: relies on the GTK+ widget set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 974 / 1279\n \n \u2022 User interface creation: uses the Glade WYSIWYG user interface editor.\n \u2022 Any HAL pin change may be directed to call back into a user-defined Python event handler.\n \u2022 Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python.\n \u2022 Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a\n@@ -44197,31 +44197,31 @@\n make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the\n LinuxCNC wiki page.\n \n Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_panel.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Run the same panel, but as a tab inside AXIS:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_tab.ini\n \n 975 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 976 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 977 / 1279\n \n 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\n names), mixed setups are possible as well - for instance a panel on the right hand side, and one or\n more tabs for less-frequently used parts of the interface.\n 12.3.2.1 Exploring the example panel\n@@ -44236,15 +44236,15 @@\n The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI\n command in the interpreter. The third button Execute Oword subroutine is an advanced example - it\n takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword\n subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body.\n 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\n and configs/sim/axis/gladevcp/gladevcp_panel.ini.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 978 / 1279\n \n 12.3.2.2 Exploring the User Interface description\n The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed.\n To edit the user interface, run the command\n $ glade configs/axis/gladevcp/manual-example.ui\n@@ -44279,15 +44279,15 @@\n Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian\n Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error.\n 12.3.3.2 Running Glade to create a new user interface\n This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on\n Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube.\n Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 979 / 1279\n \n \u2022 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with /scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNC-specific\n widgets.\n \u2022 When asked for unsaved preferences, just accept the defaults and hit Close.\n@@ -44302,15 +44302,15 @@\n File\u2192Save as, give it a name like myui.ui and make sure it\u2019s saved as GtkBuilder file (radio button\n left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but\n there is no point in using it. The convention for GtkBuilder file extension is .ui.\n 12.3.3.3 Testing a panel\n You\u2019re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with:\n gladevcp myui.ui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 980 / 1279\n \n GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n@@ -44348,15 +44348,15 @@\n It is possible to create a custom HAL component name by adding the -c option:\n [DISPLAY]\n # add GladeVCP panel where PyVCP used to live:\n GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui\n \n The command line actually run by AXIS for the above is:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 981 / 1279\n \n halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example \u2190.ui\n \n Note\n The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located\n@@ -44392,15 +44392,15 @@\n Note\n Make sure the UI file is the last option passed to GladeVCP in both the GLADEVCP= and\n EMBED_TAB_COMMAND= statements.\n \n 12.3.3.7 Integrating into Touchy\n To do add a GladeVCP tab to Touchy, edit your INI file as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 982 / 1279\n \n [DISPLAY]\n # add GladeVCP panel as a tab\n EMBED_TAB_NAME=GladeVCP demo\n EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal \u2190./manual-example.ui\n@@ -44439,15 +44439,15 @@\n -H FILE::\n Execute HAL statements from FILE with halcmd after the\n component is set up and ready\n -m MAXIMUM::\n Force panel window to maximize. Together with the -g geometry option\n one can move the panel to a second monitor and force it to use all of the screen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 983 / 1279\n \n -t THEME::\n Set gtk theme. Default is system theme. Different panels can have different themes.\n An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? \u2190GTK_Themes[EMC Wiki].\n -x XID::\n@@ -44486,15 +44486,15 @@\n So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded\n fashion):\n \u2022 You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the\n right point in time, so comment that out in the INI file.\n \u2022 Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H\n option (see previous section).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 984 / 1279\n \n 12.3.6 HAL Widget reference\n GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended\n to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used\n with the Glade user interface editor. With proper installation, the HAL Widgets should show up in\n@@ -44525,15 +44525,15 @@\n Exceptions to this rule currently are:\n \n \u2022 HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a \n (s32) pin\n \u2022 HAL_ProgressBar, which has a -value input pin, and a -scale input\n pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 985 / 1279\n \n 12.3.6.2 Python attributes and methods of HAL Widgets\n HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the\n applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties\n and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual.\n@@ -44571,15 +44571,15 @@\n callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin\u2019s\n value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback\n into your Python code when - well, a HAL pin changes its value. This means there\u2019s no more need for\n permanent polling of HAL pin changes in your code, the widgets do that in the background and let\n you know.\n Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 986 / 1279\n \n The example in configs/apps/gladevcp/complex shows how this is handled in Python.\n 12.3.6.5 Buttons\n This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton,\n HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical\n@@ -44590,15 +44590,15 @@\n \u2022 Important common methods: set_active(), get_active()\n \u2022 Important properties: label, image\n \n Figure 12.31: Check button\n \n Figure 12.32: Radio buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 987 / 1279\n \n Figure 12.33: Toggle button\n Tip\n Defining radio button groups in Glade:\n \u2022 Decide on default active button.\n@@ -44621,15 +44621,15 @@\n 12.3.6.7 SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n -f\n out FLOAT pin\n -s\n out s32 pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 988 / 1279\n \n To be useful, Spinbuttons need an adjustment value like scales, see above.\n \n Figure 12.35: Example SpinButton\n \n@@ -44663,15 +44663,15 @@\n Set the content of the label which may be shown over the counts value.\n If the label given is longer than 15 Characters, it will be cut to 15 Characters.\n default = blank\n center_color\n This allows one to change the color of the wheel. It uses a GDK color string.\n default = #bdefbdefbdef (gray)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 989 / 1279\n \n count_type_shown\n There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts.\n default = 1\n \u2022 count is based on the CPR selected - it will count positive and negative. It is available as a s32\n@@ -44712,15 +44712,15 @@\n There are two GObject signals emitted:\n \u2022 count_changed\n Emitted when the widget\u2019s count changes eg. from being wheel scrolled.\n \u2022 scale_changed\n Emitted when the widget\u2019s scale changes eg. from double clicking.\n Connect to these like so:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 990 / 1279\n \n [widget name].connect(\u2019count_changed\u2019, [count function name])\n [widget name].connect(\u2019scale_changed\u2019, [scale function name])\n \n The callback functions would use this pattern:\n@@ -44742,15 +44742,15 @@\n may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough\n movements the drag and drop way.\n jogwheel exports it\u2019s count value as HAL pin:\n -s\n out s32 pin\n jogwheel has the following properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 991 / 1279\n \n size\n Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40\n@@ -44773,15 +44773,15 @@\n Sets the label content with \u201dstring\u201d\n \n Figure 12.37: Example JogWheel\n \n 12.3.6.10 Speed Control\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 992 / 1279\n \n The value is controlled with two button to increase or decrease the value. The increment will change\n as long a button is pressed. The value of each increment as well as the time between two changes\n can be set using the widget properties.\n speedcontrol offers some HAL pin:\n@@ -44826,15 +44826,15 @@\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n Default is 100.0.\n If you change this value, the increment will be reset to default, so it might be necessary to set\n afterwards a new increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 993 / 1279\n \n increment\n Float\n Sets the applied increment per mouse click.\n Allowed values are 0.001 to 99999.0 and -1.\n@@ -44880,15 +44880,15 @@\n \u2022 [widget name].get_value()\n Will return the counts value as float\n \u2022 [widget name].set_value(float(value))\n Sets the widget to the commanded value\n \u2022 [widget name].set_digits(int(value))\n Sets the digits of the value to be used\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 994 / 1279\n \n \u2022 [widget name].hide_button(bool(value))\n Hide or show the button\n \n Figure 12.38: Example Speedcontrol\n@@ -44919,15 +44919,15 @@\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n Have one HAL BIT input pin which controls if their child widgets are sensitive or not.\n Pin: , .\n in bit pin\n If the pin is low then child widgets are inactive which is the default state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 995 / 1279\n \n State_Sensitive_Table\n Responds to the state to LinuxCNC\u2019s interpreter.\n Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle.\n You can combine them. It will always be insensitive at Estop.\n@@ -44968,15 +44968,15 @@\n led_blink_rate\n If set and LED is ON then it\u2019s blinking.\n Blink period is equal to \u201dled_blink_rate\u201d specified in milliseconds.\n create_hal_pin\n Select/deselect creation of a HAL pin to control the LED.\n With no HAL pin created LED can be controlled with a Python function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 996 / 1279\n \n As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification\n in your code when the LED\u2019s HAL pin was changed, then connect this signal to a handler, for example\n on_led_pin_changed and provide the handler as follows:\n def on_led_pin_changed(self,hal_led,data=None):\n@@ -45008,15 +45008,15 @@\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n text_template\n Text template to display the current value of the pin.\n Python formatting may be used for dict {\u201dvalue\u201d:value}.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 997 / 1279\n \n Figure 12.40: Example HAL_ProgressBar\n \n 12.3.6.15 ComboBox\n HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list.\n@@ -45046,15 +45046,15 @@\n invert\n Swap min and max direction.\n An inverted HBar grows from right to left, an inverted VBar from top to bottom.\n min, max\n Minimum and maximum value of desired range. It is not an error condition if the current value\n is outside this range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 998 / 1279\n \n show limits\n Used to select/deselect the limits text on bar.\n zero\n Zero point of range.\n@@ -45092,15 +45092,15 @@\n to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border\n and zone 2 from last border to 1.\n Borders are set as fractions.\n Valid values range from 0 to 1.\n \n Figure 12.41: Horizontal bar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 999 / 1279\n \n Figure 12.42: Vertical bar\n \n 12.3.6.17 Meter\n HAL_Meter is a widget similar to PyVCP meter - it represents a float value.\n@@ -45129,15 +45129,15 @@\n z0_border, z1_border\n Define up bounds of color zones.\n By default only one zone is enabled. If you want more then one zone set z0_border and z1_border\n to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second\n border and zone 2 from last border to max.\n Borders are set as values in range min-max.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1000 / 1279\n \n Figure 12.43: Example HAL Meters\n \n 12.3.6.18 HAL_Graph\n This widget is for plotting values over time.\n@@ -45162,15 +45162,15 @@\n show rapids\n This tells the plotter to show the rapid moves.\n Default = true.\n show DTG\n This selects the DRO to display the distance-to-go value.\n Default = true.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1001 / 1279\n \n show relative\n This selects the DRO to show values relative to user system or machine coordinates.\n Default = true.\n show live plot\n@@ -45214,15 +45214,15 @@\n Mouse button handling: leads to different functions of the button:\n \u2022 0 = default: left rotate, middle move, right zoom\n \u2022 1 = left zoom, middle move, right rotate\n \u2022 2 = left move, middle rotate, right zoom\n \u2022 3 = left zoom, middle rotate, right move\n \u2022 4 = left move, middle zoom, right rotate\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1002 / 1279\n \n \u2022 5 = left rotate, middle zoom, right move\n \u2022 6 = left move, middle zoom, right zoom\n Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines.\n There a couple ways to directly control the widget using Python.\n@@ -45260,15 +45260,15 @@\n \u2022 If you set all the plotting options false but show_offsets true you get an offsets page instead of\n a graphics plot.\n \u2022 If you get the zoom distance before changing the view then reset the zoom distance, it\u2019s much\n more user friendly.\n \u2022 if you select an element in the preview, the selected element will be used as rotation center\n point\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.44: Gremlin Example\n \n 12.3.6.20 HAL_Offset\n The HAL_Offset widget is used to display the offset of a single axis.\n HAL_Offset has the following properties:\n Joint Number\n@@ -45303,15 +45303,15 @@\n The DRO widget is used to display the current axis position.\n It has the following properties:\n Actual Position\n select actual (feedback) position or commanded position.\n \n 1003 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1004 / 1279\n \n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n@@ -45351,15 +45351,15 @@\n 12.3.6.22 Combi_DRO widget\n The Combi_DRO widget is used to display the current, the relative axis position and the distance to go\n in one DRO.\n By clicking on the DRO the Order of the DRO will toggle around.\n In Relative Mode the actual coordinate system will be displayed.\n Combi_DRO has the following properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1005 / 1279\n \n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis vrs. joint number are:\n 0:X\n@@ -45408,15 +45408,15 @@\n toggle_readout\n A left mouse click will toggle the DRO readout through the different modes [\u201dRel\u201d, \u201dAbs\u201d, \u201dDTG\u201d].\n By unchecking the box you can disable that behavior. The toggling can still be done with [widget\n name].toggle_readout().\n Value must be boolean.\n Default is TRUE.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1006 / 1279\n \n cycle_time\n The time the DRO waits between two polls.\n this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis\n config, to avoid, that the DRO slows down the main application too much.\n@@ -45457,15 +45457,15 @@\n \u2013 [\u201dAbs\u201d, \u201dDTG\u201d, \u201dRel\u201d]\n \u2022 [widget name].get_position()\n Returns the position of the DRO as a list of floats.\n The order is independent of the order shown on the DRO and will be given as [Absolute , relative\n , DTG].\n \u2013 Absolute = the machine coordinates, depends on the actual property will give actual or commanded position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1007 / 1279\n \n \u2013 Relative = will be the coordinates of the actual coordinate system.\n \u2013 DTG = the distance to go.\n Will mostly be 0, as this function should not be used while the machine is moving, because of time\n delays.\n@@ -45500,15 +45500,15 @@\n \u2022 [widget name].system\n The actual system, as mentioned in the system_changed signal.\n \u2022 [widget name].homed\n True if the joint is homed.\n \u2022 [widget name].machine_units\n 0 if Imperial, 1 if Metric.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1008 / 1279\n \n Figure 12.45: Example: Three Combi_DRO in a window\n X = Relative Mode\n Y = Absolute Mode\n Z = DTG Mode\n@@ -45533,15 +45533,15 @@\n Sets the file filter for the objects to be shown.\n Must be a string containing a comma separated list of extensions to be shown.\n Default is \u201dngc,py\u201d.\n sortorder\n Sets the sorting order of the displayed icon.\n Must be an integer value from 0 to 3, where:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1009 / 1279\n \n \u2022 0 = ASCENDING (sorted according to file names)\n \u2022 1 = DESCENDING (sorted according to file names)\n \u2022 2 = FOLDERFIRST (show the folders first, then the files), default\n \u2022 3 = FILEFIRST (show the files first, then the folders)\n@@ -45585,15 +45585,15 @@\n [widget name].btn_sel_next.emit(\u201dclicked\u201d)\n [widget name].btn_get_selected.emit(\u201dclicked\u201d)\n [widget name].btn_dir_up.emit(\u201dclicked\u201d)\n [widget name].btn_exit.emit(\u201dclicked\u201d)\n \n The widget will emit the following signals:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1010 / 1279\n \n \u2022 selected\n This signal is emitted when the user selects an icon.\n It will return a string containing a file path if a file has been selected, or None if a directory has been\n selected.\n@@ -45608,15 +45608,15 @@\n \u2013 state is a boolean and will be True or False.\n \u2022 exit\n This signal is emitted when the exit button has been pressed to close the IconView.\n Mostly needed if the application is started as stand alone.\n \n Figure 12.46: Iconview Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1011 / 1279\n \n 12.3.6.24 Calculator widget\n This is a simple calculator widget, that can be used for numerical input.\n You can preset the display and retrieve the result or that preset value.\n calculator has the following properties:\n@@ -45649,15 +45649,15 @@\n \n tooleditor has the following properties:\n Hidden Columns\n This will hide the given columns.\n The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q.\n You can hide any number of columns including the select and comments.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1012 / 1279\n \n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n [widget name].set_properties(\u2019hide_columns\u2019,\u2019uvwijq\u2019)\n \n@@ -45696,15 +45696,15 @@\n Convenience method to hide buttons.\n You must call this after show_all().\n \u2022 [widget name].get_selected_tool()\n Return the user selected (highlighted) tool number.\n \u2022 [widget name].set_selected_tool(toolnumber)\n Selects (highlights) the requested tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1013 / 1279\n \n Figure 12.47: Tooleditor Example\n \n 12.3.6.26 Offsetpage\n The Offsetpage widget is used to display/edit the offsets of all the axes.\n@@ -45729,15 +45729,15 @@\n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1014 / 1279\n \n [widget name].set_property(\u201dhighlight_color\u201d,gdk.Color(\u2019blue\u2019))\n [widget name].set_property(\u201dforeground_color\u201d,gdk.Color(\u2019black\u2019))\n [widget name].set_property(\u201dhide_columns\u201d,\u201dxyzabcuvwt\u201d)\n [widget name].set_property(\u201dhide_rows\u201d,\u201d123456789abc\u201d)\n@@ -45763,15 +45763,15 @@\n This is a list of a list of offset-name/user-name pairs.\n The default text is the same as the offset name.\n \u2022 [widget name].get_names()\n This returns a list of a list of row-keyword/user-name pairs.\n The user name column is editable, so saving this list is user friendly.\n See set_names above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1015 / 1279\n \n Figure 12.48: Offsetpage Example\n \n 12.3.6.27 HAL_sourceview widget\n \n@@ -45792,15 +45792,15 @@\n Sets the line to highlight.\n Uses the sourceview line numbers.\n \u2022 [widget name].get_line_number()\n Returns the currently highlighted line.\n \u2022 [widget name].line_up()\n Moves the highlighted line up one line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1016 / 1279\n \n \u2022 [widget name].line_down()\n Moves the highlighted line down one line.\n \u2022 [widget name].load_file(\u2019filename\u2019)\n Loads a file.\n@@ -45822,15 +45822,15 @@\n use_double_click\n Boolean, True enables the mouse double click feature and a double click on an entry will submit\n that command.\n It is not recommended to use this feature on real machines, as a double click on a wrong entry\n may cause dangerous situations\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1017 / 1279\n \n [widget name].set_property(\u201dfont_size_tree\u201d,10)\n [widget name].set_property(\u201dfont_size_entry\u201d,20)\n [widget name].set_property(\u201duse_double_click\u201d,False)\n \n@@ -45843,15 +45843,15 @@\n \n Figure 12.50: HAL widgets in a bitmap Example\n \n 12.3.7 Action Widgets Reference\n GladeVCP includes a collection of \u201dcanned actions\u201d called VCP Action Widgets for the Glade user\n interface editor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1018 / 1279\n \n Note\n Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the\n G-code interpreter.\n \n@@ -45875,15 +45875,15 @@\n The command string may use special keywords to access important functions.\n \u2022 ACTION for access to the ACTION command library.\n \u2022 GSTAT for access to the Gstat status message library.\n \u2022 INFO for access to collected data from the INI file.\n \u2022 HAL for access to the HAL linuxcnc Python module\n \u2022 STAT for access to LinuxCNC\u2019s raw status via the LinuxCNC Python module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1019 / 1279\n \n \u2022 CMD for access to LinuxCNC\u2019s commands via the LinuxCNC Python module.\n \u2022 EXT for access to the handler file functions if available.\n \u2022 linuxcnc for access to the LinuxCNC Python module.\n \u2022 self for access to the widget instance.\n@@ -45917,15 +45917,15 @@\n that the requested operation is running:\n \u2022 The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is\n idle again.\n \u2022 The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then\n allows user to send AUTO_ABORT command.\n \u2022 The MDI toggle sends given MDI command and waits for its completion in pressed inactive state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1020 / 1279\n \n 12.3.7.4 The Action_MDI Toggle and Action_MDI widgets\n These widgets provide a means to execute arbitrary MDI commands.\n The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which\n remains disabled until command complete.\n@@ -45944,15 +45944,15 @@\n 12.3.7.6 Parameter passing with Action_MDI and ToggleAction_MDI widgets\n 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\n works:\n \u2022 assume you have a HAL SpinBox named speed, and you want to pass it\u2019s current value as a parameter in an MDI command.\n \u2022 The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description).\n \u2022 To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name}\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1021 / 1279\n \n \u2022 for the above HAL SpinBox, we could use (MSG, \u201dThe speed is: ${speed-f}\u201d) just to show what\u2019s\n happening.\n The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here\u2019s what you\n get when running it:\n@@ -45968,15 +45968,15 @@\n Figure 12.54: Action_MDI Advanced Example\n \n 12.3.7.8 Preparing for an MDI Action, and cleaning up afterwards\n 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\n might get changed by the command or subroutine - for example, a probing subroutine will very likely\n set the feed value quite low. With no further precautions, your previous feed setting will be overwritten by the probing subroutine\u2019s value.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1022 / 1279\n \n 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\n any state before executing the MDI Action, and to restore it to previous values afterwards. The signal\n names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade like\n any other handler.\n@@ -46013,15 +46013,15 @@\n \u2022 mode-related:\n \u2013 mode-manual: emitted when LinuxCNC enters manual mode,\n \u2013 mode-mdi: emitted when LinuxCNC enters MDI mode,\n \u2013 mode-auto: emitted when LinuxCNC enters automatic mode,\n \u2022 interpreter-related: emitted when the G-code interpreter changes into that mode\n \u2013 interp-run\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1023 / 1279\n \n \u2013 interp-idle\n \u2013 interp-paused\n \u2013 interp-reading\n \u2013 interp-waiting\n@@ -46060,15 +46060,15 @@\n print(INFO.MACHINE_IS_METRIC)\n ACTION.SET_ERROR_MESSAGE(\u2019Something went wrong\u2019)\n \n More information can be found here: GladeVCP Libraries modules There is a sample configuration\n that demonstrates using the core library with GladeVCP\u2019s action Python widgets and with a Python\n handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1024 / 1279\n \n 12.3.8.3 An example: adding custom user callbacks in Python\n This is just a minimal example to convey the idea - details are laid out in the rest of this section.\n GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in\n Python. This could be used, among others, to execute MDI commands. Here\u2019s how you do it:\n@@ -46103,15 +46103,15 @@\n The overall approach is as follows:\n \u2022 Design your UI with Glade, and set signal handlers where you want actions associated with a widget.\n \u2022 Write a Python module which contains callable objects (see handler models below).\n \u2022 Pass your module\u2019s path name to GladeVCP with the -u option.\n \u2022 GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree.\n \u2022 The main event loop is run.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1025 / 1279\n \n For simple tasks it\u2019s sufficient to define functions named after the Glade signal handlers. These will be\n called when the corresponding event happens in the widget tree. Here\u2019s a trivial example - it assumes\n that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press:\n nhits = 0\n@@ -46157,15 +46157,15 @@\n self.active = False\n # connect to client-events from the host GUI\n def on_map_event(self, widget, data=None):\n top = widget.get_toplevel()\n print(\u201dmap event\u201d)\n top.connect(\u2019client-event\u2019, self.event)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1026 / 1279\n \n If during module inspection GladeVCP finds a function get_handlers, it calls it as follows:\n get_handlers(halcomp,builder,useropts)\n \n The arguments are:\n@@ -46200,15 +46200,15 @@\n screen). And the HAL component isn\u2019t ready as well, so its unsafe to access pins values in your\n __init__() method.\n If you want to have a callback to execute at program start after it is safe to access HAL pins, then a\n connect a handler to the realize signal of the top level window1 (which might be its only real purpose).\n At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about\n to enter the Gtk main loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1027 / 1279\n \n 12.3.8.7 Multiple callbacks with the same name\n Within a class, method names must be unique. However, it is OK to have multiple class instances\n passed to GladeVCP by get_handlers() with identically named methods. When the corresponding\n signal occurs, these methods will be called in definition order - module by module, and within a module,\n@@ -46248,15 +46248,15 @@\n are saved and to be restored. In the case of signature mismatch, a new INI file with default settings\n is generated.\n 12.3.8.10 Using persistent variables\n If you want any of Gtk widget state, HAL widgets output pin\u2019s values and/or class attributes of your\n handler class to be retained across invocations, proceed as follows:\n \u2022 Import the gladevcp.persistence module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1028 / 1279\n \n \u2022 Decide which instance attributes, and their default values you want to have retained, if any.\n \u2022 Decide which widgets should have their state retained.\n \u2022 Describe these decisions in your handler class\u2019 \\__init()__ method through a nested dictionary\n as follows:\n@@ -46297,15 +46297,15 @@\n ini.restore_state(obj)\n Restore HAL out pins and obj\u2019s attributes as saved/initialized to default as above.\n 12.3.8.11 Saving the state on GladeVCP shutdown\n To save the widget and/or variable state on exit, proceed as follows:\n \u2022 Select some interior widget (type is not important, for instance a table).\n \u2022 In the Signals tab, select GtkObject. It should show a destroy signal in the first column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1029 / 1279\n \n \u2022 Add the handler name, e.g. on_destroy to the second column.\n \u2022 Add a Python handler like below:\n import gtk\n ...\n@@ -46344,15 +46344,15 @@\n 12.3.8.14 Adding HAL pins\n If you need HAL pins which are not associated with a specific HAL widget, add them as follows:\n import hal_glib\n ...\n # in your handler class __init__():\n self.example_trigger = hal_glib.GPin(halcomp.newpin(\u2019example-trigger\u2019, hal.HAL_BIT, hal. \u2190HAL_IN))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1030 / 1279\n \n To get a callback when this pin\u2019s value changes, associate a value-change callback with this pin, add:\n self.example_trigger.connect(\u2019value-changed\u2019, self._on_example_trigger_change)\n \n and define a callback method (or function, in this case leave out the self parameter):\n@@ -46394,15 +46394,15 @@\n self.max_value = hal_glib.GPin(halcomp.newpin(\u2019max-value\u2019, hal.HAL_FLOAT, hal. \u2190HAL_IN))\n self.max_value.connect(\u2019value-changed\u2019, self._on_max_value_change)\n inifile = linuxcnc.ini(os.getenv(\u201dINI_FILE_NAME\u201d))\n mmin = float(inifile.find(\u201dMETER\u201d, \u201dMIN\u201d) or 0.0)\n self.meter = self.builder.get_object(\u2019meter\u2019)\n self.meter.min = mmin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1031 / 1279\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17 Examples, and rolling your own GladeVCP application\n@@ -46438,15 +46438,15 @@\n that works fine. It doesn\u2019t work for window1.\n 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value\n 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\n 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\n but is otherwise invisible - see the coloredlabel.ui file.\n 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero?\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1032 / 1279\n \n This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely\n to be the case for all widgets using adjustment. The workaround mentioned for instance in\n http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin\n value, it is better to set it explicitly in an on_realize signal handler during widget creation. See\n@@ -46487,15 +46487,15 @@\n 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\n items reported by the script linuxcnc_var:\n $ linuxcnc_var LINUXCNC_AUX_GLADEVCP\n /usr/share/linuxcnc/aux_gladevcp\n $ linuxcnc_var LINUXCNC_AUX_EXAMPLES\n /usr/share/linuxcnc/aux_examples\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1033 / 1279\n \n 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\n is imported at GladeVCP startup and made available to subsequent GladeVCP applications including\n embedded usage in supporting GUIs.\n 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\n@@ -46533,15 +46533,15 @@\n MACRO_PATH_LIST = []\n INI_MACROS = self.INI.findall(\u201dDISPLAY\u201d, \u201dMACRO\u201d)\n IMAGE_PATH = IMAGEDIR\n LIB_PATH = os.path.join(HOME, \u201dshare\u201d,\u201dqtvcp\u201d)\n PROGRAM_FILTERS = None\n PARAMETER_FILE = None\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n MACHINE_IS_LATHE = False\n MACHINE_IS_METRIC = False\n MACHINE_UNIT_CONVERSION = 1\n MACHINE_UNIT_CONVERSION_9 = [1]*9\n TRAJ_COORDINATES =\n JOINT_COUNT = int(self.INI.find(\u201dKINS\u201d,\u201dJOINTS\u201d)or 0)\n@@ -46594,15 +46594,15 @@\n (heading: [EMCIO], title:TOOL_TABLE)\n (heading: [HAL], title: POSTGUI_HALFILE)\n \n There are some helper functions - mostly used for widget support\n \n 1034 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1035 / 1279\n \n get_error_safe_setting(self, heading, detail, default=None)\n convert_metric_to_machine(data)\n convert_imperial_to_machine(data)\n convert_9_metric_to_machine(data)\n@@ -46645,15 +46645,15 @@\n ACTION = Action()\n \n To access Action commands use general syntax such as these:\n ACTION.SET_ESTOP_STATE(state)\n ACTION.SET_MACHINE_STATE(state)\n ACTION.SET_MACHINE_HOMING(joint)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SET_MACHINE_UNHOMED(joint)\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.SET_MDI_MODE()\n ACTION.SET_MANUAL_MODE()\n ACTION.SET_AUTO_MODE()\n ACTION.SET_LIMITS_OVERRIDE()\n@@ -46694,15 +46694,15 @@\n ACTION.SET_FLOOD_OFF()\n ACTION.TOGGLE_MIST()\n ACTION.SET_MIST_ON()\n ACTION.SET_MIST_OFF()\n \n 1036 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1037 / 1279\n \n ACTION.RELOAD_TOOLTABLE()\n ACTION.UPDATE_VAR_FILE()\n ACTION.TOGGLE_OPTIONAL_STOP()\n ACTION.SET_OPTIONAL_STOP_ON()\n@@ -46728,60 +46728,60 @@\n to create a GUI screen for running a CNC machine.\n QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python\n code for even finer grain customization.\n \n 12.5.1 Showcase\n Few examples of QtVCP built screens and virtual control panels:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.55: QtDragon - 3/4-Axis Sample\n \n 1038 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.56: QtDefault - 3-Axis Sample\n \n 1039 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1040 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.58: Blender - 4-Axis Sample\n \n 1041 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.59: X1mill - 4-Axis Sample\n \n 1042 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.60: cam_align - Camera Alignment VCP\n \n 1043 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.61: test_panel - Test Panel VCP\n \n 12.5.2 Overview\n Two files are used, individually or in combination, to add customizations:\n \n 1044 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1045 / 1279\n \n \u2022 A UI file that is a XML file made with Qt Designer graphical editor.\n \u2022 A handler file which is a Python code text file.\n Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and\n handler files.\n@@ -46814,15 +46814,15 @@\n \n Options\n \u2022 -d Debugging on.\n \u2022 -i Enable info output.\n \u2022 -v Enable verbose debug output.\n \u2022 -q Enable only error debug output.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1046 / 1279\n \n \u2022 -a Set window always on top.\n \u2022 -c NAME HAL component name. Default is to use the UI file name.\n \u2022 -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\n -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100\n@@ -46858,15 +46858,15 @@\n 12.5.2.4 Handler Files\n A handler file is a file containing Python code, which adds to QtVCP default routines.\n A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify\n QtVCP\u2019s core code. In this way you can have custom behaviors.\n If present a handler file will be loaded.\n Only one file is allowed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1047 / 1279\n \n 12.5.2.5 Libraries Modules\n QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt\n behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install).\n Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what\n@@ -46896,15 +46896,15 @@\n QtVCP will look for a folder named (in the launched configuration folder that holds\n the INI file).\n In that folder, QtVCP will load any of the available following files:\n \u2022 .ui,\n \u2022 _handler.py, and\n \u2022 .qss.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1048 / 1279\n \n 12.5.2.8 Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Minor StyleSheet Changes Stylesheets can be used to set Qt properties.\n If a widget uses properties they usually can be modified by stylesheets.\n@@ -46944,46 +46944,46 @@\n basename in the edit box.\n \u2022 Validate to copy all the files\n \u2022 Delete the files you don\u2019t wish to modifyso that the original files will be used.\n \n 12.5.3 VCP Panels\n QtVCP can be used to create control panels that interface with HAL.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1049 / 1279\n \n 12.5.3.1 Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n Figure 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.63: cam_align - Camera Alignment VCP\n sim_panel\n A small control panel to simulate MPG jogging controls etc.\n For simulated configurations.\n \n 1050 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.64: QtVCP Sim Builtin Panel\n vismach_mill_xyz\n 3D openGL view of a 3-Axis milling machine.\n \n 1051 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1052 / 1279\n \n Figure 12.65: QtVismach - 3-Axis Mill Builtin Panel\n You can load these from the terminal or from a HAL file with this basic command:\n loadusr qtvcp test_panel\n \n@@ -46992,15 +46992,15 @@\n \n In this way HAL will wait till the HAL pins are made before continuing on.\n 12.5.3.2 Custom Panels\n You can of course make your own panel and load it.\n If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load\n this from a terminal with:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1053 / 1279\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -47049,15 +47049,15 @@\n 1\n \n In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing\n to run the next HAL command.\n This is to ensure that the panel created HAL pins are actually done in case they are used in the\n rest of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1054 / 1279\n \n 12.5.4 Build A Simple Clean-sheet Custom Screen\n \n Figure 12.66: QtVCP Ugly custom screen\n 12.5.4.1 Overview\n@@ -47073,15 +47073,15 @@\n \n Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the\n qtvcp_plugin.py in one of the folders that Qt Designer will search into.\n In a RIP version of LinuxCNC qtvcp_plugin.py will be:\n \u2019~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py\u2019\n For a Package installed version it should be:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1055 / 1279\n \n \u2019usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py\u2019 or\n \u2019usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py\u2019\n Make a symbolic link to the above file and move it to one of the places Qt Designer searches in.\n Qt Designer searches in these two place for links (pick one):\n@@ -47117,15 +47117,15 @@\n \n We are going to make this window a specific non resizeable size:\n Set MainWindow Minimum and Maximum Size\n \u2022 Grab the corner of the window and resize to an appropriate size, say 1000x600.\n \u2022 Right click on the window and click set minimum size.\n \u2022 Do it again and set maximum size.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1056 / 1279\n \n Our sample widget will now not be resizable.\n Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main\n window.\n This widget doesn\u2019t add anything visually but sets up some common options.\n@@ -47159,28 +47159,28 @@\n \u2022 Click the machine_on action checkbox you will see in the list of properties and values.\n The button will now control machine on/off.\n Do the same for all the other button with the addition of:\n \u2022 With the Home button we must also change the joint_number property to -1.\n This tells the controller to home all the axes rather then a specific axis.\n \u2022 With the Pause button:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2013 Under the Indicated_PushButton heading check the indicator_option.\n \u2013 Under the QAbstactButton heading check checkable.\n \n 1057 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1058 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1059 / 1279\n \n Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder.\n We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler\n file to display it.\n 12.5.4.4 Handler file\n@@ -47213,15 +47213,15 @@\n \u2022 after the screen is built,\n \u2022 after all the POSTGUI_HALFILEs are run.\n In our example there are no HAL pins to connect.\n \n 12.5.5 Handler File In Detail\n Handler files are used to create custom controls using Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.5.5.1 Overview\n Here is a sample handler file.\n It\u2019s broken up in sections for ease of discussion.\n ############################\n # **** IMPORT SECTION **** #\n ############################\n@@ -47268,15 +47268,15 @@\n def initialized__(self):\n pass\n def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl):\n # when typing in MDI, we don\u2019t want keybinding to call functions\n \n 1060 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1061 / 1279\n \n # so we catch and process the events directly.\n # We do want ESC, F1 and F2 to call keybinding functions though\n if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2,\n QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5):\n@@ -47327,15 +47327,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # keyboard jogging from key binding calls\n # double the rate if fast is true\n def kb_jog(self, state, joint, direction, fast = False, linear = True):\n if not STATUS.is_man_mode() or not STATUS.machine_is_on():\n return\n if linear:\n@@ -47384,15 +47384,15 @@\n def on_keycall_ZPOS(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, 1, shift)\n def on_keycall_ZNEG(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, -1, shift)\n \n 1062 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1063 / 1279\n \n def on_keycall_APOS(self,event,state,shift,cntrl):\n pass\n #self.kb_jog(state, 3, 1, shift, False)\n def on_keycall_ANEG(self,event,state,shift,cntrl):\n@@ -47427,15 +47427,15 @@\n 12.5.5.5 INITIALIZE Section\n Like all Python libraries the +__init__+ function is called when the library is first instantiated.\n This is where you would set up defaults, as well as reference variables and global variables.\n The widget references are not available at this point.\n The variables halcomp, widgets and paths give access to QtVCP\u2019s HAL component, widgets, and path\n info respectively.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1064 / 1279\n \n 12.5.5.6 SPECIAL FUNCTIONS Section\n There are several special functions that QtVCP looks for in the handler file.\n If QtVCP finds these it will call them, if not it will silently ignore them.\n initialized__(self):\n@@ -47469,15 +47469,15 @@\n The Linux system will not shutdown if using this function, you will have to do that yourself.\n QtVCP/LinuxCNC will terminate without a prompt once this function returns.\n closing_cleanup__(self):\n This function is called just before the screen closes. It can be used to do cleanup before closing.\n 12.5.5.7 STATUS CALLBACKS Section\n By convention this is where you would put functions that are callbacks from STATUS definitions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1065 / 1279\n \n 12.5.5.8 CALLBACKS FROM FORM Section\n By convention this is where you would put functions that are callbacks from the widgets connected\n to the MainWindow in the Qt Designer editor.\n 12.5.5.9 GENERAL FUNCTIONS Section\n@@ -47508,15 +47508,15 @@\n 12.5.6.1 Overview\n In the Qt Designer editor:\n \u2022 You create user function slots\n \u2022 You connect the slots to widgets using signals.\n In the handler file:\n \u2022 You create the slot\u2019s functions defined in Qt Designer.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1066 / 1279\n \n 12.5.6.2 Using Qt Designer to add Slots\n When you have loaded your screen into Qt Designer, add a plain PushButton to the screen.\n You could change the name of the button to something interesting like test_button.\n There are two ways to edit connections - This is the graphical way.\n@@ -47532,15 +47532,15 @@\n \u2022 You can now edit a new slot name.\n \u2022 Erase the default name slot() and change it to test_button()\n \u2022 Press the OK button.\n \u2022 You\u2019ll be back to the Configure Connections dialog.\n \u2022 Now you can select your new slot in the slot list.\n \u2022 Then press OK and save the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1067 / 1279\n \n Figure 12.68: Qt Designer Signal/Slot Selection\n \n 12.5.6.3 Python Handler Changes\n Now you must add the function to the handler file.\n@@ -47557,15 +47557,15 @@\n \n In fact it doesn\u2019t matter where in the handler class you put the commands but by convention this is\n where to put it.\n Save the handler file.\n Now when you load your screen and press the button it should print the name of the button in the\n terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1068 / 1279\n \n 12.5.7 More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -47582,28 +47582,28 @@\n In a terminal type qtvcp list to see a list.\n 12.6.1.1 copy\n Used for copying QtVCP\u2019s builtin Screens/VCP Panels/QtVismach code to a folder so one can\n customize it.\n In a terminal run:\n qtvcp copy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1069 / 1279\n \n Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 test_dial\n \u2022 This panel has a dial that adjusts S32 and Float HAL output pins.\n \u2022 The dial\u2019s range can be adjusted from a drop down menu.\n \u2022 The output can be scaled with the spinbox.\n \u2022 A combobox can be used to automatically select and connect to a signal.\n loadusr qtvcp test_dial\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n 12.6.1.3 test_button\n \u2022 This panel has a button that will set a HAL pin.\n \u2022 The button can be selected as a momentary or a toggle button.\n \u2022 The button\u2019s indicator color can be adjusted from a drop down menu.\n@@ -47618,15 +47618,15 @@\n The -o switch sets how many buttons the panel starts with.\n If loading directly from a terminal omit the loadusr.\n \n Figure 12.71: QtVCP test_button - Test Button VCP\n \n 1070 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1071 / 1279\n \n 12.6.1.4 test_led\n \u2022 This panel has an LED that can selected to watch HAL bit pins/signals.\n \u2022 The LED\u2019s color can be adjusted from a drop down menu.\n \u2022 The text box and state can be output as speech if sound is selected.\n@@ -47642,24 +47642,24 @@\n \n Figure 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.5 test_panel\n Collection of useful widgets for testing HAL component, including speech of LED state.\n loadusr qtvcp test_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.6 cam_align\n A camera display widget for rotational alignment.\n \n 1072 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1073 / 1279\n \n Figure 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel\n Usage Add these lines to the INI file:\n [DISPLAY]\n EMBED_TAB_NAME = cam_align\n@@ -47673,15 +47673,15 @@\n You can add window width and height size, rotation increment, and camera number from the INI with\n -o options.\n EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size \u2190=400,400 -o rotincr=.2 -o camnumber=0 cam_align\n \n Mouse controls:\n \u2022 left mouse single click - increase cross hair rotation one increment\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1074 / 1279\n \n \u2022 right mouse single click - decrease cross hair rotation one increment\n \u2022 middle mouse single click - cycle through rotation increments\n \u2022 left mouse hold and scroll - scroll camera zoom\n \u2022 right mouse hold and scroll - scroll cross hair rotation angle\n@@ -47699,83 +47699,83 @@\n Note the comma and text after is optional - it will override the default button text.\n These buttons are QtVCP action buttons and follow those rules.\n 12.6.1.7 sim_panel\n Small control panel to simulate MPG jogging controls etc.\n For simulated configurations\n loadusr qtvcp sim_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1075 / 1279\n \n Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.8 tool_dialog\n Manual tool change dialog that gives tool description.\n loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog\n \n Options:\n \u2022 -o notify_on - use desktop notify dialogs instead of QtVCP native ones.\n \u2022 -o audio_on - play sound on tool change\n \u2022 -o speak_on - speak announcement of tool change\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.76: QtVCP tool_dialog - Manual Tool Change Dialog\n \n 12.6.2 vismach 3D Simulation Panels\n These panels are prebuilt simulation of common machine types.\n These are also embed-able in other screens such as AXIS or GMOCCAPY.\n 12.6.2.1 QtVCP vismach_mill_xyz\n 3D OpenGL view of a 3-Axis milling machine.\n loadusr qtvcp vismach_mill_xyz\n \n 1076 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2 QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n 1077 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_millturn\n 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle.\n loadusr qtvcp vismach_millturn\n \n 1078 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.4 QtVCP vismach_mill_5axis_gantry\n 3D OpenGL view of a 5-Axis gantry type milling machine.\n loadusr qtvcp vismach_mill_5axis_gantry\n \n 1079 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1080 / 1279\n \n Figure 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.5 QtVCP vismach_fanuc_200f\n 3D openGL view of a 6 joint robotic arm.\n loadusr qtvcp vismach_fanuc_200f\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1081 / 1279\n \n Figure 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm\n \n 12.6.3 Custom Virtual Control Panels\n You can of course make your own panel and load it.\n@@ -47803,15 +47803,15 @@\n # connect pins\n net bit-input1\n \n test_panel.checkbox_1\n \n classicladder.0.in-00\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n net bit-hide\n \n test_panel.checkbox_4\n \n classicladder.0.hide_gui\n \n@@ -47861,15 +47861,15 @@\n Allows one to embed a program into the widget.\n Only programs that utilize the xembed protocol will work such as:\n \u2022 GladeVCP virtual control panels\n \u2022 Onboard virtual keyboard\n \u2022 QtVCP virtual control panels\n \u2022 mplayer video player\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1083 / 1279\n \n 12.7.1.2 Slider - HAL Pin Value Adjusting Widget\n Allows one to adjust a HAL pin value using a sliding pointer.\n 12.7.1.3 LED - Indicator Widget\n \n@@ -47899,15 +47899,15 @@\n qproperty-flashRate: 150;\n }\n \n 12.7.1.4 CheckBox Widget\n This widget allows the user to check a box to set a HAL pin true or false.\n It is based on PyQt\u2019s QCheckButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1084 / 1279\n \n 12.7.1.5 RadioButton Widget\n This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group\n can be true at a time.\n It is based on PyQt\u2019s QRadioButton.\n@@ -47928,15 +47928,15 @@\n In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings\n on the gauge face.\n It should be set to a number that ensures the text readings around the gauge face are readable.\n The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to\n the threshold point.\n It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1085 / 1279\n \n minimum reading, which is 0.\n It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge.\n threshold:: The threshold is the transition point between the zones.\n It should be set to a value between 0 and the maximum value.\n@@ -47954,15 +47954,15 @@\n to a value between 0 and the maximum value.\n 12.7.1.7 HALPad - HAL Buttons Joypad\n \n Figure 12.84: QtVCP HALPad: HAL Buttons Joypad\n This widget looks and acts like a 5 buttons D-pad, with an LED ring.\n Each button has an selectable type (Bit, S32 or Float) output HAL pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1086 / 1279\n \n The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin.\n HALPad ENUMS There are enumerated constants used:\n \u2022 To reference indicator positions:\n \u2013 NONE\n@@ -48000,15 +48000,15 @@\n left_text , right_text , center_text , top_text , bottom_text\n A text string to be displayed in the described button location.\n If left blank an image can be designated to be displayed.\n true_color , false_color\n Color selection for the center LED ring to be displayed when the .light.center HAL\n pin is True or False.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1087 / 1279\n \n text_color\n Color selection for the button text.\n text_font\n Font selection for the button text.\n@@ -48023,15 +48023,15 @@\n As an option it can be a toggle button.\n For a LED Indicator Option, see Section 12.7.5.1[IndicatedPushButton] below for more info.\n It also has other options.\n It is based on PyQt\u2019s QPushButton.\n 12.7.1.9 focusOverlay - Focus Overlay Widget\n This widget places a colored overlay over the screen, usually while a dialog is showing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.85: Focus overlay example for confirm close prompt\n Used to create a focused feel and to draw attention to critical information.\n It can also show a translucent image.\n It can also display message text and buttons.\n This widget can be controlled with STATUS messages.\n 12.7.1.10 gridLayout - Grid Layout Widget\n@@ -48039,15 +48039,15 @@\n Disabled widgets typically have a different color and do not respond to actions.\n It is based on PyQt\u2019s QGridLayout.\n 12.7.1.11 hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1088 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1089 / 1279\n \n Values can be sent from:\n \u2022 HAL pins\n The input pin can be selected as Bit, S32, Float or no pin selected\n \u2022 Programmatically\n@@ -48082,15 +48082,15 @@\n When using floats you can set a formatting string.\n You must set the digitCount property to an appropriate setting to display the largest number.\n Properties\n pin_name\n Option string to be used as the HAL pin name.\n If set to an empty string the widget name will be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1090 / 1279\n \n bit_pin_type\n Selects the input pin as type BIT.\n s32_pin_type\n Selects the input pin as type S32.\n@@ -48121,15 +48121,15 @@\n a large view of a widget and a smaller multi widget view.\n It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it\n in its page with a different layout than it originally had.\n The original widget must be in a layout for switcher to put it back.\n In Qt Designer you will:\n \u2022 Add the WidgetSwitcher widget on screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1091 / 1279\n \n \u2022 Right click the WidgetSwitcher and add a page.\n \u2022 Populate it with the widgets/layouts you wish to see in a default form.\n \u2022 Add as many pages as there are views to switch to.\n \u2022 On each page, add a layout widget.\n@@ -48162,15 +48162,15 @@\n Estop , Machine On , Auto , mdi , manual , run , run_from_line status\n Gets line number from STATUS message gcode-line-selected.\n run_from_line slot\n Gets line number from Qt Designer int/str slot setRunFromLine.\n abort , pause , load dialog\n Requires a dialog widget present.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1092 / 1279\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -48211,15 +48211,15 @@\n spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change\n Set view_type_string.\n limits override , flood , mist , block delete , optional stop , mdi command\n Set command_string, i.e.,calls a hard coded MDI command\n INI mdi number\n Set ini_mdi_number, i.e., calls an INI based MDI command\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1093 / 1279\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -48258,15 +48258,15 @@\n Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines.\n The commands are separated by the ;.\n The label is set after the comma, and \\n symbol adds a line break.\n [MDI_COMMAND_LIST]\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1094 / 1279\n \n Action buttons are subclassed from Section 12.7.5.1[IndicatedPushButton]. See the following sections for more information about:\n \u2022 LED Indicator option\n \u2022 Enabled on State\n \u2022 Text Changes On State\n@@ -48299,15 +48299,15 @@\n \u2022 Divide the axis by 2\n \u2022 Set the axis arbitrarily\n \u2022 Reset the axis to the last number recorded\n You select the axis by setting the joint number.\n You can select a halpin option that is set true when the axis is selected.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1095 / 1279\n \n 12.7.2.5 CamView - Workpiece Alignment and Origin Setting Widget\n This widget displays a image from a web camera.\n It overlays an adjustable circular and cross hair target over the image.\n CamView was built with precise visual positioning in mind.\n@@ -48347,15 +48347,15 @@\n Here is how you specify a particular widget by its objectName in Qt Designer:\n DROLabel #dr0_x_axis [isHomed=false] {\n color: yellow;\n }\n \n It is based on PyQt\u2019s QLabel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1096 / 1279\n \n 12.7.2.7 GcodeDisplay - G-code Text Display Widget\n This displays G-code in text form, highlighting the currently running line.\n This can also display:\n \u2022 MDI history when LinuxCNC is in MDI mode.\n@@ -48397,15 +48397,15 @@\n \u2022 styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including\n () or anything after ; (when used outside of parenthesis) with the exception of the note below)\n \u2022 styleColor2 = G-code: G and the digits after\n \u2022 styleColor3 = M-code: M and the digits after\n \u2022 styleColor4 = Axis: XYZABCUVW\n \u2022 styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1097 / 1279\n \n \u2022 styleColor6 = AxisValue: Values following XYZABCUVW\n \u2022 styleColor7 = OtherValue: Values following EFHIJKDQLRPST$\n Note\n For comments, the \u201dOtherValue\u201d color (Color 5) can be used to highlight \u201dprint,\u201d \u201ddebug,\u201d \u201dmsg,\u201d\n@@ -48418,15 +48418,15 @@\n \u201dstyle name, size, -1, 0, bold setting (0-99), italics (0-1),\n underline (0-1),0,0,0\u201d\n It is based on PyQt\u2019s QsciScintilla.\n 12.7.2.8 GcodeEditor - G-code Program Editor Widget\n This is an extension of the GcodeDisplay widget that adds editing convenience.\n It is based on PyQt\u2019s QWidget which incorporates GcodeDisplay widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1098 / 1279\n \n 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Figure 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -48442,15 +48442,15 @@\n +_dro+ (bool)\n Determines whether or not to show the DRO.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dro: False;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n +_dtg+ (bool)\n Determine whether or not to show the Distance To Go.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dtg: False;\n }\n@@ -48499,15 +48499,15 @@\n \n +_use_gradient_background+ (bool)\n Determines whether or not use a gradient background by default.\n The following shows an example of how to set this property:\n \n 1099 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1100 / 1279\n \n #gcodegraphics{\n qproperty-_use_gradient_background: False;\n }\n \n@@ -48578,15 +48578,15 @@\n Middle\n Middle\n Left\n \n Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some\n lathes and have no rotate button assigned.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Mode\n 6\n 7\n 8\n 9\n 10\n@@ -48643,15 +48643,15 @@\n \u2022 inhibit-selection-off\n \u2022 dimensions-on\n \u2022 dimensions-off\n \u2022 grid-size\n \u2022 record-view\n \u2022 set-recorded-view\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022 P\n \u2022 X\n \u2022 Y\n \u2022 Y2\n \u2022 Z\n \u2022 Z2\n@@ -48681,15 +48681,15 @@\n This will be the text set when the option is False.\n You can use Qt rich text code for different fonts/colors etc.\n Typical template for metric mode in false state, might be: Imperial Mode.\n It is based on PyQt\u2019s QLabel.\n \n 1102 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1103 / 1279\n \n 12.7.2.11 StatusLabel - Controller Variables State Label Display Widget\n This will display a label based on selectable status of the machine controller.\n You can change how the status will be displayed by substituting python formatting code in the text\n template. You can also use rich text for different fonts/colors etc.\n@@ -48728,15 +48728,15 @@\n jograte_angular_status\n Shows the current QtVCP based Angular Jog Rate.\n jogincr_status\n Shows the current QtVCP based Jog increment.\n jogincr_angular_status\n Shows the current QtVCP based Angular Jog increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1104 / 1279\n \n machine_state_status\n Shows the current machine interpreter state using the text described from the machine_state_list.\n The interpreter states are:\n \u2022 Estopped\n@@ -48775,15 +48775,15 @@\n tool_number_status\n Returns the tool number of the current loaded tool.\n tool_offset_status\n Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.).\n user_system_status\n Shows the active user coordinate system (G5x setting).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1105 / 1279\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -48812,15 +48812,15 @@\n Toggles between 2 images: axis not homed, axis homed.\n *watch_all_homed\n Would toggle between 2 images: not all homed, all homed.\n *watch_hard_limits\n Would toggle between 2 images or one per joint.\n Here is an example of using it to display an icon of Z axis homing state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1106 / 1279\n \n Figure 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher\n In the properties section notice that:\n \u2022 watch_axis_homed is checked\n \u2022 axis_letter is set to Z\n@@ -48833,15 +48833,15 @@\n \n \u2022 Right click the image name and you should see Copy path.\n \u2022 Click Copy path.\n \u2022 Now double click the image list property so the dialog shows.\n \u2022 Click the New button.\n \u2022 Paste the image path in the entry box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1107 / 1279\n \n Do that again for the next image.\n Use a clear image to represent a hidden icon.\n You can test the images display from the image list by changing the image number. In this case 0 is\n unhomed and 1 would be homed.\n@@ -48875,15 +48875,15 @@\n notify_option\n Hooking into the desktop notification bubbles for error and messages.\n notify_max_messages\n Number of messages shown on screen at one time.\n catch_close_option\n Catching the close event to pop up a \u2019are you sure\u2019 prompt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1108 / 1279\n \n close_overlay_color\n Color of transparent layer shown when quitting.\n catch_error_option\n Monitoring of the LinuxCNC error channel.\n@@ -48925,15 +48925,15 @@\n tool_overlay_color\n Color of transparent layer shown when the tool dialog is shown.\n ToolUseDesktopNotify\n Option to use desktop notify dialogs for manual tool change dialog.\n ToolFrameless\n Frameless dialogs can not be easily moved by users.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1109 / 1279\n \n fileDialog_option\n Sets up the file choosing dialog.\n file_overlay_color\n Color of transparent layer shown when the file dialog is shown.\n@@ -48971,15 +48971,15 @@\n Color of transparent layer shown when the machineLog dialog is shown.\n runFromLineDialog_option\n Sets up a dialog to display starting options when starting machine execution from a arbitrary\n line.\n runFromLine_overlay_color\n Color of transparent layer shown when the runFromLine dialog is shown.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1110 / 1279\n \n Setting Properties Programmatically The screen designer chooses the default settings of the\n screenOptions widget.\n Once chosen, most won\u2019t ever need to be changed. But if needed, some can be changed in the handler\n file or in stylesheets.\n@@ -49022,15 +49022,15 @@\n Turns all sounds on or off.\n [MCH_MSG_OPTIONS]\n mchnMsg_play_sound (bool)\n To play alert sound when dialog pops.\n mchnMsg_speak_errors (bool)\n To use Espeak to speak error messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1111 / 1279\n \n mchnMsg_speak_text (bool)\n To use Espeak to speak all other messages.\n mchnMsg_sound_type (str)\n Sound to play when messages displayed. See notes below.\n@@ -49070,15 +49070,15 @@\n \u2013 DONE\n \u2013 ATTENTION\n \u2013 RING\n \u2013 LOGIN\n \u2013 LOGOUT\n \u2013 BELL\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1112 / 1279\n \n These Sound options require python3-gst1.0 installed.\n \u2022 Audio Files\n You can also specify a file path to an arbitrary audio file.\n You can use ~ in path to substitute for the user home file path.\n@@ -49112,15 +49112,15 @@\n jograte_angular_rate\n Selects a angular jograte slider.\n max_velocity_rate\n Selects a maximum velocity rate slider.\n alertState\n String to define style change: read-only, under, over and normal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1113 / 1279\n \n alertUnder\n Sets the float value that signals the stylesheet for under warning.\n alertOver\n Sets the float value that signals the stylesheet for over warning.\n@@ -49156,15 +49156,15 @@\n diameter\n Diameter of the LED.\n color\n Color of the LED when on.\n off_color\n Color of the LED when off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1114 / 1279\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -49201,15 +49201,15 @@\n \u2022 Rapid override rate\n It is based on PyQt\u2019s QProgressBar.\n 12.7.2.19 SystemToolButton - User System Selection Widget\n This widget allows you to manually select a G5x user system by pressing and holding.\n If you don\u2019t set the button text it will automatically update to the current system.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1115 / 1279\n \n 12.7.2.20 MacroTab - Special Macros Widget\n \n Figure 12.88: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -49227,15 +49227,15 @@\n ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros\n \n MACROCOMMAND This is the first line in the O-word file.\n It is a comma separated list of text to display above an entry.\n There will be one for every variable required in the O-word function.\n If the macro does not require variables, leave it empty:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1116 / 1279\n \n ; MACROCOMMAND=\n \n MACRODEFAULTS This must be the second line in the O-word file.\n It is a comma separated list of the default values for each variable in the O-word function.\n@@ -49272,15 +49272,15 @@\n MACROOPTIONS This optional line must be the fourth line in the O-word file.\n It is a comma separated list of keyword and data:\n LOAD:yes\n Shows a load button.\n SAVE:yes\n Shows a save button.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1117 / 1279\n \n 12.7.2.21 MDILine - MDI Commands Line Entry Widget\n One can enter MDI commands here.\n A popup keyboard is available.\n Embedded Commands There are also embedded commands available from this widget.\n@@ -49317,15 +49317,15 @@\n Disconnects a pin from a signal.\n An error will result if the pin does not exist.\n Running LinuxCNC from terminal may help determine the root cause as error messages from\n hal_lib.c will be displayed there.\n \u2022 Syntax: unlinkp \n \u2022 Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1118 / 1279\n \n Note\n The MDILine function spindle_inhibit can be used by a GUI\u2019s handler file to inhibit M3, M4, and M5\n spindle commands if necessary.\n \n@@ -49337,15 +49337,15 @@\n default):\n MDI_HISTORY_FILE = \u2019~/.axis_mdi_history\u2019\n \n 12.7.2.23 MDITouchy - Touch Screen MDI Entry Widget\n \n Figure 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1119 / 1279\n \n This widget displays buttons and entry lines to use for entering MDI commands.\n Based on LinuxCNC\u2019s Touchy screen\u2019s MDI entry process, its large buttons are most useful for touch\n screens.\n To use MDITouchy:\n@@ -49384,15 +49384,15 @@\n G90\n O endsub\n \n Notice the name of the sub matches the file name and macro name exactly, including case.\n When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc\n and yinc in our example).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1120 / 1279\n \n These are passed to the macro as positional parameters: #1, #2\u2026 #N respectively.\n Parameters you leave empty are passed as value 0.\n If there are several different macros, press the Macro button repeatedly to cycle through them.\n In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0\n@@ -49405,15 +49405,15 @@\n Figure 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget\n This widget allows one to visualize and modify User System Origin offsets directly.\n It will update LinuxCNC\u2019s Parameter file for changes made or found.\n The settings can only be changed in LinuxCNC after homing and when the motion controller is idle.\n The display and entry will change between metric and imperial, based on LinuxCNC\u2019s current G20 /\n G21 setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1121 / 1279\n \n The current in-use user system will be highlighted.\n Extra actions can be integrated to manipulate settings.\n These actions depend on extra code added either to a combined widget, like originoffsetview dialog,\n or the screens handler code.\n@@ -49452,15 +49452,15 @@\n It can selectably react to:\n \u2022 Machine on\n \u2022 Interpreter idle\n \u2022 E-stop off\n \u2022 All-homed\n It is based on PyQt\u2019s QGridLayout.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.26 MachineLog - Machine Events Journal Display Widget\n FIXME MachineLog documentation\n 12.7.2.27 JointEnableWidget - FIXME\n FIXME JointEnableWidget documentation\n 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget\n This widget will display images based on LinuxCNC status.\n@@ -49469,15 +49469,15 @@\n \u2022 the state of all homed,\n \u2022 the state of a certain axis homed,\n \u2022 the state of hard limits.\n It is based on PyQt\u2019s FIXME\n \n 1122 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1123 / 1279\n \n 12.7.2.29 FileManager - File Loading Selector Widget\n \n Figure 12.91: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -49490,15 +49490,15 @@\n if temp[1]:\n print(\u2019Is a file\u2019)\n \n It is based on PyQt\u2019s FIXME\n 12.7.2.30 RadioAxisSelector - FIXME\n FIXME RadioAxisSelector documentation\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1124 / 1279\n \n 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget\n \n Figure 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget\n This widget displays and allows one to modify tools offsets.\n@@ -49522,15 +49522,15 @@\n Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or\n (if appropriate) in stylesheets:\n dialog_code_string\n Sets which dialog will pop up with numerical entry.\n test_dialog_code_string\n Sets which dialog will pop up with text entry.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1125 / 1279\n \n metric_template\n Metric numerical data format.\n imperial_template\n Imperial numerical data format.\n@@ -49559,24 +49559,24 @@\n Uncheck all selected tools.\n Example for handler file executing aforementioned functions.\n self.w.tooloffsetview.add_tool()\n self.w.tooloffsetview.delete_tools()\n toolList = self.w.tooloffsetview.get_checked_list()\n self.w.tooloffsetview.set_all_unchecked()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.32 BasicProbe - Simple Mill Probing Widget\n \n Figure 12.93: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1126 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1127 / 1279\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Figure 12.94: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -49594,15 +49594,15 @@\n \n \u2022 Add a function to call a dialog:\n This function must build a message dict to send to the dialog.\n This message will be passed back in the general message with the addition of the return variable.\n It is possible to add extra user information to the message. The dialog will ignore these and pass\n them back.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1128 / 1279\n \n NAME\n Launches code name of dialog to show.\n ID\n A unique id so we process only a dialog that we requested.\n@@ -49643,15 +49643,15 @@\n TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME\n Not implemented yet.\n FOCUSTEXT (overlay text|None)\n Text to display if focus overlay is used. Use None for no text.\n FOCUSCOLOR (QColor(_R, G, B, A_))\n Color to use if focus overlay is used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1129 / 1279\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -49661,15 +49661,15 @@\n This is used as a manual tool change prompt.\n It has HAL pins to connect to the machine controller. The pins are named the same as the original\n AXIS manual tool prompt and works the same.\n The tool change dialog can only be launched by HAL pins.\n If there is a Focus Overlay widget present, it will signal it to display.\n It is based on PyQt\u2019s QMessagebox.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1130 / 1279\n \n 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget\n \n Figure 12.96: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -49685,15 +49685,15 @@\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n }\n ACTION.CALL_DIALOG(mess)\n \n And for a save dialog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1131 / 1279\n \n mess = {\u2019NAME\u2019:\u2019SAVE\u2019,\u2019ID\u2019:\u2019_MY_DIALOG_\u2019,\n \u2019TITLE\u2019:\u2019Save Some text File\u2019,\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n@@ -49705,15 +49705,15 @@\n \n Figure 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget\n This widget allows one to modify User System origin offsets directly in a dialog form.\n If there is an Focus Overlay widget present, it will signal it to display.\n When using STATUS \u2019s request-dialog function, the default launch name is ORIGINOFFSET.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1132 / 1279\n \n 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figure 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -49733,61 +49733,61 @@\n 12.7.3.8 EntryDialog - Edit Line Dialog Widget\n This is a dialog to display an edit line for information entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is ENTRY.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1133 / 1279\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Figure 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget\n This is a dialog to display a calculator for numeric entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is CALCULATOR.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Figure 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget\n Dialog to preset spindle settings before running a program from a specific line.\n It is based on PyQt\u2019s QDialog.\n \n 1134 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1135 / 1279\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figure 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget\n This is a dialog to display a part probing screen based on Verser Probe v2.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1136 / 1279\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figure 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget\n This is a dialog to display the machine log and QtVCP\u2019s debugging log.\n It is based on PyQt\u2019s QDialog.\n \n 12.7.4 Other Widgets\n Other available widgets:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1137 / 1279\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Figure 12.103: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -49796,15 +49796,15 @@\n It is based on PyQt\u2019s QDialog.\n 12.7.4.2 JoyPad - 5 button D-pad Widget\n It is the base class for the HALPad widget.\n This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring.\n You can put text or icons in each of the button positions.\n You can connect to output signals when the buttons are pressed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1138 / 1279\n \n There are also input slots to change the color of the indicator(s).\n ENUMS There are enumerated constants used to reference indicator positions.\n They are used in Qt Designer editor\u2019s property editor or in Python code.\n NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A\n@@ -49841,15 +49841,15 @@\n The set_highlight() function must be used prior to set the indicator to use.\n Signals These signals will be sent when buttons are pressed.\n They can be connected to in Qt Designer editor or Python code.\n The first two output a string that indicates the button pressed:\n \n joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1139 / 1279\n \n They are based on PyQt\u2019s Signal (QtCore.pyqtSignal())\n Slots Slots can be connected to in Qt Designer editor or Python code:\n set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_)\n \n@@ -49885,15 +49885,15 @@\n self.w.joypadename.setProperty(\u2019true_color\u2019,\u2019green\u2019)\n self.w.joypadename.setProperty(\u2019false_color\u2019,\u2019red\u2019)\n \n 12.7.5 BaseClass/Mixin Widgets\n These widgets are used combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1140 / 1279\n \n 12.7.5.1 IndicatedPushButtons\n This class modifies QPushButton behaviour.\n indicator_option puts a LED on the top of the button.\n \n@@ -49923,15 +49923,15 @@\n \n Options IndicatedPushButton have exclusive options:\n indicator_HAL_pin_option\n Adds a halpin, named -led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1141 / 1279\n \n \u2022 Is Estopped\n \u2022 Is On\n \u2022 All Homed\n \u2022 Is Joint Homed\n@@ -49973,15 +49973,15 @@\n color: yellow;\n }\n \n Often, having the button disabled and enabled based on the state of LinuxCNC\u2019s motion controller is\n necessary.\n There are several properties that can be selected to aid with this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1142 / 1279\n \n isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen\n You can select multiple properties for combined requirements.\n Choosing the checked_state_text_option allows a checkable button to change the text based on it\u2019s\n checked state.\n@@ -50017,15 +50017,15 @@\n \n 12.7.6 Import-Only Widgets\n These widgets are usually the base class widget for other QtVCP widgets.\n They are not available directly from the Qt Designer editor but could be imported and manually\n inserted.\n They could also be subclassed to make a similar widget with new features.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1143 / 1279\n \n 12.7.6.1 Auto Height\n Widget for measuring two heights with a probe.\n For setup.\n 12.7.6.2 G-code Utility\n@@ -50048,15 +50048,15 @@\n 12.8.1 Status\n Status is a library that sends GObject messages based on LinuxCNC\u2019s current state. It is an\n extension of GladeVCP\u2019s GStat object.\n It also has some functions to report status on such things as internal jog rate.\n You connect a function call to the STATUS message you are interested in, and QtVCP will call this\n function when the message is sent from STATUS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1144 / 1279\n \n 12.8.1.1 Usage\n \u2022 Import Status modules\n Add this Python code to your import section:\n ############################\n@@ -50090,15 +50090,15 @@\n print(\u2019LinuxCNC machine is on\u2019)\n def on_state_off(self):\n print(\u2019LinuxCNC machine is off\u2019)\n \n 12.8.2 Info\n Info is a library to collect and filter data from the INI file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.2.1 Available data and defaults\n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n INI = linuxcnc.ini(INIPATH)\n MDI_HISTORY_PATH = \u2019~/.axis_mdi_history\u2019\n@@ -50146,15 +50146,15 @@\n MAX_SPINDLE_0_OVERRIDE = 100\n MIN_SPINDLE_0_OVERRIDE = 50\n MAX_FEED_OVERRIDE = 1.5\n MAX_TRAJ_VELOCITY\n \n 1145 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1146 / 1279\n \n 12.8.2.2 User message dialog info\n USRMESS_BOLDTEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_BOLDTEXT\u201d)\n USRMESS_TEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TEXT\u201d)\n USRMESS_TYPE = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TYPE\u201d)\n@@ -50198,15 +50198,15 @@\n INFO = Info()\n \n \u2022 Access INFO data Use this general syntax:\n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1147 / 1279\n \n 12.8.3 Action\n Action library is used to command LinuxCNC\u2019s motion controller.\n It tries to hide incidental details and add convenience methods for developers.\n 12.8.3.1 Helpers\n@@ -50242,15 +50242,15 @@\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.CALL_MDI(code)\n ACTION.CALL_MDI_WAIT(code)\n ACTION.CALL_INI_MDI(number)\n ACTION.CALL_OWORD()\n ACTION.OPEN_PROGRAM(filename)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SAVE_PROGRAM(text_source, fname):\n ACTION.SET_AXIS_ORIGIN(axis,value)\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n@@ -50291,15 +50291,15 @@\n ACTION.SET_BLOCK_DELETE_OFF()\n ACTION.RELOAD_DISPLAY()\n ACTION.SET_GRAPHICS_VIEW(view)\n ACTION.UPDATE_MACHINE_LOG(text, option=None):\n \n 1148 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1149 / 1279\n \n ACTION.CALL_DIALOG(command):\n ACTION.HIDE_POINTER(state):\n ACTION.PLAY_SOUND(path):\n ACTION.PLAY_ERROR():\n@@ -50334,15 +50334,15 @@\n \u2022 [0] will be real tools information\n \u2022 [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear)\n By default, adds a blank tool entry with tool number -99.\n You can preload the newtool array with tool information.\n DELETE_TOOLS(_toolnumber_)\n Delete the numbered tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1150 / 1279\n \n SAVE_TOOLFILE(_toolarray_)\n This will parse the toolarray and save it to the tool file specified in the INI file as the tool\n path.\n This tool array must contain all the available tools information.\n@@ -50378,15 +50378,15 @@\n PATH.RIPCONFIGDIR\n The Run-in-place config folder for QtVCP screens.\n PATH.BASEDIR\n Base folder for LinuxCNC.\n PATH.BASENAME\n The Qt Designer files name (no ending).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n PATH.IMAGEDIR\n The QtVCP image folder.\n PATH.SCREENDIR\n The QtVCP builtin Screen folder.\n PATH.PANELDIR\n The QtVCP builtin VCP folder.\n@@ -50419,15 +50419,15 @@\n There are some helper functions available:\n file_list = PATH.find_vismach_files()\n directory_list = PATH.find_screen_dirs()\n directory_list = PATH.find_panel_dirs()\n \n 1151 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1152 / 1279\n \n 12.8.5.3 Usage\n \u2022 Import Path module\n Add this Python code to your import section:\n ############################\n@@ -50459,15 +50459,15 @@\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n WIDGETS = VCPWindow()\n \n 12.8.7 Aux_program_loader\n Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.7.1 Helpers\n \n load_halmeter()\n Halmeter is used to display one HAL pin data.\n Load a halmeter with:\n AUX_PRGM.load_halmeter()\n@@ -50506,15 +50506,15 @@\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.lib.aux_program_loader import Aux_program_loader\n \n 1153 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1154 / 1279\n \n \u2022 Instantiate Aux_program_loader module\n Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n@@ -50553,15 +50553,15 @@\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n def initialized__(self):\n KEYBIND.add_call(\u2019Key_F10\u2019,\u2019on_keycall_F10\u2019,None)\n KEYBIND.add_call(\u2019Key_F11\u2019,\u2019on_keycall_override\u2019,10)\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_override\u2019,20)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1155 / 1279\n \n And then we need to add the functions that get called.\n In the handler file, under the KEY BINDING CALLS section, add this:\n #####################\n # KEY BINDING CALLS #\n@@ -50599,15 +50599,15 @@\n \u2022 Yes/No message - requiring the user to select yes or no buttons to close the dialog.\n Yes/No messages have three HAL pins:\n \u2013 One to show the dialog,\n \u2013 One for waiting, and\n \u2013 one for the answer.\n By default it will send STATUS messages for focus_overlay and alert sound.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1156 / 1279\n \n 12.8.9.2 Examples\n Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading:\n \u2022 Status bar and desktop notify pop up message:\n MESSAGE_BOLDTEXT = NONE\n@@ -50647,15 +50647,15 @@\n Typically STATUS messages are used to sent notify messages.\n \n 12.8.10.1 Properties\n You can set the:\n title\n Notification message title text.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1157 / 1279\n \n message\n Notification message content text.\n icon\n Notification message icon.\n@@ -50688,15 +50688,15 @@\n \u2022 READY\n \u2022 ATTENTION\n \u2022 RING\n \u2022 DONE\n \u2022 LOGIN\n \u2022 LOGOUT\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1158 / 1279\n \n Beeps There are three beeps:\n \u2022 BEEP_RING\n \u2022 BEEP_START\n \u2022 BEEP\n@@ -50731,15 +50731,15 @@\n \n 12.8.14 Toolbar Actions\n This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons.\n Toolbuttons, menu and toolbar menus are:\n \u2022 built in Qt Designer, and\n \u2022 assigned actions/submenus in the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1159 / 1279\n \n 12.8.14.1 Actions\n \n estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop\n Toggles dimensions display.\n@@ -50779,15 +50779,15 @@\n \u2022 Add a custom toolbar function:\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def my_function(self, widget, state):\n print(\u2019My function State = ()\u2019.format(state))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1160 / 1279\n \n 12.8.15 Qt Vismach Machine Graphics library\n Qt_vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach:\n \u2022 displays the model in a 3D viewport\n@@ -50817,15 +50817,15 @@\n to.\n Translate\n This object will perform an OpenGL translation calculation on a Collection object.\n Translation refers to moving an object in straight line to a different position on screen.\n Scale\n This object will perform an OpenGL scale function on a collection object.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1161 / 1279\n \n HalTranslate\n This object will perform an OpenGL translation calculation on a Collection object, offset by\n the HAL pin value.\n Translation refers to moving an object in straight line to a different position on screen.\n@@ -50866,15 +50866,15 @@\n ArcX\n Build an arc by specifying\n Box\n Build a box specified by the 6 vertex coordinates.\n BoxCentered\n Build a box centered on origin by specifying the width in X and Y, and the height in Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1162 / 1279\n \n BoxCenteredXY\n Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y,\n and running up or down to the specified height in Z.\n Capture\n@@ -50915,30 +50915,30 @@\n def initialized__(self):\n machine = MILL.Window()\n self.w.mainLayout.addWidget(machine)\n \n 12.8.15.4 More Information\n More information on how to build a custom machine simulation in the Qt Vismach chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1163 / 1279\n \n 12.9 QtVismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ .\n \n 12.9.1 Introduction\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n Figure 12.105: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1164 / 1279\n \n \u2022 zoom by scroll wheel\n \u2022 pan by middle button drag\n \u2022 rotate by right-button drag\n \u2022 tilt by left button drag\n@@ -50999,15 +50999,15 @@\n |\n |---zassembly\n |\n |---zframe\n |\n |\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1165 / 1279\n \n |\n |---zbody\n |\n |\n@@ -51050,15 +51050,15 @@\n c.ready()\n \n 12.9.5 Creating Parts\n 12.9.5.1 Import STL or OBJ Files\n It is probably easiest to:\n \u2022 create geometry in a CAD package\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1166 / 1279\n \n \u2022 import into the model script using the AsciiSTL() or AsciiOBJ() functions.\n Both functions can take one of two named arguments, either a filename or data:\n part = AsciiSTL(filename=\u201dpath/to/file.stl\u201d)\n part = AsciiSTL(data=\u201dsolid part1 facet normal ...\u201d)\n@@ -51093,15 +51093,15 @@\n Creates a box ground on WY plane of width xw / yw and height z.\n Composite parts may be created by assembling these primitives either at creation time or subsequently:\n part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)])\n part2 = Box(50,40,75,100,75,100)\n part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)])\n part4 = Collection([part1, part2])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1167 / 1279\n \n 12.9.6 Moving Model Parts\n Parts may need to be moved in the Vismach space to assemble the model. The origin does not move\n - Translate() and Rotate() move the Collection as you add parts, relative to a stationary origin. They\n may also need to be moved to create the animation as the animation rotation axis is created at the\n@@ -51135,15 +51135,15 @@\n The HAL component is the next argument.\n In QtVCP if you are reading system pins directly then the component argument is set to None.\n hal_pin\n The name of the HAL pin that will animate the motion.\n This needs to match an existing HAL pin that describes the joint position such as:\n \u201djoint.2.pos-fb\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1168 / 1279\n \n Otherwise the component instance would be specified and the pin name of that component\n would be specified. xs, ys, zs;; The X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in\n the positive X direction.\n@@ -51178,15 +51178,15 @@\n Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded\n tool.\n tool = HalToolTriangle()\n toolshape = Color([1, 1, 0, 1],[tool])\n # or more compact:\n toolshape = Color([1, 1, 0, 1],[HalToolTriangle()])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1169 / 1279\n \n 12.9.8 Assembling the model\n In order for parts to move together they need to be assembled with the Collection() command.\n It is important to assemble the parts and define their motions in the correct sequence.\n For example to create a moving head milling machine with a rotating spindle and an animated draw\n@@ -51228,15 +51228,15 @@\n Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final\n model is created by:\n model = Collection([link0, floor, table])\n \n Whereas a VMC model with separate parts moving on the base might have\n model = Collection([base, saddle, head, carousel])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1170 / 1279\n \n 12.9.9 Other functions\n part = Color([_colorspec_], [_part_])\n Sets the display color of the part.\n Note that unlike the other functions, the part definition comes second in this case.\n@@ -51278,15 +51278,15 @@\n \n Add it to the Window class Collection so it is never moved from the origin.\n v.model = Collection([origin, model, world])\n \n Start from the cutting tip and work your way back. Add each collection to the model at the origin and\n run the script to confirm the location, then rotate/translate and run the script to confirm again.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.9.11 Basic structure of a QtVismach script\n # imports\n import hal\n from qtvcp.lib.qt_vismach.qt_vismach import *\n # create HAL pins here if needed\n #c = hal.component(\u201dsamplegui\u201d)\n@@ -51329,15 +51329,15 @@\n # if you call this file directly from python3, it will display a PyQt5 window\n # good for confirming the parts of the assembly.\n if __name__ == \u2019__main__\u2019:\n main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215)\n \n 1171 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1172 / 1279\n \n 12.9.12 Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10 QtVCP: Building Custom Widgets\n@@ -51365,15 +51365,15 @@\n \u2022 Injecting important variables,\n \u2022 Calling an extra setup function\n \u2022 Calling a closing cleanup function at shutdown.\n These functions are not called when the Qt Designer editor displays the widgets.\n When QtVCP builds a screen from the .ui file:\n 1. It searches for all the HAL-ified widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1173 / 1279\n \n 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets\n 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function.\n hal_init() is defined in the base class and it:\n a. Adds variables such as the preference file to every HAL-ified widget.\n@@ -51426,15 +51426,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1174 / 1279\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -51506,15 +51506,15 @@\n #!/usr/bin/env python3\n ###############################\n # Imports\n ###############################\n from PyQt5.QtCore import pyqtProperty\n from qtvcp.widgets.led_widget import LED\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -51564,15 +51564,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1175 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1176 / 1279\n \n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, \u2190reset_is_estopped)\n is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on)\n@@ -51642,15 +51642,15 @@\n self.setState(False)\n self.is_estopped = False\n self.is_on = False\n self.invert_state = False\n \n #\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 1\n \n Defines the name of our custom widget and what other class it inherits from.\n In this case we inherit LED - a QtVCP widget that represents a status light.\n@@ -51711,15 +51711,15 @@\n self.PREFS_\n the instance of an optional preference file\n self.SETTINGS_\n the Qsettings object\n We could use this information to create HAL pins or look up image paths etc.\n STATUS.connect(\u2019state-estop\u2019, lambda w:self._flip_state(True))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1178 / 1279\n \n Lets look at this line more closely:\n \u2022 STATUS is very common theme is widget building.\n STATUS uses GObject message system to send messages to widgets that register to it.\n This line is the registering process.\n@@ -51766,15 +51766,15 @@\n return self.is_on\n def reset_is_on(self):\n self.is_on = False\n \n This is how Qt Designer sets the attributes of the widget.\n This can also be called directly in the widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1179 / 1279\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -51814,15 +51814,15 @@\n self._last = 0\n self._block_signal = False\n self._auto_label_flag = True\n SettingMenu = QMenu()\n for system in(\u2019G54\u2019, \u2019G55\u2019, \u2019G56\u2019, \u2019G57\u2019, \u2019G58\u2019, \u2019G59\u2019, \u2019G59.1\u2019, \u2019G59.2\u2019, \u2019G59.3\u2019):\n Button = QAction(QIcon(\u2019exit24.png\u2019), system, self)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1180 / 1279\n \n Button.triggered.connect(self[system.replace(\u2019.\u2019,\u2019_\u2019)])\n SettingMenu.addAction(Button)\n self.setMenu(SettingMenu)\n self.dialog = EntryDialog()\n@@ -51865,15 +51865,15 @@\n def ChangeState(self, joint):\n if int(joint) != self._joint:\n self._block_signal = True\n self.setChecked(False)\n self._block_signal = False\n self.hal_pin.set(False)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1181 / 1279\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -51920,15 +51920,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.10.6 Use Stylesheets To Change Custom Widget Properties\n class Label(QLabel):\n def __init__(self, parent=None):\n super(Label, self).__init__(parent)\n alternateFont0 = self.font\n # Qproperty getter and setter\n@@ -51973,15 +51973,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1182 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n return \u201dLinuxCNC - HAL\u201d\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019lcnc_gridlayout\u2019)))\n def toolTip(self):\n return \u201dHAL enable/disable GridLayout widget\u201d\n def whatsThis(self):\n@@ -52030,15 +52030,15 @@\n def domXml(self):\n return \u2019\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1183 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1184 / 1279\n \n 12.10.7.3 Making a plugin with a MenuEntry dialog box\n It possible to add an entry to the dialog that pops up when you right click the widget in the layout.\n This can do things such as selecting options in a more convenient way.\n This is the plugin used for action buttons.\n@@ -52084,15 +52084,15 @@\n def createWidget(self, parent):\n return ActionButton(parent)\n # This method returns the name of the custom widget class\n def name(self):\n return \u201dActionButton\u201d\n # Returns the name of the group in Qt Designer\u2019s widget box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n def group(self):\n return \u201dLinuxCNC - Controller\u201d\n # Returns the icon\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019actionbutton\u2019)))\n # Returns a tool tip short description\n@@ -52133,15 +52133,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1185 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1186 / 1279\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -52180,15 +52180,15 @@\n if self.w.PREFS_:\n # variable name (entry name, default value, type, section name)\n self.int_value = self.w.PREFS_.getpref(\u2019Integer_value\u2019, 75, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.string_value = self.w.PREFS_.getpref(\u2019String_value\u2019, \u2019on\u2019, str, \u2019 \u2190CUSTOM_FORM_ENTRIES\u2019)\n \n Writing preferences at close time In the closing_cleanup__() function, add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1187 / 1279\n \n if self.w.PREFS_:\n # variable name (entry name, variable name, type, section name)\n self.w.PREFS_.putpref(\u2019Integer_value\u2019, self.integer_value, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.w.PREFS_.putpref(\u2019String_value\u2019, self.string_value, str, \u2019CUSTOM_FORM_ENTRIES\u2019)\n@@ -52223,15 +52223,15 @@\n Being able to edit a style on a running screen is convenient.\n Import StyleSheetEditor module in the IMPORT SECTION:\n from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE\n \n Instantiate StyleSheetEditor module in the INSTANTIATE SECTION:\n STYLEEDITOR = SSE()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1188 / 1279\n \n Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets,\n paths):+ function add:\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_F12\u2019)\n \n@@ -52275,15 +52275,15 @@\n def return_value(self, w, message):\n num = message.get(\u2019RETURN\u2019)\n id_code = bool(message.get(\u2019ID\u2019) == \u2019FORM__NUMBER\u2019)\n name = bool(message.get(\u2019NAME\u2019) == \u2019ENTRY\u2019)\n if id_code and name and num is not None:\n print(\u2019The {} number from {} was: {}\u2019.format(name, id_code, num))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1189 / 1279\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog.\n In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know\n the message is for us.\n@@ -52318,15 +52318,15 @@\n The objectName of the toolbar button is used to identify the button when configuring it - descriptive\n names help.\n Using the action editor menu, right click and select edit.\n Edit the object name, text, and button type for an appropriate action.\n In this example the:\n \u2022 submenu name must be menuRecent,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1190 / 1279\n \n \u2022 actions names must be actionAbout, actionQuit, actionMyFunction\n Loads the toolbar_actions library in the IMPORT SECTION\n from qtvcp.lib.toolbar_actions import ToolBarActions\n \n@@ -52370,15 +52370,15 @@\n Define the function called by pin state change in the GENERAL FUNCTIONS SECTION\n #####################\n # general functions #\n #####################\n def cycleStart(self, state):\n if state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1191 / 1279\n \n tab = self.w.mainTab.currentWidget()\n if tab in( self.w.tab_auto, self.w.tab_graphics):\n ACTION.RUN(line=0)\n elif tab == self.w.tab_files:\n@@ -52420,15 +52420,15 @@\n jog increment after.\n We will build a button that toggles between continuous jog and whatever increment that was already\n selected.\n In Qt Designer:\n \u2022 Add an ActionButton with no action\n \u2022 Call it btn_toggle_continuous.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1192 / 1279\n \n \u2022 Set the AbstractButton property checkable to True.\n \u2022 Set the ActionButton properties incr_imperial_number and incr_mm_number to 0.\n \u2022 Use Qt Designer\u2019s slot editor to use the button signal clicked(bool) to call form\u2019s handler function\n toggle_continuous_clicked().\n@@ -52474,15 +52474,15 @@\n Class patching (monkey patching) is a little like black magic - so use it only if needed.\n \n The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want\n to print the file name first.\n We can \u201dclass patch\u201d the library to redirect the function call.\n In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1193 / 1279\n \n from qtvcp.widgets.file_manager import FileManager as FM\n \n Here we are going to:\n 1. Keep a reference to the original function (1) so we can still call it\n@@ -52514,15 +52514,15 @@\n def our_load(self,fname):\n print(fname)\n self.old_load(self.w.filemanager,fname)\n \n Now our custom function will print the file path to the terminal before loading the file.\n Obviously boring but shows the principle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1194 / 1279\n \n Note\n 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.\n The trick here is to make sure the function name you use to store it is not already used in the class.\n super__ added to the function name would be a good choice.\n@@ -52560,15 +52560,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from PyQt5 import QtWidgets\n from PyQt5.QtGui import QColor\n from qtvcp.widgets.state_led import StateLED as LED\n from qtvcp.core import Status, Info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1195 / 1279\n \n Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so\n as to be global references (no self. in front):\n ##########################################\n # **** instantiate libraries section **** #\n@@ -52619,15 +52619,15 @@\n #\n self.w.led.setProperty(\u2019is_spindle_at_speed_status\u2019,True) #\n \n y\n 2y\n 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1196 / 1279\n \n y\n 4y\n \n self.w.led.setProperty(\u2019color\u2019,QColor(0,255,0,255))\n@@ -52740,15 +52740,15 @@\n \n 7\n \n We create a QWidget\n Since you can only add one widget to the tab corner and we want two there, we must add both\n into a container.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 8\n \n 1197 / 1279\n \n@@ -52828,15 +52828,15 @@\n self.w = widgets\n self.PATHS = paths\n # register a function to be called at CYCLE_TIME period (usually every 100 ms)\n STATUS.connect(\u2019periodic\u2019, lambda w: self.update_periodic())\n \n Create the custom function to be called periodically\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1198 / 1279\n \n #####################\n # general functions #\n #####################\n def update_periodic(self):\n@@ -52878,15 +52878,15 @@\n #!/usr/bin/env python3\n from time import sleep\n import zmq\n import json\n context = zmq.Context()\n socket = context.socket(zmq.PUB)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1199 / 1279\n \n socket.bind(\u201dtcp://127.0.0.1:5690\u201d)\n topic = b\u2019QtVCP\u2019\n # prebuilt message 1\n # makes a dict of function to call plus any arguments\n@@ -52944,15 +52944,15 @@\n def __init__(self, halcomp,widgets,paths):\n # directly select ZMQ message sending\n self.w.screen_options.setProperty(\u2019use_send_zmq_option\u2019,True)\n \n This allows sending messages to a separate program.\n The message sent will depend on what the external program is expecting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1200 / 1279\n \n Create a function to send ZMQ messages Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n Also, something needs to be added to call this function, such as a button click.\n #####################\n@@ -52993,15 +52993,15 @@\n You can also use the Status library to send a message to the notify library if it is enabled (usually\n set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify\n dialog.\n The messages are also recorded until the user erases them using controls. The users can recall any\n recorded messages.\n There are several options:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1201 / 1279\n \n STATUS.TEMPORARY_MESSAGE\n Show the message for a short time only.\n STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT\n \n@@ -53040,15 +53040,15 @@\n Notice we sometimes compare to widget, sometimes to widget.parent().\n This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get\n the focus; so we need to check the parent of those sub-widgets.\n Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to\n accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent()\n would get you the container that holds the G-code widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1202 / 1279\n \n 12.12 QtVCP Development\n 12.12.1 Overview\n The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building\n for LinuxCNC.\n@@ -53077,15 +53077,15 @@\n 12.12.3 QtVCP Startup To Shutdown\n QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree.\n 12.12.3.1 QtVCP Startup\n When QtVCP first starts:\n 1. It must decide if this object is a screen or a panel.\n 2. It searches for and collects information about paths of required files and useful folders.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1203 / 1279\n \n 3. It then:\n a. Builds the HAL component,\n b. Loads the window instance,\n c. Adds handler extensions,\n@@ -53121,15 +53121,15 @@\n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n XML\n Path of .ui file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1204 / 1279\n \n DOMAIN\n Path of translation\n IS_SCREEN\n Screen/panel switch\n@@ -53164,15 +53164,15 @@\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n 12.12.5.4 Preference File\n Some QtVCP widgets use the preference file to record important information.\n This requires the preference file to be set up early in the widget initialization process.\n The easiest way to do this is to use the ScreenOptions widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1205 / 1279\n \n 12.12.5.5 Widget Special Setup Functions\n QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded.\n It is not called when using Qt Designer editor.\n After this function is called the widget has access to some special variables:\n@@ -53199,15 +53199,15 @@\n By default, if there is a preference file, the dialogs will remember their last size/placement.\n It is possible to override this so they open in the same location each time.\n 12.12.5.7 Styles (Themes)\n While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are\n all set in a separate .qss file.\n The file should be put in the same location as the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1206 / 1279\n \n Chapter 13\n \n User Interface Programming\n 13.1 Panelui\n@@ -53236,15 +53236,15 @@\n loadrt sampler cfg=u depth=1025\n #uncomment to validate the panelui INI file\n #loadusr pyui\n # -d = debug, -v = verbose debug\n # -d will show you keypress identification and commands called\n # -v is for develeper info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1207 / 1279\n \n loadusr -W panelui -d\n # using simulated buttons instead of the MESA 7I73 card\n # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes\n loadrt sim_matrix_kb\n@@ -53285,15 +53285,15 @@\n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1208 / 1279\n \n This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program.\n Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group\n has its own output pin, separate from each button in the group. Radio button definitions start with\n the text RADIO_BUTTON inside single brackets.\n@@ -53347,15 +53347,15 @@\n \n Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets.\n [TOGGLE_BUTTONS]\n # Each button name inside double brackets, must be unique and is case sensitive.\n # This button, named \u2019tool_change\u2019is controller by the row 2 column 5 key.\n # It has a BIT output, will output 1 on true state and 0 on false state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1209 / 1279\n \n # It also has a status pin which will follow it\u2019s current state.\n # DEFAULT sets this to true when first initialized.\n # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will\n # add the lines regardless\n@@ -53399,15 +53399,15 @@\n \u2022 required argument: axis number (int)\n spindle_forward_adjust\n \u2022 optional argument: starting RPM (int) - default 100\n \u2022 Description: If the spindle is stopped it will start in the forward direction. If it is already running it\n will increase or decrease the rpm depending on what direction the spindle is running in.\n spindle_forward\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1210 / 1279\n \n \u2022 optional argument: starting RPM (int) - default 100\n spindle_reverse\n \u2022 optional argument: starting RPM (int) - default 100\n spindle_reverse_adjust\n@@ -53433,15 +53433,15 @@\n \u2022 Description: Move Z axis to the given machine position\n feed_hold\n \u2022 required argument: state (bool 0 or 1)\n feed_override\n \u2022 required argument: rate (float)\n rapid_override\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022 required argument: rate (float 0-1)\n spindle_override\n \u2022 required argument: rate (float)\n max_velocity\n \u2022 required argument: rate (float)\n optional_stop\n@@ -53473,15 +53473,15 @@\n STATUS_PIN = False\n DEFAULT = FALSE\n TRUE_STATE = 1\n FALSE_STATE = 0\n \n 1211 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1212 / 1279\n \n Here is a sample program that will receive the message and print it to the terminal.\n import zmq\n import json\n # ZeroMQ Context\n@@ -53525,15 +53525,15 @@\n # print the argument(s)\n print(wname.metadata)\n # Print the calling widgets internal metadata (from config \u2190file)\n # Call a mdi command to print a msg in LinuxCNC.\n # This requires LinuxCNC to be homed, but does not check for that.\n # parent commands expect a widget_instance - None is substituted\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1213 / 1279\n \n self.parent.mdi(None,\u2019(MSG, Hello Linuxcnc World!)\u2019)\n # Each call to this function will cycle the mode of LinuxCNC.\n def cycle_mode(self, wname, m):\n if self.current_mode == 0:\n@@ -53574,15 +53574,15 @@\n PROGRAM_EXTENSION = .py Python Script\n py = python\n \n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1214 / 1279\n \n Figure 13.1: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -53602,15 +53602,15 @@\n time.sleep(.1)\n # output a line of G-code\n print(\u2019G0 X1\u2019, file=sys.stdout)\n # update progress\n print(\u2019FILTER_PROGRESS={}\u2019.format(i), file=sys.stderr)\n except:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1215 / 1279\n \n # This causes an error message\n print(\u2019Error; But this was only a test\u2019, file=sys.stderr)\n raise SystemExit(1)\n \n@@ -53653,15 +53653,15 @@\n raise SystemExit(1)\n def process(self):\n try:\n # get next line of code\n codeLine = self.temp[self.line]\n # process the line somehow\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1216 / 1279\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -53701,15 +53701,15 @@\n Make sure you use the correct path to your INI file.\n loadusr halui -ini /path/to/inifile.ini\n \n 13.3.2 MDI\n Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL\n pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1217 / 1279\n \n [HALUI]\n MDI_COMMAND = G0 X0\n MDI_COMMAND = G0 G53 Z0\n MDI_COMMAND = G28\n@@ -53754,15 +53754,15 @@\n 13.3.4.1 Abort\n \u2022 halui.abort (bit, in) - pin to send an abort message (clears out most errors)\n 13.3.4.2 E-Stop\n \u2022 halui.estop.activate (bit, in) - pin for requesting E-Stop\n \u2022 halui.estop.is-activated (bit, out) - indicates E-stop reset\n \u2022 halui.estop.reset (bit, in) - pin for requesting E-Stop reset\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1218 / 1279\n \n 13.3.4.3 Feed Override\n \u2022 halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work.\n \u2022 halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder\n or direct-value.\n@@ -53791,15 +53791,15 @@\n \u2022 halui.lube.on (bit, in) - pin for requesting lube on\n 13.3.4.8 Machine\n \u2022 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\n \u2022 halui.machine.is-on (bit, out) - indicates machine on\n \u2022 halui.machine.off (bit, in) - pin for requesting machine off\n \u2022 halui.machine.on (bit, in) - pin for requesting machine on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1219 / 1279\n \n 13.3.4.9 Max Velocity\n The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ]\n section of the INI file.\n \u2022 halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work.\n@@ -53833,15 +53833,15 @@\n limit\n \u2022 halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software\n limit\n \u2022 halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software\n limit\n \u2022 halui.joint.N.override-limits (bit out) - status pin telling that joint N\u2019s limits are temporarily overridden\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1220 / 1279\n \n \u2022 halui.joint.N.unhome (bit in) - pin for unhoming joint N\n \u2022 halui.joint.selected (u32 out) - selected joint number (0 \u2026 num_joints-1)\n \u2022 halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted\n \u2022 halui.joint.selected.home (bit in) - pin for homing the selected joint\n@@ -53874,15 +53874,15 @@\n \u2022 halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when\n using increment-plus/minus\n \u2022 halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in\n the negative direction by the increment amount\n \u2022 halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the\n positive direction by the increment amount\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1221 / 1279\n \n \u2022 halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the\n halui.joint.jog-speed velocity\n \n \u2022 halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity\n@@ -53915,15 +53915,15 @@\n \u2022 halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the\n positive direction by the increment amount\n \u2022 halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the\n halui.axis.jog-speed velocity\n \u2022 halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the\n halui.axis.jog-speed velocity\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1222 / 1279\n \n 13.3.4.15 Mode\n \u2022 halui.mode.auto (bit, in) - pin for requesting auto mode\n \u2022 halui.mode.is-auto (bit, out) - indicates auto mode is on\n \u2022 halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on\n@@ -53953,15 +53953,15 @@\n \u2022 halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override\n when counts changes.\n \u2022 halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used\n with an encoder or direct-value.\n \u2022 halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale)\n \u2022 halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1223 / 1279\n \n \u2022 halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale)\n \u2022 halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override\n \u2022 halui.rapid-override.value (float out) - current Rapid Override value\n \u2022 halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0)\n@@ -53986,15 +53986,15 @@\n \u2022 halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction)\n \u2022 halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion\n \u2022 halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse\n \u2022 halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward\n \u2022 halui.spindle.N.start (bit, in) - starts the spindle\n \u2022 halui.spindle.N.stop (bit, in) - stops the spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1224 / 1279\n \n 13.3.4.20 Tool\n \u2022 halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis\n \u2022 halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis\n \u2022 halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis\n@@ -54015,15 +54015,15 @@\n To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the\n halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto\n pin. You do this with an and2 component. The following figure shows how this is done. When the\n Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK\n for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component\n are on the and2.0.out will be on and this will start the program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1225 / 1279\n \n Figure 13.2: Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= \n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -54046,15 +54046,15 @@\n Your input and output pins are connected to the pins wired to the other controller. They may be\n parallel port pins or any other I/O pins that you have access to.\n \n This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p\n signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC\n is paused.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1226 / 1279\n \n To resume the LinuxCNC G-code program, when the external controller is ready it will make its output\n true. This will signal LinuxCNC that it should resume executing G-code.\n Difficulties in timing\n \u2022 The \u201dresume\u201d input return signal should not be longer than the time required to get the G-code\n@@ -54088,15 +54088,15 @@\n \u2022 send the command by using one of the linuxcnc command channel methods\n To retrieve messages from the error channel, poll the error channel periodically, and process any\n messages retrieved.\n \u2022 poll the status channel, either periodically or as needed\n \u2022 print any error message and explore the exception code\n linuxcnc also defines the error Python exception type to support error reporting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1227 / 1279\n \n 13.5.3 Reading LinuxCNC status\n Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some\n 80+ values (run while linuxcnc is running for typical values):\n #!/usr/bin/env python3\n@@ -54138,15 +54138,15 @@\n Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256.\n block_delete\n (returns boolean) - block delete current status.\n call_level\n (returns integer) \u0300 - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise\n specified\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1228 / 1279\n \n command\n (returns string) - currently executing command.\n current_line\n (returns integer) - currently executing line.\n@@ -54188,15 +54188,15 @@\n file\n (returns string) - currently loaded G-code filename with path.\n flood\n (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON.\n g5x_index\n (returns integer) - currently active coordinate system, G54=1, G55=2 etc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1229 / 1279\n \n g5x_offset\n (returns tuple of floats) - offset of the currently active coordinate system.\n g92_offset\n (returns tuple of floats) - pose of the current g92 offset.\n@@ -54239,15 +54239,15 @@\n \u2022 KINEMATICS_FORWARD_ONLY\n \u2022 KINEMATICS_INVERSE_ONLY\n \u2022 KINEMATICS_BOTH\n limit\n (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4,\n maxSoftLimit=8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1230 / 1279\n \n linear_units\n (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value.\n lube\n (returns integer) - lube on flag.\n@@ -54291,15 +54291,15 @@\n position\n (returns tuple of floats) - trajectory position.\n probe_tripped\n (returns boolean) - flag, True if probe has tripped (latch)\n probe_val\n (returns integer) - reflects value of the motion.probe-input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1231 / 1279\n \n probed_position\n (returns tuple of floats) - position where probe tripped.\n probing\n (returns boolean) - flag, True if a probe operation is in progress.\n@@ -54340,15 +54340,15 @@\n tool_offset\n (returns tuple of floats) - offset values of the current tool.\n tool_table\n (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields:\n id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle,\n backangle, orientation. The id and orientation are integers and the rest are floats.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1232 / 1279\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n s.poll()\n@@ -54384,15 +54384,15 @@\n enabled\n (returns integer) - non-zero means enabled.\n fault\n (returns integer) - non-zero means axis amp fault.\n ferror_current\n (returns float) - current following error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1233 / 1279\n \n ferror_highmark\n (returns float) - magnitude of max following error.\n homed\n (returns integer) - non-zero means has been homed.\n@@ -54428,15 +54428,15 @@\n units\n (returns float) - joint units per mm, or per degree for angular joints.\n (joint units are the same as machine units, unless set otherwise by the configuration parameter\n [JOINT_n]UNITS)\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1234 / 1279\n \n 13.5.4 The spindle dictionary\n brake\n (returns integer) - value of the spindle brake flag.\n direction\n@@ -54473,15 +54473,15 @@\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n c = linuxcnc.command()\n def ok_for_mdi():\n s.poll()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1235 / 1279\n \n return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state \u2190== linuxcnc.INTERP_IDLE)\n if ok_for_mdi():\n c.mode(linuxcnc.MODE_MDI)\n c.wait_complete() # wait until mode switch executed\n@@ -54522,15 +54522,15 @@\n c.override_limits()\n c.program_open(\u201dfoo.ngc\u201d)\n c.reset_interpreter()\n c.tool_offset(toolno, z_offset,\n \n x_offset, diameter, frontangle, backangle, orientation)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1236 / 1279\n \n 13.5.6.1 linuxcnc.command attributes\n \n serial\n the current command serial number\n@@ -54571,15 +54571,15 @@\n linuxcnc.JOG_STOP\n linuxcnc.JOG_CONTINUOUS\n linuxcnc.JOG_INCREMENT\n jjogmode\n True\n request individual joint jog (requires teleop_enable(0))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1237 / 1279\n \n False\n request axis Cartesian coordinate jog (requires teleop_enable(1))\n joint_num_or_axis_index\n For joint jog (jjogmode=1)\n@@ -54620,15 +54620,15 @@\n set_block_delete(int)\n set block delete flag\n set_digital_output(int, int)\n set digital output pin to value\n set_feed_hold(int)\n set feed hold on/off\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1238 / 1279\n \n set_feed_override(int)\n set feed override on/off\n set_max_limit(int, float)\n set max position limit for a given axis\n@@ -54665,15 +54665,15 @@\n c.spindle.(linuxcnc.SPINDLE_OFF)\n # Stop spindle 0 explicitly.\n c.spindle.(linuxcnc.SPINDLE_OFF, 0)\n \n spindleoverride(float [, int])\n Set spindle override factor. Defaults to spindle 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1239 / 1279\n \n state(int)\n Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON,\n or STATE_OFF.\n task_plan_sync()\n@@ -54713,15 +54713,15 @@\n Here\u2019s an example for reading values from an INI file through the linuxcnc.ini object:\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*# run as:\n # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini\n import sys\n import linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n inifile = linuxcnc.ini(sys.argv[1])\n # inifile.find() returns None if the key wasn\u2019t found - the\n # following idiom is useful for setting a default value:\n machine_name = inifile.find(\u201dEMC\u201d, \u201dMACHINE\u201d) or \u201dunknown\u201d\n print(\u201dmachine name: \u201d, machine_name)\n # inifile.findall() returns a list of matches, or an empty list\n@@ -54756,15 +54756,15 @@\n clear()\n clear the position logger\n stop()\n stop the position logger\n \n 1240 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1241 / 1279\n \n call()\n Plot the backplot now.\n last([int])\n Return the most recent point on the plot or None\n@@ -54798,15 +54798,15 @@\n 13.6.2.1 Sample HAL component code pattern\n This program creates two HAL pins that output the status of G20/G21.\n #!/usr/bin/env python3\n import gi\n gi.require_version(\u2019Gtk\u2019, \u20193.0\u2019)\n from gi.repository import GObject\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1242 / 1279\n \n from gi.repository import GLib\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n@@ -54846,15 +54846,15 @@\n self.builder = builder\n GSTAT.connect(\u201dstate-estop\u201d,lambda w: self.update_estate_label(\u2019ESTOP\u2019))\n GSTAT.connect(\u201dstate-estop-reset\u201d,lambda w: self.update_estate_label(\u2019RESET\u2019))\n GSTAT.connect(\u201dstate-on\u201d,lambda w: self.update_state_label(\u2019MACHIBE ON\u2019))\n GSTAT.connect(\u201dstate-off\u201d,lambda w: self.update_state_label(\u2019MACHINE OFF\u2019))\n GSTAT.connect(\u201dinterp-paused\u201d,lambda w: self.update_interp_label(\u2019Paused\u2019))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1243 / 1279\n \n GSTAT.connect(\u201dinterp-run\u201d,lambda w: self.update_interp_label(\u2019Run\u2019))\n GSTAT.connect(\u201dinterp-idle\u201d,lambda w: self.update_interp_label(\u2019Idle\u2019))\n def update_state_label(self,text):\n self.builder.get_object(\u2019state_label\u2019).set_label(\u201dState: %s\u201d % (text))\n@@ -54889,15 +54889,15 @@\n def update_estate_label(self,text):\n self.w.e_state_label.setText(\u201dE State: %s\u201d % (text))\n def update_interp_label(self,text):\n self.winterp_state_label.setText(\u201dInterpreter State: %s\u201d % (text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1244 / 1279\n \n 13.6.3 Messages\n periodic\n (returns nothing) - sent every 100 ms.\n state-estop\n@@ -54936,15 +54936,15 @@\n interp-idle\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is idle.\n interp-paused\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is paused.\n interp-reading\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is reading.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1245 / 1279\n \n interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n jograte-changed\n (returns float) - Sent when jog rate has changed.\n@@ -54988,15 +54988,15 @@\n motion-mode-changed\n (returns integer) - Sent when motion\u2019s mode has changed\n spindle-control-changed\n (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction\n & rate, at-speed state)\n Sent when spindle direction or running status changes or at-speed changes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1246 / 1279\n \n current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n current-x-rel-position\n (returns float) - Sent every 100 ms.\n@@ -55039,15 +55039,15 @@\n rpm-mode\n (returns bool) - Sent when G97 status changes\n (constant RPM mode)\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1247 / 1279\n \n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n flood-changed\n@@ -55089,15 +55089,15 @@\n machine-log-changed\n (returns None) - intended to be sent when machine log has changed.\n This depends on the widget/libraries used.\n update-machine-log\n (returns string, string) - intended to be sent when updating the machine.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1248 / 1279\n \n move-text-lineup\n (returns None) - intended to be sent when moving the cursor one line up in G-code display.\n This depends on the widget/libraries used.\n move-text-linedown\n@@ -55141,15 +55141,15 @@\n General message should be used a sparsely as reasonable because all object connected to it will\n have to parse it.\n It uses a Python dict for communication.\n The dict should include and be checked for a unique id keyname pair:\n \u2022 ID: UNIQUE_ID_CODE\n The dict usually has more keyname pair - it depends on implementation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1249 / 1279\n \n forced-update\n (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object.\n This depends on the widget/libraries used.\n progress\n@@ -55184,15 +55184,15 @@\n (nothing) - This will return the state of Estop (BOOL)\n set_tool_touchoff\n (tool,axis,value) - This command will\n 1. record the current mode,\n 2. switch to MDI mode,\n 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE],\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1250 / 1279\n \n 4. wait for it to complete,\n 5. invoke G43,\n 6. wait for it to complete,\n 7. switch back to the original mode.\n@@ -55230,15 +55230,15 @@\n get_selected_axis\n (None) - returns string representing the internal selected axis letter.\n is_man_mode\n (None) is_mdi_mode\n (None) is_auto_mode\n (None) -\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1251 / 1279\n \n is_on_and_idle\n (None) is_auto_running\n (None) is_auto_paused\n (None) is_file_loaded\n@@ -55253,30 +55253,30 @@\n state-tags branch.\n \n 13.7 Vismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1252 / 1279\n \n The Vismach viewport view can be manipulated as follows:\n \u2022 zoom by scroll wheel or right button drag,\n \u2022 pan by left button drag,\n \u2022 rotate by middle-button drag or shift-drag.\n A Vismach model takes the form of a Python script and can use standard Python syntax. This means\n that there is more than one way to lay out the script, but in the examples given in this document I will\n use the simplest and most basic of them.\n The basic sequence in creating the Vismach model is\n \u2022 Create the HAL pins that control the motion.\n \u2022 Create the parts.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1253 / 1279\n \n \u2022 Define how they move.\n \u2022 Assemble into movement groups.\n \n 13.7.1 Start the script\n@@ -55316,15 +55316,15 @@\n \u2022 cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder\n = CylinderZ(z1, r1, z2, r2)\n Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on\n the axis.\n \u2022 sphere = Sphere(x, y, z, r)\n Creates a sphere of radius r at (x,y,z)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1254 / 1279\n \n \u2022 triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1,\n x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2)\n Creates a triangular plate between planes defined by the last two values parallel to the specified\n plane, with vertices given by the three coordinate pairs.\n@@ -55362,15 +55362,15 @@\n The function arguments are:\n \u2013 first a collection/part which can be pre-created earlier in the script, or could be created at this\n point if preferred eg part1 = HalTranslate([Box(....)], ...).\n \u2013 The HAL component is the next argument, ie the object returned by the comp = hal.component(...)\n command. After that is the name of the HAL in that will animate the motion, this needs to match\n an existing HAL pin that is part of the HAL component created earlier in the script.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1255 / 1279\n \n \u2013 Then follow the X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the\n positive X direction.\n However if the STL file happened to be in cm and the machine was in inches, this could be fixed\n@@ -55411,15 +55411,15 @@\n head = AsciiSTL(filename=\u201d./head.stl\u201d)\n head = Color([0.3,0.3,0.3,1],[head])\n head = Translate([head],0,0,4)\n head = Collection([head, tool, dogs, draw])\n head = HalTranslate([head],c,\u201dZ\u201d,0,0,0.1)\n # base\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1256 / 1279\n \n base = AsciiSTL(filename=\u201d./base.stl\u201d)\n base = Color([0.5,0.5,0.5,1],[base])\n # mount head on it\n base = Collection([head, base])\n@@ -55460,15 +55460,15 @@\n import hal\n #create the HAL component and pins\n comp = hal.component(\u201dcompname\u201d)\n comp.newpin(\u201dpin_name\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n ...\n #create the floor, tool and work\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n floor = Box(-50, -50, -3, 50, 50, 0)\n work = Capture()\n tooltip = Capture()\n ...\n #Build and assemble the model\n part1 = Collection([Box(-6,-3,94,6,3,100)])\n@@ -55479,23 +55479,23 @@\n #create a top-level model\n model = Collection([base, saddle, head, carousel])\n #Start the visualization\n main(model, tooltip, work, 100, lat=-75, lon=215)\n \n 1257 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1258 / 1279\n \n Part III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1259 / 1279\n \n Chapter 14\n \n Overleaf\n \n@@ -55515,15 +55515,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1260 / 1279\n \n Chapter 15\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -55557,15 +55557,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1261 / 1279\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -55610,15 +55610,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1262 / 1279\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -55661,15 +55661,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1263 / 1279\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -55712,15 +55712,15 @@\n Rapid\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n 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\n program for the first time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1264 / 1279\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet\n these requirements it is necessary to install a realtime kernel such as RTAI and build the software\n to run in the special real-time environment. For this reason real-time software runs in kernelspace.\n@@ -55761,28 +55761,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1265 / 1279\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1266 / 1279\n \n Chapter 16\n \n Copyright\n 16.1 Legal Section\n@@ -55810,15 +55810,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1267 / 1279\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any\n such manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -55867,15 +55867,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front\n cover must present the full title with all words of the title equally prominent and visible. You may add\n other material on the covers in addition. Copying with changes limited to the covers, as long as they\n preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying\n in other respects.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1268 / 1279\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access\n@@ -55921,15 +55921,15 @@\n Version. N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any\n Invariant Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1269 / 1279\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -55970,15 +55970,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1270 / 1279\n \n this License provided that you also include the original English version of this License. In case of a\n disagreement between the translation and the original English version of this License, the original\n English version will prevail.\n 9. TERMINATION\n@@ -56006,15 +56006,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1271 / 1279\n \n Chapter 17\n \n LinuxCNC History\n 17.1 Origin\n@@ -56046,15 +56046,15 @@\n interested in improving EMC. Many people requested or coded small improvements to the code. Ray\n Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code\n 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\n NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the\n predominant user interface for EMC at the time.\n For NIST\u2019s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1272 / 1279\n \n By this time interest in EMC as beginning to pick up substantially. As more and more people attempted\n installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of\n compiling the EMC code became glaringly obvious. Many attempts to document the process and\n write scripts were attempted, some with moderate success. The problem of matching the correct\n@@ -56089,15 +56089,15 @@\n The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0.\n \n 17.1.2 Additional Info\n NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf .\n NIST also published a paper on the history of EMC and its transition to open source. The paper is also\n available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1273 / 1279\n \n Chapter 18\n \n Index\n _\n@@ -56181,15 +56181,15 @@\n connecting-rs485, 344\n Controlled Point, 64\n coolant, 63\n Cooling, 65\n coordinate measuring machine, 1261\n Coordinate Systems, 819\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Core components, 250\n Creating Userspace Python Components, 302\n Custom sections and variables, 156\n Cutter Radius Compensation, 832\n D\n debounce, 282\n@@ -56297,15 +56297,15 @@\n Spindle Stop\n Manual Out, 903\n G89 Boring\n Dwell\n Feed Out, 903\n G90\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n G91 Distance Mode, 903\n G91 Distance Mode, 903\n G92 Coordinate System Offset, 904\n G92.1\n G92.2 Reset G92 Offsets, 905\n G92.2 Reset G92 Offsets, 905\n@@ -56416,15 +56416,15 @@\n HAL xor2\n xor2, 216\n HAL: Implementation, 203\n HAL: Interconnections Design, 203\n HAL: Testing, 203\n HAL:Function, 206\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n HAL:Thread, 206\n HAL:Velocity example, 247\n Halcmd Tutorial, 220\n Halmeter, 312\n Tutorial Halmeter, 226\n Halui Examples, 1224\n@@ -56531,15 +56531,15 @@\n M48\n M49 Speed and Feed Override Control, 911\n M49 Speed and Feed Override Control, 911\n M5 Spindle Control, 908\n M50 Feed Override Control, 911\n M51 Spindle Speed Override, 911\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n M52 Adaptive Feed Control, 911\n M53 Feed Stop Control, 911\n M6-Tool-Change, 909\n M60 Pallet Change Pause, 908\n M61 Set Current Tool, 912\n M62 - M65 Digital Output Control, 912\n@@ -56646,15 +56646,15 @@\n real-time, 1264\n refsig-timing-diagram, 337\n Repeat Loop, 924\n Return Values, 925\n RS274NGC, 1264\n RS274NGC STARTUP CODE, 163\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n RTAI, 1264\n RTAPI, 1264\n RTLINUX, 1264\n Running LinuxCNC, 14\n S\n s32, 213\n@@ -56762,15 +56762,15 @@\n User Foreword, 43\n User Introduction, 44\n USER M PATH, 164\n V\n Variables, 156\n VOLATILE HOME, 186\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n W\n weighted_sum, 216\n Words, 840\n world coordinates, 1265\n X\n xor2, 216\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Getting Started\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Contents\n 1 About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.5 Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.6 Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 10\n \n@@ -272,15 +272,15 @@\n \n 28\n \n 5.5.2 INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n@@ -434,15 +434,15 @@\n \n 38\n \n 5.13.4XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 5.13.4.1xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n@@ -581,15 +581,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 49\n 49\n 54\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vi\n \n The LinuxCNC Team\n \n 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\n Copyright \u00a9 2000-2020 LinuxCNC.org\n@@ -607,15 +607,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 55\n \n Chapter 1\n \n About LinuxCNC\n 1.1 The Software\n@@ -642,15 +642,15 @@\n \u2022 It can simultaneously move up to 9 axes and supports a variety of interfaces.\n \u2022 The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC\n software at the computer, or open loop with step-servos or stepper motors.\n \u2022 Motion control features include: cutter radius and length compensation, path deviation limited to\n a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed\n override, and constant velocity control.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 55\n \n \u2022 Support for non-Cartesian motion systems is provided via custom kinematics modules. Available\n architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary\n joints to provide motion such as PUMA or SCARA robots.\n \u2022 LinuxCNC runs on Linux using real time extensions.\n@@ -683,15 +683,15 @@\n 1.3.2 Mailing List\n An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at\n their convenience. You get better exposure to your questions on a mailing list than on the IRC but\n answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or\n individual replies back depending on how you set up your account.\n You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 55\n \n 1.3.3 Web Forum\n A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the\n linuxcnc.org home page.\n This is quite active but the demographic is more user-biased than the mailing list. If you want to be\n@@ -701,15 +701,15 @@\n A Wiki site is a user maintained web site that anyone can add to or edit.\n \n The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or\n \n 1.3.5 Bug Reports\n Report bugs to the LinuxCNC github bug tracker.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 55\n \n Chapter 2\n \n System Requirements\n 2.1 Minimum Requirements\n@@ -737,15 +737,15 @@\n LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can,\n however run on a standard kernel in simulation mode for purposes such as checking G-code, testing\n config files and learning the system. To work with these kernel versions there are two versions of\n LinuxCNC distributed. The package names are \u201dlinuxcnc\u201d and \u201dlinuxcnc-uspace\u201d.\n The realtime kernel options are preempt-rt, RTAI and Xenomai.\n You can discover the kernel version of your system with the command:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 55\n \n uname -a\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n@@ -781,15 +781,15 @@\n an extended time will give you the info you need to determine suitability.\n \n 2.3.2 Video Cards\n If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize\n your video card or monitor. This can sometimes be worked-around by installing drivers or creating /\n editing Xorg.conf files.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 55\n \n Chapter 3\n \n Getting LinuxCNC\n This section describes the recommended way to download and make a fresh install of LinuxCNC.\n@@ -816,15 +816,15 @@\n \n 3.1.1 Normal Download\n For x86 PCs Download the Live/Install CD by clicking here:\n https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso\n For the Raspberry Pi a complete SD card image is available here:\n https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 55\n \n This can be installed using the normal Pi install process including with the Raspberry Pi Imager app.\n This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version\n of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both\n WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by\n@@ -860,15 +860,15 @@\n 2. Then compare to these checksums\n md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41\n sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700\n \n Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program,\n but there are alternatives. More information can be found at: How To MD5SUM\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 55\n \n 3.2 Write the image to a bootable device\n The Raspberry Pi image is a completes SD card image and should be written to an SD card in the\n normal way.\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n@@ -903,15 +903,15 @@\n 4. Select the write speed. It is recommended that you write at the lowest possible speed.\n 5. Start the burning process.\n 6. If a choose a file name for the disc image window pops up, just pick OK.\n Writing the image to a DVD in Windows\n \n 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 55\n \n 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up.\n 3. Open Infra Recorder, and select the Actions menu, then Burn image.\n Writing the image to a DVD in Mac OSX\n 1. Download the .iso file\n@@ -946,15 +946,15 @@\n line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything\n except the operating system when asked to.\n \n Warning\n Do not upgrade the operating system if prompted to do so. You should accept OS updates\n however, especially security updates.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 55\n \n 3.6 Install Problems\n In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot\n recognize the hard drive during the boot up.\n \n@@ -1057,15 +1057,15 @@\n \u2022 Debian Wheezy: deb https://linuxcnc.org wheezy base\n \u2022 Ubuntu Precise: deb https://linuxcnc.org precise base\n Note\n Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is\n strongly advised not to use either for a new install, and to seriously consider upgrading an existing\n installation.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 55\n \n The Buster / RTAI package is only available on amd64, but there are very few surviving systems that\n can not run a 64-bit OS.\n Warning\n There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The\n@@ -1103,15 +1103,15 @@\n 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right\n click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the\n system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels\n need not be deleted, but grub boot configuration changes will be needed beyond the scope of\n this document.\n 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 55\n \n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n Alternate keyserver: keyserver.ubuntu.com\n \n 6. Add the apt repository:\n@@ -1147,15 +1147,15 @@\n sudo apt-get update\n \n 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc\n sudo apt-get install linux-image-4.19.195-rtai-amd64\n \n 6. Install the RTAI application layer\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 55\n \n sudo apt-get install rtai-modules-4.19.195\n \n 7. Install LinuxCNC (may be necessary to reboot before installing)\n sudo apt-get install linuxcnc\n@@ -1192,15 +1192,15 @@\n \n 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n # Alternate keyserver: keyserver.ubuntu.com\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n \n 4. Add a new apt source\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 55\n \n sudo add-apt-repository \u201ddeb https://linuxcnc.org/ precise base 2.8-rt\u201d\n \n 5. Fetch the package list from linuxcnc.org.\n sudo apt-get update\n@@ -1214,15 +1214,15 @@\n 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name\n is 3.4-9-rtai-686-pae.\n uname -r\n \n 9. Run\n sudo apt-get install linuxcnc\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 55\n \n Chapter 4\n \n Running LinuxCNC\n 4.1 Invoking LinuxCNC\n@@ -1249,15 +1249,15 @@\n applications like PyVCP or GladeVCP.\n \u2013 attic - Obsolete or historical configurations.\n The sim configurations are often the most useful starting point for new users and are organized around\n supported GUIs:\n \u2022 axis - Keyboard and Mouse GUI\n \u2022 gmoccapy - Touch Screen GUI\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 55\n \n \u2022 gscreen - Touch Screen GUI\n \u2022 low_graphics - Keyboard GUI\n \u2022 pyvcp_demo - Paneles de Control Virtuales Python\n \u2022 qtvcp_screens - Guis dise\u00f1adas con Qt5 y Python\n@@ -1288,15 +1288,15 @@\n applications that can be used with linuxcnc:\n \u2022 info - creates a file with system information that may be useful for problem diagnosis.\n \u2022 gladevcp - Example GladeVCP applications.\n \u2022 halrun - Starts halrun in an terminal.\n \u2022 latency - Applications to investigate latency\n \u2013 latency-test - standard test\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 55\n \n \u2013 latency-plot - stripchart\n \u2013 latency-histogram - histogram\n \u2022 parport - Applications to test parport.\n \u2022 pyvcp - Example pyvcp applications.\n@@ -1308,15 +1308,15 @@\n Figure 4.1: LinuxCNC Configuration Selector\n Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration.\n Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly\n launch this configuration without showing the Configuration Selector screen.\n When you select a configuration from the Sample Configurations section, it will automatically place a\n copy of that config in the ~/linuxcnc/configs directory.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 55\n \n 4.3 Next steps in configuration\n After finding the sample configuration that uses the same interface hardware as your machine (or a\n simulator configuration), and saving a copy to your home directory, you can customize it according to\n the details of your machine. Refer to the Integrator Manual for topics on configuration.\n@@ -1343,15 +1343,15 @@\n HAL files, local modifications will then prevail.\n The Configuration selector makes a symbolic link in the user configuration directory (named hallib)\n that points to the system HAL file library. This link simplifies copying a library file. For example, to\n copy the library core_sim.hal file in order to make local modifications:\n cd ~/linuxcnc/configs/name_of_configuration\n cp hallib/core_sim.hal core_sim.hal\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 55\n \n Chapter 5\n \n Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n@@ -1383,15 +1383,15 @@\n \n You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also\n available for Debian Jessie or Debian Buster if you happen to already be running one of those.\n You will also need to check which realtime kernel is being used:\n uname -r\n 4.19.0-9-rt-amd64\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 55\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC\n version to install.\n@@ -1436,15 +1436,15 @@\n deb https://linuxcnc.org jessie base\n 2.8-rt\n deb https://linuxcnc.org buster base\n 2.8-rtpreempt\n deb https://linuxcnc.org buster base\n 2.8-rt\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 55\n \n \u2022 Click Add Source, then Close in the Software Sources window. If it pops up a window informing\n you that the information about available software is out-of-date, click the Reload button.\n \n 5.1.2 Upgrading to the new version\n@@ -1464,15 +1464,15 @@\n \n 5.1.3 Ubuntu Precise\n \u2022 Click on the Dash Home icon in the top left.\n \u2022 In the Search field, type \u201dupdate\u201d, then click on the Update Manager icon.\n \u2022 Click the Check button to fetch the list of packages available.\n \u2022 Click the Install Updates button to install the new versions of all packages.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 55\n \n 5.2 Updating without Network\n To update without a network connection you need to download the .deb then install it with dpkg. The\n .debs can be found in https://linuxcnc.org/dists/ .\n You have to drill down from the above link to find the correct deb for your installation. Open a terminal\n@@ -1509,15 +1509,15 @@\n /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting\n correspondingly needs to change from libcanterp.so to canterp.so.\n \n 5.4 Updating Configuration Files (for 2.8.x)\n The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your\n machine configuration.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 55\n \n The main difference is that LinuxCNC no longer makes any assumptions about which joint controls\n which axis. This change is generally termed \u201djoints-axes\u201d after the name of the development branch\n where the changes started. This change has been in development since at least 2010, and has finally\n been merged.\n@@ -1557,15 +1557,15 @@\n spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for\n the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a\n HAL file loadrt entry for motmod).\n The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match.\n The spindle control pin names have been changed to make spindles look more like axes and joints.\n motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 55\n \n take care of these changes. To control extra spindles the G and M-codes which control spindle speed\n now accept an additional \u201d$\u201d argument, for example M3 $2 to start the third spindle. \u201d$\u201d was chosen\n to avoid clashes with any existing code letters. It should be possible to create custom G-codes to\n match any other multi-spindle controller. See the G-code and M-code manuals for code changes, and\n@@ -1613,15 +1613,15 @@\n \n HAL file:\n \n loadrt [KINS]KINEMATICS\n \n haltcl file: loadrt $::KINS(KINEMATICS)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 55\n \n 5.4.6 Lathe Configurations\n 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\n configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for\n homing the unused Y coordinate. These arrangements are no longer required or recommended.\n@@ -1661,15 +1661,15 @@\n \n Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters:\n [KINS]KINEMATICS = trivkins coordinates=XZ\n [KINS]JOINTS\n = 2\n [TRAJ]COORDINATES = XZ\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 55\n \n Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint\n positioning (for homing):\n [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH\n [KINS]JOINTS\n@@ -1717,15 +1717,15 @@\n [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer\n \n Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe\n [JOINT_N]LOCKING_INDEXER = 1\n \n HAL pins can be created to coordinate use of a locking indicator joint:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 55\n \n joint.N.unlock\n (BIT output from HAL)\n joint.N.is-unlocked (BIT input to\n HAL)\n@@ -1767,15 +1767,15 @@\n For example, lines like this will no longer be accepted:\n MAX_VELOCITY = 7.5 # This is the max velocity of the axis.\n \n They could be transformed into pairs of lines like this:\n # This is the max velocity of the axis.\n MAX_VELOCITY = 7.5\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 55\n \n 5.4.11 [TRAJ] settings\n In 2.7.x versions, trajectory planning ([TRAJ]) settings included:\n [TRAJ]\n DEFAULT_ACCELERATION\n@@ -1843,15 +1843,15 @@\n axis.L.jog-vel-mode\n \n where N is a joint number and L is an axis letter.\n To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint\n number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example,\n if joint 1 corresponds exactly to axis letter y:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 55\n \n net jora_1_y_enable\n => joint.1.jog-enable => axis.y.jog-enable\n net jora_1_y_scale\n => joint.1.jog-scale => axis.y.jog-scale\n@@ -1911,15 +1911,15 @@\n 5.6.1 halcompile\n The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt)\n the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names=\n items for userspace (loadusr) components.\n For components using personality, the maximum number is now settable by a command line option\n -P|--personalities.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 55\n \n 5.6.2 Parameter to Pin changes\n The following HAL output pins were changed from parameters to pins so that they can be connected\n to signals:\n motion.servo.last-period\n@@ -1953,15 +1953,15 @@\n homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode\n and axis jogging (coordinate letter X,Y,\u2026) is used. This is appropriate for all G-code moves requested\n by MDI commands or by G-code programs.\n Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide\n a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that\n use non-IDENTITY kinematics.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 55\n \n In many common situations, joint jogging is never needed since homing is accomplished using home\n switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine,\n issues the Home-All command, the machine homes and changes to world mode automatically. See\n Homing Configuration.\n@@ -2008,15 +2008,15 @@\n was: halui.jog.N.minus\n ... etc.\n \n is: halui.joint.N.plus\n is: halui.joint.N.minus\n ... etc.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 55\n \n where N is a joint number (0 \u2026 num_noints-1) or selected for the joint selected by the halui.joint.N.select\n pins.\n 5.8.2.3 Additional pin renames\n The HAL pins for selected joints were renamed for consistency with related pins.\n@@ -2049,15 +2049,15 @@\n 2. Preview Tab display of joints or axes according to joint or teleop mode\n 3. Preview Tab display of Home and Limit icons in joint mode\n 4. Preview Tab display of All-homed and Any-limit icons in teleop mode\n 5. DRO Tab display of joint or axes according to joint or teleop mode\n 6. Jogging is supported in both joint and teleop motion modes.\n 7. External changes to the joint/teleop motion mode are detected.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 55\n \n 5.8.3.4 Home icons\n For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a\n joint is homed.\n For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint\n@@ -2092,15 +2092,15 @@\n commands have been simplified to use an argument that is just the coordinate letter.\n Commands now using a coordinate letter argument are:\n 1. emc_pos_offset\n 2. emc_abs_cmd_pos\n 3. emc_abs_act_pos\n 4. emc_rel_cmd_pos\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 55\n \n 5. emc_rel_act_pos\n 6. emc_tool_offset\n 7. emc_probed_pos\n \n@@ -2139,15 +2139,15 @@\n is: set jog_stop joint_number|axis_letter\n \n Note\n Test for teleop mode using command: get teleop_enable\n If TELEOP_ENABLE=YES, use axis_letter;\n Else use joint_number\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 55\n \n Note\n Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234\n in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided\n the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding\n@@ -2177,15 +2177,15 @@\n \n 5.12 Simulator configurations (updates for joints axes 2.8.x)\n 5.12.1 Pre-joints_axes\n Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common\n milling machine \u2014 a Cartesian system with trivial kinematics and three axes named X Y Z. Typical\n HAL file entries:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 55\n \n [HAL]\n HALFILE = core_sim.hal\n HALFILE = sim_spindle_encoder.hal\n HALFILE = axis_manualtoolchange.hal\n@@ -2225,15 +2225,15 @@\n Omitting one or more of the core functions allows testing without without the function or addition of\n new HALFILEs to implement or expand on the functionality.\n 5.12.2.1 Equivalent HAL commands file\n When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to\n show the halcmd commands issued. The file name is based on the name of the INI file with _cmds\n appended to the basename and a conventional .hal file extension. Example:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 55\n \n inifilename:\n example.ini\n equivalent_halfilename: example_cmds.hal\n \n@@ -2265,15 +2265,15 @@\n Commits to unreleased branches may make changes that affect testers and early-adopters of the\n unreleased software.\n \n 5.13.1 Motion pins\n New pins (see the motion man page for more info):\n --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction ---\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 55\n \n 5.13.2 HAL pins\n Name changes:\n was: axis.L.vel-cmd\n is: axis.l.teleop-vel-cmd\n@@ -2304,15 +2304,15 @@\n 5.13.6 bldc3_hall\n The bldc_hall3 component has been removed. The bldc component is more flexible and better tested.\n \n 5.13.7 [JOINT_n]HOME_SEQUENCE Starting values\n Starting sequence values may be 0, 1 (or -1) only. See the \u201dHoming Configuration\u201d documentation for\n more information.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 55\n \n 5.13.8 [JOINT_n]HOME_SEQUENCE Negative values\n Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent\n misalignment (racking) in common gantry configurations. As always, machines with any kinematics\n type must be homed prior to enabling conventional world mode jogging.\n@@ -2345,15 +2345,15 @@\n \n 5.14.4 Configuration Updates\n 5.14.4.1 INI file Settings\n New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET \u2014 support encoder with index that does not\n reset upon receipt of index pulse following assertion of index_enable.\n axis.py default for [DISPLAY]GEOMETRY was:\u201dXYZBCUVW\u201d,is:\u201dXYZABCUVW\u201d\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 55\n \n 5.14.5 Code Updates\n Management of the internal storage of tool data and the communication of same between EMCIO and\n TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata\n is deprecated and may be removed before a new release.\n@@ -2381,15 +2381,15 @@\n A homing api is provided by src/emc/motion/homing.h to support users\u2019 custom homing code that\n replaces src/emc/motion/homing.c with a user-customized homing.c file.\n 5.14.5.5 Motion\n The motion module supports kinematics modules that define new functions kinematicsSwitchable()\n and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided for use of such kinematics modules.\n 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 \u201dKINS_NOT_SWITCHABLE\u201d provided by kinematics.h.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 55\n \n 5.14.5.6 Switchkins Kinematics Modules\n Several kinematics modules are now switchable between their eponymous kinematics and an alternate\n identity kinematics mode.\n Kinematic modules supporting switchkins:\n@@ -2418,15 +2418,15 @@\n lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified.\n lib/python/vismach.py: new HAL pin vismach.plotclear\n \n 5.14.6 HAL\n 5.14.6.1 Components\n sim_home_switch: added I/O pin for index-enable\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 55\n \n 5.14.6.2 Motion module pins\n motion.feed-upm \u2014 current feed in units per minute\n \n 5.14.7 Configs\n@@ -2436,15 +2436,15 @@\n 5.14.7.2 Simulation Configs\n sim/configs/axis/axis_9axis: demonstrate simulated encoder index\n \n 5.15 Changes after 2.8.x\n Future versions of this document will take into account changes made to the development branch\n after the latest 2.8.x release.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 55\n \n Chapter 6\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -2478,15 +2478,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 55\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -2531,15 +2531,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 55\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -2582,15 +2582,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 55\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -2633,15 +2633,15 @@\n Rapid\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n 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\n program for the first time.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 55\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet\n these requirements it is necessary to install a realtime kernel such as RTAI and build the software\n to run in the special real-time environment. For this reason real-time software runs in kernelspace.\n@@ -2682,28 +2682,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 55\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 55\n \n Chapter 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -2730,15 +2730,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 55\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any\n such manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -2787,15 +2787,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front\n cover must present the full title with all words of the title equally prominent and visible. You may add\n other material on the covers in addition. Copying with changes limited to the covers, as long as they\n preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying\n in other respects.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 55\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access\n@@ -2841,15 +2841,15 @@\n Version. N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any\n Invariant Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 55\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -2890,15 +2890,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 55\n \n this License provided that you also include the original English version of this License. In case of a\n disagreement between the translation and the original English version of this License, the original\n English version will prevail.\n 9. TERMINATION\n@@ -2926,15 +2926,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 55\n \n Chapter 8\n \n Index\n A\n@@ -3012,15 +3012,15 @@\n RTAI, 47\n RTAPI, 47\n RTLINUX, 47\n Running LinuxCNC, 15\n S\n servo motor, 47\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Signed Integer, 47\n spindle, 47\n stepper motor, 47\n System Requirements, 4\n T\n TASK, 47\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Integrator Information\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Contents\n 1 Stepper Information\n \n 1\n@@ -127,15 +127,15 @@\n \n 18\n \n 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 18\n \n Chapter 1\n \n Stepper Information\n 1.1 Stepper Motor Operation\n@@ -154,15 +154,15 @@\n the time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing\n the overall torque. This relationship between speed and torque is largely inversely proportional.\n In the below example, the charging time for three coils is shown when the applied voltage is stepped\n from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time\n taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full\n current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again:\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 18\n \n If the rate at which step changes are applied to the coils is significantly shorter than the rise time,\n it\u2019s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus\n maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before\n the step voltage is removed, but the 4 mH and 8 mH coils cannot:\n@@ -181,15 +181,15 @@\n In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several\n orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor\n may have a rating of only a handful of volts, yet the power supply and driver could be operating at\n 48 VDC or more.\n Nearly all modern stepper motor drivers on the market today are constant-current types. That is,\n the current being applied to each winding is fixed irrespective of how much voltage is being applied.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 18\n \n Most drivers accomplish this by monitoring the current being drawn through the motor windings and\n rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending\n on the drivers being used, it may even be possible to hear this high frequency whistling in the motors\n themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding\n@@ -234,15 +234,15 @@\n introduced.\n Several methods exist to help control the effects of resonance, all with varying degrees of complexity,\n effectiveness and side effects:\n \u2022 Microstepping can help reduce resonance by using smaller step changes in current between each\n step. These smaller step changes cause less ringing in the motor and windings and thus cause less\n excitation at the point of resonance.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 18\n \n \u2022 Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic\n method of reducing resonance, always accelerating or decelerating through the resonant peak.\n \u2022 Increasing inertial load will damp unwanted resonances at the expense of some torque and potentially some accuracy. Elastomeric motor mounts, shaft couplings or bearing mounts can be\n employed.\n@@ -281,15 +281,15 @@\n in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper\n motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely\n meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with\n leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees\n of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain\n the necessary resolution and torque gains.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 18\n \n 1.5 Open and Closed Loop\n In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver\n receives no feedback from the motor that it has achieved the desired outcome when commanded to\n begin stepping. The assumption by the software, driver and end user is that the motor operated\n@@ -309,15 +309,15 @@\n to the downstream driver as it would normally when running in open loop. In these situations the\n drivers usually include an alarm output which signals the software to halt when the load placed on\n the stepper becomes too great for the driver to compensate without losing steps.\n More advanced implementations of closed loop operation bring the encoder signal all the way back\n to the host computer, but require that a much higher hardware and software overhead be installed to\n manage the encoder feedback and calculation and delivery of drive compensation.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 18\n \n Chapter 2\n \n Stepper Timing\n This page is for step and direction timing of stepper drives.\n@@ -380,15 +380,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 202\n \n@@ -480,15 +480,15 @@\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g212rev15.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g213vrev7.html\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 320\n \n@@ -625,15 +625,15 @@\n http://granitedevices.fi/assets/files/vsde_160_manual.pdf\n http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.piclist.com/techref/io/stepper/linistep/index.htm\n http://www.piclist.com/techref/io/stepper/THB6064/index.htm\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n *Motion\n Control\n \n MSD542\n@@ -857,15 +857,15 @@\n http://www.kelinginc.net/kL6852.pdf\n https://www.sherline.com/-\n \n http://www.lewetz.de/download/ibstep3se.pdf\n http://www.compumotor.com\n manuals/ZETA/ZETA_Rev_A_Entire.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1104,15 +1104,15 @@\n http://leadshine.com/UploadFile/Down/EM503d_P.pdf\n http://leadshine.com/UploadFile/Down/EM705d_P.pdf\n http://leadshine.com/UploadFile/Down/EM806d_P.pdf\n http://leadshineusa.com/UploadFile/Down/M415Bm.pdf\n http://leadshineusa.com/UploadFile/Down/M542V2m.pdf\n http://leadshineusa.com/UploadFile/Down/M752m.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1291,15 +1291,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 18\n \n Chapter 3\n \n Best Wiring Practices\n 3.1 Electrical Noise\n@@ -1328,15 +1328,15 @@\n this discussion the terms earth and common must be made distinct from each other to avoid confusion.\n \n 3.3 Wire Selection and Use\n 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\n wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have\n some effect on the overall system. What follows are some tips that may prove helpful.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 18\n \n 3.3.1 Single Conductor Wire\n Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than\n 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\n wherever possible.\n@@ -1377,15 +1377,15 @@\n is more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded\n types. Coverage is typically 70% to 95% depending on how tight the braid has been constructed.\n Despite the lower coverage of braided shield, the effectiveness is greater than foil shielding due to\n the increased bulk of the braid, and copper being a better conductor than aluminum.\n 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 multiconductor cable may also be shielded along with an overall shield being applied to the entire cable\n jacket.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 18\n \n 3.4 AC Line Voltage\n The incoming mains AC that powers the CNC system can pick up and carry noise into the power\n supplies and other equipment. For example, if the incoming supply is also used to feed large motors,\n electrical noise may be generated on the line feeding the CNC components. Although most modern\n@@ -1423,15 +1423,15 @@\n supply may have optically-isolated signal input lines which provide complete electrical separation of\n the driver\u2019s input and output circuitry for safety and noise immunity purposes. Tying the stepper\n motor and logic control supply commons together in this case may have a detrimental impact on the\n operation of the system.\n In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system\n separate from each other, and separate from the AC mains earth unless there is a specific requirement\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 18\n \n to tie them together. In most cases the common points of the heavy-duty power sections of the CNC\n system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common\n points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool\n probe circuitry etc) to prevent cross-contamination of the two systems.\n@@ -1471,15 +1471,15 @@\n electrically hostile environments. When grounding the shield in the cable, terminate to the mains\n earth.\n If the controller and interfacing devices can withstand higher control signals, consider altering the\n wiring and power supply requirements to use a bigger voltage for signaling (eg, 12V or 24V). The\n same 2V EMI noise spike that could corrupt a 3.3V limit switch signal will be far less likely to cause\n issues with a limit switch operating with a 24V signal.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 18\n \n 3.8 Stepper or Servo Motor Drivers\n The metal housing of the driver should be connected to the local mains earth in the CNC system.\n Some driver enclosures will indicate a specific terminal as being the earthing point, in which case this\n point must be connected to earth via a dedicated wire.\n@@ -1514,15 +1514,15 @@\n 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\n degree angle as possible.\n Avoid long loops of excess wire at any peripheral devices - they are great antennas for receiving or\n transmitting noise. Where possible, run wires in close proximity to large earthed structures. If the\n controller enclosure features a large metallic back plate that is earthed, secure all control wiring\n against this surface as much as possible while wiring between two points.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 18\n \n 3.11 Mechanical Noise\n Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly\n when operated. More often than not the switch contacts will physically bounce against each other\n several times within a very short space of time when operated. This may be interpreted by the machine\n@@ -1556,15 +1556,15 @@\n \n 3.12.1 Hardware Documentation\n At a minimum, make sure to save any documentation associated with the installed hardware in a safe\n place. Stepper controllers, break out boards, power supplies, VFDs, interfaces and controllers, servo\n and stepper drivers and any associated device settings are all critical components of the system and\n their documentation should be kept at hand for easy reference.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 18\n \n 3.12.2 Wiring Schematics\n As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The\n schematic does not have to be all that neat, but it should be understandable in such a way that it\n could be easily interpreted at a later date, ideally by anyone who may need to service the equipment.\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Manual_Pages.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Manual_Pages.pdf", "unified_diff": null, "details": [{"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -5855,15 +5855,15 @@\n Modbus slave address\n \n LICENSE\n GPLv2 or greater\n \n 122\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fpmx485-test(1)\n \n LinuxCNC Documentation\n \n@@ -7515,15 +7515,15 @@\n Computed resistance of the thermistor.\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 161\n \n \fTOOLEDIT(1)\n \n The Enhanced Machine Controller\n \n@@ -8073,15 +8073,15 @@\n Modbus slave address\n \n LICENSE\n GPLv2 or greater\n \n 172\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fXHC-HB04-ACCELS(1)\n \n The Enhanced Machine Controller\n \n@@ -12442,15 +12442,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 265\n \n \fABS_S32(9)\n \n HAL Component\n \n@@ -12481,15 +12481,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n 266\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fAND2(9)\n \n HAL Component\n \n@@ -12521,15 +12521,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 267\n \n \fANGLEJOG(9)\n \n HAL Component\n \n@@ -12573,15 +12573,15 @@\n anglejog.N.max-vel float in\n vector max velocity magnitude\n anglejog.N.max-accel float in\n vector max acceleration magnitude\n \n 268\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fANGLEJOG(9)\n \n HAL Component\n \n@@ -12616,15 +12616,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 269\n \n \fAT_PID(9)\n \n HAL Component\n \n@@ -12692,15 +12692,15 @@\n Chris S. Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 271\n \n \fBIN2GRAY(9)\n \n HAL Component\n \n@@ -12728,15 +12728,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n 272\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fBIQUAD(9)\n \n HAL Component\n \n@@ -12790,15 +12790,15 @@\n biquad.N.n1 float rw (default: 0.0)\n 1st-delayed numerator coef\n biquad.N.n2 float rw (default: 0.0)\n 2nd-delayed numerator coef\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 273\n \n \fBIQUAD(9)\n \n HAL Component\n \n@@ -12808,15 +12808,15 @@\n Peter G. Vavaroutsos\n \n LICENSE\n GPL\n \n 274\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fBITSLICE(9)\n \n HAL Component\n \n@@ -12845,15 +12845,15 @@\n Andy Pugh\n \n LICENSE\n GPL2+\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 275\n \n \fBITWISE(9)\n \n HAL Component\n \n@@ -12890,15 +12890,15 @@\n Andy Pugh\n \n LICENSE\n GPL 2+\n \n 276\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12940,15 +12940,15 @@\n H Emulated Hall sensor output. This mode can be used to control a drive which expects 3x Hall signals, or\n to convert between a motor with one hall pattern and a drive which expects a different one.\n 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.\n T Force Trapezoidal mode.\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 277\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12996,15 +12996,15 @@\n bldc.N.C8 bit in [if ( personality & 0x10 )]\n Fanuc Gray-code bit 3 input\n bldc.N.value float in\n PWM master amplitude input\n \n 278\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -13051,15 +13051,15 @@\n bldc.N.A-high float out [if ( personality & 0xF00 ) == 0x200]\n High-side driver for phase A\n bldc.N.B-high float out [if ( personality & 0xF00 ) == 0x200]\n High-side driver for phase B\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 279\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -13108,15 +13108,15 @@\n offset such as the 8I20. This value has a range of 0 to 1 and measures electrical revolutions. It will\n have two zeros for a 4 pole motor, three for a 6-pole, etc.\n bldc.N.out float out\n Current output, including the effect of the dir pin and the alignment sequence.\n \n 280\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -13153,15 +13153,15 @@\n Bodine). 22 (240 degree). 25 (60 degree commutation).\n Note that a number of incorrect commutations will have non-zero net torque which might look as\n if they work, but don\u2019t really.\n If your motor lacks documentation it might be worth trying every pattern.\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 281\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -13461,15 +13461,15 @@\n 001\n 101\n 011\n 001\n 000\n 100\n \n-2024-02-02\n+2025-03-07\n \n BLDC(9)\n \n B-C\n 100\n 101\n 100\n@@ -13531,15 +13531,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 283\n \n \fBLEND(9)\n \n HAL Component\n \n@@ -13573,15 +13573,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 284\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13625,15 +13625,15 @@\n and \u2019edge\u2019 mode this is when both the index and pulse inputs are true. In \u2019counts\u2019 mode only the index input needs to be set to set home. Additionally in \u2019counts\u2019 mode the usual index-enable logic of the encoder\n counters is supported.\n With some carousel designs the carousel will not stop immediately. To allow for this set the lign-dc pin to a\n low velocity to be used for a final latching move, and set thedecel-time to a suitable value. Once the decel-\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 285\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13679,15 +13679,15 @@\n The duration in seconds for which a ratchet changer (Boxford, Emco) should pulse the reverse pin\n to lock the holder\n carousel.N.fwd-dc float in\n Velocity or duty cycle when forwards rotation is desired\n \n 286\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13737,15 +13737,15 @@\n carousel.N.homing bit r (default: 0)\n Shows that homing is in progress. Only used for index mode\n carousel.N.timer float r\n Shows the value of the internal timer\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 287\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13760,15 +13760,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n 288\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCHARGE_PUMP(9)\n \n HAL Component\n \n@@ -13804,15 +13804,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 289\n \n \fCLARKE2(9)\n \n HAL Component\n \n@@ -13850,15 +13850,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 290\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCLARKE3(9)\n \n HAL Component\n \n@@ -13897,15 +13897,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 291\n \n \fCLARKEINV(9)\n \n HAL Component\n \n@@ -13943,15 +13943,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 292\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCLASSICLADDER(9)\n \n HAL Component\n \n@@ -14067,15 +14067,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 295\n \n \fCONSTANT(9)\n \n HAL Component\n \n@@ -14100,15 +14100,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 296\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_BIT_FLOAT(9)\n \n HAL Component\n \n@@ -14132,15 +14132,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 297\n \n \fCONV_BIT_S32(9)\n \n HAL Component\n \n@@ -14164,15 +14164,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 298\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_BIT_U32(9)\n \n HAL Component\n \n@@ -14196,15 +14196,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 299\n \n \fCONV_FLOAT_S32(9)\n \n HAL Component\n \n@@ -14234,15 +14234,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 300\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_FLOAT_U32(9)\n \n HAL Component\n \n@@ -14272,15 +14272,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 301\n \n \fCONV_S32_BIT(9)\n \n HAL Component\n \n@@ -14310,15 +14310,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 302\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_S32_FLOAT(9)\n \n HAL Component\n \n@@ -14342,15 +14342,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 303\n \n \fCONV_S32_U32(9)\n \n HAL Component\n \n@@ -14380,15 +14380,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 304\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_U32_BIT(9)\n \n HAL Component\n \n@@ -14418,15 +14418,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 305\n \n \fCONV_U32_FLOAT(9)\n \n HAL Component\n \n@@ -14450,15 +14450,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 306\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCONV_U32_S32(9)\n \n HAL Component\n \n@@ -14488,15 +14488,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 307\n \n \fCOREXY_BY_HAL(9)\n \n HAL Component\n \n@@ -14540,15 +14540,15 @@\n corexy-by-hal.N.alpha-cmd float out\n typ: command to alpha motor\n corexy-by-hal.N.beta-cmd float out\n typ: command to beta ts motor\n \n 308\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fCOREXY_BY_HAL(9)\n \n HAL Component\n \n@@ -14558,15 +14558,15 @@\n Dewey Garrett based on forum post from nbremond\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 309\n \n \fCOUNTER(9)\n \n HAL Component\n \n@@ -14647,15 +14647,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 311\n \n \fDDT(9)\n \n HAL Component\n \n@@ -14687,15 +14687,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 312\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fDEADZONE(9)\n \n HAL Component\n \n@@ -14725,15 +14725,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 313\n \n \fDEBOUNCE(9)\n \n HAL Component\n \n@@ -14815,15 +14815,15 @@\n Andy Pugh\n \n LICENSE\n GPL 2+\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 315\n \n \fDIFFERENTIAL(9)\n \n HAL Component\n \n@@ -14860,15 +14860,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n 316\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fDIV2(9)\n \n HAL Component\n \n@@ -14907,15 +14907,15 @@\n Noel Rodes\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 317\n \n \fEDGE(9)\n \n HAL Component\n \n@@ -14953,15 +14953,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 318\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fENCODER(9)\n \n HAL Component\n \n@@ -15214,15 +15214,15 @@\n eoffset-per-angle.N.rfraction float in (default: 0.1)\n Offset amplitude (+/- fraction of radius_ref)\n eoffset-per-angle.N.fmult float in (default: 6)\n Offset frequency multiplier\n \n 324\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fEOFFSET_PER_ANGLE(9)\n \n HAL Component\n \n@@ -15259,15 +15259,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 325\n \n \fESTOP_LATCH(9)\n \n HAL Component\n \n@@ -15329,15 +15329,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 326\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fFEEDCOMP(9)\n \n HAL Component\n \n@@ -15373,15 +15373,15 @@\n Eric H. Johnson\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 327\n \n \fFILTER_KALMAN(9)\n \n HAL Component\n \n@@ -15431,30 +15431,30 @@\n Estimation of the noise covariances (observation).\n \n AUTHOR\n Dmian Wrobel \n \n 328\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fFILTER_KALMAN(9)\n \n HAL Component\n \n FILTER_KALMAN(9)\n \n LICENSE\n GPL-2.0-or-later\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 329\n \n \fFLIPFLOP(9)\n \n HAL Component\n \n@@ -15487,15 +15487,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 330\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fGANTRY(9)\n \n HAL Component\n \n@@ -15551,15 +15551,15 @@\n Charles Steinkuehler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 331\n \n \fGANTRYKINS(9)\n \n Kinematics Module\n \n@@ -15626,15 +15626,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 333\n \n \fGENTRIVKINS(9)\n \n Kernel Developer\u2019s Manual\n \n@@ -15712,15 +15712,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n 336\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fhal_bb_gpio(9)\n \n HAL Component\n \n@@ -15842,15 +15842,15 @@\n histobins.N.nbins u32 in (default: 20)\n histobins.N.binsize float in (default: 1)\n histobins.N.minvalue float in (default: 0)\n histobins.N.index s32 in\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 339\n \n \fHISTOBINS(9)\n \n HAL Component\n \n@@ -15874,15 +15874,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 340\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fHM2_7I43(9)\n \n HAL Component\n \n@@ -16460,15 +16460,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 353\n \n \fHOSTMOT2(9)\n \n HAL Component\n \n@@ -17818,15 +17818,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 381\n \n \fILOWPASS(9)\n \n HAL Component\n \n@@ -17868,15 +17868,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 382\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fINTEG(9)\n \n HAL Component\n \n@@ -17905,15 +17905,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 383\n \n \fINVERT(9)\n \n HAL Component\n \n@@ -17947,15 +17947,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n 384\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fJOYHANDLE(9)\n \n HAL Component\n \n@@ -17999,15 +17999,15 @@\n Paul Willutzki\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 385\n \n \fKINS(9)\n \n Kinematics Modules\n \n@@ -18330,15 +18330,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 392\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLATENCYBINS(9)\n \n HAL Component\n \n@@ -18393,30 +18393,30 @@\n latencybins.N.availablebins s32 out (default: 1000)\n \n AUTHOR\n Dewey Garrett\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 393\n \n \fLATENCYBINS(9)\n \n HAL Component\n \n LATENCYBINS(9)\n \n LICENSE\n GPL\n \n 394\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLCD(9)\n \n HAL Component\n \n@@ -18581,15 +18581,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 398\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLIMIT2(9)\n \n HAL Component\n \n@@ -18618,15 +18618,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 399\n \n \fLIMIT3(9)\n \n HAL Component\n \n@@ -18662,15 +18662,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 400\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLINCURVE(9)\n \n HAL Component\n \n@@ -18715,15 +18715,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 401\n \n \fLINEARDELTAKINS(9)\n \n Kinematics Component\n \n@@ -18830,15 +18830,15 @@\n This is a named AND circuit with two inputs and one output.\n loadrt logic names=both personality=0x102\n addf both servo-thread\n net sig-in-0 => both.in-00\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 403\n \n \fLOGIC(9)\n \n HAL Component\n \n@@ -18854,15 +18854,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 404\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLOWPASS(9)\n \n HAL Component\n \n@@ -18911,15 +18911,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 405\n \n \fLUT5(9)\n \n HAL Component\n \n@@ -18947,15 +18947,15 @@\n 0xfffffffe. Because every weight except 0x1 is true the function is the sum of every line except the first one.\n A 2-input xor function is TRUE whenever exactly one of the inputs is true, so the correct value for function\n is 0x6. Only in-0 and in-1 should be connected to signals, because if any other bit is TRUE then the output\n will be FALSE.\n \n 406\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fLUT5(9)\n \n HAL Component\n \n@@ -19177,15 +19177,15 @@\n lut5.N.function u32 rw\n \n SEE ALSO\n and(9), logic(9), not(9), or2(9), xor2(9).\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 407\n \n \fLUT5(9)\n \n HAL Component\n \n@@ -19195,15 +19195,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 408\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMAJ3(9)\n \n HAL Component\n \n@@ -19231,15 +19231,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 409\n \n \fMATCH8(9)\n \n HAL Component\n \n@@ -19280,15 +19280,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 410\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMATRIX_KB(9)\n \n HAL Component\n \n@@ -19413,15 +19413,15 @@\n max31855.N.fault.M bit out (M=0..( personality & 0xf ))\n Fault condition detected.\n max31855.N.fault-flags.M u32 out (M=0..( personality & 0xf ))\n Fault flags: 0x1 = open sensor, 0x2 short to gnd, 0x3 short to vcc.\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 413\n \n \fMAX31855(9)\n \n HAL Component\n \n@@ -19431,15 +19431,15 @@\n Joseph Calderon\n \n LICENSE\n GPL\n \n 414\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMESA_7I65(9)\n \n HAL Component\n \n@@ -19482,15 +19482,15 @@\n Andy Pugh / Cliff Blackburn\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 415\n \n \fMESA_PKTGYRO_TEST(9)\n \n HAL Component\n \n@@ -19534,15 +19534,15 @@\n Boris Skegin\n \n LICENSE\n GPL\n \n 416\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMESA_UART(9)\n \n HAL Component\n \n@@ -19588,25 +19588,25 @@\n Andy Pugh andy@bodgesoc.org\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 417\n \n \fMESA_UART(9)\n \n 418\n \n HAL Component\n \n-2024-02-02\n+2025-03-07\n \n MESA_UART(9)\n \n LinuxCNC Documentation\n \n \fMESSAGE(9)\n \n@@ -19656,15 +19656,15 @@\n Les Newell\n \n LICENSE\n GPL v2\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 419\n \n \fMILLTURN(9)\n \n HAL Component\n \n@@ -19698,15 +19698,15 @@\n David Mueller\n \n LICENSE\n GPL\n \n 420\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMINMAX(9)\n \n HAL Component\n \n@@ -19732,15 +19732,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 421\n \n \fMOTION(9)\n \n HAL Component\n \n@@ -20290,15 +20290,15 @@\n soft limits are not honored, an offset move may encounter hard limits (or CRASH if there are no limit\n switches). Use of the offset-min-M and offset-max-M inputs to limit travel is recommended. Triggering a\n hard limit will turn off the machine -- see Caution above.\n The offset-in-M values may be set with inifile settings, controlled by a GUI, or managed by other HAL\n \n 434\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMOVEOFF(9)\n \n HAL Component\n \n@@ -20343,15 +20343,15 @@\n moveoff.N.offset-applied bit out\n TRUE if one or more offsets are applied.\n moveoff.N.waypoint-limit bit out (default: 0)\n Indicates waypoint limit reached (motion ceases), an enabling pin must be deasserted to initiate return to original position.\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 435\n \n \fMOVEOFF(9)\n \n HAL Component\n \n@@ -20398,15 +20398,15 @@\n Dewey Garrett and Andy Pugh\n \n LICENSE\n GPL\n \n 436\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMULT2(9)\n \n HAL Component\n \n@@ -20434,15 +20434,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 437\n \n \fMULTICLICK(9)\n \n HAL Component\n \n@@ -20491,15 +20491,15 @@\n \n PARAMETERS\n multiclick.N.invert-input bit rw (default: FALSE)\n If FALSE (the default), clicks start with rising edges. If TRUE, clicks start with falling edges.\n \n 438\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMULTICLICK(9)\n \n HAL Component\n \n@@ -20518,15 +20518,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 439\n \n \fMULTISWITCH(9)\n \n HAL Component\n \n@@ -20563,15 +20563,15 @@\n ArcEye schooner30@tiscali.co.uk / Andy Pugh andy@bodgesoc.org\n \n LICENSE\n GPL\n \n 440\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMUX16(9)\n \n HAL Component\n \n@@ -20620,25 +20620,25 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 441\n \n \fMUX16(9)\n \n 442\n \n HAL Component\n \n-2024-02-02\n+2025-03-07\n \n MUX16(9)\n \n LinuxCNC Documentation\n \n \fMUX2(9)\n \n@@ -20666,15 +20666,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 443\n \n \fMUX4(9)\n \n HAL Component\n \n@@ -20712,15 +20712,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 444\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fMUX8(9)\n \n HAL Component\n \n@@ -20771,15 +20771,15 @@\n Stuart Stevenson\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 445\n \n \fMUX_GENERIC(9)\n \n HAL Component\n \n@@ -20890,15 +20890,15 @@\n Chris Radek\n \n LICENSE\n GPL\n \n 448\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fNOT(9)\n \n HAL Component\n \n@@ -20924,15 +20924,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 449\n \n \fOFFSET(9)\n \n HAL Component\n \n@@ -20966,15 +20966,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 450\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fOHMIC(9)\n \n HAL Component\n \n@@ -21027,15 +21027,15 @@\n ohmic.N.arc-on bit out\n True if full scale (eg arc is on)\n ohmic.N.thcad-volts float out\n Measured thcad voltage\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 451\n \n \fOHMIC(9)\n \n HAL Component\n \n@@ -21073,15 +21073,15 @@\n Rod Webster\n \n LICENSE\n GPL\n \n 452\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fONESHOT(9)\n \n HAL Component\n \n@@ -21128,15 +21128,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 453\n \n \fOPTO_AC5(9)\n \n HAL Component\n \n@@ -21239,15 +21239,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 456\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fORIENT(9)\n \n HAL Component\n \n@@ -21296,15 +21296,15 @@\n orient.N.angle float in\n orient target position in degrees, 0 <= angle < 360\n orient.N.command float out\n target spindle position, input to PID command\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 457\n \n \fORIENT(9)\n \n HAL Component\n \n@@ -21321,15 +21321,15 @@\n Michael Haberler\n \n LICENSE\n GPL\n \n 458\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fPID(9)\n \n HAL Component\n \n@@ -21692,15 +21692,15 @@\n plasmac.arc-voltage-offset float in\n offset to set arc voltage to 0 at 0 volts\n plasmac.arc-voltage-scale float in\n scale to convert arc_voltage input to actual volts\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 465\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21749,15 +21749,15 @@\n plasmac.debug-print bit in\n if true will print state changes as a debug aid\n plasmac.external-estop bit in\n external E-stop input\n \n 466\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21806,15 +21806,15 @@\n plasmac.mesh-arc-ok bit in (default: FALSE)\n don\u2019t require arc ok for mesh mode\n plasmac.mesh-enable bit in\n enable mesh cutting mode\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 467\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21863,15 +21863,15 @@\n plasmac.paused-motion-speed float in\n multiplier for speed of motion when paused, from -1 to 1\n plasmac.pid-d-gain float in\n derivative gain input [mode 0 & mode 1]\n \n 468\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21920,15 +21920,15 @@\n plasmac.scribe-start bit in\n start a new scribe, connect to spindle.1.on\n plasmac.setup-feed-rate float in\n feed rate for moves to pierce and cut heights (machine units per minute)\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 469\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21977,15 +21977,15 @@\n plasmac.voidlock-slope s32 in (default: 500)\n voidlock slope in volts per second\n plasmac.x-offset s32 in\n offset to apply to axis x for consumable change and cut recovery (scaled units)\n \n 470\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22034,15 +22034,15 @@\n plasmac.offset-scale float out\n offset scale, connect to axis..eoffset-scale\n plasmac.ohmic-enable bit out\n on only while probing\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 471\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22091,15 +22091,15 @@\n plasmac.torch-on bit out\n turn torch on, connect to your torch on input\n plasmac.torch-time float out\n torch on time of current job\n \n 472\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22136,15 +22136,15 @@\n Phillip A Carter & Gregory D Carl\n \n LICENSE\n GPLv2 or greater\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 473\n \n \fPWMGEN(9)\n \n HAL Component\n \n@@ -22304,15 +22304,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 477\n \n \fSAMPLER(9)\n \n HAL User\u2019s Manual\n \n@@ -22425,15 +22425,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 480\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSCALED_S32_SUMS(9)\n \n HAL Component\n \n@@ -22468,15 +22468,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 481\n \n \fSELECT8(9)\n \n HAL Component\n \n@@ -22504,15 +22504,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n 482\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSERPORT(9)\n \n HAL Component\n \n@@ -22562,15 +22562,15 @@\n PARAMETERS\n serport.N.pin-3-out-invert bit rw\n serport.N.pin-4-out-invert bit rw\n serport.N.pin-7-out-invert bit rw\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 483\n \n \fSERPORT(9)\n \n HAL Component\n \n@@ -22579,15 +22579,15 @@\n serport.N.ioaddr u32 r\n \n LICENSE\n GPL\n \n 484\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSETSERIAL(9)\n \n HAL Component\n \n@@ -22818,15 +22818,15 @@\n sim-axis-hardware.N.Zmaxsw-lower float in\n sim-axis-hardware.N.Amaxsw-lower float in\n sim-axis-hardware.N.Umaxsw-lower float in\n sim-axis-hardware.N.Vmaxsw-lower float in\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 489\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n@@ -22881,15 +22881,15 @@\n sim-axis-hardware.N.Xmaxsw-out bit out\n Max limit switch\n sim-axis-hardware.N.Xminsw-out bit out\n min limit switch\n \n 490\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n@@ -22946,25 +22946,25 @@\n sim-axis-hardware.N.Vminsw-homesw-out bit out\n sim-axis-hardware.N.Vbothsw-homesw-out bit out\n sim-axis-hardware.N.limit-offset float in (default: .01)\n how much the limit switches are offset from inputted position. added to max, subtracted from min\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 491\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n SIM_AXIS_HARDWARE(9)\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n AUTHOR\n Chris S Morley\n \n LICENSE\n@@ -23085,15 +23085,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 495\n \n \fSIM_MATRIX_KB(9)\n \n HAL Component\n \n@@ -23132,15 +23132,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n 496\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSIM_PARPORT(9)\n \n HAL Component\n \n@@ -23191,15 +23191,15 @@\n sim-parport.N.pin-04-out-fake bit out\n sim-parport.N.pin-05-out-fake bit out\n sim-parport.N.pin-06-out-fake bit out\n sim-parport.N.pin-07-out-fake bit out\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 497\n \n \fSIM_PARPORT(9)\n \n HAL Component\n \n@@ -23257,15 +23257,15 @@\n sim-parport.N.pin-03-out-invert bit rw\n sim-parport.N.pin-04-out-invert bit rw\n sim-parport.N.pin-05-out-invert bit rw\n sim-parport.N.pin-06-out-invert bit rw\n \n 498\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSIM_PARPORT(9)\n \n HAL Component\n \n@@ -23294,15 +23294,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 499\n \n \fSIM_SPINDLE(9)\n \n HAL Component\n \n@@ -23335,15 +23335,15 @@\n Michael Haberler\n \n LICENSE\n GPL\n \n 500\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSIMPLE_TP(9)\n \n HAL Component\n \n@@ -23378,15 +23378,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 501\n \n \fSPHEREPROBE(9)\n \n HAL Component\n \n@@ -23419,15 +23419,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 502\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23478,15 +23478,15 @@\n spindle.N.current-gear u32 out\n Currently selected gear.\n spindle.N.at-speed bit out\n TRUE when the spindle is at speed\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 503\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23533,15 +23533,15 @@\n to go TRUE.\n spindle.N.zero-tolerance.x float in Tolerance for \u2019zero-speed\u2019 signal (in RPM).\n spindle.N.offset.x float in\n The output command is offset by this amount (in RPM).\n \n 504\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23554,15 +23554,15 @@\n Les Newell\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 505\n \n \fSPINDLE_MONITOR(9)\n \n HAL Component\n \n@@ -23593,15 +23593,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n gpl v2 or higher\n \n 506\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSSERIAL(9)\n \n HAL Component\n \n@@ -24298,15 +24298,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 520\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fSTREAMER(9)\n \n LinuxCNC Documentation\n \n@@ -24435,15 +24435,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 523\n \n \fSUPPLY(9)\n \n HAL Component\n \n@@ -24539,15 +24539,15 @@\n thc.requested-vel float in\n Connect to motion.requested-vel\n thc.volts-requested float in\n Tip Volts current_vel >= min_velocity requested\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 525\n \n \fTHC(9)\n \n HAL Component\n \n@@ -24590,15 +24590,15 @@\n John Thornton\n \n LICENSE\n GPLv2 or greater\n \n 526\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTHCUD(9)\n \n HAL Component\n \n@@ -24642,15 +24642,15 @@\n net thc-enable thcud.enable <= pyvcp.thc-enable\n \n FUNCTIONS\n thcud (requires a floating-point thread)\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 527\n \n \fTHCUD(9)\n \n HAL Component\n \n@@ -24694,15 +24694,15 @@\n John Thornton\n \n LICENSE\n GPLv2 or greater\n \n 528\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTHREADS(9)\n \n HAL Component\n \n@@ -24773,15 +24773,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 530\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTIME(9)\n \n HAL Component\n \n@@ -24836,15 +24836,15 @@\n loadrt time\n addf time.0 servo-thread\n net cycle-timer\n time.0.start <= halui.program.is-running\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 531\n \n \fTIME(9)\n \n HAL Component\n \n@@ -24890,15 +24890,15 @@\n John Thornton, itaib, Moses McKnight\n \n LICENSE\n GPL\n \n 532\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTIMEDELAY(9)\n \n HAL Component\n \n@@ -24928,15 +24928,15 @@\n Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 533\n \n \fTIMEDELTA(9)\n \n HAL Component\n \n@@ -24983,15 +24983,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 534\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTOF(9)\n \n HAL Component\n \n@@ -25023,15 +25023,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 535\n \n \fTOGGLE(9)\n \n HAL Component\n \n@@ -25068,15 +25068,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 536\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTOGGLE2NIST(9)\n \n HAL Component\n \n@@ -25121,15 +25121,15 @@\n Anders Wallin\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 537\n \n \fTON(9)\n \n HAL Component\n \n@@ -25161,15 +25161,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n 538\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTP(9)\n \n HAL Component\n \n@@ -25201,15 +25201,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 539\n \n \fTPCOMP(9)\n \n HAL Component\n \n@@ -25246,15 +25246,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 540\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fTRISTATE_BIT(9)\n \n HAL Component\n \n@@ -25282,15 +25282,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 541\n \n \fTRISTATE_FLOAT(9)\n \n HAL Component\n \n@@ -25318,15 +25318,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 542\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fUPDOWN(9)\n \n HAL Component\n \n@@ -25367,15 +25367,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 543\n \n \fUSERKINS(9)\n \n HAL Component\n \n@@ -25430,15 +25430,15 @@\n the halcompile utility but it is not accessible to kinematics\n functions.\n 2 Hal pins and parameters needed in kinematics functions\n (kinematicsForward(), kinematicsInverse()) must\n \n 544\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fUSERKINS(9)\n \n HAL Component\n \n@@ -25458,15 +25458,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 545\n \n \fWATCHDOG(9)\n \n HAL Component\n \n@@ -25552,15 +25552,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 547\n \n \fWEIGHTED_SUM(9)\n \n HAL Component\n \n@@ -25661,15 +25661,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 549\n \n \fXOR2(9)\n \n HAL Component\n \n@@ -25702,15 +25702,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 550\n \n-2024-02-02\n+2025-03-07\n \n LinuxCNC Documentation\n \n \fXYZAB_TDR_KINS(9)\n \n HAL Component\n \n@@ -25745,12 +25745,12 @@\n David Mueller\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2024-02-02\n+2025-03-07\n \n 551\n \n \f\n"}]}]}]}]}, {"source1": "linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "source2": "linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary\n -rw-r--r-- 0 0 0 1228 2023-02-10 04:33:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 26045540 2023-02-10 04:33:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 26046080 2023-02-10 04:33:18.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -4,18 +4,18 @@\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 331 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_es.desktop\n -rw-r--r-- 0 root (0) root (0) 357 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_es.desktop\n -rw-r--r-- 0 root (0) root (0) 372 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_es.desktop\n -rw-r--r-- 0 root (0) root (0) 361 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_es.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 825497 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf\n--rw-r--r-- 0 root (0) root (0) 25895479 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf\n--rw-r--r-- 0 root (0) root (0) 502264 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf\n--rw-r--r-- 0 root (0) root (0) 151465 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 825478 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 25895419 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 502242 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 151433 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf\n -rw-r--r-- 0 root (0) root (0) 2093 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/asciidoc-markup_es.adoc.gz\n -rw-r--r-- 0 root (0) root (0) 14404 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_es.html\n -rw-r--r-- 0 root (0) root (0) 2001 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/rtfaults_es.adoc\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-es/\n -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-es/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-es/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/\n"}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Developer Manual\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n \u00cdndice general\n 1. Introduction\n \n 1\n@@ -119,15 +119,15 @@\n \n 16\n \n 3.8.3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.8.3.2. Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n@@ -283,15 +283,15 @@\n \n 20\n \n 3.8.16.1.Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 3.8.16.2.Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n@@ -451,15 +451,15 @@\n \n 3.21.3.Process line\n \n 28\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 3.21.4.Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n@@ -627,15 +627,15 @@\n \n 41\n \n 4.14.Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 41\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5. Coding Style\n \n vi\n \n 42\n \n@@ -783,15 +783,15 @@\n \n 8.4.1. LinuxCNC official Git repo\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 8.4.2. Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 55\n \n@@ -880,15 +880,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 65\n 65\n 70\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 71\n \n Cap\u00edtulo 1\n \n Introduction\n \n@@ -908,15 +908,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 71\n \n Cap\u00edtulo 2\n \n HAL General Reference\n 2.1. HAL Entity Names\n@@ -944,15 +944,15 @@\n functional blocks, each block might have several channels, and each channel has one or more pins.\n This results in a structure that resembles a directory tree. Even though halcmd doesn\u2019t recognize the\n tree structure, proper choice of naming conventions will let it group related items together (since it\n sorts the names). In addition, higher level tools can be designed to recognize such structure, if the\n names provide the necessary information. To do that, all HAL components should follow these rules:\n Dots (\u201c.\u201d) separate levels of the hierarchy. This is analogous to the slash (\u201c/\u201d) in a filename.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 71\n \n Hyphens (\u201c-\u201d) separate words or fields in the same level of the hierarchy.\n HAL components should not use underscores or \u201cMixedCase\u201d. 1\n Use only lowercase letters and numbers in names.\n \n@@ -991,15 +991,15 @@\n 2 Some hardwares use jumpers or other devices to define a specific identification for each. Ideally, the driver provides a way\n 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.\n But at present, some drivers use the ID directly as the peripheral number. Which means it is possible to have a device number\n 2, without having any in number 0. This is a bug that should disappear in version 2.1.\n 3 One exception to the \u201dchannel numbers start at zero\u201d 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\n debate over whether this is a bug or a feature.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 71\n \n on numbers less than 10 to preserve sort ordering. Some modules have pins and/or parameters\n that affect more than one channel. For example a PWM generator might have four channels\n with four independent \u201dduty-cycle\u201d inputs, but one \u201dfrequency\u201d parameter that controls all four\n channels (due to hardware limitations). The frequency parameter should use \u201d0-3\u201d as the channel\n@@ -1039,27 +1039,27 @@\n read|write\n Indicates whether the function reads the hardware or writes to it.\n Examples\n 4 Note to driver programmers: do NOT implement separate functions for different I/O types unless they are interruptible\n and can work in independent threads. If interrupting an encoder read, reading digital inputs, and then resuming the encoder\n read will cause problems, then implement a single function that does everything.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 71\n \n motenc.0.encoder.read\n Reads all encoders on the first motenc board.\n generic8255.0.din.09-15.read\n Reads the second 8 bit port on the first generic 8255 based digital I/O board.\n ppmc.0.write\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 71\n \n Cap\u00edtulo 3\n \n Code Notes\n 3.1. Intended audience\n@@ -1089,15 +1089,15 @@\n follow this distinction, but the internals of the motion controller do.\n JOINT - A joint is one of the movable parts of the machine. Joints are distinct from axes, although\n the two terms are sometimes (mis)used to mean the same thing. In LinuxCNC, a joint is a physical\n 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\n are the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated\n with it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 71\n \n trivial kinematics that may be the case. Even on those machines, joint position and axis position\n are fundamentally different things. In this document, the terms joint and axis are used carefully\n to respect their distinct meanings. Unfortunately that isn\u2019t necessarily true everywhere else. In\n 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\n@@ -1127,19 +1127,19 @@\n 3.4. Architecture overview\n There are four components contained in the LinuxCNC Architecture: a motion controller (EMCMOT),\n a discrete IO controller (EMCIO), a task executor which coordinates them (EMCTASK) and several\n text-mode and graphical User Interfaces. Each of them will be described in the current document,\n both from the design point of view and from the developers point of view (where to find needed data,\n how to easily extend/modify things, etc.).\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 71\n \n 3.4.1. LinuxCNC software architecture\n At the coarsest level, LinuxCNC is a hierarchy of three controllers: the task level command handler\n 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\n (e.g., estop, lube) subsystems. The task controller coordinates the actions of the motion and discrete\n@@ -1167,19 +1167,19 @@\n processes. For realtime motion control, the script first loads the default tpmod and homemod modules\n and then loads the kinematics and motion modules according to settings in halfiles specified by the\n INI file.\n Custom (user-built) homing or trajectory-planning modules can be used in place of the default modules\n via INI file settings or command line options. Custom modules must implement all functions used by\n the default modules. The halcompile utility can be used to create a custom module.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 71\n \n 3.6. Block diagrams and Data Flow\n The following figure is a block diagram of a joint controller. There is one joint controller per joint.\n The joint controllers work at a lower level than the kinematics, a level where all joints are completely\n independent. All the data for a joint is in a single joint structure. Some members of that structure are\n@@ -1193,15 +1193,15 @@\n mode, it is determined by the traj planner? In free mode, it is either copied from actualPos, or\n generated by applying forward kins to (2) or (3).\n emcmotStatus->joints[n].coarse_pos - This is the desired position, in joint coordinates, but before\n interpolation. It is updated at the traj rate, not the servo rate. In coord mode, it is generated by\n applying inverse kins to (1) In teleop mode, it is generated by applying inverse kins to (1) In free\n mode, it is copied from (3), I think.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 71\n \n \u2019emcmotStatus->joints[n].pos_cmd - This is the desired position, in joint coords, after interpolation.\n A new set of these coords is generated every servo period. In coord mode, it is generated from (2)\n by the interpolator. In teleop mode, it is generated from (2) by the interpolator. In free mode, it is\n generated by the free mode traj planner.\n@@ -1220,26 +1220,26 @@\n because one or more axes aren\u2019t homed. In that case, the options are: A) fake it by copying (1), or\n B) admit that we don\u2019t really know the Cartesian coordinates, and simply don\u2019t update actualPos.\n Whatever approach is used, I can see no reason not to do it the same way regardless of the operating\n mode. I would propose the following: If there are forward kins, use them, unless they don\u2019t work\n because of unhomed axes or other problems, in which case do (B). If no forward kins, do (A), since\n otherwise actualPos would never get updated.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3.7. Homing\n 3.7.1. Homing state diagram\n \n 14 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 71\n \n 3.7.2. Another homing diagram\n \n 3.8. Commands\n 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.\n@@ -1255,15 +1255,15 @@\n It does not disable the motion controller or change any state information, it simply cancels any motion\n that is currently in progress.1\n 1 It seems that the higher level code (TASK and above) also use ABORT to clear faults. Whenever there is a persistent fault\n (such as being outside the hardware limit switches), the higher level code sends a constant stream of ABORTs to the motion\n controller trying to make the fault go away. Thousands of them\u2026. That means that the motion controller should avoid persistent\n faults. This needs to be looked into.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 71\n \n 3.8.1.1. Requirements\n None. The command is always accepted and acted on immediately.\n 3.8.1.2. Results\n In free mode, the free mode trajectory planners are disabled. That results in each joint stopping as fast\n@@ -1295,15 +1295,15 @@\n free mode. However the trajectory planner per se is not used, instead movement is controlled by a\n velocity vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space\n instead of joint space. On a machine with trivial kinematics, there is little difference between teleop\n mode and free mode, and GUIs for those machines might never even issue this command. However\n for non-trivial machines like robots and hexapods, teleop mode is used for most user commanded jog\n type movements.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 71\n \n 3.8.3.1. Requirements\n The command handler will reject the TELEOP command with an error message if the kinematics\n cannot be activated because the one or more joints have not been homed. In addition, if any joint is in\n motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error\n@@ -1338,15 +1338,15 @@\n None. The command can be issued at any time, and will always be accepted.\n 3.8.5.2. Results\n If the controller is already enabled, nothing. If not, the controller is enabled. Queues and interpolators\n are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated\n with active joints are turned on. If forward kinematics are not available, the machine is switched to\n free mode.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 71\n \n 3.8.6. DISABLE\n The DISABLE command disables the motion controller.\n 3.8.6.1. Requirements\n None. The command can be issued at any time, and will always be accepted.\n@@ -1374,15 +1374,15 @@\n Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually\n it will set the amp enable HAL pin false.\n \n 3.8.9. ACTIVATE_JOINT\n The ACTIVATE_JOINT command turns on all the calculations associated with a single joint, but does\n not change the joint\u2019s amp enable output pin.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 71\n \n 3.8.9.1. Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.9.2. Results\n Calculations for the specified joint are enabled. The amp enable pin is not changed, however, any\n@@ -1409,15 +1409,15 @@\n The DISABLE_WATCHDOG command disables a hardware based watchdog (if present).\n 3.8.12.1. Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.12.2. Results\n Actualmente nada. El antiguo watchdog era una cosa extra\u00f1a que utilizaba una tarjeta de sonido\n espec\u00edfica. Es posible que en el futuro se dise\u00f1e una nueva interfaz de watchdog.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 71\n \n 3.8.13. PAUSE\n The PAUSE command stops the trajectory planner. It has no effect in free or teleop mode. At this point\n I don\u2019t know if it pauses all motion immediately, or if it completes the current move and then pauses\n before pulling another move from the queue.\n@@ -1445,15 +1445,15 @@\n \n 3.8.16. SCALE\n The SCALE command scales all velocity limits and commands by a specified amount. It is used to\n implement feed rate override and other similar functions. The scaling works in free, teleop, and coord\n modes, and affects everything, including homing velocities, etc. However, individual joint velocity\n limits are unaffected.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 71\n \n 3.8.16.1. Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.16.2. Results\n All velocity commands are scaled by the specified constant.\n@@ -1483,15 +1483,15 @@\n 3.8.19. JOG_CONT\n The JOG_CONT command initiates a continuous jog on a single joint. A continuous jog is generated\n by setting the free mode trajectory planner\u2019s target position to a point beyond the end of the joint\u2019s\n range of travel. This ensures that the planner will move constantly until it is stopped by either the joint\n limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user presses\n a jog button, and ABORT when the button is released.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 71\n \n 3.8.19.1. Requirements\n The command handler will reject the JOG_CONT command with an error message if machine is not in\n free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not\n enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the\n@@ -1528,15 +1528,15 @@\n location, however they also stop when they hit a limit, or on an ABORT command.\n 3.8.21.1. Requirements\n The command handler will silently reject the JOG_ABS command if machine is not in free mode, or if\n any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will\n also silently ignore the command if the joint is already at or beyond its limit and the commanded jog\n would make it worse.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 71\n \n 3.8.21.2. Results\n The free mode trajectory planner for the joint identified by emcmotCommand->axis is activated, the\n 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\n position to the target position. The planner can correctly handle changes in the target position that\n@@ -1569,15 +1569,15 @@\n (More later)\n \n 3.8.27. SET_xix\n 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\n 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.\n Much of that code is identical or nearly identical for every parameter.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 71\n \n 3.9. Backlash and Screw Error Compensation\n + FIXME Compensaci\u00f3n de holguras y errores de tornillos\n \n 3.10. Task controller (EMCTASK)\n@@ -1595,15 +1595,15 @@\n iocontrol main loop process:\n registers for SIGTERM and SIGINT signals from the OS.\n checks to see it HAL inputs have changed\n checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status\n checks for I/O related NML messages\n nml message numbers: from emc.hh:\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 71\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1651,15 +1651,15 @@\n to the data, and the size of the data.\n No memory for data storage is allocated.\n \n 3.16. SharedMemory\n Provides a block of shared memory along with a semaphore (inherited from the Semaphore class).\n Creation and destruction of the semaphore is handled by the SharedMemory constructor and destructor.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 71\n \n 3.17. ShmBuffer\n Class for passing NML messages between local processes using a shared memory buffer. Much of\n internal workings are inherited from the CMS class.\n \n@@ -1693,15 +1693,15 @@\n message buffer or just buffer). This buffer may exist as a shared memory block accessed by other\n CMS/NML processes, or a local and private buffer for data being transferred by network or serial\n interfaces.\n The buffer is dynamically allocated at run time to allow for greater flexibility of the CMS/NML subsystem. The buffer size must be large enough to accommodate the largest message, a small amount\n for internal use and allow for the message to be encoded if this option is chosen (encoded data will\n be covered later). The following figure is an internal view of the buffer space.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 71\n \n CMS buffer The CMS base class is primarily responsible for creating the communications pathways\n and interfacing to the operating system.\n \n 3.21. Configuration file format\n@@ -1719,15 +1719,15 @@\n neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format, or\n raw.\n RPC# - Obsolete - Place holder retained for backward compatibility only.\n buffer# - A unique ID number used if a server controls multiple buffers.\n max_procs - is the maximum processes allowed to connect to this buffer.\n key - is a numerical identifier for a shared memory buffer\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 71\n \n 3.21.2. Type specific configs\n The buffer type implies additional configuration options whilst the host operating system precludes\n certain combinations. In an attempt to distill published documentation in to a coherent format, only\n the SHMEM buffer type will be covered.\n@@ -1761,15 +1761,15 @@\n host - specifies where on the network this process is running.\n ops - gives the process read only, write only, or read/write access to the buffer.\n server - specifies if this process will running a server for this buffer.\n timeout - sets the timeout characteristics for accesses to the buffer.\n master - indicates if this process is responsible for creating and destroying the buffer.\n c_num - an integer between zero and (max_procs -1)\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 71\n \n 3.21.4. Configuration Comments\n Some of the configuration combinations are invalid, whilst others imply certain constraints. On a\n Linux system, GLOBMEM is obsolete, whilst PHANTOM is only really useful in the testing stage of an\n application, likewise for FILEMEM. LOCMEM is of little use for a multi-process application, and only\n@@ -1807,15 +1807,15 @@\n Not to be confused with NMLmsg, RCS_STAT_MSG, or RCS_CMD_MSG.\n NML is responsible for parsing the config file, configuring the cms buffers and is the mechanism for\n routing messages to the correct buffer(s). To do this, NML creates several lists for:\n cms buffers created or connected to.\n processes and the buffers they connect to\n a long list of format functions for each message type\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 71\n \n This last item is probably the nub of much of the malignment of libnml/rcslib and NML in general. Each\n message that is passed via NML requires a certain amount of information to be attached in addition to\n the actual data. To do this, several formatting functions are called in sequence to assemble fragments\n of the overall message. The format functions will include NML_TYPE, MSG_TYPE, in addition to the\n@@ -1854,15 +1854,15 @@\n is to be used.\n \n 3.23. Adding custom NML commands\n LinuxCNC is pretty awesome, but some parts need some tweaking. As you know communication is\n done through NML channels, the data sent through such a channel is one of the classes defined\n in emc.hh (implemented in emc.cc). If somebody needs a message type that doesn\u2019t exist, he should\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 71\n \n follow these steps to add a new one. (The Message I added in the example is called EMC_IO_GENERIC\n (inherits EMC_IO_CMD_MSG (inherits RCS_CMD_MSG)))\n 1. add the definition of the EMC_IO_GENERIC class to emc2/src/emc/nml_intf/emc.hh\n 2. add the type define: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605)\n@@ -1887,15 +1887,15 @@\n information is copied from the tool table\u2019s source pocket to pocket 0 (which represents the spindle),\n replacing whatever tool information was previously there.\n nota\n In LinuxCNC configured for nonrandom toolchanger, tool 0 (T0) has special meaning: \u201dno tool\u201d. T0\n may not appear in the tool table file, and changing to T0 will result in LinuxCNC thinking it\u2019s got an\n empty spindle.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 71\n \n 3.24.1.2. Random Toolchangers\n Random toolchanger hardware swaps the tool in the spindle (if any) with the requested tool on tool\n change. Thus the pocket that a tool resides in changes as it is swapped in and out of the spindle.\n An example of random toolchanger hardware is a carousel toolchanger.\n@@ -1932,15 +1932,15 @@\n spindle.\n diameter\n Diameter of the tool, in machine units.\n tool length offset\n Tool length offset (also called TLO), in up to 9 axes, in machine units. Axes that don\u2019t have a\n specified TLO get 0.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 71\n \n 3.24.3. G-codes affecting tools\n The G-codes that use or affect tool information are:\n 3.24.3.1. Txxx\n Tells the toolchanger hardware to prepare to switch to a specified tool xxx.\n@@ -1980,15 +1980,15 @@\n ii. load_tool() with a random toolchanger config swaps tool information between pocket\n 0 (the spindle) and the selected pocket, then saves the tool table.\n \n 2. Back in interp, settings->current_pocket is assigned the new tooldata index from settings->select\n (set by Txxx). The relevant numbered parameters (#5400-#5413) are updated with the new tool\n information from pocket 0 (spindle).\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 71\n \n 3.24.3.3. G43/G43.1/G49\n Apply tool length offset. G43 uses the TLO of the currently loaded tool, or of a specified tool if the\n H-word is given in the block. G43.1 gets TLO from axis-words in the block. G49 cancels the TLO (it\n uses 0 for the offset for all axes).\n@@ -2026,15 +2026,15 @@\n machines.) Finally IO saves the new tool table.\n 4. Back in interp, if the modified tool is currently loaded in the spindle, and if the machine is a\n non-random toolchanger, then the new tool information is copied from the tool\u2019s home pocket to\n pocket 0 (the spindle) in interp\u2019s copy of the tool table, settings->tool_table. (This copy is not\n needed on random tool changer machines because there, tools don\u2019t have a home pocket and\n instead we just updated the tool in pocket 0 directly.)\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 71\n \n 5. The relevant numbered parameters (#5400-#5413) are updated from the tool information in the\n spindle (by copying the information from interp\u2019s settings->tool_table to settings->parameters).\n (FIXME: this is a buglet, the params should only be updated if it was the current tool that was\n modified).\n@@ -2064,15 +2064,15 @@\n 3.24.4.1. IO\n emcioStatus is of type EMC_IO_STAT\n emcioStatus.tool.pocketPrepped\n When IO gets the signal from HAL that the toolchanger prep is complete (after a Txxx command),\n this variable is set to the pocket of the requested tool. When IO gets the signal from HAL that\n the tool change itself is complete (after an M6 command), this variable gets reset to -1.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 71\n \n emcioStatus.tool.toolInSpindle\n Tool number of the tool currently installed in the spindle. Exported on the HAL pin iocontrol.0.tool-n\n (s32).\n emcioStatus.tool.toolTable[]\n@@ -2115,15 +2115,15 @@\n This is an array of CANON_TOOL_TABLE structures (defined in src/emc/nml_intf/emctool.h),\n with CANON_POCKETS_MAX entries. Indexed by \u201dpocket number\u201d, aka \u201dslot number\u201d. Index 0 is\n the spindle, indexes 1 to (CANON_POCKETS_MAX-1) are the pockets in the tool changer. On\n a random toolchanger pocket numbers are meaningful. On a nonrandom toolchanger pockets\n are meaningless; the pocket numbers in the tool table file are ignored and tools are assigned to\n tool_table slots sequentially.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 71\n \n settings.tool_change_at_g30 , settings.tool_change_quill_up , settings.tool_change_with_spindle_\n These are set from INI variables in the [EMCIO] section, and determine how tool changes are\n performed.\n \n@@ -2155,15 +2155,15 @@\n 3.25.2. In Motion\n The Motion controller realtime component first gets the number of joints from the num_joints loadtime parameter. This determines how many joints worth of HAL pins are created at startup.\n Motion\u2019s number of joints can be changed at runtime using the EMCMOT_SET_NUM_JOINTS command\n from Task.\n The Motion controller always operates on EMCMOT_MAX_AXIS axes. It always creates nine sets of axis.*.*\n pins.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Cap\u00edtulo 4\n \n NML Messages\n List of NML messages.\n For details see src/emc/nml_intf/emc.hh.\n \n@@ -2195,15 +2195,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3. AXIS\n \n 38 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_AXIS_STAT_TYPE\n \n 4.4. JOG\n EMC_JOG_CONT_TYPE\n EMC_JOG_INCR_TYPE\n EMC_JOG_ABS_TYPE\n@@ -2249,15 +2249,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6. MOTION\n \n 39 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_MOTION_INIT_TYPE\n EMC_MOTION_HALT_TYPE\n EMC_MOTION_ABORT_TYPE\n EMC_MOTION_SET_AOUT_TYPE\n EMC_MOTION_SET_DOUT_TYPE\n EMC_MOTION_ADAPTIVE_TYPE\n@@ -2303,15 +2303,15 @@\n EMC_AUX_ESTOP_OFF_TYPE\n EMC_AUX_ESTOP_RESET_TYPE\n EMC_AUX_INPUT_WAIT_TYPE\n EMC_AUX_STAT_TYPE\n \n 40 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4.10. SPINDLE\n EMC_SPINDLE_ON_TYPE\n EMC_SPINDLE_OFF_TYPE\n EMC_SPINDLE_INCREASE_TYPE\n EMC_SPINDLE_DECREASE_TYPE\n EMC_SPINDLE_CONSTANT_TYPE\n@@ -2350,15 +2350,15 @@\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 41 / 71\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 71\n \n Cap\u00edtulo 5\n \n Coding Style\n This chapter describes the source code style preferred by the LinuxCNC team.\n@@ -2383,15 +2383,15 @@\n if (x) {\n // do something appropriate\n }\n \n The closing brace is on a line of its own, except in the cases where it is followed by a continuation of\n the same statement, i.e. a while in a do-statement or an else in an if-statement, like this:\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 71\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2434,15 +2434,15 @@\n function.\n However, if you have a complex function, and you suspect that a less-than-gifted first-year high-school\n student might not even understand what the function is all about, you should adhere to the maximum\n limits all the more closely. Use helper functions with descriptive names (you can ask the compiler to\n in-line them if you think it\u2019s performance-critical, and it will probably do a better job of it that you\n would have done).\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 71\n \n Another measure of the function is the number of local variables. They shouldn\u2019t exceed 5-10, or\n you\u2019re doing something wrong. Re-think the function, and split it into smaller pieces. A human brain\n can generally easily keep track of about 7 different things, anything more and it gets confused. You\n know you\u2019re brilliant, but maybe you\u2019d like to understand what you did 2 weeks from now.\n@@ -2480,15 +2480,15 @@\n class name. Rationale: Maintains a common style across C and C++ sources, e.g., get_foo_bar().\n However, boolean methods are easier to read if they avoid underscores and use an is prefix (not to be\n confused with methods that manipulate a boolean). Rationale: Identifies the return value as TRUE or\n FALSE and nothing else, e.g., isOpen, isHomed.\n Do NOT use Not in a boolean name, it leads only leads to confusion when doing logical tests, e.g.,\n isNotOnLimit or is_not_on_limit are BAD.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 71\n \n Variable names should avoid the use of upper case and underscores except for local or private names.\n The use of global variables should be avoided as much as possible. Rationale: Clarifies which are\n variables and which are methods. Public: e.g., axislimit Private: e.g., maxvelocity_ .\n \n@@ -2523,24 +2523,24 @@\n File names: C++ sources and headers use .cc and .hh extension. The use of .c and .h are reserved for\n plain C. Headers are for class, method, and structure declarations, not code (unless the functions are\n declared inline).\n \n 5.10. Python coding standards\n Use the PEP 8 style for Python code.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 71\n \n 5.11. Comp coding standards\n In the declaration portion of a .comp file, begin each declaration at the first column. Insert extra blank\n lines when they help group related items.\n In the code portion of a .comp file, follow normal C coding style.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 71\n \n Cap\u00edtulo 6\n \n Building LinuxCNC\n 6.1. Introduction\n@@ -2569,15 +2569,15 @@\n \n This might fail too! Read this whole document, but especially the section on Setting up the test environment.\n \n 6.2. Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 71\n \n We continuously test on the platforms listed at http://buildbot.linuxcnc.org.\n LinuxCNC builds on most other Linux distributions, though dependency management will be more\n manual and less automatic. Patches to improve portability to new platforms are always welcome.\n \n@@ -2610,15 +2610,15 @@\n within the build directory. Nothing is installed outside the build directory.\n Esto es r\u00e1pido y f\u00e1cil, y adecuado para la iteraci\u00f3n r\u00e1pida de los cambios.\n The LinuxCNC test suite runs only in a Run-In-Place build.\n Most LinuxCNC developers primarily build using this mode.\n Building for Run-In-Place follows the steps in the Quick Start section at the top of this document,\n possibly with different arguments to src/configure and make.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 71\n \n 6.3.1.1. src/configure arguments\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments.\n List all arguments to src/configure by running this:\n@@ -2655,15 +2655,15 @@\n $ make ../bin/froboz\n \n 6.3.2. Building Debian Packages\n When building Debian packages, the LinuxCNC programs are compiled from source and then stored\n in a Debian package, complete with dependency information. This takes more time, and the programs\n can\u2019t be used until the Debian package is installed on a target machine.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 71\n \n This build mode is primarily useful when packaging the software for delivery to end users, and when\n building the software for a machine that doesn\u2019t have the build environment installed, or that doesn\u2019t\n have internet access.\n Building Debian packages requires the dpkg-buildpackage tool, from the dpkg-dev package:\n@@ -2704,15 +2704,15 @@\n If the development package for rtai lxrt does not start with \u201drtai-modules\u201d, or if the first such\n package listed by apt-cache search is not the desired one, then explicitly specify the package\n name.\n -r\n Configure the Debian package for the currently running RTAI kernel. You must be running an\n RTAI kernel on your build machine for this to work!\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 71\n \n $KERNEL_VERSION\n Configure the debian package for the specified RTAI kernel version (for example \u201d3.4.9-rtai-686pae\u201d). The matching kernel headers debian package must be installed on your build machine (for\n example \u201dlinux-headers-3.4.9-rtai-686-pae\u201d). 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,\n including the test suite.\n@@ -2749,15 +2749,15 @@\n Normally locking memory into RAM is frowned upon, and the operating system places a strict limit\n on how much memory a user is allowed to have locked.\n 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\n the user must raise the memory lock limit.\n If LinuxCNC displays the following message on startup, the problem is your system\u2019s configured limit\n on locked memory:\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 71\n \n RTAPI: ERROR: failed to map shmem\n RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB.\n \n To fix this problem, add a file named /etc/security/limits.d/linuxcnc.conf (as root) with your\n@@ -2778,15 +2778,15 @@\n at github, and use that to track and publish your changes.\n After creating your own github fork of LinuxCNC, clone it to your development machine and proceed\n with your hacking as usual.\n We of the LinuxCNC project hope that you will share your changes with us, so that the community can\n benefit from your work. Github makes this sharing very easy: after you polish your changes and push\n them to your github fork, send us a Pull Request.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 71\n \n Cap\u00edtulo 7\n \n Adding Configuration Selection Items\n Example Configurations can be added to the Configuration Selector by two methods:\n@@ -2797,15 +2797,15 @@\n \n Runtime settings \u2014 the configuration selector can also offer configuration subdirectories specified\n at runtime using an exported environamental variable (LINUXCNC_AUX_CONFIGS). This variable\n should be a path list of one or more configuration directories separated by a (:). Typically, this\n variable would be set in a shell starting linuxcnc or in a user\u2019s ~/.profile startup script. Example:\n export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 71\n \n Cap\u00edtulo 8\n \n Contributing to LinuxCNC\n 8.1. Introduction\n@@ -2826,15 +2826,15 @@\n All of the LinuxCNC source is maintained in the Git revision control system.\n \n 8.4.1. LinuxCNC official Git repo\n The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/\n Anyone can get a read-only copy of the LinuxCNC source tree via git:\n git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 55 / 71\n \n If you are a developer with push access, then follow github\u2019s instructions for setting up a repository\n that you can push from.\n Note that the clone command put the local LinuxCNC repo in a directory called linuxcnc-dev, instead\n of the default linuxcnc. This is because the LinuxCNC software by default expects configs and G-code\n@@ -2869,15 +2869,15 @@\n 8.5. Overview of the process\n The high-level overview of how to contribute changes to the source goes like this:\n Communicate with the project developers and let us know what you\u2019re hacking on\n Clone the git repo\n Make your changes in a local branch, making sure you \u201dsign off\u201d your commits according to our\n signed-off-by policy (see below).\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 71\n \n Adding documentation and tests is an important part of adding a new feature. Otherwise, others\n won\u2019t know how to use your feature, and if other changes break your feature it can go unnoticed\n without a test.\n Share your changes with the other project developers in one of these ways:\n@@ -2909,15 +2909,15 @@\n Use the first line as a summary of the intent of the change (almost like the subject line of an e-mail).\n Follow it with a blank line, then a longer message explaining the change. Example:\n \n 8.7.3. Commit to the proper branch\n Bugfixes should go on the oldest applicable branch. New features should go in the master branch. If\n you\u2019re not sure where a change belongs, ask on irc or on the mailing list.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 57 / 71\n \n 8.7.4. Use multiple commits to organize changes\n When appropriate, organize your changes into a branch (a series of commits) where each commit\n is a logical step towards your ultimate goal. For example, first factor out some complex code into a\n new function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new\n@@ -2958,15 +2958,15 @@\n While the branch HEAD will build, not every commit might build in such a case. That breaks git\n bisect - something somebody else might use later on to find the commit which introduced a bug. So\n beyond making sure your branch builds, it is important to assure every single commit builds as well.\n \n There\u2019s an automatic way to check a branch for each commit being buildable - see https://dustin.sallings.org/2010/03/28/git-test-sequence.html and the code at https://github.com/dustin/bindir/blob/master/gittest-sequence. Use as follows (in this case testing every commit from origin/master to HEAD, including\n running regression tests):\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n 58 / 71\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n@@ -2997,15 +2997,15 @@\n 8.9. Other ways to contribute\n There are many ways to contribute to LinuxCNC, that are not addressed by this document. These ways\n include:\n Answering questions on the forum, mailing lists, and in IRC\n Reporting bugs on the bug tracker, forum, mailing lists, or in IRC\n Helping test experimental features\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 71\n \n Cap\u00edtulo 9\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -3039,15 +3039,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 60 / 71\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -3090,15 +3090,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 61 / 71\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -3141,15 +3141,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 71\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -3193,15 +3193,15 @@\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum\n speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program\n for the first time.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 71\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI and build the software to\n run in the special real-time environment. For this reason real-time software runs in kernel-space.\n@@ -3242,28 +3242,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 64 / 71\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 71\n \n Cap\u00edtulo 10\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -3289,15 +3289,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 71\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any such\n manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -3346,15 +3346,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover\n must present the full title with all words of the title equally prominent and visible. You may add other\n material on the covers in addition. Copying with changes limited to the covers, as long as they preserve\n the title of the Document and satisfy these conditions, can be treated as verbatim copying in other\n respects.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 71\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must\n either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n@@ -3401,15 +3401,15 @@\n N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any Invariant\n Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 68 / 71\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -3450,15 +3450,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of this\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 69 / 71\n \n License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English\n version will prevail.\n 9. TERMINATION\n You may not copy, modify, sublicense, or distribute the Document except as expressly provided for\n@@ -3485,15 +3485,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 70 / 71\n \n Cap\u00edtulo 11\n \n \u00cdndice alfab\u00e9tico\n A\n@@ -3575,15 +3575,15 @@\n RS274NGC, 63\n RTAI, 63\n RTAPI, 63\n RTLINUX, 63\n S\n servo motor, 63\n \n-\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fDeveloper Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Signed Integer, 63\n spindle, 63\n stepper motor, 63\n T\n TASK, 63\n Tk, 63\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n LinuxCNC\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n \u00cdndice general\n \n I Getting Started & Configuration\n \n@@ -118,15 +118,15 @@\n \n 7\n \n 1.3.3. Testing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 1.3.4. Installing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n@@ -282,15 +282,15 @@\n \n 27\n \n 1.5.6. HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 27\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 1.5.6.1. halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 27\n \n@@ -448,15 +448,15 @@\n \n 37\n \n 1.5.14.7.Configs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 1.5.15.Changes after 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n@@ -618,15 +618,15 @@\n \n 2.3.1. Trajectory Control\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 55\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2.3.1.1. Trajectory Planning\n \n vi\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n@@ -786,15 +786,15 @@\n \n 66\n \n 2.5.2.12.Tool Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 66\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 2.5.2.13.Pallet Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 66\n \n@@ -950,15 +950,15 @@\n \n 82\n \n 2.7.7.3. Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . .\n \n 83\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n viii\n \n 2.7.7.4. Example HAL Code for Hypersensing . . . . . . . . . . . . . . . . . . . . . . .\n \n 84\n \n@@ -1107,15 +1107,15 @@\n 3.1.4. Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 99\n \n 3.1.5. Parallel Port Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101\n 3.1.6. Parallel Port 2 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ix\n \n 3.1.7. Axis Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103\n 3.1.7.1. Finding Maximum Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105\n 3.1.7.2. Finding Maximum Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . 106\n 3.1.8. Spindle Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106\n@@ -1162,15 +1162,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142\n \n 4.1.3.1. Base Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142\n 4.1.3.2. Step Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143\n 4.1.4. Servo Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143\n 4.1.4.1. Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n x\n \n 4.1.4.2. Proportional term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145\n 4.1.4.3. Integral term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145\n 4.1.4.4. Derivative term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145\n 4.1.4.5. Loop tuning\n@@ -1233,15 +1233,15 @@\n 4.4.2.6. [TASK] Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n \n 4.4.2.7. [HAL] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n 4.4.2.8. [HALUI] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xi\n \n 4.4.2.9. [APPLICATIONS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167\n 4.4.2.10.[TRAJ] Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168\n@@ -1294,15 +1294,15 @@\n 4.6.4. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n 4.6.5. Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n 4.7. Lathe Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191\n 4.7.1. Default Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191\n 4.7.2. INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191\n 4.8. Stepper Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xii\n \n 4.8.1. Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192\n 4.8.2. Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192\n 4.8.3. Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193\n 4.8.4. Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193\n@@ -1349,15 +1349,15 @@\n 5.1.1.3. Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 5.1.1.4. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 5.1.1.5. Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n 5.1.2. HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204\n 5.1.3. HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.1.4. Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiii\n \n 5.2. HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207\n 5.2.1. HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207\n 5.2.1.1. loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208\n 5.2.1.2. addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208\n@@ -1417,15 +1417,15 @@\n \n 5.4.2.2. Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n 5.4.2.3. The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n 5.4.3. A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n 5.4.3.1. Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221\n 5.4.3.2. Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiv\n \n 5.4.3.3. Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223\n 5.4.3.4. Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225\n@@ -1473,15 +1473,15 @@\n 5.6.2. Spindle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254\n 5.6.2.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254\n 5.6.3. Axis and Joint Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255\n 5.6.4. iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255\n 5.6.4.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256\n 5.6.5. INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xv\n \n 5.6.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256\n 5.7. HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257\n 5.7.1. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257\n 5.7.1.1. User Interfaces (Userspace)\n@@ -1525,15 +1525,15 @@\n 5.8.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281\n 5.8.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282\n 5.8.5.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282\n 5.8.6. Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282\n 5.8.6.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282\n 5.8.6.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvi\n \n 5.8.6.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n 5.8.7. Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n 5.8.7.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n 5.8.7.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284\n@@ -1581,15 +1581,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297\n \n 5.9.16.Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.10.HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.10.1.Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.10.2.Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvii\n \n 5.10.3.Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299\n 5.10.4.Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300\n 5.10.5.Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300\n 5.10.6.Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301\n@@ -1648,15 +1648,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n \n 5.11.6.22.\n stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.11.6.23.\n stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xviii\n \n 5.11.6.24.\n set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.11.7.Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.11.8.System Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n@@ -1695,15 +1695,15 @@\n 5.13.3.Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.13.4.Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.13.5.Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.13.6.Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.13.7.HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.13.8.Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6. Hardware Drivers\n \n xix\n \n 322\n \n@@ -1745,15 +1745,15 @@\n 6.3.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.6. Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.6.1. CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.6.2. RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n 6.3.6.3. EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xx\n \n 6.3.6.4. Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n 6.3.6.5. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n 6.3.7. RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n 6.3.7.1. Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344\n@@ -1792,15 +1792,15 @@\n 6.5.13.3.Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n 6.5.14.PWMGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n 6.5.14.1.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n 6.5.14.2.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359\n 6.5.14.3.Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359\n 6.5.15.Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxi\n \n 6.5.15.1.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.5.15.2.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.5.16.5I25 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.5.16.1.Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n@@ -1842,15 +1842,15 @@\n 6.8.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374\n 6.8.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.9. Opto22 Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.9.1. The Adapter Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.9.2. The Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxii\n \n 6.9.3. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.9.4. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377\n 6.9.5. FUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377\n 6.9.6. Configuring I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377\n@@ -1892,15 +1892,15 @@\n 6.12.3.Reference: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.13.Servo To Go Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.1.Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.2.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.3.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n 6.13.4.Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiii\n \n 6.14.Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n 6.14.1.Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n 6.14.2.Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392\n 6.14.3.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392\n@@ -1940,15 +1940,15 @@\n 8.1. ClassicLadder Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.1.1. History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.1.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.1.3. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408\n 8.1.4. Basic Latching On-Off Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409\n 8.2. ClassicLadder Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiv\n \n 8.2.1. Ladder Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n 8.2.2. Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n 8.2.3. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n 8.2.3.1. Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410\n@@ -1999,15 +1999,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445\n \n 8.3.2. Reject Extra Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446\n 8.3.3. External E-Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447\n 8.3.4. Timer/Operate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9. Temas avanzados\n \n xxv\n \n 452\n \n@@ -2049,15 +2049,15 @@\n 9.3.8. Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494\n 9.3.9. REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496\n 9.4. Switchable Kinematics (switchkins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496\n 9.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496\n 9.4.2. Switchable Kinematic Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497\n 9.4.2.1. Identity letter assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvi\n \n 9.4.2.2. Backwards compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498\n 9.4.3. HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498\n 9.4.3.1. HAL Pin Summary\n \n@@ -2116,15 +2116,15 @@\n . 515\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 516\n \n 9.6.5.4. Configuring iocontrol with a remapped M6 . . . . . . . . . . . . . . . . . . 518\n 9.6.5.5. Writing the change and prepare O-word procedures . . . . . . . . . . . . . . 518\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvii\n \n 9.6.5.6. Making minimal changes to the built in codes, including M6 . . . . . . . . . 519\n 9.6.5.7. Specifying the T (prepare) replacement . . . . . . . . . . . . . . . . . . . . . 519\n 9.6.5.8. Error handling: dealing with abort . . . . . . . . . . . . . . . . . . . . . . . . . 520\n 9.6.5.9. Error handling: failing a remapped code NGC procedure . . . . . . . . . . . 522\n@@ -2166,15 +2166,15 @@\n 9.6.14.Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537\n 9.6.14.1.Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 537\n 9.6.14.2.Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 537\n 9.6.14.3.Currently unallocated M-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . 540\n 9.6.14.4.readahead time and execution time . . . . . . . . . . . . . . . . . . . . . . . . 541\n 9.6.14.5.plugin/pickle hack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxviii\n \n 9.6.14.6.Module, methods, classes, etc reference . . . . . . . . . . . . . . . . . . . . . 541\n 9.6.15.Introduction: Extending Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 541\n 9.6.15.1.Why would you want to change Task Execution? . . . . . . . . . . . . . . . . 541\n 9.6.15.2.A diagram: task, interp, iocontrol, UI (??) . . . . . . . . . . . . . . . . . . 541\n@@ -2220,15 +2220,15 @@\n 9.9.2.1. Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553\n 9.9.2.2. Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553\n 9.9.3. Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553\n 9.9.3.1. Offset Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554\n 9.9.3.2. Machine-off/Machine-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554\n 9.9.3.3. Soft Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxix\n \n 9.9.3.4. Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555\n 9.9.3.5. Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555\n 9.9.4. Related HAL Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555\n 9.9.4.1. eoffset_per_angle.comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555\n@@ -2279,15 +2279,15 @@\n 10.1.3.6.MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574\n 10.1.3.7.Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575\n 10.1.3.8.Spindle Speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575\n 10.1.3.9.Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575\n 10.1.3.10.\n Max Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxx\n \n 10.1.4.Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 10.1.4.1.Feed Override Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576\n 10.1.5.Show LinuxCNC Status (linuxcnctop) . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 10.1.6.MDI interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n@@ -2361,15 +2361,15 @@\n 10.1.14.15.\n Change a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592\n 10.1.14.16.\n Redirect an existing command . . . . . . . . . . . . . . . . . . . . . . . . . . . 593\n 10.1.14.17.\n Change the DRO color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxi\n \n 10.1.14.18.\n Change the Toolbar Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593\n 10.1.14.19.\n Change Plotter Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594\n@@ -2409,15 +2409,15 @@\n 10.2.7.1.Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620\n 10.2.7.2.Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625\n 10.2.7.3.Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628\n 10.2.8.Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630\n 10.2.8.1.Custom Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630\n 10.2.8.2.Symbolic Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxii\n \n 10.2.9.Lathe Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632\n 10.2.10.\n Plasma Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634\n 10.2.11.\n@@ -2473,15 +2473,15 @@\n 10.4.6.INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653\n 10.4.7.User Dialog Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653\n 10.4.7.1.Copy the Stock Handler/Glade File For Modification . . . . . . . . . . . . . . 654\n 10.5.QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655\n 10.5.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655\n 10.5.1.1.QtDragon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiii\n \n 10.5.1.2.QtDragon_hd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656\n 10.5.2.Getting Started - The INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656\n 10.5.2.1.Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656\n 10.5.2.2.Preferences\n@@ -2541,15 +2541,15 @@\n 10.5.14.5.\n Needed HAL Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n 10.5.15.\n Run from Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n 10.5.16.\n Laser buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiv\n \n 10.5.17.\n Tabs Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n 10.5.17.1.\n Main tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n@@ -2605,15 +2605,15 @@\n 10.6.6.2.Gcode-meta-compiler (.gcmc) file requirements . . . . . . . . . . . . . . . . . 693\n 10.6.7.DB25 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694\n 10.6.8.Creating a subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697\n 10.7.TkLinuxCNC GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698\n 10.7.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698\n 10.7.2.Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxv\n \n 10.7.2.1.A typical session with TkLinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . 698\n 10.7.3.Elements of the TkLinuxCNC window . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699\n 10.7.3.1.Main buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699\n 10.7.3.2.Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700\n@@ -2652,15 +2652,15 @@\n 10.8.7.3.Contact Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722\n 10.8.7.4.Desktop Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723\n 10.8.7.5.QtPlasmaC Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724\n 10.8.7.6.INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725\n 10.8.8.QtPlasmaC GUI Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726\n 10.8.8.1.Exiting QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvi\n \n 10.8.8.2.MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727\n 10.8.8.3.Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733\n 10.8.8.4.CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733\n 10.8.8.5.PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734\n@@ -2722,15 +2722,15 @@\n 10.8.9.30.\n Ignore Arc OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767\n 10.8.9.31.\n Cut Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768\n 10.8.9.32.\n Run From Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvii\n \n 10.8.9.33.\n Scribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770\n 10.8.9.34.\n Spotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772\n@@ -2808,15 +2808,15 @@\n 10.8.15.10.\n Max Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800\n 10.8.15.11.\n Enable Tabs During Automated Motion . . . . . . . . . . . . . . . . . . . . . . 800\n 10.8.15.12.\n Override Jog Inhibit Via Z+ Jog . . . . . . . . . . . . . . . . . . . . . . . . . . . 801\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxviii\n \n 10.8.15.13.\n QtPlasmaC State Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801\n 10.8.15.14.\n QtPlasmaC Debug Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801\n@@ -2882,15 +2882,15 @@\n \n 11.1.4.Local and Global Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n 11.1.4.1.The G52 command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n 11.1.5.G92 Axes Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823\n 11.1.5.1.The G92 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823\n 11.1.5.2.Setting G92 Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxix\n \n 11.1.5.3.G92 Persistence Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824\n 11.1.5.4.G92 and G52 Interaction Cautions . . . . . . . . . . . . . . . . . . . . . . . . . 825\n 11.1.6.Sample Programs Using Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825\n 11.1.6.1.Sample Program Using Workpiece Coordinate Offsets . . . . . . . . . . . . . 825\n@@ -2935,15 +2935,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849\n \n 11.4.6.Binary Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849\n 11.4.7.Equality and floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850\n 11.4.8.Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xl\n \n 11.4.9.Repeated Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851\n 11.4.10.\n Item order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851\n 11.4.11.\n@@ -3011,15 +3011,15 @@\n 11.5.14.\n G10 L2 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873\n 11.5.15.\n G10 L10 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874\n 11.5.16.\n G10 L11 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xli\n \n 11.5.17.\n G10 L20 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875\n 11.5.18.\n G17 - G19.1 Plane Select\n@@ -3109,15 +3109,15 @@\n 11.5.46.\n G82 Drilling Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901\n 11.5.47.\n G83 Peck Drilling Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901\n 11.5.48.\n G84 Right-hand Tapping Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11.5.49.\n G85 Boring Cycle, Feed Out\n \n xlii\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902\n@@ -3198,15 +3198,15 @@\n 11.6.21.\n M72 Restore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915\n 11.6.22.\n M73 Save and Autorestore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . 916\n 11.6.23.\n M98 and M99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliii\n \n 11.6.23.1.\n Selectively Restoring Modal State . . . . . . . . . . . . . . . . . . . . . . . . . 917\n 11.6.24.\n M100-M199 User Defined Commands\n@@ -3269,15 +3269,15 @@\n 11.10.4.2.\n Invert Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931\n 11.10.4.3.\n Normalize Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931\n 11.10.4.4.\n Expand Image Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliv\n \n 11.10.4.5.\n Tolerance (units)\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931\n@@ -3348,15 +3348,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953\n \n 12.1.6.10.\n Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955\n 12.2.PyVCP Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlv\n \n 12.2.1.AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960\n 12.2.2.Floating Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960\n 12.2.3.Jog Buttons Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961\n 12.2.3.1.Create the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962\n@@ -3408,15 +3408,15 @@\n 12.3.6.10.\n Speed Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990\n 12.3.6.11.\n Label\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvi\n \n 12.3.6.12.\n Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993\n 12.3.6.13.\n LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994\n@@ -3480,15 +3480,15 @@\n 12.3.8.9.Persistent variables in GladeVCP\n \n . . . . . . . . . . . . . . . . . . . . . . . . . 1026\n \n 12.3.8.10.\n Using persistent variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvii\n \n 12.3.8.11.\n Saving the state on GladeVCP shutdown . . . . . . . . . . . . . . . . . . . . . 1027\n 12.3.8.12.\n Saving state when Ctrl-C is pressed . . . . . . . . . . . . . . . . . . . . . . . . 1028\n@@ -3549,15 +3549,15 @@\n 12.5.5.Handler File In Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058\n 12.5.5.1.Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059\n 12.5.5.2.IMPORT Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062\n 12.5.5.3.INSTANTIATE LIBRARIES Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . 1062\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlviii\n \n 12.5.5.4.HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062\n 12.5.5.5.INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062\n 12.5.5.6.SPECIAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063\n 12.5.5.7.STATUS CALLBACKS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063\n@@ -3598,15 +3598,15 @@\n 12.7.1.2.Slider - HAL Pin Value Adjusting Widget . . . . . . . . . . . . . . . . . . . . 1082\n 12.7.1.3.LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.7.1.4.CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.7.1.5.RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083\n 12.7.1.6.Gauge - Round Dial Gauge Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1083\n 12.7.1.7.HALPad - HAL Buttons Joypad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlix\n \n 12.7.1.8.PushButton - HAL Pin Toggle Widget . . . . . . . . . . . . . . . . . . . . . . . 1086\n 12.7.1.9.focusOverlay - Focus Overlay Widget . . . . . . . . . . . . . . . . . . . . . . 1086\n 12.7.1.10.\n gridLayout - Grid Layout Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1087\n@@ -3675,15 +3675,15 @@\n 12.7.2.27.\n JointEnableWidget - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121\n 12.7.2.28.\n StatusImageSwitcher - Controller Status Image Switching Widget . . . . 1121\n 12.7.2.29.\n FileManager - File Loading Selector Widget . . . . . . . . . . . . . . . . . . . 1122\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n l\n \n 12.7.2.30.\n RadioAxisSelector - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122\n 12.7.2.31.\n ToolOffsetView - Tools Offsets View And Edit Widget\n@@ -3729,15 +3729,15 @@\n 12.8.1.2.Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143\n 12.8.2.Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143\n 12.8.2.1.Available data and defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144\n 12.8.2.2.User message dialog info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145\n 12.8.2.3.Embedded program info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145\n 12.8.2.4.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n li\n \n 12.8.2.5.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145\n 12.8.3.Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146\n 12.8.3.1.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146\n 12.8.3.2.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146\n@@ -3800,15 +3800,15 @@\n Primitives Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159\n 12.8.15.3.\n Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161\n 12.8.15.4.\n More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161\n 12.9.QtVismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lii\n \n 12.9.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162\n 12.9.2.Hierarchy of Machine Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163\n 12.9.3.Start the script\n \n@@ -3875,15 +3875,15 @@\n 12.10.7.2.\n SystemToolbutton Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182\n 12.10.7.3.\n Making a plugin with a MenuEntry dialog box . . . . . . . . . . . . . . . . . 1183\n 12.11.\n QtVCP Handler File Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liii\n \n 12.11.1.\n Preference File Loading/Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185\n 12.11.2.\n Use QSettings To Read/Save Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186\n@@ -3959,15 +3959,15 @@\n \n 13.1.Panelui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n 13.1.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n 13.1.2.Loading Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n 13.1.3.panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206\n 13.1.4.Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liv\n \n 13.1.5.ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210\n 13.1.6.Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211\n 13.2.Filter Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212\n 13.2.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212\n@@ -4033,15 +4033,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225\n \n 13.5.1.The linuxcnc Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225\n 13.5.2.Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1225\n 13.5.3.Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226\n 13.5.3.1.linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lv\n \n 13.5.3.2.The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231\n 13.5.3.3.The joint dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231\n 13.5.4.The spindle dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233\n 13.5.5.Preparing to send commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233\n@@ -4094,15 +4094,15 @@\n \n 1265\n \n 16.1.Legal Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265\n 16.1.1.Copyright Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265\n 16.1.2.GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17.Historia de LinuxCNC\n \n lvi\n \n 1270\n \n@@ -4110,23 +4110,23 @@\n 17.1.1.Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271\n 17.1.2.Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271\n \n 18.\u00cdndice alfab\u00e9tico\n \n 1272\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 1278\n \n Parte I\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 1278\n \n Cap\u00edtulo 1\n \n Getting Started with LinuxCNC\n 1.1. About LinuxCNC\n@@ -4154,15 +4154,15 @@\n It can simultaneously move up to 9 axes and supports a variety of interfaces.\n The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC\n software at the computer, or open loop with step-servos or stepper motors.\n Motion control features include: cutter radius and length compensation, path deviation limited to\n a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed\n override, and constant velocity control.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 1278\n \n Support for non-Cartesian motion systems is provided via custom kinematics modules. Available\n architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary\n joints to provide motion such as PUMA or SCARA robots.\n LinuxCNC runs on Linux using real time extensions.\n@@ -4199,15 +4199,15 @@\n You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users\n 1.1.3.3. Web Forum\n A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the\n linuxcnc.org home page.\n This is quite active but the demographic is more user-biased than the mailing list. If you want to be\n sure that your message is seen by the developers then the mailing list is to be preferred.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 1278\n \n 1.1.3.4. LinuxCNC Wiki\n A Wiki site is a user maintained web site that anyone can add to or edit.\n \n The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or\n@@ -4239,15 +4239,15 @@\n 1.2.2. Kernel and Version requirements\n 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\n files and learning the system. To work with these kernel versions there are two versions of LinuxCNC\n distributed. The package names are \u201dlinuxcnc\u201d and \u201dlinuxcnc-uspace\u201d.\n The realtime kernel options are preempt-rt, RTAI and Xenomai.\n You can discover the kernel version of your system with the command:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 1278\n \n uname -a\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n@@ -4278,15 +4278,15 @@\n Laptops are not generally suited to real time software step generation. Again a Latency Test run for\n an extended time will give you the info you need to determine suitability.\n 1.2.3.2. Video Cards\n If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize\n your video card or monitor. This can sometimes be worked-around by installing drivers or creating /\n editing Xorg.conf files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 1278\n \n 1.3. Getting LinuxCNC\n This section describes the recommended way to download and make a fresh install of LinuxCNC.\n There are also Alternate Install Methods for the adventurous. If you have an existing install that you\n want to upgrade, go to the Updating LinuxCNC section instead.\n@@ -4319,15 +4319,15 @@\n be edited back by mounting the SD card in a a different computer (maybe even a Pi with a USB card\n reader).\n 1.3.1.2. Download using zsync\n 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\n downloading the image using the Normal Download method.\n zsync in Linux\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 1278\n \n Install zsync using Synaptic or, by running the following in a terminal\n sudo apt-get install zsync\n \n Then run this command to download the iso to your computer\n@@ -4364,15 +4364,15 @@\n 1. Connect a USB storage device (for example a flash drive or thumb drive type device).\n 2. Determine the device file corresponding to the USB flash drive. This information can be found in\n the output of dmesg after connecting the device. /proc/partitions may also be helpful.\n 3. Use the dd command to write the image to your USB storage device. For example, if your storage\n device showed up as /dev/sde, then use this command:\n dd if=linuxcnc-2.8.4-buster.iso of=/dev/sde\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 1278\n \n Writing the image to a USB storage device in Mac OSX\n 1. Open a terminal and type\n diskutil list\n \n@@ -4407,15 +4407,15 @@\n With the USB storage device plugged in or the DVD in the DVD drive, shut down the computer then\n turn the computer back on. This will boot the computer from the Live/Install Image and choose the\n Live boot option.\n nota\n If the system does not boot from the DVD or USB stick it might be necessary to change the boot order\n in the PC BIOS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 1278\n \n Once the computer has booted up you can try out LinuxCNC without installing it. You can not create\n custom configurations or modify most system settings in a Live session, but you can (and should) run\n the latency test.\n To try out LinuxCNC: from the Applications/CNC menu pick LinuxCNC. A dialog box will open from\n@@ -4467,15 +4467,15 @@\n linuxcnc-uspace\n \n Typical use\n simulation only\n machine control\n & simulation\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Distribution\n Debian Buster\n \n Architecture\n amd64\n \n@@ -4564,15 +4564,15 @@\n exit. While running the system appears to be stable. But should nevertheless be considered\n experimental at this point.\n \n nota\n If you decide to use the RTAI 5.2 kernel and see a problem outside the circumstances described\n above, then please report it immediately to the project developers.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 1278\n \n 1.3.7.1. Installing on Debian Buster (with Preempt-RT kernel)\n \n 1. Install Debian Buster (Debian 10), amd64 version. You can download the installer here: https://www.deb\n releases/buster/ .\n@@ -4613,15 +4613,15 @@\n \n 8. Install uspace (a reboot may be required prior to installing uspace)\n sudo apt-get install linuxcnc-uspace\n \n 9. Optionally you can install mesaflash if you are using a Mesa card.\n sudo apt install mesaflash\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 1278\n \n 1.3.7.2. Installing on Debian Buster (with experimental RTAI kernel)\n \n aviso\n This kernel has known stability problems. It appears to run reliably once LinuxCNC is loaded.\n@@ -4656,15 +4656,15 @@\n 3. Add the LinuxCNC Archive Signing Key to your apt keyring.\n # Alternate keyserver: keyserver.ubuntu.com\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n \n 4. Add the apt repository:\n echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee /etc/apt/sources. \u2190list.d/linuxcnc.list\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 1278\n \n 5. Update the package list from linuxcnc.org\n sudo apt-get update\n \n 6. install the realtime kernel\n@@ -4701,15 +4701,15 @@\n 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name\n is 3.4-9-rtai-686-pae.\n uname -r\n \n 9. Run\n sudo apt-get install linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 1278\n \n 1.4. Running LinuxCNC\n 1.4.1. Invoking LinuxCNC\n After installation, LinuxCNC starts just like any other Linux program: run it from the terminal by\n issuing the command linuxcnc, or select it in the Applications -> CNC menu.\n@@ -4743,15 +4743,15 @@\n qtvcp_screens - Guis dise\u00f1adas con Qt5 y Python\n tklinuxcnc - Keyboard and Mouse Gui(no longer maintained)\n touchy - Touch Screen GUI\n A GUI configuration directory may contain subdirectories with configurations that illustrate special\n situations or the embedding of other applications.\n The by_interface configurations are organized around common, supported interfaces like:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 1278\n \n general mechatronics\n mesa\n parport\n pico\n@@ -4781,15 +4781,15 @@\n parport - Applications to test parport.\n pyvcp - Example pyvcp applications.\n xhc-hb04 - Applications to test an xhc-hb04 USB wireless MPG\n nota\n Under the Apps directory, only applications that are usefully modified by the user are offered for\n copying to the user\u2019s directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 1278\n \n Figura 1.1: Selector de Configuraci\u00f3n de LinuxCNC\n Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration.\n Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly\n launch this configuration without showing the Configuration Selector screen.\n@@ -4805,15 +4805,15 @@\n All configurations listed under Sample Configurations/sim are intended to run on any computer. No\n specific hardware is required and real-time support is not needed.\n These configurations are useful for studying individual capabilities or options. The sim configurations\n are organized according to the graphical user interface used in the demonstration. The directory for\n axis contains the most choices and subdirectories because it is the most tested GUI. The capabilities\n demonstrated with any specific GUI may be available in other GUIs as well.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 1278\n \n 1.4.5. Configuration Resources\n 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\n at least one INI file (iniflename.ini) that is used to describe a specific configuration.\n File resources within the copied directory will typically include one or more INI file (filename.ini)\n@@ -4855,15 +4855,15 @@\n The details will depend on which platform you\u2019re running on. Open a terminal then type lsb_release\n -ic to find this information out:\n lsb_release -ic\n Distributor ID: Debian\n Codename:\n wheezy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 1278\n \n You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also\n available for Debian Jessie or Debian Buster if you happen to already be running one of those.\n You will also need to check which realtime kernel is being used:\n uname -r\n@@ -4910,15 +4910,15 @@\n deb https://linuxcnc.org jessie base\n 2.8-rtpreempt\n deb https://linuxcnc.org jessie base\n 2.8-rt\n deb https://linuxcnc.org buster base\n 2.8-rtpreempt\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Platform\n Debian Buster - RTAI\n \n 19 / 1278\n \n apt source line\n@@ -4942,15 +4942,15 @@\n will be automatically upgraded to the new one.\n 1.5.1.3. Ubuntu Precise\n Click on the Dash Home icon in the top left.\n In the Search field, type \u201dupdate\u201d, then click on the Update Manager icon.\n Click the Check button to fetch the list of packages available.\n Click the Install Updates button to install the new versions of all packages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 1278\n \n 1.5.2. Updating without Network\n To update without a network connection you need to download the .deb then install it with dpkg. The\n .debs can be found in https://linuxcnc.org/dists/ .\n You have to drill down from the above link to find the correct deb for your installation. Open a terminal\n@@ -4990,15 +4990,15 @@\n The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your\n machine configuration.\n The main difference is that LinuxCNC no longer makes any assumptions about which joint controls\n which axis. This change is generally termed \u201djoints-axes\u201d after the name of the development branch\n where the changes started. This change has been in development since at least 2010, and has finally\n been merged.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 1278\n \n 1.5.4.1. Distribution Configurations (updates for joints_axes)\n The LinuxCNC distribution includes many example configurations organized in directory hierarchies\n named: by_machine, by_interface, and sim (simulated machines). These configurations are often used\n as starting points for making a new configuration, as examples for study, or as complete simulated\n@@ -5036,15 +5036,15 @@\n motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will\n take care of these changes. To control extra spindles the G and M-codes which control spindle speed\n now accept an additional \u201d$\u201d argument, for example M3 $2 to start the third spindle. \u201d$\u201d was chosen\n to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match\n any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man\n motion for the HAL pin changes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 1278\n \n 1.5.4.4. TRAJ velocities, accelerations names\n With incorporation of joints_axes functionality, some names were changed to clarify available functionality.\n was: [TRAJ]MAX_VELOCITY\n was: [TRAJ]DEFAULT_VELOCITY\n@@ -5092,15 +5092,15 @@\n \n 1.5.4.6. Lathe Configurations\n 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\n configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for\n homing the unused Y coordinate. These arrangements are no longer required or recommended.\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 1278\n \n of joints accordingly to 2. There is no need for an INI file [AXIS_Y] section and only two [JOINT_N]\n sections need be defined.\n Example INI file items for a lathe (only sections relevant to kinematics are shown):\n [KINS]\n@@ -5144,15 +5144,15 @@\n [KINS]JOINTS\n = 4\n [TRAJ]COORDINATES = XYYZ\n \n Gantry using trivkins (KINEMATICS_BOTH) with duplicated axis letters and a rotary axis with skipped\n axis letters (A,B skipped):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 1278\n \n [KINS]KINEMATICS = trivkins coordinates=XYYZC kinstype=BOTH\n [KINS]JOINTS\n = 5\n [TRAJ]COORDINATES = XYYZC\n@@ -5196,15 +5196,15 @@\n HAL)\n \n To create these HAL pins for locking joints, specify all joints that are used as locking indexers with the\n unlock_joints_mask parameter for the motmod module. (bit0(LSB)==>joint0, bit1==>joint1, etc.)\n [EMCMOT]\n EMCMOT = motmod unlock_joints_mask=BITMASK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 1278\n \n As an example, consider a machine using trivkins kinematics with coordinates XYZB where B is a\n 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,\n Z==>joint2, B==>joint3. The mask to specify joint 3 is 000001000 (binary) == 0x08 (hexadecimal)\n The required INI file entries for this trivkins XYZB example are:\n@@ -5243,15 +5243,15 @@\n In 2.7.x versions, trajectory planning ([TRAJ]) settings included:\n [TRAJ]\n DEFAULT_ACCELERATION\n MAX_ACCELERATION\n \n Interim work prepared for distinct linear and angular items by renaming these items as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 1278\n \n [TRAJ]\n DEFAULT_LINEAR_ACCEL\n MAX_LINEAR_ACCEL\n \n@@ -5324,15 +5324,15 @@\n net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode\n \n (The signal names jora_1_y_* are examples, names prior to conversion for joints_axes will depend\n upon the specific configuration details.)\n Configurations with non-identity kinematics and configurations that use duplicated axis letters (for\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 1278\n \n 1.5.5.2. INI HAL pins\n HAL pins are created for INI file items for both joints ([JOINT_N]) and axes ([AXIS_L]):\n For N = 0 \u2026 [KINS](JOINTS-1):\n INI file item\n@@ -5389,15 +5389,15 @@\n (servo last period in clks)\n motion.servo.last-period_ns (kernel-dependent availability)\n \n 1.5.7. Interface changes for joints_axes 2.8.x\n 1.5.7.1. Python LinuxCNC module\n The jog() interface includes a joint-flag to specify joint (True) or teleop (False) jogging:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 1278\n \n jog(command, joint-flag, axis-or-joint-number, velocity[, distance])\n jog(linuxcnc.JOG_STOP, joint-flag, axis-or-joint-number)\n jog(linuxcnc.JOG_CONTINUOUS, joint-flag, joint-flag, velocity)\n jog(linuxcnc.JOG_INCREMENT, joint-flag, axis-or-joint-number, velocity, distance)\n@@ -5434,15 +5434,15 @@\n 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\n type to a non-IDENTITY type using kinstype=both. The both setting indicates that both forward and\n inverse kinematics functions are available and GUI provisions that hide the distinctions of joints and\n axis letters should not be employed. For example, for an xyz configuration, specify:\n [KINS]\n KINEMATICS = trivkins coordinates=xyz kinstype=both\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 1278\n \n With this setting, identity kinematics will be used but the AXIS GUI will:\n 1. show joint numbers prior to homing\n 2. show axis letters after successful homing\n 3. support toggling between joint and teleop modes with the $ key\n@@ -5491,15 +5491,15 @@\n [KINS]\n KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH\n ...\n [TRAJ]\n COORDINATES = XYYZ\n ...\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 1278\n \n This machine, after homing, has a one-to-one correspondence between a single axis letter (Y) and a\n pair of joints (1,2). Using kinematics=BOTH allows control of individual joints in joint mode if/when\n required.\n The AXIS GUI supports configurations using non-identity kinematics with:\n@@ -5537,15 +5537,15 @@\n The code of emcsh.cc provides the set of Tcl commands used by TkLinuxCNC. The commands are\n available to Tcl applications as the Tcl package named Linuxcnc. A number of commands previously\n required the use of a numeric argument to specify an axis coordinate (0-->X, 1-->Y, \u2026, 8-->W). These\n commands have been simplified to use an argument that is just the coordinate letter.\n Commands now using a coordinate letter argument are:\n 1. emc_pos_offset\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 1278\n \n 2. emc_abs_cmd_pos\n 3. emc_abs_act_pos\n 4. emc_rel_cmd_pos\n 5. emc_rel_act_pos\n@@ -5582,15 +5582,15 @@\n is: set jog_stop joint_number|axis_letter\n \n nota\n Test for teleop mode using command: get teleop_enable\n If TELEOP_ENABLE=YES, use axis_letter;\n Else use joint_number\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 1278\n \n nota\n Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234\n in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided\n the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding\n@@ -5629,15 +5629,15 @@\n HALFILE = axis_manualtoolchange.hal\n HALFILE = simulated_home.hal\n \n Lathe configs often shared the same HAL files and used the expedient method of specifying 3 axes with\n Y unused. More complex sim configs provided specific sets of HAL files according to the configuration\n purpose.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 1278\n \n 1.5.12.2. Post-joints_axes\n 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\n typical sim config HALFILE specification is:\n [HAL]\n@@ -5677,15 +5677,15 @@\n commands are included too.\n The equivalent HAL file can be used to create a new configuration based on the original configuration\n made with LIB:basic_sim.tcl with the following steps:\n 1. Run the simulator configuration to create a new equivalent HAL file, for example: example_cmds.hal.\n 2. To use this new equivalent HAL file in the original simulator configuration INI file (or a copy of\n it), edit to change:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 1278\n \n [HAL]\n HALFILE = LIB:basic_sim.tcl other_parameters\n \n to:\n@@ -5714,15 +5714,15 @@\n motion.homing-inhibit (see motion manpage)\n \n 1.5.13.3. HAL component updates\n 1. siggen: new pin reset to set output signal values to predefined state\n 2. biquad: pins type,f0,Q,s1,s2 were formerly params\n 3. userkins: template for user-built kinematics modules using halcompile\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 1278\n \n 1.5.13.4. XHC-HB04 Pendant Support\n Remove unused pin jogenable-off.\n Add pin amux-enable so that the multiplexed acceleration reductions are now enabled by the ANDing\n the pins: is-manual and amux-enable. These two pins are typically connected to halui.mode.is-manual\n@@ -5750,15 +5750,15 @@\n 1.5.14. Changes beyond 2.8.x (master branch development)\n The master branch is version-tagged with prerelease notation, typically 2.9~pre*\n 1.5.14.1. Python3 and GTK3\n 2.9 changed to Python3 and GTK3. This only affects you if you have custom glade or Python handlers\n in your config.\n 1. Run py3clean in your config directory to remove any temporary files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 1278\n \n 2. Run py3clean in your LinuxCNC source directory if you compile from source.\n 3. Run 2to3 -w on any .py files you have written.\n 4. Make sure the interpreter in the first line of the script is Python 3, not Python 2.\n 5. Open the ui file in glade, and save it. It should convert everything that can be converted automatically, and give you warnings.\n@@ -5793,15 +5793,15 @@\n A new motmod parameter (num_extrajoints) specifies joints that are homed by conventional joint\n homing methods but controlled by new HAL pins (joint.N.posthome-cmd) after homing. Such joints\n may be managed by independent motion planner/controllers in HAL and manipulated from G-code\n using custom M-codes. See the motion man page for more info.\n A homing api is provided by src/emc/motion/homing.h to support users\u2019 custom homing code that\n replaces src/emc/motion/homing.c with a user-customized homing.c file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 1278\n \n The motion module supports kinematics modules that define new functions kinematicsSwitchable()\n and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided\n for use of such kinematics modules.\n Provided kinematics modules that implement kinematics switching use the switchkins.o object to\n@@ -5830,15 +5830,15 @@\n of a homing module that can be built with halcompile.\n lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified.\n lib/python/vismach.py: new HAL pin vismach.plotclear\n 1.5.14.6. HAL\n sim_home_switch: added I/O pin for index-enable\n motion.feed-upm \u2014 current feed in units per minute\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 1278\n \n 1.5.14.7. Configs\n [DISPLAY]GEOMETRY settings that include the ! character specify that displayed rotations respect\n G5x,G92 offsets.\n sim/configs/axis/axis_9axis: demonstrate simulated encoder index\n@@ -5868,15 +5868,15 @@\n 1.6.1.2. Ubuntu\n When you install LinuxCNC with the Ubuntu LiveCD the default is to have to log in each time you turn\n the computer on. To enable automatic login go to System > Administration > Login Window. If it is\n a fresh install the Login Window might take a second or three to pop up. You will have to have your\n password that you used for the install to gain access to the Login Window Preferences window. In the\n Security tab check off Enable Automatic Login and pick a user name from the list (that would be you).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 1278\n \n 1.6.2. Automatic Startup\n To have LinuxCNC start automatically with your config after turning on the computer go to System\n > Preferences > Sessions > Startup Applications, click Add. Browse to your config and select the .ini\n file. When the file picker dialog closes, add linuxcnc and a space in front of the path to your .ini file.\n@@ -5912,15 +5912,15 @@\n \n If you want to send the output from lsmod to a text file in a terminal window type:\n lsmod > mymod.txt\n \n The resulting text file will be located in the home directory if you did not change directories when you\n opened up the terminal window and it will be named mymod.txt or what ever you named it.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 1278\n \n 1.6.6. Editing a Root File\n When you open the file browser and you see the owner of the file is root you must do extra steps to edit\n that file. Editing some root files can have bad results. Be careful when editing root files. Generally,\n you can open and view most root files, but they will open in read only mode.\n@@ -5952,15 +5952,15 @@\n \n To move directly to your home directory, in the terrminal window use the cd command with no arguments:\n cd\n \n To move down to the linuxcnc/configs subdirectory in the terminal window type:\n cd linuxcnc/configs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 1278\n \n 1.6.7.3. Listing files in a directory\n To view a list of all the files and subdirectories in the terminal window type:\n dir\n \n@@ -5997,15 +5997,15 @@\n messages to a file use the redirection operator >, like this:\n dmesg > bootmsg.txt\n \n The contents of this file can be copied and pasted on line to share with people trying to help you\n diagnose your problem.\n To clear the message buffer type this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 1278\n \n sudo dmesg -c\n \n 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.\n To find the built in parallel port address use grep to filter the information out of dmesg.\n@@ -6036,15 +6036,15 @@\n is the same as f0, e.g., a file named f0 in the startup directory\n ../f1\n refers to a file f1 in the parent directory\n ../../f2\n refers to a file f2 in the parent of the parent directory\n ../../../f3 etc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 1278\n \n Cap\u00edtulo 2\n \n General User Information\n 2.1. User Foreword\n@@ -6073,15 +6073,15 @@\n The Composition rule allows us to build a predictable control system from the many modules available by making them connectable. We achieve connectability by setting up standard interfaces to sets\n of modules and following those standards.\n The Separation rule requires that we make distinct parts that do little things. By separating functions\n debugging is much easier and replacement modules can be dropped into the system and comparisons\n easily made.\n 1 Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 1278\n \n What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make\n choices about how you will use the system. Many of these choices are a part of machine integration,\n but many also affect the way you will use your machine. As you read you will find many places where\n you will need to make comparisons. Eventually you will make choices, \u201dI\u2019ll use this interface rather\n@@ -6116,15 +6116,15 @@\n the high level controllers that coordinate the generation and execution of motion control of the CNC\n machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO)\n and the task executor (EMCTASK).\n The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper\n motors might look like:\n 2 Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 1278\n \n Figura 2.1: Simple LinuxCNC Controlled Machine\n A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives,\n each of which has one stepper motor connected to it. Each drive receives two independent signals;\n one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise\n@@ -6146,15 +6146,15 @@\n The INI file contains all the basic hardware information regarding the operation of the CNC mill,\n such as the number of steps each stepper motor must turn to complete one full revolution, the\n maximum rate at which each stepper may operate at, the limits of travel of each axis or the\n configuration and behaviour of limit switches on each axis.\n \u2022 My_CNC.hal\n This HAL file contains information that tells LinuxCNC how to link the internal virtual signals to\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 1278\n \n physical connections beyond the computer. For example, specifying pin 4 on the parallel port to\n send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis motor\n when a limit switch is triggered on parallel port pin 13.\n \u2022 custom.HAL\n@@ -6182,77 +6182,77 @@\n 2.2.3. Graphical User Interfaces\n A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with.\n LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain\n fields contained in the INI file:\n AXIS\n AXIS, the standard keyboard GUI interface. This is also the default GUI launched when a Configuration Wizard is used to create a desktop icon launcher:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 47 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n 48 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 1278\n \n Figura 2.4: Gscreen, a configurable base touch screen GUI\n \n GMOCCAPY\n GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally\n well in applications where a keyboard and mouse are the preferred methods of controlling the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 1278\n \n Figura 2.5: GMOCCAPY, a touch screen GUI based on Gscreen\n \n NGCGUI\n NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be\n run as a standalone program or embedded into another GUI as a series of tabs. The following\n screenshot shows NGCGUI embedded into AXIS:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 1278\n \n Figura 2.6: NGCGUI, a graphical interface integrated into AXIS\n \n TkLinuxCNC\n TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 2.7: TkLinuxCNC graphical interface\n \n Xemc\n an X-Window program\n halui\n A HAL based user interface allowing to control LinuxCNC using buttons and switches\n linuxcncrsh\n A telnet based user interface allowing to send commands from remote computers.\n \n 52 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 1278\n \n 2.2.4. Virtual Control Panels\n As mentioned above, many of LinuxCNC\u2019s GUIs may be customized by the user. This may be done to\n add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased\n flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC:\n@@ -6266,15 +6266,15 @@\n GladeVCP\n GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs.\n GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL\n virtual signals, but can include other external interfaces outside LinuxCNC such as window or\n network events. GladeVCP is also more flexible in how it may be configured to appear on the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 1278\n \n Figura 2.9: GladeVCP Example Embedded Into AXIS GUI\n \n 2.2.5. Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -6296,15 +6296,15 @@\n \n 2.2.7. Modes of Operation\n When LinuxCNC is running, there are three different major modes used for inputting commands.\n These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes\n a big difference in the way that the LinuxCNC control behaves. There are specific things that can be\n done in one mode that cannot be done in another. An operator can home an axis in manual mode but\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 55 / 1278\n \n not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes\n in the auto mode but not in manual or MDI.\n In manual mode, each command is entered separately. In human terms a manual command might be\n \u201dturn on coolant\u201d or \u201djog X at 25 inches per minute\u201d. These are roughly equivalent to flipping a switch\n@@ -6342,15 +6342,15 @@\n acceleration, must be obeyed by the trajectory planner.\n For more information on the Trajectory Planner INI options see the Trajectory Section in the INI\n chapter.\n 2.3.1.2. Path Following\n A less straightforward problem is that of path following. When you program a corner in G-code, the\n trajectory planner can do several things, all of which are right in some cases:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 1278\n \n It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new\n direction.\n It can also do what is called blending, which is to keep the feed rate up while going through the\n corner, making it necessary to round the corner off in order to obey machine constraints.\n@@ -6392,15 +6392,15 @@\n the end point of the move is as large as it needs to be to keep up the best contouring feed.\n Naive CAM Detector\n Successive G1 moves that involve only the XYZ axes that deviate less than Q- from a straight\n line are merged into a single straight line. This merged movement replaces the individual G1\n movements for the purposes of blending with tolerance. Between successive movements, the\n controlled point will pass no more than P- from the actual endpoints of the movements. The\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 57 / 1278\n \n controlled point will touch at least one point on each movement. The machine will never move at\n such a speed that it cannot come to an exact stop at the end of the current movement (or next\n movement, if you pause when blending has already started). On G2/3 moves in the G17 (XY) plane,\n when the maximum deviation of an arc from a straight line is less than the G64 Q- tolerance, the\n@@ -6436,15 +6436,15 @@\n \n 2.3.2. G-code\n 2.3.2.1. Defaults\n When LinuxCNC first starts up many G- and M-codes are loaded by default. The current active G- and\n M-codes can be viewed on the MDI tab in the Active G-Codes: window in the AXIS interface. These\n G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 58 / 1278\n \n one does before running LinuxCNC. The defaults can be changed when running a G-Code file and\n left in a different state than when you started your LinuxCNC session. The best practice is to set the\n defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have\n not changed. Printing out the G-Code Quick Reference page can help you remember what each one\n@@ -6478,15 +6478,15 @@\n Coordinate Systems is in the Coordinate System section of this manual.\n 2.3.5.1. G53 Machine Coordinate\n When you home LinuxCNC you set the G53 Machine Coordinate System to 0 for each axis homed.\n No other coordinate systems or tool offsets are changed by homing.\n The only time you move in the G53 machine coordinate system is when you program a G53 on the\n same line as a move. Normally you are in the G54 coordinate system.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 1278\n \n 2.3.5.2. G54-59.3 User Coordinates\n Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate\n system a small blue ball with lines will be at the machine origin when your DRO is displaying Position: Relative Actual in AXIS. If your offsets are temporary use the Zero Coordinate System from the\n Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number\n@@ -6513,22 +6513,22 @@\n in relation to the material.\n Note also the position of the limit switches and the direction of activation of their cams. Several\n combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed\n limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will\n be reversed, +X will be on the right of the table and -X on the left. This inversion does not change\n anything from the point of view of the direction of movement of the tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 60 / 1278\n \n Figura 2.11: Typical Mill Configuration\n The following diagram shows a typical lathe showing direction of travel of the tool and limit switches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 2.12: Typical Lathe Configuration\n \n 2.4. Starting LinuxCNC\n 2.4.1. Running LinuxCNC\n LinuxCNC is started with the script file linuxcnc.\n linuxcnc [options] []\n@@ -6543,15 +6543,15 @@\n $ linuxcnc [Options] path/to/your_ini_file\n Name the configuration INI file using its path\n $ linuxcnc [Options] -l\n Use the previously used configuration inifile\n \n 61 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 1278\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -k: Continue in the presence of errors in HAL files\n@@ -6573,15 +6573,15 @@\n or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to\n those pins. See the [HAL] section of the INI configuration for more information.\n 2.4.1.1. Configuration Selector\n If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and\n save a sample configuration. Once a sample configuration has been saved it can be modified to suit\n your application. The configuration files are saved in linuxcnc/configs directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 1278\n \n 2.5. CNC Machine Overview\n This section gives a brief description of how a CNC machine is viewed from the input and output ends\n of the Interpreter.\n \n@@ -6618,15 +6618,15 @@\n of a lathe. The spindle may or may not be controlled by the CNC software. LinuxCNC offers support for\n up to 8 spindles, which can be individually controlled and can run simultaneously at different speeds\n and in different directions.\n 2.5.1.3. Coolant\n Flood coolant and mist coolant may each be turned on independently. The RS274/NGC language turns\n them off together see section M7 M8 M9.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 64 / 1278\n \n 2.5.1.4. Feed and Speed Override\n A CNC machine can have separate feed and speed override controls, which let the operator specify\n that the actual feed rate or spindle speed used in machining at some percentage of the programmed\n rate.\n@@ -6658,15 +6658,15 @@\n the spindle. The location of the controlled point can be moved out along the spindle axis by specifying\n some positive amount for the tool length offset. This amount is normally the length of the cutting tool\n in use, so that the controlled point is at the end of the cutting tool. On a lathe, tool length offsets can\n be specified for X and Z axes, and the controlled point is either at the tool tip or slightly outside it\n (where the perpendicular, axis-aligned lines touched by the front and side of the tool intersect).\n 3 If the parallelism requirement is violated, the system builder will have to say how to distinguish clockwise from counterclockwise.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 1278\n \n 2.5.2.4. Coordinated Linear Motion\n To drive a tool along a specified path, a machining center must often coordinate the motion of several\n axes. We use the term coordinated linear motion to describe the situation in which, nominally, each\n axis moves at constant speed and all axes move from their starting positions to their end positions at\n@@ -6699,15 +6699,15 @@\n 2.5.2.8. Units\n Units used for distances along the X, Y, and Z axes may be measured in millimeters or inches. Units for\n all other quantities involved in machine control cannot be changed. Different quantities use different\n specific units. Spindle speed is measured in revolutions per minute. The positions of rotational axes\n are measured in degrees. Feed rates are expressed in current length units per minute, or degrees per\n minute, or length units per spindle revolution, as described in section G93 G94 G95.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 1278\n \n 2.5.2.9. Current Position\n The controlled point is always at some location called the current position, and the controller always\n knows where that is. The numbers representing the current position must be adjusted in the absence\n of any axis motion if any of several events take place:\n@@ -6737,15 +6737,15 @@\n In exact path mode, the machine follows the programmed path as exactly as possible, slowing or\n stopping if necessary at sharp corners of the path.\n continuous mode\n In continuous mode, sharp corners of the path may be rounded slightly so that the feed rate may\n be kept up (but by no more than the tolerance, if specified).\n See sections G61 and G64.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 1278\n \n 2.5.3. Interpreter Interaction with Switches\n The Interpreter interacts with several switches. This section describes the interactions in more detail.\n In no case does the Interpreter know what the setting of any of these switches is.\n 2.5.3.1. Feed and Speed Override Switches\n@@ -6779,15 +6779,15 @@\n \n 2.5.5. Parameters\n In the RS274/NGC language view, a machining center maintains an array of numerical parameters\n defined by a system definition (RS274NGC_MAX_PARAMETERS). Many of them have specific uses\n 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\n machining center is powered down. LinuxCNC uses a parameter file to ensure persistence and gives\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 68 / 1278\n \n the Interpreter the responsibility for maintaining the file. The Interpreter reads the file when it starts\n up, and writes the file when it exits.\n All parameters are available for use in G-code programs.\n The format of a parameter file is shown in the following table. The file consists of any number of\n@@ -6833,15 +6833,15 @@\n [DISPLAY]\n # Tell the AXIS GUI our machine is a lathe.\n LATHE = TRUE\n \n Lathe Mode in AXIS does not set your default plane to G18 (XZ). You must program that in the preamble\n of each G-code file or (better) add it to your INI file, like this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 69 / 1278\n \n [RS274NGC]\n # G-code modal codes (modes) that the interpreter is initialized with\n # on startup\n RS274NGC_STARTUP_CODE = G18 G20 G90\n@@ -6862,15 +6862,15 @@\n 2.6.3. Lathe Tool Orientation\n The following figure shows the lathe tool orientations with the center line angle of each orientation\n and info on FRONTANGLE and BACKANGLE.\n The FRONTANGLE and BACKANGLE are clockwise starting at a line parallel to Z+.\n \n Figura 2.13: Lathe Tool Orientations\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 70 / 1278\n \n In AXIS the following figures show what the Tool Positions look like, as entered in the tool table.\n Tool Positions 1, 2, 3 & 4Tool Positions 123 & 4 23 & 4 3 & 4\n \n Tool Positions 5, 6, 7 & 8Tool Positions 567 & 8 67 & 8 7 & 8\n@@ -6891,15 +6891,15 @@\n Tool touch off automatically adds a G43 so the current tool is the current offset.\n A typical session might be:\n 1. Home each axis if not homed.\n 2. Set the current tool with Tn M6 G43 where n is the tool number.\n 3. Select the X axis in the Manual Control window.\n 4. Move the X to a known position or take a test cut and measure the diameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 71 / 1278\n \n 5. Select Touch Off and pick Tool Table then enter the position or the diameter.\n 6. Follow the same sequence to correct the Z axis.\n Note: if you are in Radius Mode you must enter the radius, not the diameter.\n 2.6.4.2. Z Touch Off\n@@ -6931,15 +6931,15 @@\n 2. Set the current tool with Tn M6 where n is the tool number.\n 3. Issue a G43 so the current tool offset is in effect.\n 4. Bring the tool to the work piece and set the machine Z offset.\n If you forget to set the G43 for the current tool when you set the machine coordinate system offset,\n you will not get what you expect, as the tool offset will be added to the current offset when the tool is\n used in your program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 72 / 1278\n \n 2.6.5. Spindle Synchronized Motion\n Spindle synchronized motion requires a quadrature encoder connected to the spindle with one index\n pulse per revolution. See the motion man page and the Spindle Control Example for more information.\n Threading The G76 threading cycle is used for both internal and external threads. For more information see the G76 Section.\n@@ -6974,15 +6974,15 @@\n G7 diameter mode.\n \n 2.6.7. Tool Path\n 2.6.7.1. Control point\n The control point for the tool follows the programmed path. The control point is the intersection of a\n line parallel to the X and Z axis and tangent to the tool tip diameter, as defined when you touch off the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 73 / 1278\n \n X and Z axes for that tool. When turning or facing straight sided parts the cutting path and the tool\n edge follow the same path. When turning radius and angles the edge of the tool tip will not follow the\n programmed path unless cutter comp is in effect. In the following figures you can see how the control\n point does not follow the tool edge as you might assume.\n@@ -6992,58 +6992,58 @@\n 2.6.7.2. Cutting Angles without Cutter Comp\n Now imagine we program a ramp without cutter comp. The programmed path is shown in the following\n figure. As you can see in the figure the programmed path and the desired cut path are one and the\n same as long as we are moving in an X or Z direction only.\n \n Figura 2.15: Ramp Entry\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 74 / 1278\n \n Now as the control point progresses along the programmed path the actual cutter edge does not follow\n the programmed path as shown in the following figure. There are two ways to solve this, cutter comp\n and adjusting your programmed path to compensate for tip radius.\n \n Figura 2.16: Ramp Path\n In the above example it is a simple exercise to adjust the programmed path to give the desired actual\n path by moving the programmed path for the ramp to the left the radius of the tool tip.\n 2.6.7.3. Cutting a Radius\n In this example we will examine what happens during a radius cut without cutter comp. In the next\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 75 / 1278\n \n Figura 2.17: Turning Cut\n In this next figure you can see as the tool approaches the end of the part the control point still follows\n the path but the tool tip has left the part and is cutting air. You can also see that even though a radius\n has been programmed the part will actually end up with a square corner.\n \n Figura 2.18: Radius Cut\n Now you can see as the control point follows the radius programmed the tool tip has left the part and\n is now cutting air.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 76 / 1278\n \n Figura 2.19: Radius Cut\n In the final figure we can see the tool tip will finish cutting the face but leave a square corner instead\n of a nice radius. Notice also that if you program the cut to end at the center of the part a small amount\n of material will be left from the radius of the tool. To finish a face cut to the center of a part you have\n to program the tool to go past center at least the nose radius of the tool.\n \n Figura 2.20: Face Cut\n \n 2.6.7.4. Using Cutter Comp\n When using cutter comp on a lathe think of the tool tip radius as the radius of a round cutter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 77 / 1278\n \n When using cutter comp the path must be large enough for a round tool that will not gouge into the\n next line.\n When cutting straight lines on the lathe you might not want to use cutter comp. For example boring\n a hole with a tight fitting boring bar you may not have enough room to do the exit move.\n@@ -7064,15 +7064,15 @@\n torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the\n column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the\n torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown\n in Zone C. Direct current (DC) straight polarity is used for plasma cutting, as shown in the illustration.\n Zone A channels a secondary gas that cools the torch. This gas also assists the high velocity plasma\n gas in blowing the molten metal out of the cut allowing for a fast, slag - free cut.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 78 / 1278\n \n 2.7.2. Arc Initialisation\n 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\n with the material is required), they are unsuited for CNC applications..\n 2.7.2.1. High Frequency Start\n@@ -7085,15 +7085,15 @@\n points that must be cleaned and readjusted from time to time.\n 2.7.2.2. Blowback Start\n This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the\n torch head back to create a small spark between the inside surface of the consumable, ionising the\n air, and creating a small plasma flame. This also creates a \u201dpilot arc\u201d that provides a plasma flame\n that stays on, whether in contact with the metal or not. This is a very good start type that is now used\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 79 / 1278\n \n by several manufacturers. It\u2019s advantage is that it requires somewhat less circuitry, is a fairly reliable\n and generates far less electrical noise.\n For entry level air plasma CNC systems, the blowback style is much preferred to minimise electrical\n interference with electronics and standard PCs, but the High frequency start still rules supreme in\n@@ -7115,15 +7115,15 @@\n Torch to work distance can impact edge bevel\n \n Negative cut angle: torch too low, increase torch to work distance.\n Positive cut angle: torch too high, decrease torch to work distance.\n nota\n A slight variation in cut angles may be normal, as long as it is within tolerance.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 80 / 1278\n \n The ability to precisely control the cutting height in such a hostile and ever changing environment is\n a very difficult challenge. Fortunately there is a very linear relationship between Torch height (Arc\n length) and arc voltage as this graph shows.\n \n@@ -7148,15 +7148,15 @@\n A fully shielded torch tip to allow ohmic sensing\n If you have the budget, a higher end machines will supply:\n Manufacturer provided cut charts which will save many hours and material waste calibrating cut\n parameters\n Dry Contacts for ArcOK\n Terminals for Arc On switch\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 81 / 1278\n \n Raw arc voltage or divided arc voltage output\n Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the\n LinuxCNC console.\n Higher duty cycles\n@@ -7201,15 +7201,15 @@\n such as a Mesa card. If the dry contacts are a simple relay, there is a high probability that the current\n passing through the relay is less than the minimum current specification. Under these conditions, the\n relay contacts can suffer from a buildup of oxide which over time can result in intermittent contact\n operation. To prevent this from happening, a pull down resistor should be installed on the controller\n input pin. Care should be taken to ensure that this resistor is selected to ensure the minimum current\n passes through the relay and is of sufficient wattage to handle the power in the circuit. Finally, the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 82 / 1278\n \n resistor should be mounted in such a way that the generated heat does not damage anything whilst\n in operation.\n If you have an ArcOK signal, it is recommended it is used over and above any synthesised signal to\n eliminate potential build issues. A synthesised signal available from an external THC or QtPlasmaC\u2019s\n@@ -7248,15 +7248,15 @@\n the operator. In plasma cutting, the earth clamp attached to the material is positive and the torch is\n negative. It is recommended that:\n 1. Ohmic sensing only be implemented where the torch has a shield that is isolated from the torch\n tip that conveys the cutting arc.\n 2. The ohmic circuit uses a totally separate isolated power supply that activates an opto-isolated\n relay to enable the probing signal to be transmitted to the CNC controller.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 83 / 1278\n \n 3. The positive side of the circuit should be at the torch\n 4. Both sides of the circuit needs to be isolated by opto-isolated relays until probing is being undertaken\n 5. Blocking diodes be used to prevent arc voltage entering the ohmic sensing circuit.\n The following is an example circuit that has been proven to work and is compatible with the LinuxCNC\n@@ -7276,15 +7276,15 @@\n threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower \u201cbreak circuit\u201d threshold can be set to build in strong switch hysteresis. This minimises\n false triggering. In our testing, we found the material sensing using this method was more sensitive\n and robust as well as being simpler to implement the wiring. One further advantage is using software\n outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage\n is helpful to get the most out of the Mesa 7I96 which has limited I/O pins.\n The following circuit diagram shows how to implement a hypersensing circuit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 84 / 1278\n \n We used a 15 W Mean Well HDR-15 Ultra Slim DIN Rail Supply 24 V DIN rail based isolated power\n supply. This is a double insulated Isolation Class II device that will withstand any arc voltage that\n might be applied to the terminals.\n 2.7.7.4. Example HAL Code for Hypersensing\n@@ -7301,15 +7301,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 85 / 1278\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -7342,15 +7342,15 @@\n \n 2.7.10. Torch Breakaway\n It is recommended that a mechanism is provided to allow the torch to \u201cbreak away\u201d or fall off in the\n case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow\n the CNC controller to detect if this has occurred and pause the running program. Usually a break\n away is implemented using magnets to secure the torch to the Z axis stage.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 86 / 1278\n \n 2.7.11. Corner Lock / Velocity Anti-Dive\n The LinuxCNC trajectory planner is responsible for translating velocity and acceleration commands\n into motion that obey the laws of physics. For example, motion will slow when negotiating a corner.\n Whilst this is not a problem with milling machines or routers, this poses a particular problem for\n@@ -7381,15 +7381,15 @@\n Hypertherm\u2019s True Hole Technology also look on PlasmaSpider, user seanp has posted extensively on\n his work using simple air plasma.\n The generally accepted method to get good holes from 37mm dia. and down to material thickness with\n minimal taper using an air plasma is:\n 1. Use recommended cutting current for consumables.\n 2. Use fixed (no THC) recommended cutting height for consumables.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 87 / 1278\n \n 3. Cut from 60 % to 70 % of the recommended feed rate of consumables and materials.\n 4. Start lead in at or near center of hole.\n 5. Use perpendicular lead in.\n 6. No lead out, either a slight over burn or early torch off depending on what works best for you.\n@@ -7426,15 +7426,15 @@\n 2.7.14.1. Arc OK (input)\n Inverter closes dry contacts when a valid arc is established\n Connect Field power to one Inverter ArcOK terminal.\n Connect other Inverter Ok Terminal to input pin.\n Usually connected to one of the \u0300 \u0300motion.digital- \u0300 <\n \u0300 nn> pins for use from G-code with M66\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 88 / 1278\n \n 2.7.14.2. Torch On (output)\n Triggers a relay to close the torch on switch in the inverter.\n Connect the torch on terminals on the inverter to the relay output terminals.\n Connect one side of the coil to the output pin.\n@@ -7464,15 +7464,15 @@\n 2.7.14.5. Ohmic Sensing (input)\n Take care to follow the ohmic sensing schematic shown previously.\n An isolated power supply triggers a relay when the torch shield contacts the material.\n Connect field power to one output terminal and the other to the input.\n Take care to observe relay polarity if opto-coupled solid State relays are used.\n Usually connected to motion.probe-input and may be or\u2019d with the float switch.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 89 / 1278\n \n As can be seen, plasma tables are pin intensive and we have already consumed about 15 inputs before\n the normal estops are added. Others have other views but it is the writer\u2019s opinion that the Mesa\n 7I76E is preferred over the cheaper 7I96 to allow for MPG\u2019s, scale and axis selection switch and other\n features you may wish to add over time. If your table uses servos, there are a number of alternatives.\n@@ -7515,15 +7515,15 @@\n G42.1 D#<_hal[plasmac_run.kerf-width-f]> for right of programmed path\n G40 to turn compensation off\n \n nota\n Integrators should familiarise themselves with the LinuxCNC documentation for the various LinuxCNC\n G-code commands mentioned above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 90 / 1278\n \n 2.7.16. External Offsets and Plasma Cutting\n External Offsets were introduced to LinuxCNC with version 2.8. By external, it means that we can\n apply an offset external to the G-code that the trajectory planner knows nothing about. It easiest\n to explain with an example. Picture a lathe with an external offset being applied by a mathematical\n@@ -7574,15 +7574,15 @@\n Full scale\n 0V\n \n 928 kHz (928 kHz/32 = 29 kHz)\n \n 121.6 kHz (121.6 kHz/32 = 3.8 kHz)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 91 / 1278\n \n Because the full scale is 10 Volts, then the frequency per Volt is:\n (29000 Hz - 3800 Hz) / 10 V = 2520 Hz per Volt\n So assuming we have a 5 Volt input, the calculated frequency would be:\n (2520 Hz/V * 5 V) + 3800 Hz = 16400 Hz\n@@ -7615,15 +7615,15 @@\n as 24:1 (and 50:1 becomes 75:1). This is not a problem with more reputable brands (e.g., Thermal\n Dynamics, Hypertherm, ESAB etc). So if you are seeing lower than expected cutting voltages, it might\n be preferable to reconfigure the THCAD to read raw arc voltage.\n Remembering that plasma arc voltages are potentially lethal, here are some suggested criteria.\n Pilot Arc Start Because there is not likely to be any significant EMI, you should be able to safely\n install the THCAD in your control panel if you have followed our construction guidelines.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 92 / 1278\n \n If you do not have a voltage divider, either install scaling resistors inside the plasma cutter and\n install the THCAD in the control panel or follow the suggestions for HF start machines.\n If you have a voltage divider, install a THCAD-10 in your control panel. We\u2019ve had no problems with\n this configuration with a 120 A Thermal Dynamics plasma cutter.\n@@ -7661,15 +7661,15 @@\n be located away from the electronics and the plasma machine. This hardware also allows the use of\n 24 Volt logic systems which are much more noise tolerant. Components should be mounted in a metal\n enclosure connected to the mains earth. It is strongly recommended that an EMI filter is installed on\n the mains power connection. The simplest way is to use a EMI filtered mains power IEC connector\n commonly used on PC\u2019s and electric appliances which allows this to be achieved with no extra work.\n Plan the layout of components in the enclosure so that mains power, high voltage motor wires and\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 93 / 1278\n \n logic signals are kept as separate as possible from each other. If they do have to cross, keep them at\n 90 degrees.\n Peter Wallace from Mesa Electronics suggests: \u201dIf you have a CNC compatible plasma source with a\n voltage divider, I would mount the THCAD inside your electronics enclosure with all the other motion\n@@ -7714,15 +7714,15 @@\n is relatively straightforward if you use the axis or joint position from one of the motion pins and the\n lincurve component to map downdraft zones to the correct output pin.\n \n 2.7.22. Designing For Speed And Acceleration\n In plasma cutting, speed and acceleration are king. The higher the acceleration, the less the machine\n needs to slow down when negotiating corners. This implies that the gantry should be as light as\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 94 / 1278\n \n possible without sacrificing torsional stiffness. A 100 mm x 100 mm x 2 mm aluminium box section has\n equivalent torsional stiffness to an 80 mm x 80 mm T slot extrusion yet is 62 % lighter. So does the\n convenience of T slots outweigh the additional construction?\n \n@@ -7762,29 +7762,29 @@\n 2.7.26. Post Processors For Plasma Cutting\n CAM programs (Computer Aided Manufacture) are the bridge between CAD (Computer Aided Design)\n and the final CNC (Computer Numerical Control) operation. They often include a user configurable\n post processor to define the code that is generated for a specific machine or dialect of G-code.\n Many LinuxCNC users are perfectly happy with using Inkscape to convert SVG vector based files to\n G-code. If you are using a plasma cutter for hobby or home use, consider this option.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 95 / 1278\n \n However, if your needs are more complex, probably the best and most reasonably priced solution\n is SheetCam. SheetCam supports both Windows and Linux and post processors are available for it\n including the QtPlasmaC configuration. SheetCam allows you to nest parts over a full sheet of material\n and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors\n are text files written in the Lua programming language and are generally easy to modify to suit your\n exact requirements. For further information, consult the SheetCam web site and their support forum.\n Another popular post-processor is included with the popular Fusion360 package but the included\n post-processors will need some customisation.\n LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 96 / 1278\n \n Cap\u00edtulo 3\n \n Configuration Wizards\n 3.1. Stepper Configuration Wizard\n@@ -7795,15 +7795,15 @@\n & direction.\n StepConf is installed when you install LinuxCNC and is in the CNC menu.\n StepConf places a file in the linuxcnc/config directory to store the choices for each configuration you\n create. When you change something, you need to pick the file that matches your configuration name.\n The file extension is .stepconf.\n The StepConf Wizard works best with at least 800 x 600 screen resolution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 97 / 1278\n \n 3.1.2. Start Page\n \n Figura 3.1: StepConf Entry Page\n The three first radio buttons are self-explanatory:\n@@ -7814,15 +7814,15 @@\n StepConf Wizard. StepConf will highlight the lastconf that was built.\n Import - Import a Mach configuration file and attempt to convert it to a LinuxCNC config file. After\n the import, you will go though the pages of StepConf to confirm/modify the entries. The original\n mach XML file will not be changed.\n These next options will be recorded in a preference file for the next run of StepConf.\n Create Desktop Shortcut - This will place a link on your desktop to the files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 98 / 1278\n \n Create Desktop Launcher - This will place a launcher on your desktop to start your application.\n Create Simulated Hardware - This allows you to build a config for testing, even if you don\u2019t have\n the actual hardware.\n \n@@ -7834,15 +7834,15 @@\n Machine Name - Choose a name for your machine. Use only uppercase letters, lowercase letters,\n digits, - and _.\n Axis Configuration - Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe).\n Machine Units - Choose Inch or mm. All subsequent entries will be in the chosen units. Changing\n this also changes the default values in the Axes section. If you change this after selecting values in\n any of the axes sections, they will be over-written by the default values of the selected units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 99 / 1278\n \n Driver Type - If you have one of the stepper drivers listed in the pull down box, choose it. Otherwise,\n select Other and find the timing values in your driver\u2019s data sheet and enter them as nano seconds\n in the Driver Timing Settings. If the data sheet gives a value in microseconds, multiply by 1000. For\n example, enter 4.5 \u00b5s as 4500 ns.\n@@ -7870,15 +7870,15 @@\n worst case numbers are. Run the test at least a few minutes. The longer you run the test the better it\n will be at catching events that might occur at less frequent intervals. This is a test for your computer\n only, so no hardware needs to be connected to run the test.\n \n aviso\n Do not attempt run LinuxCNC while the latency test is running.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 100 / 1278\n \n Figura 3.3: Latency Test\n Latency is how long it takes the PC to stop what it is doing and respond to an external request. In our\n case, the request is the periodic heartbeat that serves as a timing reference for the step pulses. The\n lower the latency, the faster you can run the heartbeat, and the faster and smoother the step pulses\n@@ -7894,15 +7894,15 @@\n If your Max Jitter number is less than about 15-20 \u00b5s (15000-20000 ns), the computer should give very\n nice results with software stepping. If the max latency is more like 30-50 \u00b5s, you can still get good\n results, but your maximum step rate might be a little disappointing, especially if you use microstepping\n or have very fine pitch leadscrews. If the numbers are 100 \u00b5s or more (100,000 ns), then the PC is not\n a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is\n not a good candidate for LinuxCNC, regardless of whether you use software stepping or not.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 101 / 1278\n \n 3.1.5. Parallel Port Setup\n \n Figura 3.4: Parallel Port Setup Page\n You may specify the address as a hexadecimal (often 0x378) or as linux\u2019s default port number (probably\n@@ -7911,15 +7911,15 @@\n if the signal is inverted (0V for true/active, 5V for false/inactive).\n 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).\n Inputs and Outputs - If the input or output is not used set the option to Unused.\n External E-Stop - This can be selected from an input pin drop down box. A typical E-Stop chain uses\n all normally closed contacts.\n Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 102 / 1278\n \n Charge Pump - If your driver board requires a charge pump signal select Charge Pump from the\n drop down list for the output pin you wish to connect to your charge pump input. The charge pump\n output is connected to the base thread by StepConf. The charge pump output will be about 1/2 of\n the maximum step rate shown on the Basic Machine Configuration page.\n@@ -7931,15 +7931,15 @@\n \n Figura 3.5: Parallel Port 2 Setup Page\n The second Parallel port (if selected) can be configured and It\u2019s pins assigned on this page. No step and\n direction signals can be selected. You may select in or out to maximizes the number of input/output\n pins that are available. You may specify the address as a hexadecimal (often 0x378) or as linux\u2019s\n default port number (probably 1).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 103 / 1278\n \n 3.1.7. Axis Configuration\n \n Figura 3.6: Axis Configuration Screen\n Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many\n@@ -7950,15 +7950,15 @@\n If not, enter 1:1.\n Leadscrew Pitch - Enter the pitch of the leadscrew here. If you chose Inch units, enter the number\n of threads per inch. If you chose mm units, enter the number of millimeters per revolution (e.g.,\n enter 2 for 2mm/rev). If the machine travels in the wrong direction, enter a negative number here\n instead of a positive number, or invert the direction pin for the axis.\n Maximum Velocity - Enter the maximum velocity for the axis in units per second.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 104 / 1278\n \n Maximum Acceleration - The correct values for these items can only be determined through experimentation. See Finding Maximum Velocity to set the speed and Finding Maximum Acceleration to\n set the acceleration.\n Home Location - The position the machine moves to after completing the homing procedure for this\n axis. For machines without home switches, this is the location the operator manually moves the\n@@ -7987,15 +7987,15 @@\n Pulse rate at max speed determines the BASE_PERIOD. Values above 20000Hz may lead to slow\n response time or even lockups (the fastest usable pulse rate varies from computer to computer)\n Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps\n per user unit.\n Test this axis - This will open a window to allow testing for each axis. This can be used after filling\n out all the information for this axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 105 / 1278\n \n Figura 3.7: Axis Test\n Test this axis is a basic tester that only outputs step and direction signals to try different values for\n acceleration and velocity.\n importante\n@@ -8018,15 +8018,15 @@\n If the machine did not obviously stall, click the Run button off. The axis now returns to the position\n where it started. If the position is incorrect, then the axis stalled or lost steps during the test. Reduce\n Velocity and start the test again.\n If the machine doesn\u2019t move, stalls, or loses steps, no matter how low you turn Velocity, verify the\n following:\n Correct step waveform timings\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 106 / 1278\n \n Correct pinout, including Invert on step pins\n Correct, well-shielded cabling\n Physical problems with the motor, motor coupling, leadscrew, etc.\n Once you have found a speed at which the axis does not stall or lose steps during this testing procedure,\n@@ -8038,15 +8038,15 @@\n Velocity. Once you have found a value at which the axis does not stall or lose steps during this testing\n procedure, reduce it by 10 % and use that as the axis Maximum Acceleration.\n \n 3.1.8. Spindle Configuration\n \n Figura 3.8: Spindle Configuration Page\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 107 / 1278\n \n This page only appears when Spindle PWM is chosen in the Parallel Port Pinout page for one of the\n outputs.\n 3.1.8.1. Spindle Speed Control\n If Spindle PWM appears on the pinout, the following information should be entered:\n@@ -8090,29 +8090,29 @@\n Change the spindle speed by entering a different S-number: S800. Valid numbers (at this point) range\n from 1 to 1000.\n For two different S-numbers, measure the actual spindle speed in RPM. Record the S-numbers and\n actual spindle speeds. Run StepConf again. For Speed enter the measured speed, and for PWM enter\n the S-number divided by 1000.\n Because most spindle drivers are somewhat nonlinear in their response curves, it is best to:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 108 / 1278\n \n Make sure the two calibration speeds are not too close together in RPM.\n Make sure the two calibration speeds are in the range of speeds you will typically use while milling.\n For instance, if your spindle will go from 0 RPM to 8000 RPM, but you generally use speeds from 400\n RPM (10 %) to 4000 RPM (100 %), then find the PWM values that give 1600 RPM (40 %) and 2800\n RPM (70 %).\n \n 3.1.9. Options\n \n Figura 3.9: Advanced Options Configuration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 109 / 1278\n \n Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more\n information on.\n Include PyVCP - This option adds the PyVCP panel base file or a sample file to work on. See the\n PyVCP Chapter for more information.\n@@ -8137,15 +8137,15 @@\n Before the hard stop there is a limit switch. If the limit switch is encountered during normal operation,\n LinuxCNC shuts down the motor amplifier. The distance between the hard stop and limit switch must\n be long enough to allow an unpowered motor to coast to a stop.\n Before the limit switch there is a soft limit. This is a limit enforced in software after homing. If a MDI\n command or G-code program would pass the soft limit, it is not executed. If a jog would pass the soft\n limit, it is terminated at the soft limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 110 / 1278\n \n The home switch can be placed anywhere within the travel (between hard stops). As long as external\n hardware does not deactivate the motor amplifiers when the limit switch is reached, one of the limit\n switches can be used as a home switch.\n The zero position is the location on the axis that is 0 in the machine coordinate system. Usually the zero\n@@ -8172,15 +8172,15 @@\n LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be\n checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input\n high until the connection to ground is made and then the input goes low. Otherwise the input might\n float between on and off when the circuit is open. Typically for a parallel port you might use 47 k\u03a9;.\n \n Figura 3.11: Normally Closed Switches (N/C) wiring in series (simplified diagram)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 111 / 1278\n \n Figura 3.12: Normally Open Switches (N/O) wiring in parallel (simplified diagram)\n The following combinations of switches are permitted in StepConf:\n Combine home switches for all axes\n Combine limit switches for all axes\n@@ -8203,15 +8203,15 @@\n everything to tailor it to your needs. This would be the choice if you need extensive modifications\n beyond PnCconf\u2019s scope or just want to tinker with / learn about LinuxCNC.\n You navigate the wizard pages with the forward, back, and cancel buttons there is also a help button\n that gives some help information about the pages, diagrams and an output page.\n sugerencia\n PnCconf\u2019s help page should have the most up to date info and has additional details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 112 / 1278\n \n 3.2.1. Step by Step Instructions\n \n Figura 3.13: PnCconf Splash\n \n@@ -8223,15 +8223,15 @@\n places a note in those files. It also allows you to select desktop shortcut / launcher options. A desktop\n shortcut will place a folder icon on the desktop that points to your new configuration files. Otherwise\n you would have to look in your home folder under linuxcnc/configs.\n A Desktop launcher will add an icon to the desktop for starting your config directly. You can also\n launch it from the main menu by using the Configuration Selector LinuxCNC found in CNC menu and\n selecting your config name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 113 / 1278\n \n 3.2.3. Basic Machine Information\n \n Figura 3.14: PnCconf Basic\n \n@@ -8243,15 +8243,15 @@\n sugerencia\n Los valores predeterminados no se convierten cuando se usa sistema m\u00e9trico, as\u00ed que \u00a1aseg\u00farese\n de que sean valores correctos!\n \n Computer Response Time\n The servo period sets the heart beat of the system. Latency refers to the amount of time the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 114 / 1278\n \n computer can be longer then that period. Just like a railroad, LinuxCNC requires everything\n on a very tight and consistent time line or bad things happen. LinuxCNC requires and uses a\n real time operating system, which just means it has a low latency ( lateness ) response time\n when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be\n@@ -8298,15 +8298,15 @@\n Up to 3 parallel ports (referred to as parports) can be used as simple I/O. You must set the address\n of the parport. You can either enter the Linux parallel port numbering system (0,1,or 2) or enter\n the actual address. The address for an on board parport is often 0x0278 or 0x0378 (written in\n hexadecimal) but can be found in the BIOS page. The BIOS page is found when you first start\n your computer you must press a key to enter it (such as F2). On the BIOS page you can find\n the parallel port address and set the mode such as SPP, EPP, etc on some computers this info is\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 115 / 1278\n \n displayed for a few seconds during start up. For PCI parallel port cards the address can be found\n by pressing the parport address search button. This pops up the help output page with a list of\n all the PCI devices that can be found. In there should be a reference to a parallel port device with\n a list of addresses. One of those addresses should work. Not all PCI parallel ports work properly.\n@@ -8335,15 +8335,15 @@\n has no graphical window\n look can be changed with custom themes\n QtPlasmaC\n fully featured plasmac configuration based on the QtVCP infrastructure.\n mouse/keyboard operation or touchscreen operation\n no VCP integration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 116 / 1278\n \n 3.2.4. External Configuration\n This page allows you to select external controls such as for jogging or overrides.\n \n Figura 3.15: External Controls\n@@ -8354,15 +8354,15 @@\n switch based OEM joystick.\n Joystick jogging\n Requires a custom device rule to be installed in the system. This is a file that LinuxCNC uses to\n connect to Linux\u2019s device list. PnCconf will help to prepare this file.\n Search for device rule will search the system for rules, you can use this to find the name of\n devices you have already built with PnCconf.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 117 / 1278\n \n Add a device rule will allow you to configure a new device by following the prompts. You will\n need your device available.\n test device allows you to load a device, see its pin names and check its functions with halmeter.\n joystick jogging uses HALUI and hal_input components.\n@@ -8379,15 +8379,15 @@\n PnCconf allows overrides of feed rates and/or spindle speed using a pulse generator (MPG) or\n switches (eg. rotary).\n \n 3.2.5. GUI Configuration\n Here you can set defaults for the display screens, add virtual control panels (VCP), and set some\n LinuxCNC options..\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 118 / 1278\n \n Figura 3.16: GUI Configuration\n \n Front-end GUI Options\n The default options allows general defaults to be chosen for any display screen.\n@@ -8398,15 +8398,15 @@\n Touchy defaults are options specific to Touchy. Most of Touchy\u2019s options can be changed while Touchy\n is running using the preference page. Touchy uses GTK to draw its screen, and GTK supports themes.\n Themes controls the basic look and feel of a program. You can download themes from the net or edit\n them yourself. There are a list of the current themes on the computer that you can pick from. To help\n some of the text to stand out PnCconf allows you to override the Themes\u2019s defaults. The position and\n force max options can be used to move Touchy to a second monitor if the system is capable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 119 / 1278\n \n 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\n specific to QtPlasmaC and VCP options will not be available.\n VCP options\n Virtual Control Panels allow one to add custom controls and displays to the screen. AXIS and\n@@ -8446,15 +8446,15 @@\n You can select a GTK theme which sets the basic look and feel of the panel. You Usually want this to\n match the front-end screen. These options will be used if you press the Display sample button. With\n GladeVCP depending on the front-end screen, you can select where the panel will display.\n You can force it to be stand-alone or with AXIS it can be in the center or on the right side, with Touchy\n it can be in the center.\n Defaults and Options\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 120 / 1278\n \n Require homing before MDI / Running\n \u2022 If you want to be able to move the machine before homing uncheck this checkbox.\n Popup Tool Prompt\n \u2022 Choose between an on screen prompt for tool changes or export standard signal names for\n@@ -8470,15 +8470,15 @@\n custom HAL code to support tool changers.\n \n 3.2.6. Mesa Configuration\n The Mesa configuration pages allow one to utilize different firmwares. On the basic page you selected\n a Mesa card here you pick the available firmware and select what and how many components are\n available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 121 / 1278\n \n Figura 3.17: Mesa Board Configuration\n Parport address is used only with Mesa parport card, the 7i43. An on board parallel port usually uses\n 0x278 or 0x378 though you should be able to find the address from the BIOS page. The 7i43 requires\n the parallel port to use the EPP mode, again set in the BIOS page. If using a PCI parallel port the\n@@ -8488,15 +8488,15 @@\n \n PDM PWM and 3PWM base frequency sets the balance between ripple and linearity. If using Mesa\n daughter boards the docs for the board should give recommendations\n \n importante\n It\u2019s important to follow these to avoid damage and get the best performance.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 122 / 1278\n \n The 7i33 requires PDM and a PDM base frequency of 6 MHz\n The 7i29 requires PWM and a PWM base frequency of 20 kHz\n The 7i30 requires PWM and a PWM base frequency of 20 kHz\n The 7i40 requires PWM and a PWM base frequency of 50 kHz\n@@ -8520,49 +8520,49 @@\n the I/O setup pages. Only I/O tabs will be shown for available connectors, depending on the Mesa\n board.\n \n 3.2.7. Mesa I/O Setup\n The tabs are used to configure the input and output pins of the Mesa boards. PnCconf allows one to\n create custom signal names for use in custom HAL files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 123 / 1278\n \n Figura 3.18: Mesa I/O C2 Setup\n On this tab with this firmware the components are setup for a 7i33 daughter board, usually used with\n closed loop servos. Note the component numbers of the encoder counters and PWM drivers are not\n in numerical order. This follows the daughter board requirements.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 124 / 1278\n \n Figura 3.19: Mesa I/O C3 Setup\n On this tab all the pins are GPIO. Note the 3 digit numbers - they will match the HAL pin number.\n GPIO pins can be selected as input or output and can be inverted.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 125 / 1278\n \n Figura 3.20: Mesa I/O C4 Setup\n On this tab there are a mix of step generators and GPIO. Step generators output and direction pins\n can be inverted. Note that inverting a Step Gen-A pin (the step output pin) changes the step timing.\n It should match what your controller expects.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3.2.8. Parallel port configuration\n \n The parallel port can be used for simple I/O similar to Mesa\u2019s GPIO pins.\n \n 126 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 127 / 1278\n \n 3.2.9. Axis Configuration\n \n Figura 3.21: Axis Drive Configuration\n This page allows configuring and testing of the motor and/or encoder combination. If using a servo\n@@ -8574,15 +8574,15 @@\n Handbook 1 standards or AXIS graphical display will not make much sense. Hopefully the help\n 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\n lower DAC numbers. By moving the axis a known distance one can confirm the encoder scaling.\n The encoder should count even without the amp enabled depending on how power is supplied to\n the encoder.\n 1 \u201daxis nomenclature\u201d in the chapter \u201dNumerical Control\u201d in the \u201dMachinery\u2019s Handbook\u201d published by Industrial Press.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 128 / 1278\n \n aviso\n If the motor and encoder do not agree on counting direction then the servo will run away when\n using PID control.\n \n@@ -8628,15 +8628,15 @@\n Note that we want raw output such that our measured result is identical to the commanded output.\n This means\n \u2022 cmd=a*raw+b\n \u2022 raw=(cmd-b)/a\n As a result, the a and b coefficients from the linear fit can be used as the scale and offset for the\n controller directly.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 129 / 1278\n \n MAX OUTPUT\n 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\n scaling to raw output units. The value is applied symmetrically to both the plus and the minus\n side.\n@@ -8653,25 +8653,25 @@\n speed.\n Brushless Motor Control\n These options are used to allow low level control of brushless motors using special firmware and\n daughter boards. It also allows conversion of HALL sensors from one manufacturer to another.\n It is only partially supported and will require one to finish the HAL connections. Contact the\n mail-list or forum for more help.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 130 / 1278\n \n Figura 3.22: Axis Scale Calculation\n The scale settings can be directly entered or one can use the calculate scale button to assist. Use the\n check boxes to select appropriate calculations. Note that pulley teeth requires the number of teeth\n not the gear ratio. Worm turn ratio is just the opposite it requires the gear ratio. If your happy with\n the scale press apply otherwise push cancel and enter the scale directly.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 131 / 1278\n \n Figura 3.23: Axis Configuration\n Also refer to the diagram tab for two examples of home and limit switches. These are two examples\n of many different ways to set homing and limits.\n \n@@ -8682,15 +8682,15 @@\n Remember positive and negative directions refer to the TOOL not the table as per the Machinists\n handbook.\n On a typical knee or bed mill\n when the TABLE moves out that is the positive Y direction\n when the TABLE moves left that is the positive X direction\n when the TABLE moves down that is the positive Z direction\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 132 / 1278\n \n when the HEAD moves up that is the positive Z direction\n On a typical lathe\n when the TOOL moves right, away from the chuck\n that is the positive Z direction\n@@ -8734,15 +8734,15 @@\n will be zero.\n (machine) ORIGIN\n The Origin is the MACHINE zero point. (not the zero point you set your cutter / material at).\n LinuxCNC uses this point to reference everything else from. It should be inside the software\n limits. LinuxCNC uses the home switch location to calculate the origin position (when using\n home switches or must be manually set if not using home switches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 133 / 1278\n \n Travel distance\n This is the maximum distance the axis can travel in each direction. This may or may not be able\n to be measured directly from origin to limit switch. The positive and negative travel distances\n should add up to the total travel distance.\n@@ -8781,30 +8781,30 @@\n LinuxCNC will search for an encoder index pulse while in the latch stage of homing.\n Use Compensation File\n Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS Section of the INI chapter.\n Use Backlash Compensation\n Allows setting of simple backlash compensation. Can not be used with Compensation File. See\n AXIS Section of the INI chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 134 / 1278\n \n Figura 3.24: AXIS Help Diagram\n The diagram should help to demonstrate an example of limit switches and standard axis movement\n directions. In this example the Z axis was two limit switches, the positive switch is shared as a home\n switch. The MACHINE ORIGIN (zero point) is located at the negative limit. The left edge of the carriage\n is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION to be\n 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive limit\n we would measure 10 inches between the negative limit and the negative trip pin.\n \n 3.2.10. Spindle Configuration\n If you select spindle signals then this page is available to configure spindle control.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 135 / 1278\n \n sugerencia\n Many of the option on this page will not show unless the proper option was selected on previous\n pages!\n \n@@ -8816,15 +8816,15 @@\n If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be\n shown.\n Spindle-at-speed allows LinuxCNC to wait till the spindle is at the requested speed before moving\n the axis. This is particularly handy on lathes with constant surface feed and large speed diameter\n changes. It requires either encoder feedback or a digital spindle-at-speed signal typically connected\n to a VFD drive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 136 / 1278\n \n If using encoder feedback, you may select a spindle-at-speed scale setting that specifies how close\n the actual speed must be to the requested speed to be considered at-speed.\n If using encoder feedback, the VCP speed display can be erratic - the filter setting can be used to\n smooth out the display. The encoder scale must be set for the encoder count / gearing used.\n@@ -8839,25 +8839,25 @@\n HALUI Chapter for more info on using custom halcmds. There are several ladder program options.\n The Estop program allows an external ESTOP switch or the GUI frontend to throw an Estop. It also\n has a timed lube pump signal. The Z auto touch-off is with a touch-off plate, the GladeVCP touch-off\n button and special HALUI commands to set the current user origin to zero and rapid clear. The serial\n modbus program is basically a blank template program that sets up ClassicLadder for serial modbus.\n See the ClassicLadder Chapter in the manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 137 / 1278\n \n Figura 3.26: PnCconf, advanced options\n \n 3.2.12. HAL Components\n On this page you can add additional HAL components you might need for custom HAL files. In this\n way one should not have to hand edit the main HAL file, while still allowing user needed components.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 138 / 1278\n \n Figura 3.27: HAL Components\n The first selection is components that pncconf uses internally. You may configure pncconf to load extra\n instances of the components for your custom HAL file.\n Select the number of instances your custom file will need, PnCconf will add what it needs after them.\n@@ -8868,15 +8868,15 @@\n heading Thread command. The components will be added to the thread between reading of inputs\n and writing of outputs, in the order you write them in the thread command.\n \n 3.2.13. Advanced Usage Of PnCconf\n PnCconf does its best to allow flexible customization by the user. PnCconf has support for custom\n signal names, custom loading of components, custom HAL files and custom firmware.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 139 / 1278\n \n There are also signal names that PnCconf always provides regardless of options selected, for user\u2019s\n custom HAL files With some thought most customizations should work regardless if you later select\n different options in PnCconf.\n Eventually if the customizations are beyond the scope of PnCconf\u2019s frame work you can use PnCconf\n@@ -8908,15 +8908,15 @@\n Loading Custom Firmware\n PnCconf searches for firmware on the system and then looks for the XML file that it can convert\n to what it understands. These XML files are only supplied for officially released firmware from\n the LinuxCNC team. To utilize custom firmware one must convert it to an array that PnCconf\n understands and add its file path to PnCconf\u2019s preference file. By default this path searches the\n desktop for a folder named custom_firmware and a file named firmware.py.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 140 / 1278\n \n The hidden preference file is in the user\u2019s home file, is named .pncconf-preferences and require one\n to select show hidden files in your file manager to see and edit it or on the command line you use ls\n with the -a option. The contents of this file can be seen when you first load PnCconf - press the help\n button and look at the output page.\n@@ -8927,15 +8927,15 @@\n custom.hal is for HAL commands that don\u2019t have to be run after the GUI frontend loads. It is\n run after the configuration-named HAL file.\n custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP\n display loads.\n custom_gvcp.hal is for commands that must be run after GladeVCP is loaded.\n shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 141 / 1278\n \n Cap\u00edtulo 4\n \n Configuration\n 4.1. Integrator Concepts\n@@ -8955,15 +8955,15 @@\n /home/fred/linuxcnc/nc_files\n /home/fred/linuxcnc/configs/mill\n \u2022 /home/fred/linuxcnc/configs/mill/mill.ini\n \u2022 /home/fred/linuxcnc/configs/mill/mill.hal\n \u2022 /home/fred/linuxcnc/configs/mill/mill.var\n \u2022 /home/fred/linuxcnc/configs/mill/tool.tbl\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 142 / 1278\n \n 4.1.1.2. Command Line\n If you run LinuxCNC from the command line and specify the name and location of the INI file the file\n locations can be in a different place. To view the options for running LinuxCNC from the command\n line run linuxcnc -h.\n@@ -8997,15 +8997,15 @@\n requirements affect the shortest period you can use.\n Worst case latencies might only happen a few times a minute, and the odds of bad latency happening\n just as the motor is changing direction are low. So you can get very rare errors that ruin a part every\n once in a while and are impossible to troubleshoot.\n 1 This section refers to using stepgen, LinuxCNC\u2019s built-in step generator. Some hardware devices have their own step\n generator and do not use LinuxCNC\u2019s built-in one. In that case, refer to your hardware manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 143 / 1278\n \n The simplest way to avoid this problem is to choose a BASE_PERIOD that is the sum of the longest\n timing requirement of your drive, and the worst case latency of your computer. This is not always the\n best choice. For example, if you are running a drive with a 20 \u00b5s direction signal hold time requirement,\n and your latency test said you have a maximum latency of 11 \u00b5s , then if you set the BASE_PERIOD\n@@ -9037,15 +9037,15 @@\n system might. These differences exist because servos are a closed loop system, unlike stepper motors\n which are generally run open loop. What does closed loop mean? Let\u2019s look at a simplified diagram of\n how a servomotor system is connected.\n 2 steplen refers to a parameter that adjusts the performance of LinuxCNC\u2019s built-in step generator, stepgen, which is a HAL\n component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually.\n 3 dirhold refers to a parameter that adjusts the length of the direction hold time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 144 / 1278\n \n Figura 4.1: Servo Loop\n This diagram shows that the input signal (and the feedback signal) drive the summing amplifier, the\n summing amplifier drives the power amplifier, the power amplifier drives the motor, the motor drives\n the load (and the feedback device), and the feedback device (and the input signal) drive the motor.\n@@ -9063,15 +9063,15 @@\n They are three common mathematical techniques that are applied to the task of getting a working\n process to follow a set point. In the case of LinuxCNC the process we want to control is actual axis\n position and the set point is the commanded axis position.\n 4 If it helps, the closest equivalent to this in the digital world are state machines, sequential machines and so forth, where\n what the outputs are doing now depends on what the inputs (and the outputs) were doing before. If it doesn\u2019t help, then\n nevermind.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 145 / 1278\n \n Figura 4.2: PID Loop\n By tuning the three constants in the PID controller algorithm, the controller can provide control action\n designed for specific process requirements. The response of the controller can be described in terms\n of the responsiveness of the controller to an error, the degree to which the controller overshoots the\n@@ -9099,15 +9099,15 @@\n 4.1.4.4. Derivative term\n The rate of change of the process error is calculated by determining the slope of the error over time\n (i.e., its first derivative with respect to time) and multiplying this rate of change by the derivative gain.\n The derivative term slows the rate of change of the controller output and this effect is most noticeable\n close to the controller set point. Hence, derivative control is used to reduce the magnitude of the\n overshoot produced by the integral component and improve the combined controller-process stability.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 146 / 1278\n \n 4.1.4.5. Loop tuning\n If the PID controller parameters (the gains of the proportional, integral and derivative terms) are\n chosen incorrectly, the controlled process input can be unstable, i.e., its output diverges, with or\n without oscillation, and is limited only by saturation or mechanical breakage. Tuning a control loop\n@@ -9144,15 +9144,15 @@\n stepping).\n Latency is far more important than CPU speed. A lowly Pentium II that responds to interrupts within\n 10 microseconds each and every time can give better results than the latest and fastest P4 Hyperthreading beast.\n The CPU isn\u2019t the only factor in determining latency. Motherboards, video cards, USB ports, and a\n number of other things can hurt the latency. The best way to find out what you are dealing with is to\n run the latency test.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 147 / 1278\n \n Generating step pulses in software has one very big advantage - it\u2019s free. Just about every PC has a\n parallel port that is capable of outputting step pulses that are generated by the software. However,\n software step pulses also have some disadvantages:\n limited maximum step rate\n@@ -9176,15 +9176,15 @@\n \n This will start the latency test with a base-thread period of 50uS and a servo-thread period of 1mS.\n For available options, on the command line enter:\n latency-test -h\n \n After starting a latency test you should see something like this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 148 / 1278\n \n Figura 4.3: HAL Latency Test\n While the test is running, you should abuse the computer. Move windows around on the screen. Surf\n the web. Copy some large files around on the disk. Play some music. Run an OpenGL program such\n as glxgears. The idea is to put the PC through its paces while the latency test checks to see what the\n@@ -9206,15 +9206,15 @@\n (several milliseconds) when using the onboard video. But a $5 used video card solved the problem.\n LinuxCNC does not require bleeding edge hardware.\n \n For more information on stepper tuning see the Stepper Tuning Chapter.\n Additional command line tools are available for examining latency when LinuxCNC is not\n running.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 149 / 1278\n \n 4.2.2.2. Latency Plot\n latency-plot makes a strip chart recording for a base and a servo thread. It may be useful to see spikes\n in latency when other applications are started or used. Usage:\n latency-plot --help\n@@ -9256,15 +9256,15 @@\n 25000, min: 5000)\n (servo thread interval, default: 1000000, min: 25000)\n (base bin size, default: 100\n (servo bin size, default: 100\n (base bins, default: 200\n (servo bins, default: 200\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n --logscale\n --text\n --show\n --nobase\n --verbose\n --nox\n@@ -9294,15 +9294,15 @@\n A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive\n use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not\n interfere with LinuxCNC\u2019s access to those CPUs.\n When specific tuning options are believed to be universally helpful LinuxCNC does this tuning automatically at startup, but many tuning options are machine-specific and cannot be done automatically.\n The person installing LinuxCNC will need to experimentally determine the optimal tuning for their\n system.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 151 / 1278\n \n 4.2.3.1. Tuning the BIOS for latency\n PC BIOSes vary wildly in their latency behavior.\n Tuning the BIOS is tedious because you have to reboot the computer, make one small tweak in the\n BIOS, boot Linux, and run the latency test (potentially for a long time) to see what effects your BIOS\n@@ -9338,15 +9338,15 @@\n parallel port that is capable of outputting step pulses that are generated by the software. However,\n software step pulses also have some disadvantages:\n limited maximum step rate\n jitter in the generated pulses\n loads the CPU\n This chapter has some steps that can help you get the best results from software generated steps.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 152 / 1278\n \n 4.3.1.1. Run a Latency Test\n The CPU is not the only factor determining latency. Motherboards, graphics cards, USB ports and\n many other things can degrade it. The best way to know what to expect from a PC is to run the RT\n latency tests.\n@@ -9385,15 +9385,15 @@\n Step Pulse \u201d0\u201d Time: 2.0 \u00b5s min (Step on rising edge)\n Step Pulse \u201d1\u201d Time: 1.0 \u00b5s min\n Direction Setup:\n 200 ns (0.2 \u00b5s) before step pulse rising edge\n 200 ns (0.2 \u00b5s) hold after step pulse rising edge\n From the Xylotex datasheet:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 153 / 1278\n \n Minimum DIR setup time before rising edge of STEP Pulse 200 ns Minimum\n DIR hold time after rising edge of STEP pulse 200 ns\n Minimum STEP pulse high time 2.0 \u00b5s\n Minimum STEP pulse low time 1.0 \u00b5s\n@@ -9439,15 +9439,15 @@\n will lock up. If you are aiming for periods of less than 25 \u00b5s, you should start at 25 \u00b5s or more, run\n LinuxCNC, and see how things respond. If all is well, you can gradually decrease the period. If the\n mouse pointer starts getting sluggish, and everything else on the PC slows down, your period is a\n little too short. Go back to the previous value that let the computer run smoothly.\n In this case, suppose you started at 25 \u00b5s, trying to get to 13 \u00b5s, but you find that around 16 \u00b5s is the\n limit - any less and the computer doesn\u2019t respond very well. So you use 16 \u00b5s. With a 16 \u00b5s period and\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 154 / 1278\n \n 11 \u00b5s latency, the shortest output time will be 16-11 = 5 \u00b5s. The drive only needs 2 \u00b5s, so you have\n some margin. Margin is good - you don\u2019t want to lose steps because you cut the timing too close.\n What is the maximum step rate? Remember, two periods to make a step. You settled on 16 \u00b5s for the\n period, so a step takes 32 \u00b5s. That works out to a not bad 31,250 steps per second.\n@@ -9489,15 +9489,15 @@\n step rate that you will be able to generate.\n I\u2019ve added a few things to the spreadsheet to calculate max speed and stepper electrical calculations.\n \n 4.4. INI Configuration\n 4.4.1. The INI File Components\n A typical INI file follows a rather simple layout that includes;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 155 / 1278\n \n comments\n sections\n variables\n Each of these elements is separated on single lines. Each end of line or newline character creates a\n@@ -9536,15 +9536,15 @@\n [RS274NGC] settings used by the G-code interpreter\n [EMCMOT] settings used by the real time motion controller\n [TASK] settings used by the task controller\n [HAL] specifies .hal files\n [HALUI] MDI commands used by HALUI\n [APPLICATIONS] Other applications to be started by LinuxCNC\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 156 / 1278\n \n [TRAJ] additional settings used by the real time motion controller\n [JOINT_n] individual joint variables\n [AXIS_l] individual axis variables\n [KINS] kinematics variables\n@@ -9582,15 +9582,15 @@\n TYPE = LINEAR\n ...\n SCALE = 16000\n \n To introduce a custom section with its own variables, add the section and variables to the INI file.\n Custom Section Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 157 / 1278\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -9630,15 +9630,15 @@\n #INCLUDE /home/myusername/myincludes/display.inc\n #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc\n \n The #INCLUDE directives are supported for one level of expansion only \u2014 an included file may not\n include additional files. The recommended file extension is .inc. Do not use a file extension of .ini for\n included files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 158 / 1278\n \n 4.4.2. INI File Sections\n 4.4.2.1. [EMC] Section\n VERSION = 1.1 - The version number for the configuration. Any value other than 1.1 will cause the\n configuration checker to run and try to update the configuration to the new style joint axes type of\n@@ -9674,15 +9674,15 @@\n value.\n CONE_BASESIZE = .25 - Override the default cone/tool base size of .5 in the graphics display\n MAX_FEED_OVERRIDE = 1.2 - The maximum feed override the user may select. 1.2 means 120 %\n of the programmed feed rate.\n MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means\n 50 % of the programmed spindle speed. (This is used to set the minimum spindle speed).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 159 / 1278\n \n MIN_SPINDLE_0_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means\n 50 % of the programmed spindle speed. (This is used to set the minimum spindle speed). On multi\n spindle machine there will be entries for each spindle number. Only used by the QtVCP based user\n interfaces.\n@@ -9720,15 +9720,15 @@\n An under powered CPU may see improvement with a longer setting. Usually the default is fine.\n PREVIEW_TIMEOUT = 5 - Timeout (in seconds) for loading graphical preview of G-code. Currently\n AXIS only.\n nota\n The following [DISPLAY] items are used by GladeVCP and PyVCP, see the embedding a tab section of\n the GladeVCP Chapter or the PyVCP Chapter for more information.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 160 / 1278\n \n EMBED_TAB_NAME = GladeVCP demo\n EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui\n nota\n Different user interface programs use different options, and not every option is supported by every\n@@ -9764,15 +9764,15 @@\n variable is omitted the panel will default to the right side. The only valid alternative is BOTTOM.\n See the PyVCP Chapter for more information.\n LATHE = 1 - Any non-empty value (including \u201d0\u201d) causes axis to use \u201dlathe mode\u201d with a top view\n and with Radius and Diameter on the DRO.\n BACK_TOOL_LATHE = 1 - Any non-empty value (including \u201d0\u201d) causes axis to use \u201dback tool lathe\n mode\u201d with inverted X axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 161 / 1278\n \n FOAM = 1 - Any non-empty value (including \u201d0\u201d) causes axis to change the display for foam-cutter\n mode.\n GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of\n a sequence of axis letters and control characters, optionally preceded with a \u201d-\u201d sign:\n@@ -9814,15 +9814,15 @@\n JOG_AXES = - The order in which jog keys are assigned to axis letters. The left and right arrows are\n assigned to the first axis letter, up and down to the second, page up/page down to the third, and left\n and right bracket to the fourth. If unspecified, the default is determined from the [TRAJ]COORDINATES,\n [DISPLAY]LATHE and [DISPLAY]FOAM values.\n JOG_INVERT = - For each axis letter, the jog direction is inverted. The default is \u201dX\u201d for lathes and\n blank otherwise.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 162 / 1278\n \n nota\n The settings for JOG_AXES and JOG_INVERT apply to world mode jogging by axis coordinate letter\n and are in effect while in world mode after successful homing. When operating in joint mode prior\n to homing, keyboard jog keys are assigned in a fixed sequence: left/right: joint0, up/down: joint1,\n@@ -9861,15 +9861,15 @@\n The program file associated with an extension must have either the full path to the program or be\n located in a directory that is on the system path.\n \n It is also possible to specify an interpreter:\n PROGRAM_EXTENSION = .py Python Script\n py = python\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 163 / 1278\n \n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle. Many more G-code generators are on the LinuxCNC Wiki site\n https://wiki.linuxcnc.org/.\n@@ -9912,15 +9912,15 @@\n the parameters used by the interpreter (saved between runs).\n ORIENT_OFFSET = 0 - A float value added to the R word parameter of an M19 Orient Spindle\n operation. Used to define an arbitrary zero position regardless of encoder mount orientation.\n RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92 G94 G97 G98 - A string\n of NC codes that the interpreter is initialized with. This is not a substitute for specifying modal Gcodes at the top of each ngc file, because the modal codes of machines differ, and may be changed\n by G-code interpreted earlier in the session.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 164 / 1278\n \n SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:) separated list of up to 10 directories to be searched when single-file subroutines are specified in G-code.\n These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified) and\n before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order that\n 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\n@@ -9957,15 +9957,15 @@\n OWORD_WARNONLY = 0 Default 0\n Warn rather than error in case of errors in O-word subroutines.\n DISABLE_G92_PERSISTENCE = 0 Default 0 Allow to clear the G92 offset automatically when config\n start-up.\n DISABLE_FANUC_STYLE_SUB = 0 Default 0 If there is reason to disable Fanuc subroutines set it\n to 1.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 165 / 1278\n \n nota\n The above six options were controlled by the FEATURES bitmask in versions of LinuxCNC prior to 2.8.\n This INI tag will no longer work.\n For reference:\n@@ -10001,15 +10001,15 @@\n such as communicate with the UIs over NML, communicate with the realtime motion planner over\n non-HAL shared memory, and interpret G-code. Currently there is only one task executable that\n makes sense for 99.9 % of users, milltask.\n CYCLE_TIME = 0.010 - The period, in seconds, at which TASK will run. This parameter affects the\n polling interval when waiting for motion to complete, when executing a pause instruction, and when\n accepting a command from a user interface. There is usually no need to change this number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 166 / 1278\n \n 4.4.2.7. [HAL] section\n HALFILE = example.hal - Execute the file example.hal at start up.\n If HALFILE is specified multiple times, the files are executed in the order they appear in the INI file.\n Almost all configurations will have at least one HALFILE, and stepper systems typically have two\n@@ -10050,15 +10050,15 @@\n the second pass (pass1), the HALFILES are reread and all commands except the previously executed\n load commands are executed.\n TWOPASS = nodelete verbose - The TWOPASS feature can be activated with any non-null string\n including the keywords verbose and nodelete. The verbose keyword causes printing of details to\n stdout. The nodelete keyword preserves temporary files in /tmp.\n For more information see the HAL TWOPASS chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 167 / 1278\n \n 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\n executed after all HALFILE lines.\n SHUTDOWN = shutdown.hal - Execute the file shutdown.hal when LinuxCNC is exiting. Depending\n on the hardware drivers used, this may make it possible to set outputs to defined values when\n@@ -10095,15 +10095,15 @@\n \n \u2022 Alternatively, a watchlist file identified with a full pathname could be specified:\n APP = halshow ~/saved_shows/spindle.halshow\n \n \u2022 Open halscope using a previously saved configuration:\n APP = halscope -i my.halscope\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 168 / 1278\n \n 4.4.2.10. [TRAJ] Section\n aviso\n The new Trajectory Planner (TP) is on by default. If you have no TP settings in your [TRAJ]\n section - LinuxCNC defaults to:\n@@ -10148,15 +10148,15 @@\n play with it a bit to find a good value. I\u2019d start at 1/2 of the min_length, then work up as needed.\n * ARC_BLEND_GAP_CYCLES = 4 How short the previous segment must be before the trajectory\n planner consumes it.\n Often, a circular arc blend will leave short line segments in between the blends. Since the geometry\n has to be circular, we can\u2019t blend over all of a line if the next one is a little shorter. Since the\n trajectory planner has to touch each segment at least once, it means that very tiny segments will\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 169 / 1278\n \n slow things down significantly. My fix to this way to \u201dconsume\u201d the short segment by making it a\n part of the blend arc. Since the line+blend is one segment, we don\u2019t have to slow down to hit the\n very short segment. Likely, you won\u2019t need to touch this setting. * ARC_BLEND_RAMP_FREQ = 20\n - This is a cutoff frequency for using ramped velocity.\n@@ -10202,15 +10202,15 @@\n deg, degree (360 per circle), rad, radian (2*\u03c0 per circle), grad, or gon (400 per circle). This does\n not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in\n degrees.\n DEFAULT_LINEAR_VELOCITY = 0.0167 - The initial rate for jogs of linear axes, in machine units\n per second. The value shown in Axis equals machine units per minute.\n DEFAULT_LINEAR_ACCELERATION = 2.0 - In machines with nontrivial kinematics, the acceleration used for \u201dteleop\u201d (Cartesian space) jogs, in machine units per second per second.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 170 / 1278\n \n MAX_LINEAR_VELOCITY = 5.0 - The maximum velocity for any axis or coordinated move, in machine units per second. The value shown equals 300 units per minute.\n MAX_LINEAR_ACCELERATION = 20.0 - The maximum acceleration for any axis or coordinated axis\n move, in machine units per second per second.\n POSITION_FILE = position.txt - If set to a non-empty value, the joint positions are stored between\n@@ -10248,15 +10248,15 @@\n by a GUI to set the number of joints (num_joints) specified to the motion module (motmod)).\n KINEMATICS = trivkins - Specify a kinematics module for the motion module. Guis may use this\n variable to specify the loadrt line in HAL files for the motmod module. For more information on\n kinematics modules see the manpage: $ man kins\n 4.4.2.12. [AXIS_] Section\n The specifies one of: X Y Z A B C U V W\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 171 / 1278\n \n MAX_VELOCITY = 1.2 - Maximum velocity for this axis in machine units per second.\n MAX_ACCELERATION = 20.0 - Maximum acceleration for this axis in machine units per second\n squared.\n MIN_LIMIT = -1000 - The minimum limit (soft limit) for axis motion, in machine units. When this\n@@ -10296,15 +10296,15 @@\n Typically (for systems using trivkins kinematics, there is a 1:1 correspondence between a joint and an\n axis coordinate letter):\n JOINT_0 = X\n JOINT_1 = Y\n JOINT_2 = Z\n JOINT_3 = A\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 172 / 1278\n \n JOINT_4 = B\n JOINT_5 = C\n JOINT_6 = U\n JOINT_7 = V\n@@ -10345,15 +10345,15 @@\n 1.000 1.003 0.998\n \n \u2022 Type 1: The second value specifies positive offset from nominal while traveling in the positive\n direction. The third value specifies the negative offset from nominal while traveling in a negative\n direction.\n Type 1 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 173 / 1278\n \n -1.000 0.005 -0.005\n 0.000 0.002 -0.003\n 1.000 0.003 -0.004\n \n@@ -10388,15 +10388,15 @@\n HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence.\n HOME_OFFSET = 0.0 - The joint position of the home switch or index pulse, in machine units. When\n the home point is found during the homing process, this is the position that is assigned to that point.\n When sharing home and limit switches and using a home sequence that will leave the home/limit\n switch in the toggled state the home offset can be used define the home switch position to be other\n than 0 if your HOME position is desired to be 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 174 / 1278\n \n HOME_SEARCH_VEL = 0.0 - Initial homing velocity in machine units per second. Sign denotes\n direction of travel. A value of zero means assume that the current location is the home position for\n the machine. If your machine has no home switches you will want to leave this value at zero.\n HOME_LATCH_VEL = 0.0 - Homing velocity in machine units per second to the home switch latch\n@@ -10437,15 +10437,15 @@\n settings in one place. For more information on custom INI file entries see the Custom Sections\n and Variables subsection.\n \n The following items might be used by a PID component and the assumption is that the output is volts.\n DEADBAND = 0.000015 - How close is close enough to consider the motor in position, in machine\n units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 175 / 1278\n \n This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict\n rules. Looser (larger) settings allow less servo hunting at the expense of lower accuracy. Tighter\n (smaller) settings attempt higher accuracy at the expense of more servo hunting. Is it really more\n accurate if it\u2019s also more uncertain? As a general rule, it\u2019s good to avoid, or at least limit, servo\n@@ -10476,15 +10476,15 @@\n 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\n motor amplifier. The units on the FF2 gain are volts per machine unit per second per second, e.g.,\n \n OUTPUT_SCALE = 1.000\n OUTPUT_OFFSET = 0.000\n These two values are the scale and offset factors for the joint output to the motor amplifiers.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 176 / 1278\n \n The second value (offset) is subtracted from the computed output (in volts), and divided by the first\n value (scale factor), before being written to the D/A converters. The units on the scale value are\n in true volts per DAC output volts. The units on the offset value are in volts. These can be used to\n linearize a DAC. Specifically, when writing outputs, the LinuxCNC first converts the desired output\n@@ -10530,15 +10530,15 @@\n MAX_OUTPUT = 10 - The maximum value for the output of the PID compensation that is written\n to the motor amplifier, in volts. The computed output value is clamped to this limit. The limit is\n applied before scaling to raw output units. The value is applied symmetrically to both the plus and\n the minus side.\n INPUT_SCALE = 20000 - in Sample configs\n ENCODER_SCALE = 20000 - in PnCconf built configs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 177 / 1278\n \n Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ]\n section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an\n angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is\n ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units\n@@ -10575,15 +10575,15 @@\n loop\u201d. If you have added backlash compensation to an joint then this should be 1.5 to 2 times greater\n than MAX_ACCELERATION.\n STEPGEN_MAXVEL = 1.4 - Older configuration files have a velocity limit for the step generator as\n well. If specified, it should also be 1 % to 10 % larger than the joint MAX_VELOCITY. Subsequent\n testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of StepGen\u2019s position\n loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 178 / 1278\n \n 4.4.2.14. [SPINDLE_] Section(s)\n The specifies the spindle number 0 \u2026 (num_spindles-1) The value of num_spindles is set by\n [TRAJ]SPINDLES=\n MAX_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle. Optional.\n@@ -10622,15 +10622,15 @@\n when the value is 1. This is the same as issuing a G0 G53 Z0.\n TOOL_CHANGE_AT_G30 = 1 - The machine is moved to reference point defined by parameters\n 5181-5186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30G30.1.\n RANDOM_TOOLCHANGER = 1 - This is for machines that cannot place the tool back into the pocket\n it came from. For example, machines that exchange the tool in the active pocket with the tool in the\n spindle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 179 / 1278\n \n 4.5. Homing Configuration\n 4.5.1. Overview\n Homing sets the zero origin of the G53 machine coordinates. Soft limits are defined relative to the\n machine origin. The soft limits automatically decelerate and stop the axes before they hit the limits\n@@ -10668,15 +10668,15 @@\n the dog relative to the switch (ie before or after the switch), and must stay that way even if the dog\n coasts past the switch in the same direction.\n nota\n While it is possible to use LinuxCNC with the G53 machine origin outside the soft machine limits, if\n you use G28 or G30 without setting the parameters it goes to the origin by default. This would trip\n the limit switches before getting to position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 180 / 1278\n \n 4.5.3. Separate Home Switch Example Layout\n This example shows minimum and maximum limit switches with a separate home switch.\n \n Figura 4.6: Demonstrative Separate Switch Layout\n@@ -10695,15 +10695,15 @@\n Note that there is distance between the limit switches and actual physical hard contact for coasting\n after the amplifier is disabled.\n nota\n Homing sets the G53 coordinate system, while the machine origin (zero point) can be anywhere,\n setting the zero point at the negative soft limit makes all G53 coordinates positive, which is probably\n easiest to remember. Do this by setting MIN_LIMIT = 0 and make sure MAX_LIMIT is positive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 181 / 1278\n \n 4.5.4. Shared Limit/Home Switch Example Layout\n This example shows a maximum limit switch and a combined minimum limit/home switch.\n \n Figura 4.7: Demonstrative Shared Switch Layout\n@@ -10724,21 +10724,21 @@\n \n 4.5.5. Homing Sequence\n 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.\n Two basic conditions exist, HOME_SEARCH_VEL and HOME_LATCH_VEL are the same sign or they\n are opposite signs. For a more detailed description of what each configuration parameter does, see\n the following section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 4.8: Homing Sequences\n \n 182 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 183 / 1278\n \n 4.5.6. Configuration\n The following determines exactly how the home sequence behaves. They are defined in an [JOINT_n]\n section of the INI file.\n Homing Type\n@@ -10792,15 +10792,15 @@\n value is zero.\n 4.5.6.3. HOME_FINAL_VEL\n This variable has units of machine-units per second.\n It specifies the speed that LinuxCNC uses when it makes its move from HOME_OFFSET to the HOME\n position. If the HOME_FINAL_VEL is missing from the INI file, then the maximum joint speed is used\n to make this move. The value must be a positive number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 184 / 1278\n \n 4.5.6.4. HOME_IGNORE_LIMITS\n Can hold the values YES / NO. The default value for this parameter is NO. This flag determines whether\n LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore\n limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the\n@@ -10832,15 +10832,15 @@\n switch or home switch then index pulse (depending on configuration), and setting the coordinate of\n that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing\n process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET,\n the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small\n move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped).\n This final move will be made at the joint\u2019s maximum velocity unless HOME_FINAL_VEL has been set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 185 / 1278\n \n nota\n The distinction between HOME_OFFSET and HOME is that HOME_OFFSET first establishes the origin\n location and scale on the machine by applying the HOME_OFFSET value to the location where home\n was found, and then HOME says where the joint should move to on that scale.\n@@ -10876,15 +10876,15 @@\n The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers\n must increment by one \u2014 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.\n Negative HOME_SEQUENCE values indicate that joints in the sequence should synchronize the\n final move to [JOINT_n]HOME by waiting until all joints in the sequence are ready. If any joint has a\n negative HOME_SEQUENCE value, then all joints with the same absolute value (positive or negative)\n of the HOME_SEQUENCE item value will synchronize the final move.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 186 / 1278\n \n A negative HOME_SEQUENCE also applies to commands to home a single joint. If the HOME_SEQUENCE\n 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,\n a command to home the joint will home only the specified joint.\n Joint mode jogging of joints having a negative HOME_SEQUENCE is disallowed. In common gantry\n@@ -10927,15 +10927,15 @@\n 4.5.6.13. LOCKING_INDEXER\n If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward.\n 4.5.6.14. Immediate Homing\n If a joint does not have home switches or does not have a logical home position like a rotary joint and\n you want that joint to home at the current position when the \u201dHome All\u201d button is pressed in the Axis\n gui, then the following INI entries for that joint are needed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 187 / 1278\n \n HOME_SEARCH_VEL = 0\n HOME_LATCH_VEL = 0\n HOME_USE_INDEX = NO\n HOME_OFFSET = 0 (Or the home position offset (HOME))\n@@ -10981,15 +10981,15 @@\n net hsequence_select => motion.homing-inhibit\n \n nota\n INI HAL pins (like ini.N.home_sequence) are not available until milltask starts so execution of the\n above HAL commands should be deferred using a postgui HAL file or a delayed [APPLICATION]APP=\n script.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 188 / 1278\n \n nota\n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for\n the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale, joint.N.counts).\n \n@@ -11020,15 +11020,15 @@\n \n 4.6.2. Usage\n INI file options:\n [EMCIO] section\n PROTOCOL_VERSION = 2\n Defaults to 2. Setting to 1 will emulate old iocontrol behaviour.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 189 / 1278\n \n EMCIO = iov2 -support-start-change\n 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\n this is better backwards compatibility.\n [TASK] section\n@@ -11061,15 +11061,15 @@\n iocontrol.0.user-request-enable (Bit, Out) TRUE when the user has requested that estop be cleared\n Additional pins added by I/O Control V2\n emc-abort: (Bit, Out) signals emc-originated abort to toolchanger.\n emc-abort-ack: (Bit, In) Acknowledge line from toolchanger for previous signal, or jumpered to\n abort-tool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until\n emc-abort-ack is raised.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 190 / 1278\n \n emc-reason: (S32, Out) convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort TRUE.\n start-change: (Bit, Out) asserted at the very beginning of an M6 operation, before any spindle-off,\n quill-up, or move-to-toolchange-position oeprations are executed.\n start-change-ack: (Bit, In) acknowledgment line for start-change.\n@@ -11105,15 +11105,15 @@\n EMC_ABORT_AUX_ESTOP = 2,\n EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n EMC_ABORT_TASK_STATE_OFF = 4,\n EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,\n EMC_ABORT_TASK_STATE_ESTOP = 6,\n EMC_ABORT_TASK_STATE_NOT_ON = 7,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 191 / 1278\n \n EMC_ABORT_TASK_ABORT = 8,\n EMC_ABORT_USER = 100\n iov2 adds one more code, namely EMC_ABORT_BY_TOOLCHANGER_FAULT = 101 which is signaled\n when an M6 aborts due to the toolchanger-faulted pin being TRUE.\n@@ -11148,15 +11148,15 @@\n [DISPLAY]\n DISPLAY = axis\n LATHE = 1\n ...\n [KINS]\n KINEMATICS = trivkins\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 192 / 1278\n \n JOINTS = 3\n [TRAJ]\n COORDINATES = X Z\n ...\n@@ -11198,15 +11198,15 @@\n The Latency Test determines how late your computer processor is in responding to a request. Some\n hardware can interrupt the processing which could cause missed steps when running a CNC machine.\n This is the first thing you need to do. Follow the instructions here to run the latency test.\n \n 4.8.2. Sherline\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 193 / 1278\n \n 4.8.3. Xylotex\n If you have a Xylotex you can skip the following sections and go straight to the Stepper Config Wizard.\n LinuxCNC has provided quick setup for the Xylotex machines.\n \n@@ -11305,15 +11305,15 @@\n \n Leadscrew\n Teeth\n \n Leadscrew\n Pitch\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Axis\n \n Steps/Rev.\n \n Micro Steps\n \n@@ -11363,15 +11363,15 @@\n Leadscrew Pitch =\n 5.00 mm per turn\n From the above information: - The leadscrew moves 5.00 mm per turn. - The motor turns 3.000 times\n per 1 leadscrew turn. - The drive takes 8 microstep inputs to make the stepper step once. - The drive\n needs 1600 steps to turn the stepper one revolution.\n So the scale needed is:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 195 / 1278\n \n 4.9. Stepper Configuration\n 4.9.1. Introduction\n The preferred way to set up a standard stepper machine is with the Step Configuration Wizard. See\n the Stepper Configuration Wizard Chapter.\n@@ -11408,15 +11408,15 @@\n The ones relevant for our pinout are:\n signals: Xstep, Xdir & Xen\n pins: parport.0.pin-XX-out & parport.0.pin-XX-in\n \n 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\n on we\u2019ll investigate the standard_pinout.hal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4.9.3.1. Standard Pinout HAL\n This file contains several HAL commands, and usually looks like this:\n # standard pinout config file for 3-axis steppers\n # using a parport for I/O\n #\n # first load the parport driver\n@@ -11462,15 +11462,15 @@\n ### that\u2019s ok, hook the same signal to all the axes, but be sure to\n ### set HOME_IS_SHARED and HOME_SEQUENCE in the INI file.\n ###\n # net homeswitches <= parport.0.pin-10-in\n \n 196 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 197 / 1278\n \n # net homeswitches => joint.0.home-sw-in\n # net homeswitches => joint.1.home-sw-in\n # net homeswitches => joint.2.home-sw-in\n ###\n@@ -11506,15 +11506,15 @@\n net Xstep parport.0.pin-02-out\n net Xdir parport.0.pin-03-out\n \n or basically any other out pin you like.\n Hint: make sure you don\u2019t have more than one signal connected to the same pin.\n 5 the fastest thread in the LinuxCNC setup, usually ther code gets executed every few tens of microseconds\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 198 / 1278\n \n 4.9.3.4. Changing polarity of a signal\n If external hardware expects an \u201dactive low\u201d signal, set the corresponding -invert parameter. For\n instance, to invert the spindle control signal:\n setp parport.0.pin-09-invert TRUE\n@@ -11548,15 +11548,15 @@\n 4.10. Stepper Diagnostics\n If what you get is not what you expect many times you just got some experience. Learning from the\n experience increases your understanding of the whole. Diagnosing problems is best done by divide\n and conquer. By this I mean if you can remove 1/2 of the variables from the equation each time you\n will find the problem the fastest. In the real world this is not always the case, but it\u2019s usually a good\n place to start.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 199 / 1278\n \n 4.10.1. Common Problems\n 4.10.1.1. Stepper Moves One Step\n The most common reason in a new installation for a stepper motor not to move is that the step and\n direction signals are exchanged. If you press the jog forward and jog backward keys, alternately , and\n@@ -11586,15 +11586,15 @@\n If you added backlash you need to increase the STEPGEN_MAXACCEL up to double the MAX_ACCELERATIO\n in the AXIS section of the INI file for each axis you added backlash to. LinuxCNC uses \u201dextra acceleration\u201d at a reversal to take up the backlash. Without backlash correction, step generator acceleration\n can be just a few percent above the motion planner acceleration.\n 4.10.2.2. RTAPI Error\n When you get this error:\n RTAPI: ERROR: Unexpected realtime delay on task n\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 200 / 1278\n \n This error is generated by rtapi based on an indication from RTAI that a deadline was missed. It is\n usually an indication that the BASE_PERIOD in the [EMCMOT] section of the ini file is set too low. You\n should run the Latency Test for an extended period of time to see if you have any delays that would\n cause this problem. If you used the Stepconf Wizard, run it again, and test the Base Period Jitter again,\n@@ -11640,15 +11640,15 @@\n G0 Z1.000\n G0 Z0.500\n #1000 = [#1000 - 1]\n o101 endwhile\n ( msg, Done...Z should be exactly .5\u201d above table )\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 201 / 1278\n \n Cap\u00edtulo 5\n \n HAL (Hardware Abstraction Layer)\n 5.1. HAL Introduction\n@@ -11663,15 +11663,15 @@\n HAL is based on the same principles that are used to design hardware circuits and systems, so it is\n useful to examine those principles first.\n Any system, including a CNC machine, consists of interconnected components. For the CNC machine,\n those components might be the main controller, servo amps or stepper drives, motors, encoders, limit\n switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc.\n The machine builder must select, mount and wire these pieces together to make a complete system.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 202 / 1278\n \n Figura 5.1: HAL Concept - Connecting like electrical circuits.\n Figure one would be written in HAL code like this:\n net signal-blue\n net signal-red\n@@ -11691,15 +11691,15 @@\n about which specific components to use is based on what that component does and the specifications\n supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the\n choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed\n by the amp and the velocity or position signals that must be sent to the amp from a control.\n 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\n pulses, PLC functionality, and a wide variety of other tasks.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 203 / 1278\n \n 5.1.1.2. Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a\n servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit\n@@ -11723,15 +11723,15 @@\n HAL provides the software equivalents of a voltmeter, oscilloscope, signal generator, and other tools\n needed for testing and tuning a system. The same commands used to build the system can be used to\n make changes as needed.\n 5.1.1.5. Summary\n 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 Remote Start Example\n section in the HAL UI Examples documentation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 204 / 1278\n \n Figura 5.2: Remote Start Example (Schema)\n The traditional hardware design as described above ends at the edge of the main control. Outside the\n control are a bunch of relatively simple boxes, connected together to do whatever is needed. Inside,\n the control is a big mystery \u2014 one huge black box that we hope works.\n@@ -11756,15 +11756,15 @@\n because these terms are not arranged in alphabetical order. They are arranged by their relationship\n or flow in the HAL way of things.\n Component\n When we talked about hardware design, we referred to the individual pieces as parts, building\n blocks, black boxes, etc. The HAL equivalent is a component or HAL component. (This document\n uses HAL component when there is likely to be confusion with other kinds of components, but\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 205 / 1278\n \n normally just uses component.) A HAL component is a piece of software with well-defined inputs,\n outputs, and behavior, that can be installed and interconnected as needed.\n nota\n Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be\n@@ -11806,15 +11806,15 @@\n input of a servo amp. HAL pins have the same restrictions, which are based upon their type.\n Both pins and signals have types, and signals can only be connected to pins of the same type.\n Currently there are 4 types, as follows:\n bit - a single TRUE/FALSE or ON/OFF value\n float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits\n of dynamic range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 206 / 1278\n \n u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295\n s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647\n Function\n Real hardware components tend to act immediately on their inputs. For example, if the input\n@@ -11856,15 +11856,15 @@\n then when it finishes that pass, the coil is ON. The fact that turning on the coil opens the contact\n feeding it is ignored until the next pass. On the next pass, the PLC sees that the contact is open, and\n de-energizes the coil. So the relay still switches rapidly between on and off, but at a rate determined\n by how often the PLC evaluates the rung.\n In HAL, the function is the code that evaluates the rung(s). In fact, the HAL-aware realtime version\n of ClassicLadder exports a function to do exactly that. Meanwhile, a thread is the thing that runs the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 207 / 1278\n \n function at specific time intervals. Just like you can choose to have a PLC evaluate all its rungs every\n 10 ms, or every second, you can define HAL threads with different periods.\n What distinguishes one thread from another is not what the thread does - that is determined by which\n functions are connected to it. The real distinction is simply how often a thread runs.\n@@ -11881,15 +11881,15 @@\n 5.2.1. HAL Commands\n More detailed information can be found in the man page for halcmd: run man halcmd in a terminal\n window.\n To see the HAL configuration and check the status of pins and parameters use the HAL Configuration\n window on the Machine menu in AXIS. To watch a pin status open the Watch tab and click on each\n pin you wish to watch and it will be added to the watch window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 208 / 1278\n \n Figura 5.3: HAL Configuration Window\n \n 5.2.1.1. loadrt\n The command loadrt loads a real time HAL component. Real time component functions need to be\n@@ -11903,15 +11903,15 @@\n The addf command adds a function to a real-time thread. If the StepConf wizard was used to create\n the configuration, two threads have been created ( \u0300 \u0300base-thread \u0300 \u0300 and \u0300 \u0300servo-thread \u0300 \u0300).\n addf adds function functname to thread threadname. Default is to add the function in the order they\n are in the file. If position is specified, adds the function to that spot in the thread. Negative position\n means position with respect to the end of the thread. For example 1 is start of thread, -1 is the end of\n the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 209 / 1278\n \n For some functions it is important to load them in a certain order, like the parport read and write\n functions. The function name is usually the component name plus a number. In the following example\n the component or2 is loaded and show function shows the name of the or2 function\n $ halrun\n@@ -11974,15 +11974,15 @@\n the same name as the first argument of the command.\n \n -Wn \n \n to wait for the component, which will have the given . This only applies\n if the component has a name option.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n -w\n \n to wait for the program to exit\n \n -i\n \n@@ -12017,15 +12017,15 @@\n A pin can be connected to a signal if it obeys the following rules:\n An IN pin can always be connected to a signal.\n An IO pin can be connected unless there\u2019s an OUT pin on the signal.\n An OUT pin can be connected only if there are no other OUT or IO pins on the signal.\n The same signal-name can be used in multiple net commands to connect additional pins, as long as\n the rules above are obeyed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 211 / 1278\n \n Figura 5.4: Signal Direction\n This example shows the signal xStep with the source being stepgen.0.out and with two readers,\n parport.0.pin-02-out and parport.0.pin-08-out. Basically the value of stepgen.0.out is sent to the signal\n xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -12048,15 +12048,15 @@\n 5.2.1.5. setp\n The command setp sets the value of a pin or parameter. The valid values will depend on the type of\n the pin or parameter. It is an error if the data types do not match.\n Some components have parameters that need to be set before use. Parameters can be set before use\n or while running as needed. You cannot use setp on a pin that is connected to a signal.\n setp Syntax and Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 212 / 1278\n \n setp \n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6. sets\n@@ -12093,15 +12093,15 @@\n linkps parport.0.pin-02-out X-Step\n \n The linkps command has been superseded by the net command.\n the command newsig creates a new HAL signal by the name and the data type of .\n Type must be bit, s32, u32 or float. Error if all ready exists.\n newsig Syntax and Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 213 / 1278\n \n newsig \n newsig Xstep bit\n \n More information can be found in the HAL manual or the man pages for halrun.\n@@ -12130,15 +12130,15 @@\n you used the Stepper Config Wizard.\n custom.hal This file is loaded next and before the GUI loads. This is where you put your custom HAL\n commands that you want loaded before the GUI is loaded.\n custom_postgui.hal This file is loaded after the GUI loads. This is where you put your custom HAL\n commands that you want loaded after the GUI is loaded. Any HAL commands that use PyVCP widgets\n need to be placed here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 214 / 1278\n \n 5.2.4. HAL Parameter\n Two parameters are automatically added to each HAL component when it is created. These parameters\n allow you to scope the execution time of a component.\n .time\n@@ -12186,15 +12186,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 215 / 1278\n \n 5.2.5.2. not\n The not component is a bit inverter.\n Syntax\n not [count=n] | [names=name1[,name2...]]\n@@ -12244,15 +12244,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 216 / 1278\n \n 5.2.5.4. xor2\n The xor2 component is a two input XOR (exclusive OR) gate.\n Syntax\n xor2[count=n] | [names=name1[,name2...]]\n@@ -12301,15 +12301,15 @@\n 5.2.7.1. weighted_sum\n The weighted sum converts a group of bits into an integer. The conversion is the sum of the weights of\n the bits present plus any offset. It\u2019s similar to binary coded decimal but with more options. The hold\n bit interrupts the input processing, so that the sum value no longer changes.\n weighted_sum component loading syntax\n loadrt weighted_sum wsum_sizes=size[,size,...]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 217 / 1278\n \n Creates groups of \u0300weighted_sum \u0300s, each with the given number of input bits (size).\n To update the weighted_sum, the process_wsums must be attached to a thread.\n add process_wsums function\n addf process_wsums servo-thread\n@@ -12390,15 +12390,15 @@\n It can be a maintenance problem to keep track of the components and their names since when you\n add (or remove) a component, you must find and update the single loadrt directive applicable to the\n component.\n TWOPASS processing is enabled by including an INI file parameter in the [HAL] section:\n [HAL]\n TWOPASS = anystring\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 218 / 1278\n \n Where \u201danystring\u201d can be any non-null string. With this setting, you can have multiple specifications\n like:\n loadrt and2 names=aa\n ...\n@@ -12440,15 +12440,15 @@\n Many comps supplied with the distribution are created with the halcompile utility and support the\n names= option. These include the common logic components that are the glue of many LinuxCNC\n configurations.\n User-created comps that use the halcompile utility automatically support the names= option as well.\n 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,\n and sim_encoder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 219 / 1278\n \n Two-step processing occurs before the GUI is loaded. When using a [HAL]POSTGUI_HALFILE, it is\n convenient to place all the [HAL]POSTGUI_HALFILE loadrt declarations for the necessary components in a preloaded HAL file.\n Example of a HAL section when using a POSTGUI_HALFILE\n [HAL]\n@@ -12489,15 +12489,15 @@\n 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.\n Ordinarily, the loadrt ordering of realtime components is not critical, but loadrt ordering for special\n components can be enforced by placing the such loadrt directives in an excluded file.\n nota\n While the order of loadrt directives is not usually critical, ordering of addf directives is often very\n important for proper operation of servo loop components.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 220 / 1278\n \n Excluded .hal file example\n $ cat twopass_excluded.hal\n # The following magic comment causes this file to\n # be excluded from twopass processing:\n@@ -12531,15 +12531,15 @@\n 5.4.2. Halcmd\n halcmd is a command line tool for manipulating HAL. A more complete man page exists for halcmd\n and installed together with LinuxCNC, from source or from a package. If LinuxCNC has been compiled\n as run-in-place, the man page is not installed but is accessible in the LinuxCNC main directory with\n the following command:\n $ man -M docs/man halcmd\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 221 / 1278\n \n 5.4.2.1. Notation\n For this tutorial, commands for the operating system are typically shown without the prompt provided\n by the UNIX shell, i.e typically a dollar sign ($) or a hash/double cross (#). When communicating\n directly with the HAL through halcmd or halrun, the prompts are shown in the examples. The terminal\n@@ -12580,15 +12580,15 @@\n a RIP 1 , invoke the rip-environment script to prepare your shell. In that case, all you need to do is load\n the required RTOS and RTAPI modules into memory. Just run the following command from a terminal\n window:\n Loading HAL\n 1 Run In Place, when the source files have been downloaded to a user directory and are compiled and executed directly from\n there.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 222 / 1278\n \n cd linuxcnc\n halrun\n halcmd:\n \n@@ -12667,15 +12667,15 @@\n siggen.0.frequency\n siggen.0.offset\n siggen.0.sawtooth\n siggen.0.sine\n siggen.0.square\n siggen.0.triangle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 223 / 1278\n \n This command displays all of the pins in the current HAL. A complex system could have dozens or\n hundreds of pins. But right now there are only nine pins. Of these pins eight are floating point and\n one is bit (boolean). Six carry data out of the siggen component and three are used to transfer settings\n into the component. Since we have not yet executed the code contained within the component, some\n@@ -12751,15 +12751,15 @@\n \n Time, Max-Time )\n 0,\n 0 )\n \n 2 CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 224 / 1278\n \n It did. The period is not exactly 1,000,000 ns because of hardware limitations, but we have a thread\n that runs at approximately the correct rate, and which can handle floating point functions. The next\n step is to connect the function to the thread:\n Add Function\n@@ -12867,15 +12867,15 @@\n 3 float OUT\n 3 float OUT\n \n We did two show pin commands in quick succession, and you can see that the outputs are no longer\n zero. The sine, cosine, sawtooth, and triangle outputs are changing constantly. The square output is\n also working, however it simply switches from +1.0 to -1.0 every cycle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 225 / 1278\n \n 5.4.3.4. Changing Parameters\n The real power of HAL is that you can change things. For example, we can use the setp command to\n set the value of a parameter. Let\u2019s change the amplitude of the signal generator from 1.0 to 5.0:\n Set Pin\n@@ -12959,15 +12959,15 @@\n # realtime thread/function links\n addf siggen.0.update test-thread\n \n The output of the save command is a sequence of HAL commands. If you start with an empty HAL\n and run all these commands, you will get the configuration that existed when the save command was\n issued. To save these commands for later use, we simply redirect the output to a file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 226 / 1278\n \n Save configuration to a file with halcmd\n halcmd: save all saved.hal\n \n 5.4.3.6. Exiting halrun\n@@ -13002,15 +13002,15 @@\n halmeter\n \n Two windows will appear. The selection window is the largest and includes three tabs:\n One lists all the pins currently defined in HAL,\n one lists all the signals,\n one lists all the parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 227 / 1278\n \n Click on a tab, then click on one of the items to select it. The small window will show the name and\n value of the selected item. The display is updated approximately 10 times per second. To free screen\n space, the selection window can be closed with the Close button. On the little window, hidden under\n the selection window at program launch, the Select button, re-opens the selection window and the\n@@ -13036,27 +13036,27 @@\n \n At this point we have the siggen component loaded and running. It\u2019s time to start halmeter.\n Starting Halmeter\n halcmd: loadusr halmeter\n \n The first window you will see is the \u201dSelect Item to Probe\u201d window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 228 / 1278\n \n Figura 5.5: Halmeter Select Window\n This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one\n displays all the signals, and the third displays all the parameters. We would like to look at the pin\n siggen.0.cosine first, so click on it then click the \u201dClose\u201d button. The probe selection dialog will\n close, and the meter looks something like the following figure.\n \n Figura 5.6: Halmeter Window\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 229 / 1278\n \n To change what the meter displays press the \u201dSelect\u201d button which brings back the \u201dSelect Item to\n Probe\u201d window.\n You should see the value changing as siggen generates its cosine wave. Halmeter refreshes its display\n about 5 times per second.\n@@ -13130,15 +13130,15 @@\n siggen.0.sawtooth\n siggen.0.sine\n siggen.0.square\n siggen.0.triangle\n stepgen.0.counts\n stepgen.0.dir\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -13304,15 +13304,15 @@\n input of the first step pulse generator. The first step is to connect the signal to the signal generator\n output. To connect a signal to a pin we use the net command.\n net command\n halcmd: net X-vel <= siggen.0.cosine\n \n To see the effect of the net command, we show the signals again.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 231 / 1278\n \n halcmd: show sig\n Signals:\n Type\n float\n@@ -13391,15 +13391,15 @@\n Every time it is executed, it calculates the values of the sine, cosine, triangle, and square outputs. To\n make smooth signals, it needs to run at specific intervals.\n The other three functions are related to the step pulse generators.\n The first one, stepgen.capture_position, is used for position feedback. It captures the value of an\n internal counter that counts the step pulses as they are generated. Assuming no missed steps, this\n counter indicates the position of the motor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 232 / 1278\n \n The main function for the step pulse generator is stepgen.make_pulses. Every time make_pulses runs\n it decides if it is time to take a step, and if so sets the outputs accordingly. For smooth step pulses, it\n should run as frequently as possible. Because it needs to run so fast, make_pulses is highly optimized\n and performs only a few calculations. Unlike the others, it does not need floating point math.\n@@ -13474,15 +13474,15 @@\n pulse generator isn\u2019t quite right. By default, it generates an output frequency of 1 step per second\n with an input of 1.0. It is unlikely that one step per second will give us one inch per second of table\n movement. Let\u2019s assume instead that we have a 5 turn per inch leadscrew, connected to a 200 step\n per rev stepper with 10x microstepping. So it takes 2000 steps for one revolution of the screw, and\n 5 revolutions to travel one inch. That means the overall scaling is 10000 steps per inch. We need\n to multiply the velocity input to the step pulse generator by 10000 to get the proper output. That is\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 233 / 1278\n \n exactly what the parameter stepgen.n.velocity-scale is for. In this case, both the X and Y axis have\n the same scaling, so we set the scaling parameters for both to 10000.\n halcmd: setp stepgen.0.position-scale 10000\n halcmd: setp stepgen.1.position-scale 10000\n@@ -13517,24 +13517,24 @@\n halcmd loadusr halscope\n \n If LinuxCNC is not running or the autosave.halscope file does not match the pins available in the\n current running LinuxCNC the scope GUI window will open, immediately followed by a Realtime\n function not linked dialog that looks like the following figure. To change the sample rate left click on\n the samples box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 234 / 1278\n \n Figura 5.7: Realtime function not linked dialog\n This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once\n per millisecond, so click on the 989 \u00b5s thread slow and leave the multiplier at 1. We will also leave the\n record length at 4000 samples, so that we can use up to four channels at one time. When you select\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 235 / 1278\n \n a thread and then click OK, the dialog disappears, and the scope window looks something like the\n following figure.\n \n Figura 5.8: Initial scope window\n@@ -13546,33 +13546,33 @@\n length - more channels means shorter records, since the memory available for the record is fixed at\n approximately 16,000 samples.\n The channel buttons run across the bottom of the halscope screen. Click button 1, and you will see the\n Select Channel Source dialog as shown in the following figure. This dialog is very similar to the one\n used by Halmeter. We would like to look at the signals we defined earlier, so we click on the Signals\n tab, and the dialog displays all of the signals in the HAL (only two for this example).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 236 / 1278\n \n Figura 5.9: Select Channel Source\n To choose a signal, just click on it. In this case, we want channel 1 to display the signal X-vel. Click on\n the Signals tab then click on X-vel and the dialog closes and the channel is now selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 237 / 1278\n \n Figura 5.10: Select Signal\n The channel 1 button is pressed in, and channel number 1 and the name X-vel appear below the row\n of buttons. That display always indicates the selected channel - you can have many channels on the\n screen, but the selected one is highlighted, and the various controls like vertical position and scale\n always work on the selected one.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 238 / 1278\n \n Figura 5.11: Halscope\n To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then\n click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals\n connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and\n@@ -13583,15 +13583,15 @@\n a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope about\n 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen will show\n the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven\u2019t configured\n one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger section at the\n top right. You should see the remainder of the buffer fill, then the screen will display the captured\n waveforms. The result will look something like the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 239 / 1278\n \n Figura 5.12: Captured Waveforms\n The Selected Channel box at the bottom tells you that the purple trace is the currently selected one,\n channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1\n through 3 to highlight the other three traces.\n@@ -13599,29 +13599,29 @@\n The traces are rather hard to distinguish since all four are on top of each other. To fix this, we use\n the Vertical controls in the box to the right of the screen. These controls act on the currently selected\n channel. When adjusting the gain, notice that it covers a huge range - unlike a real scope, this one\n can display signals ranging from very tiny (pico-units) to very large (Tera-units). The position control\n moves the displayed trace up and down over the height of the screen only. For larger adjustments the\n offset button should be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 240 / 1278\n \n Figura 5.13: Vertical Adjustment\n The large Selected Channel button at the bottom indicates that channel 1 is currently selected channel\n and that it matches the X-vel signal. Try clicking on the other channels to put their traces in evidence\n and to be able to move them with the Pos cursor.\n 5.4.6.4. Triggering\n Using the Force button is a rather unsatisfying way to trigger the scope. To set up real triggering, click\n on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is simply a\n list of all the probes that are currently connected. Select a probe to use for triggering by clicking on\n it. For this example we will use channel 3, the triangle wave as shown in the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 241 / 1278\n \n Figura 5.14: Trigger Source Dialog\n After setting the trigger source, you can adjust the trigger level and trigger position using the sliders\n in the Trigger box along the right edge. The level can be adjusted from the top to the bottom of the\n screen, and is displayed below the sliders. The position is the location of the trigger point within\n@@ -13631,15 +13631,15 @@\n trigger point is visible as a vertical line in the progress box above the screen. The trigger polarity can\n be changed by clicking the button just below the trigger level display. It will then become descendant.\n Note that changing the trigger position stops the scope once the position has been adjusted, you\n relaunch the scope by clicking on the Normal button of Run mode the group.\n Now that we have adjusted the vertical controls and triggering, the scope display looks something\n like the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 242 / 1278\n \n Figura 5.15: Waveforms with Triggering\n \n 5.4.6.5. Horizontal Adjustments\n To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand\n@@ -13648,15 +13648,15 @@\n the sampling rate. For example, we would like to look at the actual step pulses that are being generated\n in our example. Since the step pulses may be only 50 \u00b5s long, sampling at 1 kHz isn\u2019t fast enough. To\n change the sample rate, click on the button that displays the number of samples and sample rate to\n bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 \u00b5s thread,\n fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth\n of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 243 / 1278\n \n Figura 5.16: Sample Rate Dialog\n \n 5.4.6.6. More Channels\n Now let\u2019s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at\n@@ -13665,15 +13665,15 @@\n do the same for channel 4. Even though the channels are turned off, they still remember what they are\n connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels,\n select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then\n click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You\n should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the\n direction pin changes state and the step pulses speed up again. You might want toincrease the gain on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 244 / 1278\n \n channel 1 to about 20 milli per division to better see the change in the velocity command. The result\n should look like the following figure.\n \n Figura 5.17: Step Pulses\n@@ -13685,15 +13685,15 @@\n 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\n was already loaded, the numeric argument to halscope will have no effect).\n \n 5.5. HAL Examples\n All of these examples assume you are starting with a stepconf based configuration and have two\n threads base-thread and servo-thread. The stepconf wizard will create an empty custom.hal and a\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 245 / 1278\n \n custom_postgui.hal file. The custom.hal file will be loaded after the configuration HAL file and the\n custom_postgui.hal file is loaded after the GUI has been loaded.\n \n 5.5.1. Connecting Two Outputs\n@@ -13753,15 +13753,15 @@\n input. The output from or2 goes to the input of the led.\n \n 5.5.2. Manual Toolchange\n In this example it is assumed that you\u2019re 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\n and you store the offsets in the tool table. If you need to touch off for each tool change then it is best\n just to split up your G-code. To use the HAL Manual Toolchange window you basically have to load the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 246 / 1278\n \n hal_manualtoolchange component then send the iocontrol tool change to the hal_manualtoolchange\n 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.\n This is an example of manual toolchange with the HAL Manual Toolchange component:\n loadusr -W hal_manualtoolchange\n@@ -13806,15 +13806,15 @@\n The xpos-cmd sends the commanded position to the ddt.0.in. The ddt computes the derivative of the\n change of the input.\n The ddt2.0.out is multiplied by 60 to give IPM.\n The mult2.0.out is sent to the abs to get the absolute value.\n The following figure shows the result when the X axis is moving at 15 IPM in the minus direction.\n Notice that we can get the absolute value from either the abs.0.out pin or the X-IPM signal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 247 / 1278\n \n Figura 5.18: HAL: Velocity Example\n \n 5.5.4. Soft Start Details\n This example shows how the HAL components lowpass, limit2 or limit3 can be used to limit how fast\n@@ -13827,15 +13827,15 @@\n limit2 limits the range and first derivative of a signal.\n limit3 limits the range, first and second derivatives of a signal.\n lowpass uses an exponentially-weighted moving average to track an input signal.\n To find more information on these HAL components check the man pages.\n Place the following in a text file called softstart.hal. If you\u2019re not familiar with Linux place the file in\n your home directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 248 / 1278\n \n loadrt threads period1=1000000 name1=thread\n loadrt siggen\n loadrt lowpass\n loadrt limit2\n@@ -13865,15 +13865,15 @@\n Next to set up a trigger signal click on the Source None button and select square. The button will\n change to Source Chan 1.\n Next click on Single in the Run Mode radio buttons box. This will start a run and when it finishes you\n will see your traces.\n To separate the signals so you can see them better click on a channel then use the Pos slider in the\n Vertical box to set the positions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 249 / 1278\n \n To see the effect of changing the set point values of any of the components you can change them in\n the terminal window. To see what different gain settings do for lowpass just type the following in the\n terminal window and try different settings.\n setp lowpass.0.gain *.01\n@@ -13887,15 +13887,15 @@\n 5.5.5. Stand Alone HAL\n In some cases you might want to run a GladeVCP screen with just HAL. For example say you had a\n stepper driven device that all you need is to run a stepper motor. A simple Start/Stop interface is all\n you need for your application so no need to load up and configure a full blown CNC application.\n In the following example we have created a simple GladeVCP panel with one stepper.\n Basic Syntax\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 250 / 1278\n \n # load the winder.glade GUI and name it winder\n loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade\n # load realtime components\n loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000\n@@ -13934,15 +13934,15 @@\n default is 4 each. The number of Spindles is set with num_spindles, default is 1.\n Pin and parameter names starting with axis.L and joint.N are read and updated by the motion-controller\n function.\n Motion is loaded with the motmod command. A kins should be loaded before motion.\n loadrt motmod base_period_nsec=[\u2019period\u2019] servo_period_nsec=[\u2019period\u2019]\n traj_period_nsec=[\u2019period\u2019] num_joints=[\u20190-9\u2019]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 251 / 1278\n \n num_dio=[\u20191-64\u2019] num_aio=[\u20191-16\u2019] unlock_joints_mask=[\u20190xNN\u2019]\n num_spindles=[\u20191-8\u2019]\n \n base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the\n@@ -13981,15 +13981,15 @@\n motion.adaptive-feed - (float, in) When adaptive feed is enabled with M52 P1 , the commanded\n velocity is multiplied by this value. This effect is multiplicative with the NML-level feed override\n value and motion.feed-hold. As of version 2.9 of LinuxCNC it is possible to use a negative adaptive\n feed value to run the G-code path in reverse.\n motion.analog-in-00 - (float, in) These pins (00, 01, 02, 03 or more if configured) are controlled by\n M66.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 252 / 1278\n \n motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled\n by M67 or M68.\n motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a\n soft limit\n@@ -14028,15 +14028,15 @@\n acceleration limits. The value on this pin does not reflect the feed override or any other adjustments.\n motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated\n mode\n motion.tooloffset.x \u2026 motion.tooloffset.w - (float, out, one per axis) shows the tool offset in effect;\n it could come from the tool table (G43 active), or it could come from the G-code (G43.1 active)\n motion.on-soft-limit - (bit, out) TRUE when the machine is on a soft limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 253 / 1278\n \n motion.probe-input - (bit, in) G38.n uses the value on this pin to determine when the probe has\n made contact. TRUE for probe contact closed (touching), FALSE for probe contact open.\n motion.program-line - (s32, out) The current program line while executing. Zero if not running or\n between lines while single stepping.\n@@ -14066,15 +14066,15 @@\n to determine whether the realtime motion controller is meeting its timing constraints\n motion.servo.last-period-ns - (float, RO)\n 5.6.1.4. Functions\n Generally, these functions are both added to the servo-thread in the order shown.\n motion-command-handler - Processes motion commands coming from user space\n motion-controller - Runs the LinuxCNC motion controller\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 254 / 1278\n \n 5.6.2. Spindle\n LinuxCNC can control upto eight spindles. Motion will produce the following pins: The N (integer\n between 0 and 7) substitutes the spindle number.\n 5.6.2.1. Pins\n@@ -14112,15 +14112,15 @@\n spindle.N.orient-angle - (float,out) Desired spindle orientation for M19. Value of the M19 R word\n parameter plus the value of the [RS274NGC]ORIENT_OFFSET INI parameter.\n spindle.N.orient-mode - (s32,out) Desired spindle rotation mode M19. Default 0.\n spindle.N.orient - (out,bit) Indicates start of spindle orient cycle. Set by M19. Cleared by any of M3,\n M4, or M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails with\n an error message.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 255 / 1278\n \n spindle.N.is-oriented - (in, bit) Acknowledge pin for spindle-orient. Completes orient cycle. If spindleorient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared and the\n spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.\n spindle.N.orient-fault - (s32, in) Fault code input for orient cycle. Any value other than zero will\n cause the orient cycle to abort.\n@@ -14158,15 +14158,15 @@\n See the motion man page motion(9) for details on the pins and parameters.\n \n 5.6.4. iocontrol\n iocontrol - accepts NML I/O commands, interacts with HAL in userspace.\n The signals are turned on and off in userspace - if you have strict timing requirements or simply need\n more i/o, consider using the realtime synchronized i/o provided by motion instead.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 256 / 1278\n \n 5.6.4.1. Pins\n iocontrol.0.coolant-flood - (bit, out) TRUE when flood coolant is requested.\n iocontrol.0.coolant-mist - (bit, out) TRUE when mist coolant is requested.\n iocontrol.0.emc-enable-in - (bit, in) Should be driven FALSE when an external E-Stop condition\n@@ -14196,15 +14196,15 @@\n ini.N.home - (float, in) [JOINT_N]HOME\n ini.N.home_offset - (float, in) [JOINT_N]HOME_OFFSET\n ini.N.home_offset - (s32, in) [JOINT_N]HOME_SEQUENCE\n ini.L.min_limit - (float, in) [AXIS_L]MIN_LIMIT\n ini.L.max_limit - (float, in) [AXIS_L]MAX_LIMIT\n ini.L.max_velocity - (float, in) [AXIS_L]MAX_VELOCITY\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 257 / 1278\n \n ini.L.max_acceleration - (float, in) [AXIS_L]MAX_ACCELERATION\n nota\n The per-axis min_limit and max_limit pins are honored continuously after homing. The per-axis ferror\n and min_ferror pins are honored when the machine is on and not in position. The per-axis max_velocity\n@@ -14235,15 +14235,15 @@\n for realtime components)\n \n nota\n See also the Man Pages section of the docs main page or the directory listing.\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 258 / 1278\n \n 5.7.1.1. User Interfaces (Userspace)\n axis\n axis-remote\n gmoccapy\n@@ -14324,15 +14324,15 @@\n 5.7.1.3. Hardware Drivers\n elbpcom\n gs2_vfd\n \n Communicate with Mesa ethernet cards\n HAL userspace component for Automation Direct GS2 VFDs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n hal_parport\n hy_gt_vfd\n hy_vfd\n mb2hal\n mitsub_vfd\n monitorxhc-hb04\n@@ -14414,15 +14414,15 @@\n pluto_servo\n Pluto-P driver and firmware for the parallel port FPGA, for servos\n pluto_step\n Pluto-P driver for the parallel port FPGA, for steppers\n serport\n Hardware driver for the digital I/O bits of the 8250 and 16550 serial port\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n sserial\n thc\n \n 260 / 1278\n \n hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics\n@@ -14504,15 +14504,15 @@\n 8-bit binary match detector\n Single-, double-, triple-, and quadruple-click detector\n Toggles between a specified number of output bits\n Inverter\n One-shot pulse generator\n Two-input OR gate\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 261 / 1278\n \n select8\n tof\n toggle\n toggle2nist\n@@ -14607,15 +14607,15 @@\n updown\n Counts up or down, with optional limits and wraparound behavior.\n wcomp\n Window comparator.\n weighted_sumConvert a group of bits to an integer.\n xhc_hb04_util xhc-hb04 convenience utility\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 262 / 1278\n \n bin2gray\n Converts a number to the gray-code representation\n bitslice\n Converts an unsigned-32 input into individual bits\n@@ -14683,15 +14683,15 @@\n \n Proportional/integral/derivative controller with auto tuning.\n \n 3 When the input is a position, this means that the position is limited.\n 4 When the input is a position, this means that position and velocity are limited.\n 5 When the input is a position, this means that the position, velocity, and acceleration are limited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n bldc\n clarke2\n clarke3\n clarkeinv\n encoder\n pid\n@@ -14762,15 +14762,15 @@\n hal_get_lock.3hal\n hal_init.3hal\n hal_link.3hal\n hal_malloc.3hal\n hal_param_bit_new.3hal\n hal_param_bit_newf.3hal\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n hal_param_float_new.3hal\n hal_param_float_newf.3hal\n hal_param_new.3hal\n hal_param_s32_new.3hal\n hal_param_s32_newf.3hal\n hal_param_u32_new.3hal\n@@ -14821,15 +14821,15 @@\n rtapi_get_time.3rtapi\n rtapi_inb.3rtapi\n rtapi_init.3rtapi\n rtapi_module_param.3rtapi\n \n 264 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 265 / 1278\n \n RTAPI_MP_ARRAY_INT.3rtapi\n RTAPI_MP_ARRAY_LONG.3rtapi\n RTAPI_MP_ARRAY_STRING.3rtapi\n RTAPI_MP_INT.3rtapi\n@@ -14867,21 +14867,21 @@\n limits. It is a realtime component only, and depending on CPU speed, etc, is capable of maximum step\n 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).\n The second is for step type 1 (up/down, or pseudo-PWM), and the third is for step types 2 through\n 14 (various stepping patterns). The first two diagrams show position mode control, and the third one\n shows velocity mode. Control mode and step type are set independently, and any combination can be\n selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 5.19: Step Pulse Generator Block Diagram position mode\n \n 266 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 267 / 1278\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type= [ctrl_type=]\n \n \n@@ -14916,15 +14916,15 @@\n (bit) stepgen..down - DOWN pseudo-PWM output (step type 1 only).\n (bit) stepgen..phase-A - Phase A output (step types 2-14 only).\n (bit) stepgen..phase-B - Phase B output (step types 2-14 only).\n (bit) stepgen..phase-C - Phase C output (step types 3-14 only).\n (bit) stepgen..phase-D - Phase D output (step types 5-14 only).\n (bit) stepgen..phase-E - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 268 / 1278\n \n 5.8.1.2. Parameters\n (float) stepgen..position-scale - Steps per position unit. This parameter is used for both\n output and feedback.\n (float) stepgen..maxvel - Maximum velocity, in position units per second. If 0.0, has no effect.\n@@ -14962,15 +14962,15 @@\n takes effect the first time the code runs. Since one step requires steplen ns high and stepspace ns low,\n the maximum frequency is 1,000,000,000 divided by (steplen+stepspace). If maxfreq is set higher\n than that limit, it will be lowered automatically. If maxfreq is zero, it will remain zero, but the output\n frequency will still be limited.\n When using the parallel port driver the step frequency can be doubled using the parport reset function\n together with stepgen\u2019s doublefreq setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 269 / 1278\n \n Figura 5.20: Step and Direction Timing\n Step Type 1 Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending\n on the direction of travel. Each pulse is steplen ns long, and the pulses are separated by at least\n stepspace ns. The maximum frequency is the same as for step type 0. If maxfreq is set higher than\n@@ -14982,33 +14982,33 @@\n \n Step Type 2 - 14 Step types 2 through 14 are state based, and have from two to five outputs. On\n each step, a state counter is incremented or decremented. The Two-and-Three-Phase, Four-Phase,\n and Five-Phase show the output patterns as a function of the state counter. The maximum frequency\n is 1,000,000,000 divided by steplen, and as in the other modes, maxfreq will be lowered if it is above\n the limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 5.21: Two-and-Three-Phase Step Types\n \n 270 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 5.22: Four-Phase Step Types\n \n 271 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 5.23: Five-Phase Step Types\n \n 272 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 273 / 1278\n \n 5.8.1.4. Functions\n The component exports three functions. Each function acts on all of the step pulse generators - running\n different generators in different threads is not supported.\n (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point).\n@@ -15042,15 +15042,15 @@\n use a type 1 output (PWM and direction) and the third will use a type 2 output (UP and DOWN). There\n is no default value, if 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\n is independent, but all are updated by the same function(s), at the same time. In the descriptions that\n follow, is the number of specific generators. The numbering of PWM generators starts at 0.\n Unloading PWMgen\n unloadrt pwmgen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 274 / 1278\n \n 5.8.2.1. Output Types\n The PWM generator supports three different output types.\n Output type 0 - PWM output pin only. Only positive commands are accepted, negative values are\n treated as zero (and will be affected by the parameter min-dc if it is non-zero).\n@@ -15082,15 +15082,15 @@\n or duty cycles that are unobtainable with pure PWM. If false, both the PWM frequency and the duty\n cycle will be rounded to values that can be achieved exactly.\n (float) pwmgen..min-dc - Minimum duty cycle, between 0.0 and 1.0 (duty cycle will go to\n zero when disabled, regardless of this setting).\n (float) pwmgen..max-dc - Maximum duty cycle, between 0.0 and 1.0.\n (float) pwmgen..curr-dc - Current duty cycle - after all limiting and rounding (read only).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 275 / 1278\n \n 5.8.2.4. Functions\n The component exports two functions. Each function acts on all of the PWM generators - running\n different generators in different threads is not supported.\n (funct) pwmgen.make-pulses - High speed function to generate PWM waveforms (no floating point).\n@@ -15111,15 +15111,15 @@\n The base thread should be 1/2 count speed to allow for noise and timing variation. For example if you\n have a 100 pulse per revolution encoder on the spindle and your maximum RPM is 3000 the maximum\n base thread should be 25 \u00b5s. A 100 pulse per revolution encoder will have 400 counts. The spindle\n speed of 3000 RPM = 50 RPS (revolutions per second). 400 * 50 = 20,000 counts per second or 50 \u00b5s\n between counts.\n The Encoder Counter Block Diagram is a block diagram of one channel of an encoder counter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 276 / 1278\n \n Figura 5.24: Encoder Counter Block Diagram\n Loading Encoder\n halcmd: loadrt encoder [num_chan=]\n \n@@ -15133,15 +15133,15 @@\n \n 5.8.3.1. Pins\n encoder..counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true, the\n counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is useful for\n counting the output of a single channel (non-quadrature) sensor. When false, it counts in quadrature\n mode.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 277 / 1278\n \n encoder..missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index. This\n allows a single IO pin to provide both position and index information. If the encoder wheel has 58\n teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then the\n position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should be\n@@ -15182,15 +15182,15 @@\n that greatly reduces quantization noise as compared to simply differentiating the position output.\n When the magnitude of the true velocity is below min-speed-estimate, the velocity output is 0.\n encoder..x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the counter\n counts each edge of the quadrature waveform (four counts per full cycle). When false, it only counts\n once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for some\n jogwheels.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 278 / 1278\n \n 5.8.3.2. Parameters\n encoder..capture-position.time (s32, RO)\n encoder..capture-position.tmax (s32, RW)\n encoder..update-counters.time (s32, RO)\n@@ -15203,15 +15203,15 @@\n \n 5.8.4. PID\n This component provides Proportional/Integral/Derivative control loops. It is a realtime component\n only. For simplicity, this discussion assumes that we are talking about position loops, however this\n component can be used to implement other feedback loops such as speed, torch height, temperature,\n etc. The PID Loop Block Diagram is a block diagram of a single PID loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 279 / 1278\n \n Figura 5.25: PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=] [debug=1]\n \n@@ -15223,15 +15223,15 @@\n cluttering the pin list.\n Unloading PID\n halcmd: unloadrt pid\n \n 5.8.4.1. Pins\n The three most important pins are\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 280 / 1278\n \n (float) pid..command - The desired position, as commanded by another system component.\n (float) pid..feedback - The present position, as measured by a feedback device such as\n an encoder.\n (float) pid..output - A velocity command that attempts to move from the present position\n@@ -15265,15 +15265,15 @@\n (float) pid..deadband - Amount of error that will be ignored\n (float) pid..maxerror - Limit on error\n (float) pid..maxerrorI - Limit on error integrator\n (float) pid..maxerrorD - Limit on error derivative\n (float) pid..maxcmdD - Limit on command derivative\n (float) pid..maxcmdDD - Limit on command 2nd derivative\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 281 / 1278\n \n (float) pid..maxoutput - Limit on output value\n All max* limits are implemented so that if the value of this parameter is zero, there is no limit.\n If debug=1 was specified when the component was installed, four additional pins will be exported:\n (float) pid..errorI - Integral of error.\n@@ -15303,15 +15303,15 @@\n 5.8.5.1. Pins\n (float) sim-encoder..speed - The speed command for the simulated shaft.\n (bit) sim-encoder..phase-A - Quadrature output.\n (bit) sim-encoder..phase-B - Quadrature output.\n (bit) sim-encoder..phase-Z - Index pulse output.\n When .speed is positive, .phase-A leads .phase-B.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 282 / 1278\n \n 5.8.5.2. Parameters\n (u32) sim-encoder..ppr - Pulses Per Revolution.\n (float) sim-encoder..scale - Scale Factor for speed. The default is 1.0, which means that\n speed is in revolutions per second. Change to 60 for RPM, to 360 for degrees per second, 6.283185\n@@ -15343,15 +15343,15 @@\n halcmd: unloadrt debounce\n \n 5.8.6.1. Pins\n Each individual filter has two pins.\n (bit) debounce...in - Input of filter in group .\n (bit) debounce...out - Output of filter in group .\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 283 / 1278\n \n 5.8.6.2. Parameters\n Each group of filters has one parameter6 .\n (s32) debounce..delay - Filter delay for all filters in group .\n The filter delay is in units of thread periods. The minimum delay is zero. The output of a zero delay\n@@ -15383,15 +15383,15 @@\n (float) siggen..cosine - Cosine output.\n (float) siggen..sawtooth - Sawtooth output.\n (float) siggen..triangle - Triangle wave output.\n (float) siggen..square - Square wave output.\n 6 Each individual filter also has an internal state variable. There is a compile time switch that can export that variable as a\n parameter. This is intended for testing, and simply wastes shared memory under normal circumstances.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 284 / 1278\n \n All five outputs have the same frequency, amplitude, and offset.\n In addition to the output pins, there are three control pins:\n (float) siggen.:.frequency - Sets the frequency in Hertz, default value is 1 Hz.\n (float) siggen..amplitude - Sets the peak amplitude of the output waveforms, default is 1.\n@@ -15469,15 +15469,15 @@\n 1\n \n Output\n \n 7 Prior to version 2.1, frequency, amplitude, and offset were parameters. They were changed to pins to allow control by other\n components.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 285 / 1278\n \n Cuadro 5.5: (continued)\n Bit 4\n 0\n 0\n@@ -15655,15 +15655,15 @@\n function is 0xa. The hexadecimal prefix is 0x.\n \n 5.9. HAL Component Generator\n 5.9.1. Introduction\n Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions\n and associated error checking. halcompile will write all this code for you, automatically.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 286 / 1278\n \n Compiling a HAL component is also much easier when using halcompile, whether the component is\n part of the LinuxCNC source tree, or outside it.\n For instance, when coded in C, a simple component such as \u201dddt\u201d is around 80 lines of code. The\n equivalent component is very short when written using the halcompile preprocessor:\n@@ -15708,15 +15708,15 @@\n equal (they all have the same pins, parameters, functions, and data) but behave independently when\n their pins, parameters, and data have different values.\n singleton - It is possible for a component to be a \u201dsingleton\u201d, in which case exactly one instance is\n created. It seldom makes sense to write a singleton component, unless there can literally only be\n a single object of that kind in the system (for instance, a component whose purpose is to provide a\n pin with the current UNIX time, or a hardware driver for the internal PC speaker)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 287 / 1278\n \n 5.9.5. Instance creation\n For a singleton, the one instance is created when the component is loaded.\n 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\n are created. If neither count nor names is specified, a single numbered instance is created.\n@@ -15748,15 +15748,15 @@\n Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate\n variable text, as follows:\n NAME - A standard C identifier\n STARREDNAME - A C identifier with zero or more * before it. This syntax can be used to declare\n instance variables that are pointers. Note that because of the grammar, there may not be whitespace\n between the * and the variable name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 288 / 1278\n \n HALNAME - An extended identifier. When used to create a HAL identifier, any underscores are\n replaced with dashes, and any trailing dash or period is removed, so that \u201dthis_name_\u201d will be\n turned into \u201dthis-name\u201d, and if the name is \u201d_\u201d, then a trailing period is removed as well, so that\n \u201dfunction _\u201d gives a HAL function name like \u201dcomponent.\u201d instead of \u201dcomponent..\u201d\n@@ -15809,15 +15809,15 @@\n Or a string may be preceded by the literal character r, in which case the string is interpreted like a\n Python raw-string.\n The documentation string is in \u201dgroff -man\u201d format. For more information on this markup format,\n see groff_man(7). Remember that halcompile interprets backslash escapes in strings, so for instance\n to set the italic font for the word example, write:\n \u201d\\\\fIexample\\\\fB\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 289 / 1278\n \n In this case, r-strings are particularly useful, because the backslashes in an r-string need not be\n doubled:\n r\u201d\\fIexample\\fB\u201d\n \n@@ -15855,15 +15855,15 @@\n When implementing your own rtapi_app_main(), call the function int export(char *prefix,\n long extra_arg) to register the pins, parameters, and functions for prefix.\n option data TYPE - (default: none) deprecated\n If specified, each instance of the component will have an associated data block of type TYPE (which\n can be a simple type like float or the name of a type created with typedef ). In new components,\n variable should be used instead.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 290 / 1278\n \n option extra_setup yes - (default: no)\n If specified, call the function defined by EXTRA_SETUP for each instance. If using the automatically\n defined rtapi_app_main, extra_arg is the number of this instance.\n option extra_cleanup yes - (default: no)\n@@ -15903,15 +15903,15 @@\n LICENSE - Specify the license of the module for the documentation and for the MODULE_LICENSE()\n module declaration. For example, to specify that the module\u2019s license is GPL v2 or later:\n license \u201dGPL\u201d; // indicates GPL v2 or later\n For additional information on the meaning of MODULE_LICENSE() and additional license identifiers, see or the manual page rtapi_module_param(3).\n This declaration is required.\n AUTHOR - Specify the author of the module for the documentation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 291 / 1278\n \n 5.9.7.4. Per-instance data storage\n \n variable CTYPE STARREDNAME; + variable CTYPE STARREDNAME[SIZE]; + variable CTYPE STARRED\n = DEFAULT; + variable CTYPE STARREDNAME[SIZE] = DEFAULT;\n@@ -15945,15 +15945,15 @@\n \n Based on the items in the declaration section, halcompile creates a C structure called struct __comp_state.\n 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\n may change from one version of halcompile to the next.\n 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\n number of nanoseconds between calls to the function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 292 / 1278\n \n EXTRA_SETUP() - Use this macro to begin the definition of the function called to perform extra\n setup of this instance. Return a negative Unix errno value to indicate failure (e.g., return -EBUSY\n on failure to reserve an I/O port), or 0 to indicate success.\n EXTRA_CLEANUP() - Use this macro to begin the definition of the function called to perform extra\n@@ -15990,15 +15990,15 @@\n To alter the allowed number of personality items for user-built components, use the --personality\n option with halcompile. For example, to allow up to 128 personality times:\n [sudo] halcompile --personality=128 --install ...\n \n 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:\n loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 293 / 1278\n \n nota\n 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\n allowed personalities, personalities are assigned by indexing modulo the number of allowed personalities. A message is printed denoting such assignments.\n \n@@ -16031,15 +16031,15 @@\n halcompile --document rtexample.comp\n \n The resulting manpage, example.9 can be viewed with\n man ./example.9\n \n or copied to a standard location for manual pages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 294 / 1278\n \n 5.9.14. Compiling userspace components outside the source tree\n halcompile can process, compile, install, and document userspace components:\n halcompile usrexample.comp\n halcompile --compile usrexample.comp\n@@ -16079,15 +16079,15 @@\n pin in float theta;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n #include \n FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 295 / 1278\n \n 5.9.15.3. out8\n This component is a driver for a fictional card called \u201dout8\u201d, which has 8 pins of digital output which\n are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they\n can be at various addresses. The pin is called out_ because out is an identifier used in . It\n@@ -16130,15 +16130,15 @@\n }\n FUNCTION(_) { outb(out_, ioaddr); }\n \n 5.9.15.4. hal_loop\n component hal_loop;\n pin out float example;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 296 / 1278\n \n This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the\n name of a standard Linux kernel module, so a loop component might not successfully load if the Linux\n loop module was also present on the system.\n When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by\n@@ -16182,15 +16182,15 @@\n function _ nofp;\n description \u201d\u201d\u201d\n Experimental general \u2019logic function\u2019 component. Can perform \u2019and\u2019, \u2019or\u2019\n and \u2019xor\u2019 of up to 16 inputs. Determine the proper value for \u2019personality\u2019\n by adding:\n .IP \\\\(bu 4\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 297 / 1278\n \n The number of input pins, usually from 2 to 16\n .IP \\\\(bu\n 256 (0x100) if the \u2019and\u2019 output is desired\n .IP \\\\(bu\n@@ -16235,15 +16235,15 @@\n void unset(hal_bit_t *p){\n *p = 0;\n }\n //main function\n FUNCTION(_) {\n if (in < 0){\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 298 / 1278\n \n set(&out1);\n unset(&out2);\n }else if (in >0){\n unset(&out2);\n@@ -16283,15 +16283,15 @@\n The halcmd language used in HAL files has a simple syntax that is actually a subset of the more\n powerful general-purpose Tcl scripting language.\n \n 5.10.2. Haltcl Commands\n Haltcl files use the Tcl scripting language augmented with the specific commands of the LinuxCNC\n hardware abstraction layer (HAL). The HAL-specific commands are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 299 / 1278\n \n addf, alias,\n delf, delsig,\n getp, gets\n ptype,\n@@ -16341,15 +16341,15 @@\n without whitespace are in this group), then it is possible to treat $::SECTION(ITEM) as though it is\n not a list.\n When the value could contain special characters\u2014quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl\u2014it is necessary to distinguish\n between the list of values and the initial (and possibly only) value in the list.\n In Tcl, this is written [lindex $::SECTION(ITEM) 0].\n For example: given the following INI values\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 300 / 1278\n \n [HOSTMOT2]\n DRIVER=hm2_eth\n IPADDR=\u201d10.10.10.10\u201d\n BOARD=7i92\n@@ -16387,15 +16387,15 @@\n Whitespace in the bare expression is not allowed, use quotes for that:\n setp scale.0.gain \u201d6.28 / 360.0 * $::JOINT_0(radius) * 60.0\u201d\n \n In other contexts, such as loadrt, you must explicitly use the Tcl expr command ([expr {}]) for computational expressions.\n Example\n loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 301 / 1278\n \n 5.10.6. Haltcl Examples\n Consider the topic of stepgen headroom. Software stepgen runs best with an acceleration constraint\n that is \u201da bit higher\u201d than the one used by the motion planner. So, when using halcmd files, we force\n INI files to have a manually calculated value.\n@@ -16434,15 +16434,15 @@\n $ halrun -T haltclfile.tcl\n \n 5.10.8. Haltcl Distribution Examples (sim)\n The configs/sim/axis/simtcl directory includes an INI file that uses a .tcl file to demonstrate a haltcl\n configuration in conjunction with the usage of twopass processing. The example shows the use of Tcl\n procedures, looping, the use of comments and output to the terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 302 / 1278\n \n 5.11. Creating Userspace Python Components\n 5.11.1. Basic usage\n A userspace component begins by creating its pins and parameters, then enters a loop which will\n periodically drive all the outputs from the inputs. The following component copies the value seen on\n@@ -16504,15 +16504,15 @@\n much longer if the memory used by the passthrough component is swapped to disk, the assignment\n could be delayed until that memory is swapped back in.\n Thus, userspace components are suitable for user-interactive elements such as control panels (delays\n in the range of milliseconds are not noticed, and longer delays are acceptable), but not for sending\n step pulses to a stepper driver board (delays must always be in the range of microseconds, no matter\n what).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 303 / 1278\n \n 5.11.3. Create pins and parameters\n h = hal.component(\u201dpassthrough\u201d)\n \n The component itself is created by a call to the constructor hal.component. The arguments are the\n@@ -16564,15 +16564,15 @@\n \n 5.11.4.1. Driving output (HAL_OUT) pins\n Periodically, usually in response to a timer, all HAL_OUT pins should be \u201ddriven\u201d by assigning them a\n new value. This should be done whether or not the value is different than the last one assigned. When\n a pin is connected to a signal, its old output value is not copied into the signal, so the proper value\n will only appear on the signal once the component assigns a new value.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 304 / 1278\n \n 5.11.4.2. Driving bidirectional (HAL_IO) pins\n The above rule does not apply to bidirectional pins. Instead, a bidirectional pin should only be driven\n by the component when the component wishes to change the value. For instance, in the canonical\n encoder interface, the encoder component only sets the index-enable pin to FALSE (when an index\n@@ -16602,15 +16602,15 @@\n hal.component_is_ready(\u201dtestpanel\u201d)\n \n 5.11.6.5. get_msg_level\n Get the current Realtime msg level.\n 5.11.6.6. set_msg_level\n Set the current Realtime msg level. used for debugging information.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.7. connect\n Connect a pin to a signal.\n Example\n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n 5.11.6.8. disconnect\n@@ -16643,15 +16643,15 @@\n listOfDicts = hal.get_info_params()\n paramName1 = listOfDicts[0].get(\u2019NAME\u2019)\n paramValue1 = listOfDicts[0].get(\u2019VALUE\u2019)\n paramDirection1 = listOfDicts[0].get(\u2019DIRECTION\u2019)\n \n 305 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.13. new_sig\n Create a new signal of the type specified.\n Example\n hal.new_sig(\u201dsignalname\u201d,hal.HAL_BIT)\n \n 5.11.6.14. pin_has_writer\n@@ -16680,15 +16680,15 @@\n \n 5.11.6.19. set\n Set the HAL object value.\n h.out.set(10)\n \n 306 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.20. is_pin\n Is the object a pin or parameter?\n Returns True or False.\n h.in.is_pin()\n \n 5.11.6.21. sampler_base\n@@ -16717,15 +16717,15 @@\n MSG_DBG\n MSG_ERR\n MSG_INFO\n MSG_WARN\n \n 307 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 308 / 1278\n \n 5.11.8. System Information\n Read these to acquire information about the realtime system.\n is_kernelspace\n is_rt\n@@ -16763,15 +16763,15 @@\n Then make a pin and connect a value_changed (the watcher) signal to a function call:\n ########################\n # **** INITIALIZE **** #\n ########################\n # widgets allows access to widgets from the qtvcp files\n # at this point the widgets and HAL pins are not instantiated\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 309 / 1278\n \n def __init__(self, halcomp,widgets,paths):\n self.hal = halcomp\n self.testPin = self.hal.newpin(\u2019test-pin\u2019, hal.HAL_BIT, hal.HAL_IN)\n self.testPin.value_changed.connect(lambda s: self.setTestPin(s))\n@@ -16810,15 +16810,15 @@\n 5.12.2.1. Pins\n \n (bit) in\n State of the hardware input.\n (bit) in-not\n Inverted state of the input.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 310 / 1278\n \n 5.12.2.2. Parameters\n None\n 5.12.2.3. Functions\n \n@@ -16844,15 +16844,15 @@\n 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.\n 5.12.4.1. Pins\n \n (float) value\n The hardware reading, scaled according to the scale and offset parameters.\n value = ((input reading, in hardware-dependent units) * scale) - offset\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 311 / 1278\n \n 5.12.4.2. Parameters\n \n (float) scale\n The input voltage (or current) will be multiplied by scale before being output to value.\n@@ -16887,15 +16887,15 @@\n (float) scale\n This should be set so that an input of 1 on the value pin will cause the analog output pin to read\n 1 volt.\n (float) high_limit (optional)\n When calculating the value to output to the hardware, if value + offset is greater than high_limit,\n then high_limit will be used instead.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 312 / 1278\n \n (float) low_limit (optional)\n When calculating the value to output to the hardware, if value + offset is less than low_limit,\n then low_limit will be used instead.\n (float) bit_weight (optional)\n@@ -16935,15 +16935,15 @@\n disappear, and the small window will display the name and value of the selected item. The display is\n updated approximately 10 times per second. If you click \u201dAccept\u201d instead of \u201dOK\u201d, the small window\n will display the name and value of the selected item, but the large window will remain on the screen.\n This is convenient if you want to look at a number of different items quickly.\n You can have many halmeters running at the same time, if you want to monitor several items. If\n you want to launch a halmeter without tying up a shell window, type halmeter & to run it in the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 313 / 1278\n \n background. You can also make halmeter start displaying a specific item immediately, by adding\n \u201dpin|sig|par[am] \u201d to the command line. It will display the pin, signal, or parameter as soon as it starts - if there is no such item, it will simply start normally. And finally, if you\n specify an item to display, you can add -s before the pin|sig|param to tell halmeter to use a small\n window. The item name will be displayed in the title bar instead of under the value, and there will be\n@@ -16956,15 +16956,15 @@\n upper left corner of your screen. For example:\n loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500\n \n See the man page for more options and the section Halmeter.\n \n Figura 5.26: Halmeter selection window\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 314 / 1278\n \n Figura 5.27: Halmeter watch window\n \n 5.13.3. Halshow\n 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\n@@ -16979,15 +16979,15 @@\n (this help)\n --fformat format_string_for_float\n --iformat format_string_for_int\n Notes:\n Create watchfile in halshow using: \u2019File/Save Watch List\u2019.\n LinuxCNC must be running for standalone usage.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 315 / 1278\n \n Figura 5.28: Halshow Watch Tab\n A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens\n \u201dpin+\u201d, \u201dparam+\u201d, \u201dsig=+\u201d followed by the appropriate pin, param, or signal name. The token-name\n pairs are separated by a space character.\n@@ -17000,15 +17000,15 @@\n pin+joint.0.pos-hard-limit\n pin+joint.1.pos-hard-limit\n sig+estop-loop\n \n When loading a watchfile with the File/Load Watch List menu item, the token-name pairs may appear\n as single or multiple lines. Blank lines and lines beginning with a # character are ignored.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 316 / 1278\n \n 5.13.4. Halscope\n Halscope is an oscilloscope for the HAL. It lets you capture the value of pins, signals, and parameters\n as a function of time. Complete operating instructions should be located here eventually. For now,\n refer to section Secci\u00f3n 5.4.6 in the tutorial chapter, which explains the basics.\n@@ -17058,15 +17058,15 @@\n For complete information, see the man page:\n man sim_pin\n \n sim_pin Example (with LinuxCNC running)\n halcmd loadrt mux2 names=example; halcmd net sig_example example.in0\n sim_pin example.sel example.in1 sig_example &\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 317 / 1278\n \n Figura 5.29: sim_pin Window\n \n 5.13.6. Simulate Probe\n simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage:\n@@ -17074,15 +17074,15 @@\n \n Figura 5.30: simulate_probe Window\n \n 5.13.7. HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n Usage:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 318 / 1278\n \n hal-histogram --help | -?\n or\n hal-histogram [Options] [pinname]\n \n@@ -17122,15 +17122,15 @@\n 1. LinuxCNC (or another HAL application) must be running.\n 2. If no pinname is specified, default is: motion-command-handler.time.\n 3. This app may be opened for 5 pins.\n 4. Pintypes float, s32, u32, bit are supported.\n 5. The pin must be associated with a thread supporting floating point For a base thread, this may\n require using loadrt motmod ... base_thread_fp=1 .\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 319 / 1278\n \n Figura 5.31: hal-histogram Window\n \n 5.13.8. Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -17141,15 +17141,15 @@\n 3. Each pin\u2019s component_function, thread, and addf-order.\n 4. Userspace component pins having non-ordered functions.\n 5. Identification of unknown functions for unhandled components.\n 6. Signals with no output.\n 7. Signals with no inputs.\n 8. Functions with no addf.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 320 / 1278\n \n 9. Warning tags for components marked as deprecated/obsolete in docs.\n 10. Real names for pins that use alias names.\n The report can be generated from the command line and directed to an output file (or stdout if no\n outfilename is specified):\n@@ -17226,15 +17226,15 @@\n \n servo-thread 004\n servo-thread 008\n \n In the example above, the HALFILE uses halcmd aliases to simplify pin names for an hostmot2 FPGA\n board with commands like:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 321 / 1278\n \n alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb\n \n nota\n Questionable component function detection may occur for\n@@ -17247,15 +17247,15 @@\n Component pins that cannot be associated with a known thread function report the function as \u201dUnknown\u201d.\n \n halreport generates a connections report (without pin types, and current values) for a running HAL\n application to aid in designing and verifying connections. This helps with the understanding what the\n source of a pin value is. Use this information with applications like halshow, halmeter, halscope or\n the halcmd show command in a terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 322 / 1278\n \n Cap\u00edtulo 6\n \n Hardware Drivers\n 6.1. Parallel Port Driver\n@@ -17288,15 +17288,15 @@\n The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c). The ports are\n numbered starting at zero.\n \n 6.1.1. Loading\n The hal_parport driver is a real time component so it must be loaded into the real time thread with\n loadrt. The configuration string describes the parallel ports to be used, and (optionally) their types. If\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 323 / 1278\n \n the configuration string does not describe at least one port, it is an error.\n loadrt hal_parport cfg=\u201dport [type] [port [type] ...]\u201d\n \n Specifying the Port Numbers below 16 refer to parallel ports detected by the system. This is the\n@@ -17318,15 +17318,15 @@\n 2 to 9 explicitly specified as outputs. Note that you must know the base address of the parallel ports\n to configure the drivers correctly. For ISA bus ports, this is usually not a problem, since the ports\n are almost always at a well-known address, such as 0x278 or 0x378 which are typically configured\n in the BIOS. The addresses of PCI bus cards are usually found with lspci -v in an I/O ports line, or\n in a kernel message after running sudo modprobe -a parport_pc. There is no default address, so if\n does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 324 / 1278\n \n Figura 6.1: Parport block diagram\n Type For each parallel port handled by the hal_parport driver, a type can optionally be specified. The\n type is one of in, out, epp, or x.\n Cuadro 6.1: Parallel Port Direction\n@@ -17386,15 +17386,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 325 / 1278\n \n Cuadro 6.1: (continued)\n Pin\n 14\n 15\n@@ -17457,15 +17457,15 @@\n direction.\n loadrt hal_parport cfg=\u201d0x378 0xc000\u201d\n \n Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their\n settings depending on which slot you put them into, so if you like to \u2019get under the hood\u2019 and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 326 / 1278\n \n 6.1.3. Pins\n parport.

.pin--out (bit) Drives a physical output pin.\n parport.

.pin--in (bit) Tracks a physical input pin.\n parport.

.pin--in-not (bit) Tracks a physical input pin, but inverted.\n@@ -17499,15 +17499,15 @@\n as write. \u2019If \u2019-reset is TRUE, then the reset function will set the pin to the value of -out-invert. This\n can be used in conjunction with stepgen\u2019s doublefreq to produce one step per period. The stepgen\n stepspace for that pin must be set to 0 to enable doublefreq.\n The individual functions are provided for situations where one port needs to be updated in a very fast\n thread, but other ports can be updated in a slower thread to save CPU time. It is probably not a good\n idea to use both an -all function and an individual function at the same time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 327 / 1278\n \n 6.1.6. Common problems\n If loading the module reports\n insmod: error inserting \u2019/home/jepler/emc2/rtlib/hal_parport.ko\u2019:\n -1 Device or resource busy\n@@ -17548,15 +17548,15 @@\n \n Then use of this module will probably be necessary.\n Finally, HAL parport components should be loaded:\n loadrt probe_parport\n loadrt hal_parport ...\n 1 In the LinuxCNC packages for Ubuntu, the file /etc/modprobe.d/emc2 generally prevents parport_pc from being automatically loaded.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 328 / 1278\n \n 6.2. AX5214H Driver\n The Axiom Measurement & Control AX5214H is a 48 channel digital I/O board. It plugs into an ISA\n bus, and resembles a pair of 8255 chips. In fact it may be a pair of 8255 chips, but I\u2019m not sure. If/when\n someone starts a driver for an 8255 they should look at the ax5214 code, much of the work is already\n@@ -17595,15 +17595,15 @@\n module, and FALSE drives it high, turning OFF the OPTO-22 module. If -invert is TRUE, then setting\n the HAL out- pin TRUE will drive the physical pin high and turn the module OFF.\n \n 6.2.4. Functions\n (funct) ax5214..read \u2014 Reads all digital inputs on one board.\n (funct) ax5214..write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 329 / 1278\n \n 6.3. General Mechatronics Driver\n General Mechatronics GM6-PCI card based motion control system\n For detailed description, please refer to the System integration manual.\n The GM6-PCI motion control card is based on an FPGA and a PCI bridge interface ASIC. A small\n@@ -17621,15 +17621,15 @@\n loadrt hal_gm\n \n During loading (or attempted loading) the driver prints some useful debugging messages to the kernel\n log, which can be viewed with dmesg.\n Up to 3 boards may be used in one system.\n The following connectors can be found on the GM6-PCI card:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 330 / 1278\n \n Figura 6.2: GM6-PCI card connectors and LEDs\n \n 6.3.1. I/O connectors\n \n@@ -17665,15 +17665,15 @@\n 2\n IOx/0\n \n Each pin can be configured as digital input or output. GM6-PCI motion control card has 4 general\n purpose I/O (GPIO) connectors, with eight configurable I/O on each. Every GPIO pin and parameter\n name begins as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n gm..gpio.\n \n where is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n gm.0.gpio.0.in-0\n \n@@ -17722,15 +17722,15 @@\n \n 6.3.2. Axis connectors\n \n Figura 6.4: Pin numbering of axis connectors\n \n 331 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 332 / 1278\n \n Cuadro 6.5: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17758,15 +17758,15 @@\n modules to the axis connectors. Seven different system configurations are presented in the System integration manual for evaluating typical applications. Also the detailed description of the Axis modules\n can be found in the System integration manual.\n For evaluating the appropriate servo-drive structure the modules have to be connected as the following\n block diagram shows:\n \n Figura 6.5: Servo axis interfaces\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 333 / 1278\n \n 6.3.2.2. Encoder\n The GM6-PCI motion control card has six encoder modules. Each encoder module has three channels:\n Channel-A\n Channel-B\n@@ -17830,15 +17830,15 @@\n calculate velocity. It greatly reduces\n quantization noise as compared to\n simply differentiating the position\n output. When the measured velocity is\n below min-speed-estimate, the\n velocity output is 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 334 / 1278\n \n Cuadro 6.7: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17913,15 +17913,15 @@\n example, if position-scale is 2000, then\n 1000 counts of the encoder will\n produce a position of 0.5 units.\n \n Setting encoder module of axis 0 to receive 500 CPR quadrature encoder signal and use\n reset to round position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 335 / 1278\n \n setp gm.0.encoder.0.counter-mode 0\n # 0: quad, 1: stepDir\n setp gm.0.encoder.0.index-mode 1\n # 0: reset pos at index, 1:round pos at index\n@@ -17992,15 +17992,15 @@\n \n Parameter description\n When 0, module produces Step/Dir signal.\n When 1, it produces Up/Down step signals.\n And when it is 2, it produces quadrature\n output signals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 336 / 1278\n \n Cuadro 6.9: (continued)\n Parameters\n .control-type\n \n@@ -18057,15 +18057,15 @@\n Minimum time between two step pulses in\n nano-seconds.\n Minimum time between step pulse and\n direction change in nanoseconds.\n \n For evaluating the appropriate values see the timing diagrams below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 337 / 1278\n \n Figura 6.6: Reference signal timing diagrams\n Setting StepGen module of axis 0 to generate 1000 step pulse per position unit\n setp gm.0.stepgen.0.step-type 0\n setp gm.0.stepgen.0.control-type 0\n@@ -18083,15 +18083,15 @@\n # step generator, let interpolator control it.\n setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit\n setp gm.0.stepgen.0.steplen 1000\n # 1000 ns = 1 \u00b5s\n setp gm.0.stepgen.0.stepspace1000\n # 1000 ns = 1 \u00b5s\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n 338 / 1278\n \n # 2000 ns = 2 \u00b5s\n \n@@ -18144,15 +18144,15 @@\n direction\n (bit, In)\n \n Pin description\n Enable DAC output. When enable is\n false, DAC output is 0.0 V.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 339 / 1278\n \n Cuadro 6.11: (continued)\n Pins\n \n Type and\n@@ -18215,15 +18215,15 @@\n gm..can-gm.\n \n where is from 0 to 5. For example, gm.0.can-gm.0.position refers to the output position\n of axis 0 in position units.\n HAL pins are updated by function:\n gm..write\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 340 / 1278\n \n 6.3.3.1. Pins\n Cuadro 6.13: CAN module pins\n Pins\n \n@@ -18269,15 +18269,15 @@\n \n Pin description\n Indicates that watchdog timer is expired.\n \n Watchdog timer overrun causes the set of power-enable to low in hardware.\n 6.3.4.2. Parameters\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 341 / 1278\n \n Cuadro 6.16: Watchdog parameters\n Parameters\n \n Type and\n@@ -18382,15 +18382,15 @@\n 2\n V+\n (Ext.)\n \n The GM6-PCI motion control card has two limit- and one homing switch input for each joint. All the\n names of these pins begin as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 342 / 1278\n \n gm..joint.\n \n where is from 0 to 5. For example, gm.0.joint.0.home-sw-in indicates the state of the\n axis 0 home switch.\n@@ -18446,15 +18446,15 @@\n 6.3.6. Status LEDs\n 6.3.6.1. CAN\n Color: Orange\n Blink, during data communication.\n On, when any of the buffers are full - communication error.\n Off, when no data communication.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 343 / 1278\n \n 6.3.6.2. RS485\n Color: Orange\n Blink, during initialization of modules on the bus\n On, when the data communication is up between all initialized modules.\n@@ -18479,15 +18479,15 @@\n Available module types:\n 8-channel relay output module - gives eight NO-NC relay output on a three pole terminal connector\n for each channel.\n 8-channel digital input module - gives eight optical isolated digital input pins.\n 8 channel ADC and 4-channel DAC module - gives four digital-to-analogue converter outputs and\n eight analogue-to-digital inputs. This module is also optically isolated from the GM6-PCI card.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 344 / 1278\n \n Automatic node recognizing Each node connected to the bus was recognized by the GM6-PCI card\n automatically. During starting LinuxCNC, the driver export pins and parameters of all available modules automatically.\n Fault handling If a module does not answer regularly the GM6-PCI card drops down the module. If\n a module with output do not gets data with correct CRC regularly, the module switch to error state\n@@ -18517,15 +18517,15 @@\n Type and\n direction\n (bit, Out)\n \n Pin description\n Output pin for relay\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 345 / 1278\n \n Cuadro 6.21: Relay output module parameters\n Parameters\n \n Type and\n@@ -18588,15 +18588,15 @@\n # First input of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address\n # Selects node with address 0 on the RS485 bus\n # Selects the first digital input module\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 346 / 1278\n \n 6.3.7.3. DAC & ADC module\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n All the pins and parameters are updated by the following function:\n gm..rs485\n@@ -18668,15 +18668,15 @@\n #\n .adc-0\n \n # First analogue channel of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address \u2190# Selects node with address 0 on the RS485 bus\n # Selects the first analogue input of the module\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 347 / 1278\n \n 6.3.7.4. Teach Pendant module\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n All the pins and parameters are updated by the following function:\n gm..rs485\n@@ -18759,15 +18759,15 @@\n # First analogue channel of the node.\n # Identifies the first GM6-PCI motion control card (PCI card address\n # Selects node with address 0 on the RS485 bus\n # Selects the first analogue input of the module\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 348 / 1278\n \n 6.3.8. Errata\n 6.3.8.1. GM6-PCI card Errata\n The revision number in this section refers to the revision of the GM6-PCI card device.\n Rev. 1.2\n@@ -18800,15 +18800,15 @@\n number you set on the GS2.\n -v or --verbose Turn on debug messages.\n -A or --accel-seconds (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.\n -D or --decel-seconds (default: 0.0) Seconds to decelerate the spindle from max. RPM to 0. If\n set to 0.0 the spindle will be allowed to coast to a stop without controlled deceleration.\n 2 In Europe the equivalent can be found under the brand name Omron.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 349 / 1278\n \n -R or --braking-resistor This argument should be used when a braking resistor is installed on the\n GS2 VFD (see Appendix A of the GS2 manual). It disables deceleration over-voltage stall prevention\n (see GS2 modbus Parameter 6.05), allowing the VFD to keep braking even in situations where the\n motor is regenerating high voltage. The regenerated voltage gets safely dumped into the braking\n@@ -18838,15 +18838,15 @@\n .spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n .status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n .status-2 (s32, out) Drive Status of the VFD (see the GS2 manual)\n nota\n The status value is a sum of all the bits that are on. So a 163 which means the drive is in the run\n mode is the sum of 3 (run) + 32 (freq set by serial) + 128 (operation set by serial).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 350 / 1278\n \n 6.4.3. Parameters\n With being gs2_vfd or the name given during loading with the -n option:\n .error-count (s32, RW)\n .loop-time (float, RW) how often the modbus is polled (default: 0.1)\n@@ -18881,15 +18881,15 @@\n \u2022 4-channel servo plus 8 step/dir generators\n 7I43 (48 I/O pins): using hm2_7i43 module\n \u2022 8-channel servo (8 PWM generators & 8 encoders)\n \u2022 4-channel servo plus 4 step/dir generators\n DB25 FPGA cards The 5I25 Superport FPGA card is preprogrammed when purchased and does not\n need a firmware binary.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 351 / 1278\n \n 6.5.3. Installing Firmware\n Depending on how you installed LinuxCNC you may have to open the Synaptic Package Manager from\n the System menu and install the package for your Mesa card. The quickest way to find them is to do a\n search for hostmot2 in the Synaptic Package Manager. Mark the firmware for installation, then apply.\n@@ -18925,15 +18925,15 @@\n has_bit - (bit i/o) True if the watchdog has bit, False if the watchdog has not bit. If the watchdog has\n bit and the has_bit bit is True, the user can reset it to False to resume operation.\n 6.5.5.2. Parameters\n timeout_ns - (u32 read/write) Watchdog timeout, in nanoseconds. This is initialized to 5,000,000 (5\n milliseconds) at module load time. If more than this amount of time passes between calls to the hm2\n write function, the watchdog will bite.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 352 / 1278\n \n 6.5.6. HostMot2 Functions\n hm2_..read - Read all inputs, update input HAL pins.\n hm2_..write - Write all outputs.\n hm2_..read_gpio - Read the GPIO input pins only. (This function is not\n@@ -18976,15 +18976,15 @@\n [ 1141.053386] hm2/hm2_5i20.0: 72 I/O Pins used:\n [ 1141.053394] hm2/hm2_5i20.0: IO Pin 000 (P2-01): IOPort\n [ 1141.053397] hm2/hm2_5i20.0: IO Pin 001 (P2-03): IOPort\n [ 1141.053401] hm2/hm2_5i20.0: IO Pin 002 (P2-05): Encoder #0, pin B (Input)\n [ 1141.053405] hm2/hm2_5i20.0: IO Pin 003 (P2-07): Encoder #0, pin A (Input)\n [ 1141.053408] hm2/hm2_5i20.0: IO Pin 004 (P2-09): IOPort\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 353 / 1278\n \n [ 1141.053411] hm2/hm2_5i20.0: IO Pin 005 (P2-11): Encoder #0, pin Index (Input)\n [ 1141.053415] hm2/hm2_5i20.0: IO Pin 006 (P2-13): IOPort\n [ 1141.053418] hm2/hm2_5i20.0: IO Pin 007 (P2-15): PWMGen #0, pin Out0 (PWM or Up) (Output)\n [ 1141.053422] hm2/hm2_5i20.0: IO Pin 008 (P2-17): IOPort\n@@ -19021,15 +19021,15 @@\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware- package. There is more information about firmware and configuration in the Configurations section.\n \n 6.5.10. HAL Pins\n The HAL pins for each configuration can be seen by opening up Show HAL Configuration from the\n Machine menu. All the HAL pins and parameters can be found there. The following figure is of the\n 5I20 configuration used above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 354 / 1278\n \n Figura 6.9: 5i20 HAL Pins\n \n 6.5.11. Configurations\n 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\u2019s look\n@@ -19045,15 +19045,15 @@\n 7I47). So in this way we can save two ports (48 bits) for GPIO.\n Here are tables of the firmwares available in the official packages. There may be additional firmwares\n available at the Mesanet.com website that have not yet made it into the LinuxCNC official firmware\n packages, so check there too.\n 3x20 (6-port various) Default Configurations (The 3x20 comes in 1M, 1.5M, and 2M gate versions. So\n far, all firmware is available in all gate sizes.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19266,15 +19266,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19379,15 +19379,15 @@\n in - (Bit, Out) Normal state of the hardware input pin. Both full GPIO pins and I/O pins used as inputs\n by active module instances have this pin.\n in_not - (Bit, Out) Inverted state of the hardware input pin. Both full GPIO pins and I/O pins used as\n inputs by active module instances have this pin.\n out - (Bit, In) Value to be written (possibly inverted) to the hardware output pin. Only full GPIO pins\n have this pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 357 / 1278\n \n 6.5.12.2. Parameters\n invert_output - (Bit, RW) This parameter only has an effect if the is_output parameter is true. If this\n parameter is true, the output value of the GPIO will be the inverse of the value on the out HAL pin.\n Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter.\n@@ -19424,15 +19424,15 @@\n position-cmd - (Float, In) Target position of stepper motion, in user-defined position units.\n position-fb - (Float, Out) Feedback position in user-defined position units (counts / position_scale).\n velocity-cmd - (Float, In) Target velocity of stepper motion, in user-defined position units per second.\n This pin is only used when the stepgen is in velocity control mode (control-type=1).\n velocity-fb - (Float, Out) Feedback velocity in user-defined position units per second.\n 3 At present, the firmware supports multi-phase stepper outputs, but the driver doesn\u2019t. Interested volunteers are solicited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 358 / 1278\n \n 6.5.13.2. Parameters\n dirhold - (u32, RW) Minimum duration of stable Direction signal after a step ends, in nanoseconds.\n dirsetup - (u32, RW) Minimum duration of stable Direction signal before a step begins, in nanoseconds.\n maxaccel - (Float, RW) Maximum acceleration, in position units per second per second. If set to 0,\n@@ -19467,15 +19467,15 @@\n The function of the Out0 and Out1 I/O pins varies with output-type parameter (see below).\n The hm2 pwmgen representation is similar to the software pwmgen component. Each pwmgen instance has the following pins and parameters:\n 6.5.14.1. Pins\n enable - (Bit, In) If true, the pwmgen will set its Not-Enable pin false and output its pulses. If enable\n is false, pwmgen will set its Not-Enable pin true and not output any signals.\n value - (Float, In) The current pwmgen command value, in arbitrary units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 359 / 1278\n \n 6.5.14.2. Parameters\n output-type - (s32, RW) This emulates the output_type load-time argument to the software pwmgen\n component. This parameter may be changed at runtime, but most of the time you probably want\n to set it at startup and then leave it alone. Accepted values are 1 (PWM on Out0 and Direction on\n@@ -19517,15 +19517,15 @@\n the resulting value on the I/O pin is available on the in and in_not pins. Only full GPIO pins and\n I/O pins used as outputs by active module instances have this parameter.\n \n 6.5.15. Encoder\n Encoders have names like hm2_..encoder... Instance is a twodigit number that corresponds to the HostMot2 encoder instance number. There are num_encoders\n instances, starting with 00.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 360 / 1278\n \n Each encoder uses three or four input I/O pins, depending on how the firmware was compiled. Threepin encoders use A, B, and Index (sometimes also known as Z). Four-pin encoders use A, B, Index, and\n Index-mask.\n The hm2 encoder representation is similar to the one described by the Canonical Device Interface\n (in the HAL General Reference document), and to the software encoder component. Each encoder\n@@ -19563,15 +19563,15 @@\n vel-timeout - (Float, RW) When the encoder is moving slower than one pulse for each time that\n the driver reads the count from the FPGA (in the hm2_read() function), the velocity is harder to\n estimate. The driver can wait several iterations for the next pulse to arrive, all the while reporting\n the upper bound of the encoder velocity, which can be accurately guessed. This parameter specifies\n how long to wait for the next pulse, before reporting the encoder stopped. This parameter is in\n seconds.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 361 / 1278\n \n 6.5.16. 5I25 Configuration\n 6.5.16.1. Firmware\n The 5I25 firmware comes preloaded for the daughter card it is purchased with. So the firmware=xxx.BIT\n is not part of the hm2_pci configuration string when using a 5I25.\n@@ -19605,15 +19605,15 @@\n maxlimit: +10\n maxfullscale: 10\n If you wanted to say scale the analog out of a channel to IPS for a velocity mode servo (say 24 IPS\n max) you could set the limits like this:\n minlimit: -24\n maxlimit: +24\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 362 / 1278\n \n maxfullscale: 24\n If you wanted to scale the analog out of a channel to RPM for a 0 to 6000 RPM spindle with 0-10 V\n control you could set the limits like this:\n minlimit: 0\n@@ -19645,15 +19645,15 @@\n to facilitate the low level protocol debug.\n You have more than one device to connect. MB2HAL is very efficiently managing multiple devices,\n transactions and links. Currently I am monitoring two axis drivers using a Rs232 port, a VFD driver\n using another Rs232 port, and a remote I/O using TCP/IP.\n You want a protocol to connect your Arduino to HAL. Look the included sample configuration file,\n sketch and library for Arduino Modbus.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 363 / 1278\n \n 6.6.2. Usage\n a. Create a config file from the example below\n 1. Set component name (optional)\n Set HAL_MODULE_NAME=mymodule (default HAL_MODULE_NAME=mb2hal)\n@@ -19733,15 +19733,15 @@\n The serial port. For example \u201d/dev/ttyS0\u201d. Ignored if\n LINK_TYPE=serial\n LINK_TYPE=tcp.\n SERIAL_BAUD Integer If\n The baud rate. Ignored if LINK_TYPE=tcp.\n LINK_TYPE=serial\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 364 / 1278\n \n Value\n Type\n Required\n Description\n@@ -19834,15 +19834,15 @@\n parameter above.\n \n 6.6.3.3. Error codes\n While debugging transactions, note the returned \u201dret[]\u201d value correspond to:\n Modbus protocol exceptions:\n 0x01 - ILLEGAL_FUNCTION - the FUNCTION code received in the query is not allowed or invalid.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 365 / 1278\n \n 0x02 - ILLEGAL_DATA_ADDRESS - the DATA ADDRESS received in the query is not an allowable\n address for the slave or is invalid.\n 0x03 - ILLEGAL_DATA_VALUE - a VALUE contained in the data query field is not an allowable value\n or is invalid.\n@@ -19878,15 +19878,15 @@\n # ++++++++++++++++++++++++\n [MB2HAL_INIT]\n #OPTIONAL: Debug level of init and INI file parsing.\n # 0 = silent.\n # 1 = error messages (default).\n # 2 = OK confirmation messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 366 / 1278\n \n # 3 = debugging messages.\n # 4 = maximum debugging messages (only in transactions).\n INIT_DEBUG=3\n #OPTIONAL: Set to 1.1 to enable the new functions:\n@@ -19931,15 +19931,15 @@\n SERIAL_BAUD=115200\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n #if LINK_TYPE=tcp then IGNORED\n #Data bits. One of 5,6,7,8.\n SERIAL_BITS=8\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 367 / 1278\n \n #if LINK_TYPE=tcp then IGNORED\n #Data parity. One of: even, odd, none.\n SERIAL_PARITY=none\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n@@ -20023,15 +20023,15 @@\n #\n Both pin values are added and limited to 65535 (UINT16_MAX). Normally use one and let \u2190the other open (read as 0).\n # fnct_15_write_multiple_coils:\n #\n mb2hal.m.n.bit\n (input)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 368 / 1278\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20094,15 +20094,15 @@\n -0x07 Unsuccessful programming request using function code 13 or \u219014.\n #MEMORY_PARITY_ERROR\n -0x08 SLAVE parity error in MEMORY.\n #GATEWAY_PROBLEM_PATH\n -0x0A (-10) Gateway path(s) not available.\n #GATEWAY_PROBLEM_TARGET -0x0B (-11) The target device failed to repond (generated by \u2190master, not slave).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20159,15 +20159,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 369 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 370 / 1278\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20200,15 +20200,15 @@\n 6.6.5.3. fnct_03_read_holding_registers\n mb2hal.m.n.float float out\n mb2hal.m.n.int s32 out\n 6.6.5.4. fnct_04_read_input_registers\n mb2hal.m.n.float float out\n mb2hal.m.n.int s32 out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 371 / 1278\n \n 6.6.5.5. fnct_05_write_single_coil\n mb2hal.m.n.bit bit in\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.\n 6.6.5.6. fnct_06_write_single_register\n@@ -20239,15 +20239,15 @@\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n \n The above command says:\n loadusr, wait for coolant pins to be ready, component mitsub_vfd, with 2 slaves named spindle (slave\n #2) and coolant (slave #1)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 372 / 1278\n \n 6.7.1. Command Line Options\n The command line options are:\n -b or --baud : set the baud rate - all networked VFDs must be the same\n -p or --port : sets the port to use such as /dev/ttyUSB0\n@@ -20273,15 +20273,15 @@\n .scale-fb (float, in) Scales the motor-fb pin to arbitrary units. default 1 = Hertz.\n .scale-amps (float, in) Scales the motor-amps pin to arbitrary units. default 1 = amps.\n .scale-power (float, in) Scales the motor-power pin to arbitrary units. default 1 = .\n .estop (bit, in) puts the VFD into emergency-stopped status.\n .status-bit-N (bit, out) N = 0 to 7, Status bits are user configurable on the VFD. bit 3 should be\n set to at speed and bit 7 should be set to alarm. others are free to be set as required.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6.7.3. HAL example\n #\n # example usage of the Mitsubishi VFD driver\n #\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n # **************** Spindle VFD setup slave 2 *********************\n@@ -20340,15 +20340,15 @@\n One must power cycle the VFD for some of these to register eg PR 79\n PR 77 set to 1 -to unlock other PR modification.\n PR 79 set to 1 or 0 -for communication thru serial.\n PR 117 set to 0-31 -slave number, driver must reference same number.\n \n 373 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 374 / 1278\n \n PR 118 tested with 96 -baud rate (can be set to 48,96,192) if driver is also set.\n PR 119 set to 0 -stop bit/data length (8 bits, two stop)\n PR 120 set to 0 -no parity\n PR 121 set to 1-10 -if 10 (maximuim) COM errors then VFD faults.\n@@ -20383,15 +20383,15 @@\n (bit) motenc..enc--reset-count - If this pin is true, the counter will immediately\n be reset to zero, and the pin will be cleared.\n (float) motenc..dac--value - Analog output value for DAC (in user units, see -gain\n and -offset)\n (float) motenc..adc--value - Analog input value read by ADC (in user units, see\n -gain and -offset)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 375 / 1278\n \n (bit) motenc..in- - State of digital input pin, see canonical digital input.\n (bit) motenc..in--not - Inverted state of digital input pin, see canonical digital\n input.\n (bit) motenc..out- - Value to be written to digital output, seen canonical digital\n@@ -20437,15 +20437,15 @@\n (funct) motenc..encoder-read - Reads all encoder counters.\n (funct) motenc..adc-read - Reads the analog-to-digital converters.\n (funct) motenc..digital-in-read - Reads digital inputs.\n (funct) motenc..dac-write - Writes the voltages to the DACs.\n (funct) motenc..digital-out-write - Writes digital outputs.\n (funct) motenc..misc-update - Updates misc stuff.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 376 / 1278\n \n 6.9. Opto22 Driver\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n 6.9.1. The Adapter Card\n@@ -20480,15 +20480,15 @@\n signal to this pin to write to an I/O point of the card. The PINNUMBER represents the position in\n the relay rack.Eg. PINNUMBER 23 is position 23 in a Opto22 relay rack and would be pin 1 on the\n 50 pin header connector.\n opto_ac5.[BOARDNUMBER].led[NUMBER] OUT bit - Turns one of the 4 onboard LEDs on/off. LEDs\n are numbered 0 to 3.\n BOARDNUMBER can be 0-3 PORTNUMBER can be 0 or 1. Port 0 is closest to the card bracket.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 377 / 1278\n \n 6.9.4. Parameters\n opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit - When TRUE,\n invert the meaning of the corresponding -out pin so that TRUE gives LOW and FALSE gives HIGH.\n \n@@ -20525,15 +20525,15 @@\n 24 bits represented in a BINARY number. Bit 1 is the rightmost number:\n 16 zeros for the 16 inputs and 8 ones for the 8 outputs\n 000000000000000011111111\n \n This converts to FF on the calculator, so 0xff is the number to use for portconfig0 and/or portconfig1\n when loading the driver.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 378 / 1278\n \n 6.9.7. Pin Numbering\n HAL pin 00 corresponds to bit 1 (the rightmost) which represents position 0 on an Opto22 relay rack.\n HAL pin 01 corresponds to bit 2 (one spot to the left of the rightmost) which represents position 1 on\n an Opto22 relay rack. HAL pin 23 corresponds to bit 24 (the leftmost) which represents position 23\n@@ -20576,15 +20576,15 @@\n Alternatively, the 8 digital output pins can be used as additional digital outputs, it works the same\n way as above with the syntax : extradout=0xnn\u2019. The extradac and extradout options are mutually\n exclusive on each board, you can only specify one.\n 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\n term response. The syntax is : timestamp=0xnn[,0xmm], this works the same way as above to select\n which board is being configured. Default is to not enable the timestamp option. If you put this option\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 379 / 1278\n \n on the command line, it enables the option. The first n selects the EPP bus, the second one matches\n the address of the board having the option enabled. The driver checks the revision level of the board\n to make sure it has firmware supporting the feature, and produces an error message if the board does\n not support it.\n@@ -20625,15 +20625,15 @@\n timestamp=0x00 option.\n (All float output) ppmc..encoder..position - Encoder position, in user units.\n (All bit bidir) ppmc..encoder..index-enable - Connect to joint.#.index-enable for\n home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware\n to reset the count to zero on the next encoder index pulse. The driver will detect this and set the\n signal back to false.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 380 / 1278\n \n (PPMC float output) ppmc..DAC..value - sends a signed value to the 16-bit Digital\n to Analog Converter on the PPMC DAC16 board commanding the analog output voltage of that DAC\n channel.\n (UPC bit input) ppmc..pwm..enable - Enables a PWM generator.\n@@ -20672,15 +20672,15 @@\n an output value equal to the 1/scale value will produce an output of + or - value Volts. So, if the\n scale parameter is 0.1 and you send a value of 0.5, the output will be 5.0 Volts.\n (UPC float) ppmc..pwm..scale - Scaling for PWM generator. If scale is X, then the\n duty cycle will be 100 % when the value pin is X (or -X).\n (UPC float) ppmc..pwm..max-dc - Maximum duty cycle, from 0.0 to 1.0.\n (UPC float) ppmc..pwm..min-dc - Minimum duty cycle, from 0.0 to 1.0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 381 / 1278\n \n (UPC float) ppmc..pwm..duty-cycle - Actual duty cycle (used mostly for troubleshooting.)\n (UPC bit) ppmc..pwm..bootstrap - If true, the PWM generator will generate a\n short sequence of pulses of both polarities when E-stop goes false, to reset the shutdown latches\n on some PWM servo drives.\n@@ -20714,15 +20714,15 @@\n These writes are organized into blocks of contiguous registers to be written in a block to minimize\n CPU overhead.\n \n 6.11. Pluto P Driver\n 6.11.1. General Info\n The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 382 / 1278\n \n 6.11.1.1. Requirements\n 1. A Pluto-P board\n 2. An EPP-compatible parallel port, configured for EPP mode in the system BIOS or a PCI EPP\n compatible parallel port card.\n@@ -20758,15 +20758,15 @@\n isolation and protection. Traditional parallel port optoisolator boards do not work with pluto_servo\n due to the bidirectional nature of the EPP protocol.\n 6.11.1.4. LED\n When the device is unprogrammed, the LED glows faintly. When the device is programmed, the LED\n glows according to the duty cycle of PWM0 (LED = UP0 xor DOWN0) or STEPGEN0 (LED = STEP0\n xor DIR0).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 383 / 1278\n \n 6.11.1.5. Power\n 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\n these VCC pins. The required current is not yet known, but is probably around 50mA plus I/O current.\n The regulator on the Pluto-P board is a low-dropout type. Supplying 5V at the power jack will allow\n@@ -20797,15 +20797,15 @@\n 18 digital outputs: 10 dedicated, 8 shared with PWM functions. (Example: A lathe with unidirectional\n PWM spindle control may use 13 total digital outputs)\n 20 digital inputs: 8 dedicated, 12 shared with Quadrature functions. (Example: A lathe with index\n pulse only on the spindle may use 13 total digital inputs.)\n EPP communication with the PC. The EPP communication typically takes around 100 \u00b5s on machines\n tested so far, enabling servo rates above 1 kHz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 384 / 1278\n \n 6.11.2.1. Pinout\n UPx - The up (up/down mode) or pwm (pwm+direction mode) signal from PWM generator X. May be\n used as a digital output if the corresponding PWM channel is unused, or the output on the channel\n is always negative. The corresponding digital output invert may be set to TRUE to make UPx active\n@@ -20835,15 +20835,15 @@\n \n Behavior if both\n functions used\n When pwm-0-pwmdir is\n TRUE, this pin is the PWM\n output\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 385 / 1278\n \n Cuadro 6.27: (continued)\n Primary function\n \n Alternate Function\n@@ -20955,15 +20955,15 @@\n Read same value\n \n 6.11.2.2. Input latching and output updating\n PWM duty cycles for each channel are updated at different times.\n 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.\n Digital inputs IN0 through IN19 are all latched at the same time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 386 / 1278\n \n Quadrature positions for each channel are latched at different times.\n 6.11.2.3. HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n page, pluto_servo.9.\n@@ -20990,15 +20990,15 @@\n OUTx - Dedicated digital output #x\n GND - Ground\n VCC - +3.3V regulated DC\n While the extended main connector has a superset of signals usually found on a Step & Direction DB25\n connector\u20144 step generators, 9 inputs, and 6 general-purpose outputs\u2014the layout on this header is\n different than the layout of a standard 26-pin ribbon cable to DB25 connector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 387 / 1278\n \n Figura 6.11: Pluto-Step Pinout\n \n 6.11.3.2. Input latching and output updating\n Step frequencies for each channel are updated at different times.\n@@ -21007,15 +21007,15 @@\n Feedback positions for each channel are latched at different times.\n 6.11.3.3. Step Waveform Timings\n The firmware and driver enforce step length, space, and direction change times. Timings are rounded\n up to the next multiple of 1.6\u03bcs, with a maximum of 49.6\u03bcs. The timings are the same as for the software stepgen component, except that dirhold and dirsetup have been merged into a single parameter\n dirtime which should be the maximum of the two, and that the same step timings are always applied\n to all channels.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 388 / 1278\n \n Figura 6.12: Pluto-Step Timings\n \n 6.11.3.4. HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n@@ -21032,15 +21032,15 @@\n \n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn pmx485 pmx485 /dev/ttyUSB0\n \n This will load the pmx485 component using the /dev/ttyUSB0 port and wait for it to become ready.\n It is necessary to name the port to use for communications.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 389 / 1278\n \n 6.12.1. Pins\n pmx485.mode-set (bit, in) # set cutting mode\n pmx485.current-set (bit, in) # set cutting current\n pmx485.pressure-set (bit, in) # set gas pressure\n@@ -21071,15 +21071,15 @@\n Disconnect the Powermax power supply from its power source for approximately 30 seconds. When\n you power the system back ON, it will no longer be in remote mode.\n \n 6.12.3. Reference:\n Hypertherm Application Note #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serial Communication Protocol\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 390 / 1278\n \n 6.13. Servo To Go Driver\n The Servo-To-Go (STG) is one of the first PC motion control cards supported by LinuxCNC. It is an\n ISA card and it exists in different flavors (all supported by this driver). The board includes up to 8\n channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, an\n@@ -21119,15 +21119,15 @@\n 6.13.2. Pins\n stg..counts - (s32) Tracks the counted encoder ticks.\n stg..position - (float) Outputs a converted position.\n stg..dac-value - (float) Drives the voltage for the corresponding DAC.\n stg..adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n stg.in- - (bit) Tracks a physical input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 391 / 1278\n \n stg.in--not - (bit) Tracks a physical input pin, but inverted.\n stg.out- - (bit) Drives a physical output pin\n For each pin, is the axis number, and is the logic pin number of the STG if\n IIOO is defined, there are 16 input pins (in-00 .. in-15) and 16 output pins (out-00 .. out-15), and they\n@@ -21161,15 +21161,15 @@\n and ShuttlePRO2 devices with LinuxCNC\u2019s HAL.\n If the driver is started without command-line arguments, it will probe all /dev/hidraw* device files for\n Shuttle devices, and use all devices found. If it is started with command-line arguments, it will only\n probe the devices specified.\n The ShuttleXpress has five momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 392 / 1278\n \n The ShuttlePRO has 13 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n The ShuttlePRO2 has 15 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n@@ -21207,15 +21207,15 @@\n .spring-wheel-s32 (s32 out)\n The current deflection of the spring-wheel (the outer wheel). It\u2019s 0 at rest, and ranges from -7 at\n the counter-clockwise extreme to +7 at the clockwise extreme.\n .spring-wheel-f (float out)\n The current deflection of the spring-wheel (the outer wheel). It\u2019s 0.0 at rest, -1.0 at the counterclockwise extreme, and +1.0 at the clockwise extreme. The Shuttle devices report the springwheel position as an integer from -7 to +7, so this pin reports only 15 discrete values in it\u2019s\n range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 393 / 1278\n \n 6.15. VFS11 VFD Driver\n This is a userspace HAL program to control the S11 series of VFD\u2019s from Toshiba.\n vfs11_vfd supports serial and TCP connections. Serial connections may be RS232 or RS485. RS485 is\n 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\n@@ -21249,15 +21249,15 @@\n in registers F500 and F501 respectively. Used in PID loops to choose shorter ramp times to avoid\n oscillation.\n .alarm-code (s32, out) non-zero if drive is in alarmed state. Bitmap describing alarm information\n (see register FC91 description). Use err-reset (see below) to clear the alarm.\n .at-speed (bit, out) when drive is at commanded speed (see speed-tolerance below)\n .current-load-percentage (float, out) reported from the VFD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 394 / 1278\n \n .dc-brake (bit, in) engage the DC brake. Also turns off spindle-on.\n .enable (bit, in) enable the VFD. If false, all operating parameters are still read but control is\n released and panel control is enabled (subject to VFD setup).\n .err-reset (bit, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may\n@@ -21294,15 +21294,15 @@\n .status (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function\n Instruction Manual, register FD01). A bitmap.\n .trip-code (s32, out) trip code if VF-S11 is in tripped state.\n .error-count (s32, out) number of Modbus transactions which returned an error\n .max-speed (bit, in) ignore the loop-time parameter and run Modbus at maximum speed, at the\n expense of higher CPU usage. Suggested use during spindle positioning.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 395 / 1278\n \n 6.15.3. Parameters\n Where is vfs11_vfd or the name given during loading with the -n option.\n .frequency-limit (float, RO) upper limit read from VFD setup.\n .loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n@@ -21338,15 +21338,15 @@\n # 1 2\n STOPBITS=1\n #rs232 rs485\n SERIAL_MODE=rs485\n # up down none\n # this feature might not work with a stock Ubuntu\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # libmodbus5/libmodbus-dev package, and generate a warning\n # execution will continue as if RTS_MODE=up were given.\n RTS_MODE=up\n #--------------------# modbus timers in seconds\n # inter-character timer\n BYTE_TIMEOUT=0.5\n@@ -21385,15 +21385,15 @@\n # see orient.9 and motion.9\n net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode\n # take precedence over control panel\n setp spindle-vfd.enable 1\n \n 396 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 397 / 1278\n \n 6.15.6. Panel operation\n 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\n be set, but will not be written to the VFD untile the enable pin is set. Operating parameters are still\n read while bus control is disabled. Exiting the vfs11_vfd driver in a controlled way will release the\n@@ -21426,30 +21426,30 @@\n protocol. So the last parameter which you\u2019d want to change is the protocol - set from Toshiba Inverter\n Protocol to Modbus; thereafter, the Windows app is useless.\n To increase the upper frequency limit, the UL and FH parameters must be changed on the panel. I\n increased them from 50 to 80.\n See dump-params.mio for a description of non-standard VF-S11 parameters of my setup. This file is\n for the modio Modbus interactive utility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 398 / 1278\n \n 6.15.9. Programming Note\n The vfs11_vfd driver uses the libmodbus version 3 library which is more recent than the version 2\n code used in gs2_vfd.\n The Ubuntu libmodbus5 and libmodbus-dev packages are only available starting from Ubuntu 12\n (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\n the INI file.\n To use the full functionality on lucid and precise:\n remove the libmodbus packages: sudo apt-get remove libmodbus5 libmodbus-dev\n build and install libmodbus version 3 from source as outlined here.\n Libmodbus does not build on Ubuntu Hardy, hence vfs11_vfd is not available on Hardy.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 399 / 1278\n \n Cap\u00edtulo 7\n \n Hardware Examples\n 7.1. PCI Parallel Port\n@@ -21480,15 +21480,15 @@\n and then added the following lines so the parport will be read and written:\n addf parport.1.read base-thread\n addf parport.1.write base-thread\n \n After doing the above then run your config and verify that the parallel port got loaded in Machine/Show\n HAL Configuration window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 400 / 1278\n \n 7.2. Spindle Control\n LinuxCNC can control up to 8 spindles. The number is set in the INI file. The examples below all refer\n to a single-spindle config with spindle control pins with names like spindle.0... In the case of a multiple\n spindle machine all that changes is that additional pins exist with names such as spindle.6...\n@@ -21524,15 +21524,15 @@\n \n 7.2.3. Spindle Enable\n If you need a spindle enable signal, link your output pin to spindle.0.on. To link these pins to a parallel\n port pin put something like the following in your .hal file, making sure you pick the pin that is connected\n to your control device.\n net spindle-enable spindle.0.on => parport.0.pin-14-out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 401 / 1278\n \n 7.2.4. Spindle Direction\n If you have direction control of your spindle, then the HAL pins spindle.N.forward and spindle.N.reverse\n are controlled by the G-codes M3 and M4. Spindle speed Sn must be set to a positive non-zero value\n for M3/M4 to turn on spindle motion.\n@@ -21574,15 +21574,15 @@\n # the output of spindle ramp is sent to the scale in\n net spindle-ramped <= spindle-ramp.out => scale.0.in\n # to know when to start the motion we send the near component\n # (named spindle-at-speed) to the spindle commanded speed from\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 402 / 1278\n \n # the signal spindle-cmd and the actual spindle speed\n # provided your spindle can accelerate at the maxv setting.\n net spindle-cmd => spindle-at-speed.in1\n net spindle-ramped => spindle-at-speed.in2\n@@ -21622,15 +21622,15 @@\n 1 In this example, we will assume that some encoders have already been issued to axes/joints 0, 1, and 2. So the next encoder\n available for us to attach to the spindle would be number 3. Your situation may differ.\n 2 The HAL encoder index-enable is an exception to the rule in that it behaves as both an input and an output, see the Encoder\n Section for details\n 3 It is because we selected non-quadrature simple counting\u2026 above that we can get away with quadrature counting without\n having any B quadrature input.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 403 / 1278\n \n 7.2.6.2. Spindle At Speed\n 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\n this you need spindle feedback from an encoder. Since the feedback and the commanded speed are\n not usually exactly the same you should to use the near component to determine that the two numbers\n@@ -21669,15 +21669,15 @@\n loadrt encoder num_chan=1\n loadrt mux4 count=1\n addf encoder.capture-position servo-thread\n addf encoder.update-counters base-thread\n addf mux4.0 servo-thread\n # If your MPG outputs a quadrature signal per click set x4 to 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 404 / 1278\n \n # If your MPG puts out 1 pulse per click set x4 to 0\n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n@@ -21724,15 +21724,15 @@\n loadrt ilowpass\n addf ilowpass.0 servo-thread\n setp ilowpass.0.scale 1000\n setp ilowpass.0.gain 0.01\n # If your MPG outputs a quadrature signal per click set x4 to 1\n # If your MPG puts out 1 pulse per click set x4 to 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 405 / 1278\n \n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n # even if that means the commanded motion is not completed,\n@@ -21775,15 +21775,15 @@\n 7.4.1. Example\n This example shows the connections needed to use an Automation Direct GS2 VFD to drive a spindle.\n The spindle speed and direction is controlled by LinuxCNC.\n Using the GS2 component involves very little to set up. We start with a StepConf Wizard generated\n config. Make sure the pins with \u201dSpindle CW\u201d and \u201dSpindle PWM\u201d are set to unused in the parallel\n port setup screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 406 / 1278\n \n In the custom.hal file we place the following to connect LinuxCNC to the GS2 and have LinuxCNC\n control the drive.\n GS2 Example\n # load the user space component for the Automation Direct GS2 VFD\u2019s\n@@ -21812,15 +21812,15 @@\n P4.00 (Source of Frequency Command) must be set to Frequency determined by RS232C/RS485\n communication interface, 05.\n P9.01 (Transmission Speed) must be set to 9600 baud, 01.\n P9.02 (Communication Protocol) must be set to \u201dModbus RTU mode, 8 data bits, no parity, 2 stop\n bits\u201d, 03.\n A PyVCP panel based on this example is here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 407 / 1278\n \n Cap\u00edtulo 8\n \n ClassicLadder\n 8.1. ClassicLadder Introduction\n@@ -21850,15 +21850,15 @@\n along the top and bottom of the page while the rungs are drawn vertically from left to right.\n A program in ladder logic, also called a ladder diagram, is similar to a schematic for a set of relay\n circuits. Ladder logic is useful because a wide variety of engineers and technicians can understand\n and use it without much additional training because of the resemblance.\n Ladder logic is widely used to program PLCs, where sequential control of a process or manufacturing\n operation is required. Ladder logic is useful for simple but critical control systems, or for reworking\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 408 / 1278\n \n old hardwired relay circuits. As programmable logic controllers became more sophisticated it has also\n been used in very complex automation systems.\n Ladder logic can be thought of as a rule-based language, rather than a procedural language. A rung in\n the ladder represents a rule. When implemented with relays and other electromechanical devices, the\n@@ -21888,15 +21888,15 @@\n \n The input on the left, B0, a normally open contact, is connected to the coil (output) on the right, Q0.\n Now imagine a voltage gets applied to the leftmost end, because the input B0 turns true (e.g. the\n input is activated, or the user pushed the NO contact). The voltage has a direct path to reach the coil\n (output) on the right, Q0. As a consequence, the Q0 coil (output) will turn from 0/off/false to 1/on/true.\n If the user releases B0, the Q0 output quickly returns to 0/off/false.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 409 / 1278\n \n 8.1.4. Basic Latching On-Off Circuit\n Building on the above example, suppose we add a switch that closes whenever the coil Q0 is active.\n This would be the case in a relay, where the coil can activate the switch contacts; or in a contactor,\n where there are often several small auxiliary contacts in addition to the large 3-phase contacts that\n@@ -21928,15 +21928,15 @@\n back on.\n 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\n also a very safe circuit, in that if start and stop are both pressed at the same time, the stop function\n always wins.\n This is the basic building block of much of ladder programming, so if you are new to it, you would do\n well to make sure that you understand how this circuit operates.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 410 / 1278\n \n 8.2. ClassicLadder Programming\n 8.2.1. Ladder Concepts\n ClassicLadder is a type of programming language originally implemented on industrial PLCs (it\u2019s\n called Ladder Programming). It is based on the concept of relay contacts and coils, and can be used to\n@@ -21965,15 +21965,15 @@\n 8.2.3.1. Files\n Typically ClassicLadder components are placed in the custom.hal file if your working from a Stepconf\n generated configuration. These must not be placed in the custom_postgui.hal file or the Ladder Editor\n menu will be grayed out.\n nota\n Ladder files (.clp) must not contain any blank spaces in the name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 411 / 1278\n \n 8.2.3.2. Realtime Module\n Loading the ClassicLadder real time module (classicladder_rt) is possible from a HAL file, or directly\n using a halcmd instruction. The first line loads real time the ClassicLadder module. The second line\n adds the function classicladder.0.refresh to the servo thread. This line makes ClassicLadder update\n@@ -22052,15 +22052,15 @@\n \n Objects of most interest are numPhysInputs, numPhysOutputs, numS32in, and numS32out.\n Changing these numbers will change the number of HAL bit pins available. numPhysInputs and\n numPhysOutputs control how many HAL bit (on/off) pins are available. numS32in and numS32out\n control how many HAL signed integers (+- integer range) pins are available.\n For example (you don\u2019t need all of these to change just a few):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 412 / 1278\n \n loadrt classicladder_rt numRungs=12 numBits=100 numWords=10\n numTimers=10 numMonostables=10 numCounters=10 numPhysInputs=10\n numPhysOutputs=10 numArithmExpr=100 numSections=4 numSymbols=200\n numS32in=5 numS32out=5\n@@ -22094,29 +22094,29 @@\n If you first load ladder program with the --nogui option then load ClassicLadder again with no options\n the GUI will display the last loaded ladder program.\n In AXIS you can load the GUI from File/Ladder Editor\u2026\n \n 8.2.5. ClassicLadder GUI\n If you load ClassicLadder with the GUI it will display two windows: section display, and section manager.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 413 / 1278\n \n 8.2.5.1. Sections Manager\n When you first start up ClassicLadder you get an empty Sections Manager window.\n \n Figura 8.1: Sections Manager Default Window\n This window allows you to name, create or delete sections and choose what language that section\n uses. This is also how you name a subroutine for call coils.\n 8.2.5.2. Section Display\n When you first start up ClassicLadder you get an empty Section Display window. Displayed is one\n empty rung.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 414 / 1278\n \n Figura 8.2: Section Display Default Window\n Most of the buttons are self explanatory:\n The Vars button is for looking at variables, toggle it to display one, the other, both, then none of the\n windows.\n@@ -22134,15 +22134,15 @@\n and the first %W (in an equation) You might see some funny labels, such as (103) in the rungs. This is\n displayed (on purpose) because of an old bug- when erasing elements older versions sometimes didn\u2019t\n erase the object with the right code. You might have noticed that the long horizontal connection button\n sometimes didn\u2019t work in the older versions. This was because it looked for the free code but found\n something else. The number in the brackets is the unrecognized code. The ladder program will still\n work properly, to fix it erase the codes with the editor and save the program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 415 / 1278\n \n 8.2.5.3. The Variable Windows\n 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\n other, both, then none of the variable windows.\n \n@@ -22153,27 +22153,27 @@\n at the top allow you to select what 15 variables will be displayed in each column. For instance, if the %B\n Variable column were 15 entries high, and you entered 5 at the top of the column, variables %B5\n to %B19 would be displayed. The check boxes allow you to set and unset %B variables manually as\n long as the ladder program isn\u2019t setting them as outputs. Any Bits that are set as outputs by the\n program when ClassicLadder is running can not be changed and will be displayed as checked if on\n and unchecked if off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 416 / 1278\n \n Figura 8.4: Watch Window\n The Watch Window displays variable status. The edit box beside it is the number stored in the variable\n and the drop-down box beside that allow you to choose whether the number to be displayed in hex,\n decimal or binary. If there are symbol names defined in the symbols window for the word variables\n showing and the display symbols checkbox is checked in the section display window, symbol names\n 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\n checked) over an existing variable number/name and press the Enter Key.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 417 / 1278\n \n 8.2.5.4. Symbol Window\n \n Figura 8.5: Symbol Names window\n This is a list of symbol names to use instead of variable names to be displayed in the section window\n@@ -22181,30 +22181,30 @@\n and capital letters), symbol name . If the variable can have a HAL signal connected to it ( %I, %Q,\n and %W-if you have loaded s32 pin with the real time module) then the comment section will show the\n current HAL signal name or lack thereof. Symbol names should be kept short to display better. Keep\n in mind that you can display the longer HAL signal names of %I, %Q and %W variable by clicking on\n them in the section window. Between the two, one should be able to keep track of what the ladder\n program is connected to!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8.2.5.5. The Editor window\n \n Figura 8.6: Editor Window\n Add - adds a rung after the selected rung\n Insert - inserts a rung before the selected rung\n Delete - deletes the selected rung\n Modify - opens the selected rung for editing\n Starting from the top left image:\n Object Selector, Eraser\n N.O. Input, N.C. Input, Rising Edge Input , Falling Edge Input\n \n 418 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 419 / 1278\n \n Horizontal Connection, Vertical Connection , Long Horizontal Connection\n Timer IEC Block, Counter Block, Compare Variable\n Old Timer Block, Old Monostable Block (These have been replaced by the IEC Timer)\n COILS - N.O. Output, N.C. Output, Set Output, Reset Output\n@@ -22234,21 +22234,21 @@\n or %W1= %W2) Compare cannot be placed in the right most side of the section display.\n Variable Assignment - creates an assignment block so you to assign values to variables. (eg %W2=7\n or %W1= %W2) ASSIGNMENT functions can only be placed at the right most side of the section\n display.\n 8.2.5.6. Config Window\n The config window shows the current project status and has the Modbus setup tabs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 8.7: Config Window\n \n 420 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 421 / 1278\n \n 8.2.6. Ladder objects\n 8.2.6.1. CONTACTS\n Represent switches or relay contacts. They are controlled by the variable letter and number assigned\n to them.\n@@ -22283,15 +22283,15 @@\n The time intervals can be set in multiples of 100ms, seconds, or minutes.\n There are also Variables for IEC timers that can be read and/or written to in compare or operate\n blocks.\n %TMxxx.Q - timer done (Boolean, read write)\n %TMxxx.P - timer preset (read write)\n %TMxxx.V - timer value (read write)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 422 / 1278\n \n 8.2.6.3. TIMERS\n Represent count down timers. This is deprecated and replaced by IEC Timers.\n Timers have 4 contacts.\n E - enable (input) starts timer when true, resets when goes false\n@@ -22321,15 +22321,15 @@\n 8.2.6.5. COUNTERS\n Represent up/down counters.\n There are 7 contacts:\n R - reset (input) will reset the count to 0.\n P - preset (input) will set the count to the preset number assigned from the edit menu.\n U - up count (input) will add one to the count.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 423 / 1278\n \n D - down count (input) will subtract one from the count.\n E - under flow (output) will be true when the count rolls over from 0 to 9999.\n D - done (output) will be true when the count equals the preset.\n F - overflow (output) will be true when the count rolls over from 9999 to 0.\n@@ -22362,15 +22362,15 @@\n %W1<2* %C0.V\n \n To find out if S32in bit 2 is equal to 10 the syntax would be:\n %IW2=10\n \n Note: Compare uses the arithmetic equals not the double equals that programmers are used to.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 424 / 1278\n \n 8.2.6.7. VARIABLE ASSIGNMENT\n For variable assignment, e.g. assign this number (or evaluated number) to this variable %xxx, there are\n two math functions MINI and MAXI that check a variable for maximum (0x80000000) and minimum\n values (0x07FFFFFFF) (think signed values) and keeps them from going beyond.\n@@ -22387,23 +22387,23 @@\n you assign a new value using the variable assignment block. The last value assigned will be restored\n when LinuxCNC is started.\n \n The following figure shows an Assignment and a Comparison Example. %QW0 is a S32out bit and %IW0\n is a S32in bit. In this case the HAL pin classicladder.0.s32out-00 will be set to a value of 5 and when\n the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will be set to True.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 8.8: Assign/Compare Ladder Example\n \n Figura 8.9: Assignment Expression Example\n \n 425 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 426 / 1278\n \n Figura 8.10: Comparison Expression Example\n \n 8.2.6.8. COILS\n Coils represent relay coils. They are controlled by the variable letter and number assigned to them.\n@@ -22429,15 +22429,15 @@\n If you use a N.C. contact with a N.C. coil the logic will work (when the coil is energized the\n contact will be closed) but that is really hard to follow!\n \n A JUMP COIL is used to JUMP to another section, like a goto in BASIC programming language.\n If you look at the top left of the sections display window you will see a small label box and a longer\n comment box beside it. Now go to Editor\u2192Modify then go back to the little box, type in a name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 427 / 1278\n \n Go ahead and add a comment in the comment section. This label name is the name of this rung only\n and is used by the JUMP COIL to identify where to go.\n When placing a JUMP COIL, add it in the rightmost position and change the label to the rung you want\n to JUMP to.\n@@ -22472,15 +22472,15 @@\n %TMxxx.V - Timer xxx value (integer, read write)\n %Mxx.R - Monostable xx running (Boolean)\n %Mxx.V - Monostable xx current value (integer, user read only)\n %Mxx.P - Monostable xx preset (integer)\n %Cxx.D - Counter xx done (Boolean, user read only)\n %Cxx.E - Counter xx empty overflow (Boolean, user read only)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 428 / 1278\n \n %Cxx.F - Counter xx full overflow (Boolean, user read only)\n %Cxx.V - Counter xx current value (integer)\n %Cxx.P - Counter xx preset (integer)\n %Ixxx - Physical input xxx (Boolean) (HAL input bit)\n@@ -22515,15 +22515,15 @@\n Selector arrow , Eraser\n Ordinary step , Initial (Starting) step\n Transition , Step and Transition\n Transition Link-Downside , Transition Link-Upside\n Pass-through Link-Downside , Pass-through Link-Upside Jump\n Link, Comment Box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 429 / 1278\n \n Figura 8.11: Sequence Editor Window\n ORDINARY STEP - has a unique number for each one\n STARTING STEP - a sequential program must have one. This is where the program will start.\n TRANSITION - This shows the variable that must be true for control to pass through to the next\n@@ -22535,15 +22535,15 @@\n PASS-THROUGH LINK-DOWNSIDE - splits the logic flow to two lines that BOTH must be true to\n continue (Think AND logic)\n PASS-THROUGH LINK-UPSIDE - combines two concurrent (AND logic) logic lines back together\n JUMP LINK - connects steps that are not underneath each other such as connecting the last step to\n the first\n COMMENT BOX - used to add comments\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 430 / 1278\n \n To use links, you must have steps already placed. Select the type of link, then select the two steps or\n transactions one at a time. It takes practice!\n With sequential programming: The variable %Xxxx (eg. %X5) is used to see if a step is active. The\n 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\n@@ -22573,21 +22573,21 @@\n 6 - write single register\n 8 - echo test\n 15 - write multiple coils\n 16 - write multiple registers\n If you do not specify a -- modmaster when loading the ClassicLadder user program this page will not\n be displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 8.12: Modbus I/O Config\n \n 431 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 432 / 1278\n \n Figura 8.13: Modbus Communication Config\n 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).\n SERIAL SPEED - Should be set to speed the slave is set for - 300, 600, 1200, 2400, 4800, 9600,\n 19200, 38400, 57600, 115200 are supported.\n@@ -22601,15 +22601,15 @@\n DEBUG LEVEL - Set this to 0-3 (0 to stop printing debug info besides no-response errors).\n READ COILS/INPUTS MAP TO - Select what variables that read coils/inputs will update. (B or Q).\n WRITE COILS MAP TO - Select what variables that write coils will updated from (B,Q,or I).\n READ REGISTERS/HOLDING - Select what variables that read registers will update (W or QW).\n WRITE REGISTERS MAP TO - Select what variables that read registers will updated from (W, QW,\n or IW).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 433 / 1278\n \n SLAVE ADDRESS - For serial the slaves ID number usually settable on the slave device (usually\n 1-256) For IP the slave IP address plus optionally the port number.\n TYPE ACCESS - This selects the MODBUS function code to send to the slave (eg what type of\n request).\n@@ -22648,15 +22648,15 @@\n ClassicLadder uses RTU protocol (not ASCII).\n 8 data bits, No parity is used, and 1 stop bit is also known as 8-N-1.\n Baud rate must be the same for slave and master. ClassicLadder can only have one baud rate so all\n the slaves must be set to the same rate.\n Pause inter frame is the time to pause after receiving an answer.\n 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).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 434 / 1278\n \n 8.2.10.1. MODBUS Info\n ClassicLadder can use distributed inputs/outputs on modules using the modbus protocol (\u201dmaster\u201d:\n polling slaves).\n The slaves and theirs I/O can be configured in the config window.\n@@ -22686,24 +22686,24 @@\n 8.2.11. Debugging modbus problems\n A good reference for the protocol: https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf.\n If you run linuxcnc/classicladder from a terminal, it will print the Modbus commands and slave responses.\n Here we set ClassicLadder to request slave 1, to read holding registers (function code 3) starting\n at address 8448 (0x2100). We ask for 1 (2 byte wide) data element to be returned. We map it to a\n ClassicLadder variable starting at 2.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 435 / 1278\n \n Figura 8.14: Modbus I/O Register Setup\n Note in this image we have set the debug level to 1 so modbus messages are printed to the terminal. We\n have mapped our read and written holding registers to ClassicLadder\u2019s %W variables so our returned\n data will be in %W2 as in the other image we mapped the data starting at the 2nd element.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 8.15: Modbus Communication Setup\n \n 8.2.11.1. Request\n Lets look at an example of reading one hold register at 8448 Decimal (0x2100 Hex).\n Looking in the Modbus protocol reference:\n Cuadro 8.2: Read holding register request\n@@ -22732,15 +22732,15 @@\n Bytes)\n (2 by- Calculated\n tes)\n automatically\n \n 436 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 437 / 1278\n \n Here is an example sent command as printed in the terminal (all Hex):\n INFO CLASSICLADDERModbus I/O module to send: Lgt=8 \n code-83 ) 2 C0 F1\n \n 438 / 1278\n \n (Slave address-1\n@@ -22850,15 +22850,15 @@\n Slave number = 1 (0x1) = Slave address 1\n Requested function code = 3 (0x3) = read holding register requested\n count of byte registers = 2 (0x1) = return 2 bytes (each register value is 2 bytes wide)\n value of highbyte = 0 (0x0) = high byte value of address 8448 (0x2100)\n value of lowbyte = 0 (0x0) = high byte value of address 8448 (0x2100)\n Checksum = (0xB844)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 439 / 1278\n \n (high and low bytes are combined to create a 16 bit value and then transferred to ClassicLadder\u2019s\n variable.) Read Registers can be mapped to %W or %QW (internal memory or HAL out pins). Write\n registers can be mapped from %W, %QW or %IW (internal memory, HAL out pins or HAL in pins). The\n variable number will start at the number entered in the modbus I/O registry setup page\u2019s column:\n@@ -22877,15 +22877,15 @@\n \n 8.2.12. Setting up ClassicLadder\n In this section we will cover the steps needed to add ClassicLadder to a Stepconf Wizard generated\n config. On the advanced Configuration Options page of Stepconf Wizard check off \u201dInclude ClassicLadder PLC\u201d.\n \n Figura 8.16: Stepconf ClassicLadder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 440 / 1278\n \n 8.2.12.1. Add the Modules\n If you used the Stepconf Wizard to add ClassicLadder you can skip this step.\n To manually add ClassicLadder you must first add the modules. This is done by adding a couple of\n lines to the custom.hal file.\n@@ -22901,47 +22901,47 @@\n window open the Editor. In the Editor window select Modify. Now a Properties window pops up and\n the Section Display shows a grid. The grid is one rung of ladder. The rung can contain branches. A\n simple rung has one input, a connector line and one output. A rung can have up to six horizontal\n branches. While it is possible to have more than one circuit in a run the results are not predictable.\n \n Figura 8.17: Section Display with Grid\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Now click on the N.O. Input in the Editor Window.\n \n Figura 8.18: Editor Window\n Now click in the upper left grid to place the N.O. Input into the ladder.\n \n 441 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 442 / 1278\n \n Figura 8.19: Section Display with Input\n Repeat the above steps to add a N.O. Output to the upper right grid and use the Horizontal Connection\n to connect the two. It should look like the following. If not, use the Eraser to remove unwanted sections.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 443 / 1278\n \n Figura 8.20: Section Display with Rung\n Now click on the OK button in the Editor window. Now your Section Display should look like this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 444 / 1278\n \n Figura 8.21: Section Display Finished\n To save the new file select Save As and give it a name. The .clp extension will be added automatically.\n It should default to the running config directory as the place to save it.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 445 / 1278\n \n Figura 8.22: Save As Dialog\n Again if you used the Stepconf Wizard to add ClassicLadder you can skip this step.\n To manually add a ladder you need to add add a line to your custom.hal file that will load your ladder\n file. Close your LinuxCNC session and add this line to your custom.hal file.\n@@ -22952,15 +22952,15 @@\n \n 8.3. ClassicLadder Examples\n 8.3.1. Wrapping Counter\n To have a counter that wraps around you have to use the preset pin and the reset pin. When you\n create the counter set the preset at the number you wish to reach before wrapping around to 0. The\n logic is if the counter value is over the preset then reset the counter and if the underflow is on then\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 446 / 1278\n \n set the counter value to the preset value. As you can see in the example when the counter value is\n greater than the counter preset the counter reset is triggered and the value is now 0. The underflow\n output %Q2 will set the counter value at the preset when counting backwards.\n \n@@ -22970,15 +22970,15 @@\n This example shows you how to reject extra pulses from an input. Suppose the input pulse %I0 has\n an annoying habit of giving an extra pulse that spoils our logic. The TOF (Timer Off Delay) prevents\n the extra pulse from reaching our cleaned up output %Q0. How this works is when the timer gets\n an input the output of the timer is on for the duration of the time setting. Using a normally closed\n contact %TM0.Q the output of the timer blocks any further inputs from reaching our output until it\n times out.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 447 / 1278\n \n Figura 8.24: Reject Extra Pulse\n \n 8.3.3. External E-Stop\n The External E-Stop example is in the /config/classicladder/cl-estop folder. It uses a PyVCP panel to\n@@ -22992,15 +22992,15 @@\n \n Next we add ClassicLadder to our custom.hal file by adding these two lines:\n loadrt classicladder_rt\n addf classicladder.0.refresh servo-thread\n \n Next we run our config and build the ladder as shown here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 448 / 1278\n \n Figura 8.25: E-Stop Section Display\n After building the ladder select Save As and save the ladder as estop.clp\n Now add the following line to your custom.hal file.\n # Load the ladder\n@@ -23012,15 +23012,15 @@\n %I2 = Input from LinuxCNC\u2019s E-Stop Reset Pulse\n %I3 = Input from the PyVCP panel reset button\n %Q0 = Output to LinuxCNC to enable\n %Q1 = Output to external driver board enable pin (use a N/C output if your board had a disable\n pin)\n Next we add the following lines to the custom_postgui.hal file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 449 / 1278\n \n # E-Stop example using PyVCP buttons to simulate external components\n # The PyVCP checkbutton simulates a normally closed external E-Stop\n net ext-estop classicladder.0.in-00 <= pyvcp.py-estop\n # Request E-Stop Enable from LinuxCNC\n@@ -23054,36 +23054,36 @@\n \u201dpy-reset\u201d\n \u201dReset\u201d\n \n \n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 450 / 1278\n \n Figura 8.26: AXIS E-Stop\n Note that in this example like in real life you must clear the remote E-Stop (simulated by the checkbox)\n before the AXIS E-Stop or the external Reset will put you in OFF mode. If the E-Stop in the AXIS screen\n was pressed, you must press it again to clear it. You cannot reset from the external after you do an\n E-Stop in AXIS.\n \n 8.3.4. Timer/Operate Example\n In this example we are using the Operate block to assign a value to the timer preset based on if an\n input is on or off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 451 / 1278\n \n Figura 8.27: Timer/Operate Example\n In this case %I0 is true so the timer preset value is 10. If %I0 was false the timer preset would be 5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 452 / 1278\n \n Cap\u00edtulo 9\n \n Temas avanzados\n 9.1. Kinematics\n@@ -23111,15 +23111,15 @@\n Cartesian coordinates. The A B C axes refer to rotational coordinates about the X Y Z axes respectively.\n The U V W axes refer to additional coordinates that are commonly made colinear to the X Y Z axes\n respectively.\n 1 The word \u201daxes\u201d is also commonly (and wrongly) used when talking about CNC machines, and referring to the moving\n directions of the machine.\n 2 Kinematics: a two way function to transform from Cartesian space to joint space.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 453 / 1278\n \n 9.1.2. Trivial Kinematics\n The simplest machines are those in which which each joint is placed along one of the Cartesian axes.\n On these machines the mapping from Cartesian space (the G-code program) to the joint space (the\n actual actuators of the machine) is trivial. It is a simple 1:1 mapping:\n@@ -23173,15 +23173,15 @@\n 3 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\n \n the definition of these 3 joints, then the previous assertion is false. Because we currently have (joint0=X, joint1=Z, joint2=A)\n which assumes that joint1=Y. To make this work in LinuxCNC just define all the axes (XYZA), LinuxCNC will then use a simple\n loop in HAL for unused Y axis.\n 4 Another way to make it work is to change the corresponding code and recompile the software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 454 / 1278\n \n Use of the coordinates= parameter is recommended for configurations that omit axis letters. 5\n The trivkins kinematics module also allows the same coordinate to be specified for more than one\n joint. This feature can be useful on machines like a gantry having two independent motors for the y\n coordinate. Such a machine could use coordinates=xyyz resulting in joint assignments:\n@@ -23202,15 +23202,15 @@\n \n Figura 9.1: Bipod setup\n 5 Historically, the trivkins module did not support the coordinates= parameter so lathe configs were often configured as XYZ\n machines. The unused Y axis was configured to 1) home immediately, 2) use a simple loopback to connect its position command\n HAL pin to its position feedback HAL pin, and 3) hidden in gui displays. Numerous sim configs use these methods in order to\n share common HAL files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 455 / 1278\n \n The Bipod we are talking about is a device that consists of 2 motors placed on a wall, from which a\n device is hung using some wire. The joints in this case are the distances from the motors to the device\n (named AD and BD in the figure).\n The position of the motors is fixed by convention. Motor A is in (0,0), which means that its X coordinate\n@@ -23242,15 +23242,15 @@\n double x = (AD2 - BD2 + Bx * Bx) / (2 * Bx);\n double y2 = AD2 - x * x;\n if(y2 < 0) return -1;\n pos->tran.x = x;\n pos->tran.y = sqrt(y2);\n return 0;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 456 / 1278\n \n 9.1.3.2. Inverse transformation\n The inverse kinematics is much easier in our example, as we can write it directly:\n \n or translated to actual code:\n@@ -23285,15 +23285,15 @@\n \n int kinematicsSwitchable(void)\n int kinematicsSwitch(int switchkins_type)\n KINS_NOT_SWITCHABLE\n \n The function kinematicsSwitchable() returns 1 if multiple kinematics types are supported. The function kinematicsSwitch() selects the kinematics type. See Switchable Kinematitcs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 457 / 1278\n \n nota\n The majority of provided kinematics modules support a single kinematics type and use the directive\n \u201dKINS_NOT_SWITCHABLE\u201d to supply defaults for the required kinematicsSwitchable() and kinematicsSwitch() functions.\n \n@@ -23326,15 +23326,15 @@\n nota\n This document does not cover the creation of a vismach model which, while certainly very useful,\n requires just as much careful modeling if it is to match the genserkins model derived in this document.\n \n nota\n There may be errors and/or shortcomings \u2014 use at your own risk!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 458 / 1278\n \n 9.2.2. General\n With the proliferation of industrial robots comes an increased interest to control used robots with\n LinuxCNC. A common type of robot used in industry and manufacturing is the \u201dserial manipulator\u201d\n designed as a series of motorized joints connected by rigid links. Serial robots often have six joints\n@@ -23377,15 +23377,15 @@\n \n 9.2.4. Modified DH-Parameters as used in genserkins\n Note that genserkins does not handle offsets to theta-values \u2014 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\n the rotation commanded to that joint by LinuxCNC. This makes it impossible to define the 0\u00b0 position\n of our robots joints arbitrarily.\n The three configurable parameters are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 459 / 1278\n \n 1. alpha : positive or negative rotation (in radians) around the X-axis of the \u201dcurrent coordinate\n system\u201d\n 2. a : positive distance, along X, between two joint axes specified in machine units (mm or inch)\n defined in the system\u2019s INI file.\n@@ -23416,87 +23416,87 @@\n but there is no point in setting it other than 0.\n \n 9.2.8. Detailed Example (RV-6SL)\n Described below is a method to derive the required \u201dmodified DH-parameters\u201d for a Mitsubishi RV6SDL and how to set the parameters in the HAL file to be used with the genserkins kinematics in\n LinuxCNC. The necessary dimensions are best taken from a dimensional drawing provided by the\n manufacturer of the robot.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 460 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 461 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 462 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 463 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 464 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 465 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 466 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 467 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 468 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 469 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 470 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 471 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 472 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 473 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 474 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 475 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 476 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 477 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 478 / 1278\n \n 9.2.9. Credits\n Thanks to user Aciera for all text and the graphics for the RV-6SL robot!\n \n 9.3. 5-Axis Kinematics\n@@ -23522,27 +23522,27 @@\n of the cutter tip position and the cutter orientation relative to the workpiece coordinate system. Two\n vectors, as generated by most CAM systems and shown in Fig. 1, contain this information:\n \n The K vector is equivalent to the 3rd vector from the pose matrix E6 that was used in the 6-axis robot\n kinematics [3] and the Q vector is equivalent to the 4th vector of E6 . In MASTERCAM for example this\n information is contained in the intermediate output \u201d.nci\u201d file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 479 / 1278\n \n Figura 9.2: Cutter location data\n \n 9.3.4. Translation and Rotation Matrices\n 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\n 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\n \n There are four fundamental transformation matrices on which 5-axis kinematics can be based:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 480 / 1278\n \n The matrix T(a,b,c) implies a translation in the X, Y, Z coordinate directions by the amounts a, b, c\n respectively. The R matrices imply rotations of the angle theta about the X, Y and Z coordinate axes\n respectively. The C and S symbols refer to cosine and sine functions respectively.\n \n@@ -23552,15 +23552,15 @@\n A rotary table which rotates about the vertical Z-axes (C-rotation, secondary) mounted on a tilting\n table which rotates about the X- or Y-axis (A- or B-rotation, primary). The workpiece is mounted on\n the rotary table.\n A tilting table which rotates about the X- or Y-axis (A- or B-rotation, secondary) is mounted on a\n rotary table which rotates about the Z-axis (C-rotation, primary), with the workpiece on the tilting\n table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 481 / 1278\n \n Figura 9.3: General configuration and coordinate systems\n 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\n describe the relative position and orientation between these coordinate frames\n 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 At , which can be found by subsequent\n@@ -23568,43 +23568,43 @@\n defined coordinate system. In general such a transformation may look as follows:\n \n where each matrix i-1 Aj is a translation matrix T or a rotation matrix R of the form (2,3).\n Matrix multiplication is a simple process in which the elements of each row of the lefthand matrix\n A is multiplied by the elements of each column of the righthand matrix B and summed to obtain an\n element in the result matrix C, ie.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 482 / 1278\n \n In Fig. 2 a generic configuration with coordinate systems is shown [4]. It includes table rotary/tilting\n axes as well as spindle rotary/tilting axes. Only two of the rotary axes are actually used in a machine\n tool.\n First we will develop the transformations for the first type of configuration mentioned above, ie. a table\n tilting/rotary (trt) type with no rotating axis offsets. We may give it the name xyzac-trt configuration.\n We also develop the transformations for the same type (xyzac-trt), but with rotating axis offsets.\n Then we develop the transformations for a xyzbc-trt configuration with rotating axis offsets.\n 9.3.5.1. Transformations for a xyzac-trt machine tool with work offsets\n \n Figura 9.4: vismach model of xyzac-trt with coincident rotation axes\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 483 / 1278\n \n We deal here with a simplified configuration in which the tilting axis and rotary axis intersects at a\n point called the pivot point as shown in Fig. 4. therefore the two coordinate systems Ows and Owp of\n Fig. 2 are coincident.\n \n Figura 9.5: Table tilting/rotary configuration\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 484 / 1278\n \n In these equations Lx , Ly , Lz defines the offsets of the pivot point of the two rotary axes A and C\n relative to the workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances\n of the pivot point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot\n point. The pivot point is at the intersection of the two rotary axes. The signs of the SA and SC terms\n@@ -23623,56 +23623,56 @@\n Equating the last column of (8) with the tool position vector Q, we can write:\n \n The vector on the right hand side can also be written as the product of a matrix and a vector resulting\n in:\n \n This can be expanded to give\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 485 / 1278\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (13) as P = (Q AP )-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\n be written as:\n \n where R^T is the transpose of R (rows and columns swappped). We therefore obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 486 / 1278\n \n 9.3.5.2. Transformations for a xyzac-trt machine with rotary axis offsets\n \n Figura 9.6: vismach model of xyzac-trt with rotational axis offsets (positive)\n We deal here with a extended configuration in which the tilting axis and rotary axis do not intersect\n at a point but have an offset Dy . Furthermore, there is also an z-offset between the two coordinate\n systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 5 and the offsets are\n shown in Fig. 6 (positive offsets in this example). To simplify the configuration, the offsets Lx , Ly , Lz\n of the previous case are not included. They are probably not necessary if one uses the G54 offsets in\n LinuxCNC by means of the \u201dtouch of\u201d facility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 487 / 1278\n \n Figura 9.7: Table tilting/rotary xyzac-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dy , Dz defines the offsets of the pivot point of the rotary axes A relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the A rotary axis.\n When multiplied in accordance with (18), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 488 / 1278\n \n We can now equate the third column of this matrix with our given tool orientation vector K, ie.:\n \n From these equations we can solve for the rotation angles thetaA , thetaC . From the third row we find:\n \n@@ -23686,42 +23686,42 @@\n in:\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (25) as P = (Q AP )-1 * Q using (15) as before. We thereby obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 489 / 1278\n \n 9.3.5.3. Transformations for a xyzbc-trt machine with rotary axis offsets\n \n Figura 9.8: vismach model of xyzbc-trt with rotational axis offsets (negative)\n We deal here again with a extended configuration in which the tilting axis (about the y-axis) and rotary\n axis do not intersect at a point but have an offset Dx . Furthermore, there is also an z-offset between the\n two coordinate systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 7 (negative\n offsets in this example) and the positive offsets are shown in Fig. 8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 490 / 1278\n \n Figura 9.9: Table tilting/rotary xyzbc-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dx , Dz defines the offsets of the pivot point of the rotary axes B relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the B rotary axis.\n When multiplied in accordance with (29), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 491 / 1278\n \n We can now equate the third column of this matrix with our given tool orientation vector K, i.e.:\n \n From these equations we can solve for the rotation angles thetaB , thetaC . From the third row we find:\n \n@@ -23736,15 +23736,15 @@\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (37) as P = (Q AP )-1 * Q.\n With the same approach as before, we obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 492 / 1278\n \n 9.3.6. Table Rotary/Tilting Examples\n LinuxCNC includes kinematics modules for the xyzac-trt and xyzbc-trt topologies described in the\n mathematics detailed above. For interested users, the source code is available in the git tree in the\n src/emc/kinematics/ directory.\n@@ -23788,15 +23788,15 @@\n \n 9.3.7. Custom Kinematics Components\n LinuxCNC implements kinematics using a HAL component that is loaded at startup of LinuxCNC. The\n most common kinematics module, trivkins, implements identity (trivial) kinematics where there is a\n one-to-one correspondence between an axis coordinate letter and a motor joint. Additional kinematics\n modules for more complex systems (including xyzac-trt and xyzbc-trt described above) are available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 493 / 1278\n \n See the kins manpage (\\$ man kins) for brief descriptions of the available kinematics modules.\n 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\n source file to a user file with a new name, modifying it, and then installing.\n Installation is done using halcompile:\n@@ -23818,29 +23818,29 @@\n module. These pins can be connected to a signal for dynamic control or set once with HAL connections\n like:\n # set offset parameters\n net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset\n setp xyzac-trt-kins.y-offset 0\n setp xyzac-trt-kins.z-offset 20\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9.3.8. Figures\n \n Figura 9.10: Table tilting/rotating configuration\n \n 494 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 9.11: Spindle/table tilting configuration\n \n 495 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 496 / 1278\n \n Figura 9.12: Spindle tilting/rotary configuration\n \n 9.3.9. REFERENCES\n 1. A Postprocessor Based on the Kinematics Model for General Five-Axis machine Tools: C-H She,\n@@ -23855,15 +23855,15 @@\n 9.4.1. Introduction\n A number of kinematics modules support the switching of kinematics calculations. These modules\n support a default kinematics method (type0), a second built-in method (type1), and (optionally) a userprovided kinematics method (type2). Identity kinematics are typically used for the type1 method.\n The switchkins functionality can be used for machines where post-homing joint control is needed\n 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\n individual joints after homing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 497 / 1278\n \n The kinematics type is selected by a motion module HAL pin that can be updated from a G-code\n program or by interactive MDI commands. The halui provisions for activating MDI commands can be\n used to allow buttons to select the kinematics type using hardware controls or a virtual panel (PyVCP,\n GladeVCP, etc.).\n@@ -23897,15 +23897,15 @@\n # custom identity ordering: joint0==c, joint1==b, ...\n # KINEMATICS = genhexkins coordinates=cbazyx\n \n nota\n If the coordinates= parameter is omitted, the default joint-letter identity assignments are\n joint0==x,joint1=y,\u2026\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 498 / 1278\n \n The joint assignments provided for identity kinematics when using the coordinates parameter are\n identical to those provided for the trivkins module. However, duplication of axis letters to assign\n multiple joints for a coordinate letter is not generally applicable for serial or parallel kinematics (like\n genserkins, pumakins, genhexkins, etc.) where there is no simple relationship between joints and\n@@ -23937,15 +23937,15 @@\n 9.4.4. Usage\n 9.4.4.1. HAL Connections\n Switchkins functionality is enabled by the pin motion.switchkins-type. Typically, this pin is sourced\n by an analog output pin like motion.analog-out-03 so that it can be set by M68 commands. Example:\n net :kinstype-select <= motion.analog-out-03\n net :kinstype-select => motion.switchkins-type\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 499 / 1278\n \n 9.4.4.2. G-/M-code commands\n Kinstype selection is managed using G-code sequences like:\n ...\n M68 E3 Q1 ;update analog-out-03 to select kinstype 1\n@@ -23984,15 +23984,15 @@\n XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 500 / 1278\n \n 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\n an interpreter-motion synchronization is required when switching kinematics, INI-HAL pins can be\n used to setup limits for a pending kinematics type.\n nota\n@@ -24035,15 +24035,15 @@\n the set XYZABCUVW. The INI file settings ([AXIS_L]) are not applicable when operating with identity\n (type1) kinematics. To address this use case, the user M-code scripts can be designed as follows:\n M129 (Switch to identity type1)\n 1. read and parse INI file\n 2. HAL: setp the INI-HAL limit pins for each axis letter ([AXIS_L]) according to the identity-referenced\n joint number INI file setting ([JOINT_N])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 501 / 1278\n \n 3. HAL: setp motion.switchkins-type 1\n 4. MDI: execute a syncing G-code (M66E0L0)\n M128 (restore robot default kinematics type 0)\n 1. read and parse INI file\n@@ -24088,15 +24088,15 @@\n and edited to supply custom kinematics with kinstype==2.\n The user custom kinematics file can be compiled from out-of-tree source locations for rt-preempt\n implementations or by replacing the in-tree template file (src/emc/kinematics/userkfuncs.c) for rtai\n systems.\n Preempt-rt make example:\n $ userkfuncs=/home/myname/kins/mykins.c make && sudo make setuid\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 502 / 1278\n \n 9.4.7. Warnings\n Unexpected behavior can result if a G-code program is inadvertently started with an incompatible\n kinematics type. Unwanted behavior can be circumvented in G-code programs by:\n 1. Connecting appropriate kinstype.is.N HAL pins to digital input pins (like motion.digital-in-0m).\n@@ -24128,15 +24128,15 @@\n reference set point value. The difference (or error signal) is then used to calculate a new value for a\n manipulable input to the process that brings the process measured value back to its desired set point.\n 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\n shown mathematically that a PID loop will produce accurate, stable control in cases where a simple\n proportional control would either have a steady-state error or would cause the process to oscillate).\n 6 This Subsection is taken from an much more extensive article found at https://en.wikipedia.org/wiki/PID_controller\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 503 / 1278\n \n 9.5.1.1. Control loop basics\n Intuitively, the PID loop tries to automate what an intelligent operator with a gauge and a control\n knob would do. The operator would read a gauge showing the output measurement of a process, and\n use the knob to adjust the input of the process (the action) until the process\u2019s output measurement\n@@ -24178,15 +24178,15 @@\n low or too high value. By adding a negative proportion of (i.e. subtracting part of) the average error\n from the process input, the average difference between the process output and the set point is always\n being reduced. Therefore, eventually, a well-tuned PID loop\u2019s process output will settle down at the\n set point.\n Derivative To handle the future, the first derivative (the slope of the error) over time is calculated, and\n multiplied by another (negative) constant D, and also added to (subtracting error from) the controlled\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 504 / 1278\n \n quantity. The derivative term controls the response to a change in the system. The larger the derivative\n term, the more rapidly the controller responds to changes in the process\u2019s output.\n More technically, a PID loop can be characterized as a filter applied to a complex frequency-domain\n system. This is useful in order to calculate whether it will actually reach a stable value. If the values\n@@ -24270,15 +24270,15 @@\n Pc /8\n \n Final Steps After tuning the axis check the following error with Halscope to make sure it is within\n your machine requirements. More information on Halscope is in the HAL User manual.\n 7 Introduced in the 1942 paper Optimum Settings for Automatic Controllers, DOI 10.1115/1.2899060 also available from\n The Internet Archive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 505 / 1278\n \n 9.6. Remap Extending G-code\n 9.6.1. Introduction: Extending the RS274NGC Interpreter by Remapping Codes\n 9.6.1.1. A Definition: Remapping Codes\n By remapping codes we mean one of the following:\n@@ -24308,15 +24308,15 @@\n Generally, the behavior of a remapped code may be defined in the following ways:\n You define a O-word subroutine which implements the desired behavior\n Alternatively, you may employ a Python function which extends the interpreter\u2019s behavior.\n How to glue things together M- and G-codes, and O-words subroutine calls have some fairly different syntax.\n O-word procedures, for example, take positional parameters with a specific syntax like so:\n o call [1.234] [4.65]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 506 / 1278\n \n 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.\n So it isn\u2019t simply enough to say whenever you encounter code X, please call procedure Y - at least\n some checking and conversion of parameters needs to happen. This calls for some glue code between\n the new code, and its corresponding NGC procedure to execute before passing control to the NGC\n@@ -24353,15 +24353,15 @@\n Decide about the execution sequence.\n 9.6.2.1. Builtin Remaps\n Please note that currently only some existing codes can be redefined, while there are many free codes\n that may be available for remapping. When developing redefined existing code, it is a good idea to\n start with an unassigned G- or M- code, so that you can use both an existing behavior as well as a new\n one. When you\u2019re done, redefine the existing code to use your remapping configuration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 507 / 1278\n \n The current set of unused M-codes, available for user definition, can be found in the unallocated\n M-codes section.\n For G-codes, see the unallocated G-codes list.\n Existing codes that can be reassigned are listed in the remappable codes section.\n@@ -24394,15 +24394,15 @@\n which might be made available by remapping. When developing a redefined existing code, it might be\n a good idea to start with an unallocated G- or M-code, so both the existing and new behavior can be\n exercised. When done, redefine the existing code to use your remapping setup.\n The current set of unused M-codes open to user definition can be found here.\n Unallocated G-codes are listed here.\n Existing codes which may be remapped are listed here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 508 / 1278\n \n 9.6.2.3. Parameter handling\n Let\u2019s assume the new code will be defined by an NGC procedure, and needs some parameters, some\n of which might be required, others might be optional. We have the following options to feed values to\n the procedure:\n@@ -24439,15 +24439,15 @@\n [RS274NGC]\n REMAP=M400\n \n modalgroup=10 argspec=Pq ngc=myprocedure\n \n In a nutshell, this means:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 509 / 1278\n \n The M400 code takes a required parameter P and an optional parameter Q. Other words in the current\n block are ignored with respect to the M400 code. If the P word is not present, fail execution with an\n error.\n When an M400 code is encountered, execute myprocedure.ngc along the other modal group 10 Mcodes as per order of execution.\n@@ -24485,15 +24485,15 @@\n Basename of an O-word subroutine file name. Do not specify an .ngc extension. Searched for in\n the directories specified in the directory specified in [DISPLAY]PROGRAM_PREFIX, then in [RS274NGC]SUB\n Mutually exclusive with python=. It is an error to omit both ngc= and python=.\n python=\n Instead of calling an ngc O-word procedure call a Python function. The function is expected to\n be defined in the module_basename.oword module. Mutually exclusive with ngc=.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 510 / 1278\n \n prolog=\n Before executing an ngc procedure, call this Python function. The function is expected to be\n defined in the module_basename.remap module. Optional.\n epilog=\n@@ -24532,15 +24532,15 @@\n An empty argspec, or no argspec argument at all implies the remapped code does not receive any\n parameters from the block. It will ignore any extra parameters present.\n Note that RS274NGC rules still apply - for instance you may use axis words (e.g., X, Y, Z) only in the\n context of a G-code.\n Axis words may also only be used if the axis is enabled. If only XYZ are enabled, ABCUVW will not be\n available to be used in argspec.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 511 / 1278\n \n Words F, S and T (short FST) will have the normal functions but will be available as variables in the\n remapped function. F will set feedrate, S will set spindle RPM, T will trigger the tool prepare function.\n Words FST should not be used if this behavior is not desired.\n Words DEIJKPQR have no predefined function and are recommended for use as argspec parameters.\n@@ -24582,15 +24582,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#]]\n (debug, Q word set: #)\n o100 endif\n o endsub\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 512 / 1278\n \n Executing M400 will fail with the message user-defined M400: missing: P.\n Executing M400 P123 will display P word=123.000000.\n Executing M400 P123 Q456 will display P word=123.000000 and Q word set: 456.000000\n Example for positional parameter passing to NGC procedures Assume the code is defined as\n@@ -24631,15 +24631,15 @@\n Advanced example: Remapped codes in pure Python The interpreter and emccanon modules\n expose most of the Interpreter and some Canon internals, so many things which so far required coding\n in C/C+\\+ can be now be done in Python.\n The following example is based on the nc_files/involute.py script - but canned as a G-code with\n some parameter extraction and checking. It also demonstrates calling the interpreter recursively (see\n self.execute()).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 513 / 1278\n \n Assuming a definition like so (NB: this does not use argspec):\n REMAP=G88.1 modalgroup=1 py=involute\n The involute function in python/remap.py listed below does all word extraction from the current\n block directly. Note that interpreter errors can be translated to Python exceptions. Remember this is\n@@ -24683,15 +24683,15 @@\n y = y0 + a * (sin(t) - t * cos(t))\n self.execute(\u201dG1 X%f Y%f\u201d % (x,y),lineno())\n if c.z_flag: # retract to starting height\n self.execute(\u201dG0 Z%f\u201d % (old_z),lineno())\n except InterpreterException,e:\n msg = \u201d%d: \u2019 %s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 514 / 1278\n \n return msg\n return INTERP_OK\n \n The examples described so far can be found in configs/sim/axis/remap/getting-started with complete\n@@ -24735,15 +24735,15 @@\n (dire but necessary).\n Note than when remapping an existing code, we completely disable this codes\u2019 built-in functionality\n of the interpreter.\n So our remapped code will need to do a bit more than just generating some commands to move the\n machine as we like - it will also need to replicate those steps from this sequence which are needed to\n keep the interpreter and task happy.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 515 / 1278\n \n However, this does not affect the processing of tool change-related commands in task and iocontrol.\n This means when we execute step 6b this will still cause iocontrol to do its thing.\n Decisions, decisions:\n Do we want to use an O-word procedure or do it all in Python code?\n@@ -24778,15 +24778,15 @@\n the \u201draise tool-change and wait for tool-changed to become high\u201d HAL sequence in iocontrol,\n besides setting the XXXX pins\n What you need to decide is whether the existing iocontrol HAL sequences are sufficient to drive your\n changer. Maybe you need a different interaction sequence - for instance more HAL pins, or maybe a\n more complex interaction. Depending on the answer, we might continue to use the existing iocontrol\n HAL sequences, or define our own ones.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 516 / 1278\n \n For the sake of documentation, we\u2019ll disable these iocontrol sequences, and roll our own - the result\n will look and feel like the existing interaction, but now we have complete control over them because\n they are executed in our own O-word procedure.\n So what we\u2019ll do is use some motion.digital-* and motion.analog-* pins, and the associated M62\n@@ -24837,15 +24837,15 @@\n follows:\n REMAP=M6\n \n modalgroup=6\n \n prolog=change_prolog ngc=change epilog=change_epilog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 517 / 1278\n \n So the prolog covering steps 1 and 2 would look like so - we decide to pass a few variables to\n the remap procedure which can be inspected and changed there, or used in a message. Those are:\n tool_in_spindle, selected_tool (tool numbers) and their respective tooldata indices current_pocket\n and selected_pocket:\n@@ -24891,15 +24891,15 @@\n if self.return_value > 0.0:\n # commit change\n self.selected_pocket = int(self.params[\u201dselected_pocket\u201d])\n emccanon.CHANGE_TOOL(self.selected_pocket)\n # cause a sync()\n self.tool_change_flag = True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 518 / 1278\n \n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n@@ -24937,15 +24937,15 @@\n M6 (change_prolog): #, #, #, #\n M61 (settool_prolog): # , #\n S (setspeed_prolog): #\n F (setfeed_prolog): #\n If you have specific needs for extra parameters to be made visible, that can simply be added to the\n prolog - practically all of the interpreter internals are visible to Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 519 / 1278\n \n 9.6.5.6. Making minimal changes to the built in codes, including M6\n Remember that normally remapping a code completely disables all internal processing for that code.\n However, in some situations it might be sufficient to add a few codes around the existing M6 built in\n implementation, like a tool length probe, but other than that retain the behavior of the built in M6.\n@@ -24994,15 +24994,15 @@\n cblock = self.blocks[self.remap_level]\n if not cblock.t_flag:\n return \u201dT requires a tool number\u201d\n tool\n \n = cblock.t_number\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 520 / 1278\n \n if tool:\n (status, pocket) = self.find_tool_pocket(tool)\n if status != INTERP_OK:\n return \u201dT%d: pocket not found\u201d % (tool)\n@@ -25050,15 +25050,15 @@\n remap is aborted.\n The way to do this is by using the [RS274NGC]ON_ABORT_COMMAND feature. This INI option specifies a\n O-word procedure call which is executed if task for some reason aborts program execution. on_abort\n receives a single parameter indicating the cause for calling the abort procedure, which might be used\n for conditional cleanup.\n The reasons are defined in nml_intf/emc.hh\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 521 / 1278\n \n EMC_ABORT_TASK_EXEC_ERROR = 1,\n EMC_ABORT_AUX_ESTOP = 2,\n EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n EMC_ABORT_TASK_STATE_OFF = 4,\n@@ -25107,15 +25107,15 @@\n Make sure on_abort.ngc is along the interpreter search path (recommended location: SUBROUTINE_PATH\n so as not to clutter your NC_FILES directory with internal procedures).\n Statements in that procedure typically would assure that post-abort any state has been cleaned up,\n like HAL pins properly reset. For an example, see configs/sim/axis/remap/rack-toolchange.\n Note that terminating a remapped code by returning INTERP_ERROR from the epilog (see previous\n section) will also cause the on_abort procedure to be called.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 522 / 1278\n \n 9.6.5.9. Error handling: failing a remapped code NGC procedure\n If you determine in your handler procedure that some error condition occurred, do not use M2 to end\n your handler - see above:\n If displaying an operator error message and stopping the current program is good enough, use the\n@@ -25150,15 +25150,15 @@\n 9.6.6.2. Adjusting the behavior of M0, M1, M60\n A use case for remapping M0/M1 would be to customize the behavior of the existing code. For instance,\n it could be desirable to turn off the spindle, mist and flood during an M0 or M1 program pause, and\n turn these settings back on when the program is resumed.\n For a complete example doing just that, see configs/sim/axis/remap/extend-builtins/, which\n adapts M1 as laid out above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 523 / 1278\n \n 9.6.7. Creating new G-code cycles\n A G-code cycle as used here is meant to behave as follows:\n On first invocation, the associated words are collected and the G-code cycle is executed.\n If subsequent lines just continue parameter words applicable to this code, but no new G-code, the\n@@ -25202,15 +25202,15 @@\n [PYTHON]\n TOPLEVEL = \n Filename of the initial Python script to execute on startup. This script is responsible for\n setting up the package name structure, see below.\n PATH_PREPEND = \n Prepend this directory to PYTHON_PATH. A repeating group.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 524 / 1278\n \n PATH_APPEND = \n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = \n Log level of plugin-related actions. Increase this if you suspect problems. Can be very verbose.\n@@ -25249,15 +25249,15 @@\n 9.6.9.2. The Interpreter as seen from Python\n \n The interpreter is an existing C++ class (Interp) defined in src/emc/rs274ngc. Conceptually all oword. Python calls are methods of this Interp class, although there is no explicit\n Python definition of this class (it\u2019s a Boost.Python wrapper instance) and hence receive the as the first\n parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 525 / 1278\n \n 9.6.9.3. The Interpreter __init__ and __delete__ functions\n If the TOPLEVEL module defines a function __init__, it will be called once the interpreter is fully\n configured (INI file read, and state synchronized with the world model).\n If the TOPLEVEL module defines a function __delete__, it will be called once before the interpreter is\n@@ -25296,15 +25296,15 @@\n \u2022 when a comment like ;py, is executed - during execution of a remapped\n code: any prolog=, python= and epilog= handlers.\n Calling O-word Python subroutines\n Arguments:\n self\n The interpreter instance\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 526 / 1278\n \n *args\n The list of actual positional parameters. Since the number of actual parameters may vary, it is\n best to use this style of declaration:\n # this would be defined in the oword module\n@@ -25342,15 +25342,15 @@\n print(\u201d%s: %s\u201d % (w, words[w]))\n if words[\u2019p\u2019] < 78: # NB: could raise an exception if p were optional\n return \u201dfailing miserably\u201d\n return INTERP_OK\n \n Return values:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 527 / 1278\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n \u201da message text\u201d\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25387,15 +25387,15 @@\n # post-sync() execution resumes here:\n pin_status = emccanon.GET_EXTERNAL_DIGITAL_INPUT(0,0);\n print(\u201dpin status=\u201d,pin_status)\n \n aviso\n The yield feature is fragile. The following restrictions apply to the usage of yield INTERP_EXECUTE_FINISH:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 528 / 1278\n \n Python code executing a yield INTERP_EXECUTE_FINISH must be part of a remap procedure. Yield\n does not work in a Python oword procedure.\n A Python remap subroutine containing yield INTERP_EXECUTE_FINISH statement may not return\n a value, as with normal Python yield statements.\n@@ -25437,15 +25437,15 @@\n return \u201dtestparam forgot to assign #\u201d\n return INTERP_OK\n o sub\n (debug, call_level=#<_call_level> myname=#)\n ; try commenting out the next line and run again\n # = [# * 3]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 529 / 1278\n \n #1 = [#1 * 5]\n #2 = [#2 * 3]\n o endsub\n m2\n@@ -25487,15 +25487,15 @@\n \n except InterpreterException,e:\n msg = \u201d%d: \u2019 %s\u2019 - %s\u201d % (e.line_number,e.line_text, e.error_message)\n return msg # replace builtin error message\n \n Canon The canon layer is practically all free functions. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 530 / 1278\n \n import emccanon\n def example(self,*args):\n ....\n emccanon.STRAIGHT_TRAVERSE(line,x0,y0,z0,0,0,0,0,0,0)\n@@ -25532,15 +25532,15 @@\n Import that module from the TOPLEVEL script.\n # namedparams.py\n # trivial example\n def _pi(self):\n return 3.1415926535\n # = [2 * # * #<_pi>]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 531 / 1278\n \n Functions in namedparams.py are expected to return a float or int value. If a string is returned, this\n sets the interpreter error message and aborts execution.\n \u00d2nly functions with a leading underscore are added as parameters, since this is the RS274NGC convention for globals.\n It is possible to redefine an existing predefined parameter by adding a Python function of the same\n@@ -25570,15 +25570,15 @@\n no further action is taken. This can be used for instance to minimally adjust the built in behavior be\n preceding or following it with some other statements.\n Otherwise, the # and # parameters are extracted from the subroutine\u2019s parameter\n space. This means that the NGC procedure could change these values, and the epilog takes the\n changed values in account.\n Then, the Canon command SELECT_TOOL(#) is executed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 532 / 1278\n \n 9.6.11.2. M6: change_prolog and change_epilog\n These wrap a NGC procedure for M6 Tool Change.\n Actions of change_prolog\n The following three steps are applicable only if the iocontrol-v2 component is used:\n@@ -25607,15 +25607,15 @@\n In case the NGC procedure executed the M6 command (which then refers to the built in M6 behavior), no further action is taken. This can be used for instance to minimally adjust the built in behavior be preceding or following it with some other statements.\n Otherwise, the # parameter is extracted from the subroutine\u2019s parameter space,\n and used to set the interpreter\u2019s current_pocket variable. Again, the procedure could change this\n value, and the epilog takes the changed value in account.\n Then, the Canon command CHANGE_TOOL(#) is executed.\n The new tool parameters (offsets, diameter etc) are set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 533 / 1278\n \n 9.6.11.3. G-code Cycles: cycle_prolog and cycle_epilog\n These wrap a NGC procedure so it can act as a cycle, meaning the motion code is retained after\n finishing execution. If the next line just contains parameter words (e.g. new X,Y values), the code is\n executed again with the new parameter words merged into the set of the parameters given in the first\n@@ -25648,15 +25648,15 @@\n \u2022 retain the current motion mode so a continuation line without a motion code will execute the\n same motion code.\n 9.6.11.4. S (Set Speed) : setspeed_prolog and setspeed_epilog\n TBD\n 9.6.11.5. F (Set Feed) : setfeed_prolog and setfeed_epilog\n TBD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 534 / 1278\n \n 9.6.11.6. M61 Set tool number : settool_prolog and settool_epilog\n TBD\n \n 9.6.12. Remapped code execution\n@@ -25710,15 +25710,15 @@\n user-defined - not interpreted\n by LinuxCNC\n user-defined - not interpreted\n by LinuxCNC\n \n or these flags into the [EMC]DEBUG variable as needed. For a current list of debug flags see src/emc/nml_intf/debugflags.h.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 535 / 1278\n \n 9.6.12.5. Debugging Embedded Python code\n Debugging of embedded Python code is harder than debugging normal Python scripts, and only a\n limited supply of debuggers exists. A working open-source based solution is to use the Eclipse IDE,\n and the PydDev Eclipse plug in and its remote debugging feature.\n@@ -25738,15 +25738,15 @@\n pydevd.settrace() will block execution if Eclipse and the Pydev debug server have not been\n started.\n \n To cover the last two steps: the o procedure helps to get into the debugger from MDI mode.\n See also the call_pydevd function in util.py and its usage in remap.involute to set a breakpoint.\n Here\u2019s a screen-shot of Eclipse/PyDevd debugging the involute procedure from above:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 536 / 1278\n \n See the Python code in configs/sim/axis/remap/getting-started/python for details.\n \n 9.6.13. Axis Preview and Remapped code execution\n For complete preview of a remapped code\u2019s tool path some precautions need to be taken. To understand what is going on, let\u2019s review the preview and execution process (this covers the AXIS case, but\n@@ -25762,15 +25762,15 @@\n Now, what about preview of this procedure? At preview time, of course it\u2019s not known whether the\n probe succeeds or fails - but you would likely want to see what the maximum depth of the probe is,\n and assume it succeeds and continues execution to preview further movements. Also, there is no point\n in displaying a probe failed message and aborting during preview.\n The way to address this issue is to test in your procedure whether it executes in preview or execution\n mode. This can be checked for by testing the #<_task> predefined named parameter - it will be 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 537 / 1278\n \n during actual execution and 0 during preview. See configs/sim/axis/remap/manual-toolchange-withtool-length-switch/nc_subroutines/manual_change.ngc for a complete usage example.\n Within Embedded Python, the task instance can be checked for by testing self.task - this will be 1 in\n the milltask instance, and 0 in the preview instance(s).\n \n@@ -25814,15 +25814,15 @@\n G07\n G08\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n \n G05.1 G05.2 G05.3\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 538 / 1278\n \n Cuadro 9.2: Table of Allocated G-codes 10-19\n #\n 10\n 11\n@@ -25905,15 +25905,15 @@\n G41\n G42\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G41.1\n G42.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 539 / 1278\n \n Cuadro 9.5: (continued)\n #\n 43\n 44\n@@ -25994,15 +25994,15 @@\n G71\n G72\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G71.1 G71.2\n G72.1 G72.2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 540 / 1278\n \n Cuadro 9.8: (continued)\n #\n 76\n 77\n@@ -26095,15 +26095,15 @@\n \n Mx7\n \n Mx8\n \n Mx9\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 541 / 1278\n \n Cuadro 9.11: (continued)\n #\n 10-19\n 20-29\n@@ -26233,15 +26233,15 @@\n FIXME Write missing information\n \n 9.6.16. Models of Task execution\n FIXME Write missing information\n 9.6.16.1. Traditional iocontrol/iocontrolv2 execution\n FIXME Write missing information\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 542 / 1278\n \n 9.6.16.2. Redefining IO procedures\n FIXME Write missing information\n 9.6.16.3. Execution-time Python procedures\n FIXME Write missing information\n@@ -26275,15 +26275,15 @@\n 9.6.17.3. Predicting the machine position\n To compute canonical machine operations in advance during read ahead, the interpreter must be able\n to predict the machine position after each line of G-code, and that is not always possible.\n Let\u2019s look at a simple example program which does relative moves (G91), and assume the machine\n starts at x=0,y=0,z=0. Relative moves imply that the outcome of the next move relies on the position\n of the previous one:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 543 / 1278\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G1 Y20 Z-5\n N40 G0 Z30\n@@ -26324,15 +26324,15 @@\n This return code signals to task to stop read ahead for now, execute all queued canonical commands built up so far (including the last one, which is the queue buster), and then synchronize the\n interpreter state with the world model. Technically, this means updating internal variables to reflect\n HAL pin values, reload tool geometries after an M6, and convey results of a probe.\n The interpreter\u2019s synch() method is called by task and does just that - read all the world model\n actual values which are relevant for further execution.\n At this point, task goes ahead and calls the interpreter for more read ahead - until either the program ends or another queue-buster is encountered.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 544 / 1278\n \n 9.6.17.6. Word order and execution order\n One or several words may be present on an NGC block if they are compatible (some are mutually\n exclusive and must be on different lines). The execution model however prescribes a strict ordering\n of execution of codes, regardless of their appearance on the source line (G-code Order of Execution).\n@@ -26369,15 +26369,15 @@\n Tool information is held in the emcStatus structure, which is shared by all parties. One of its fields\n is the toolTable array, which holds the description as loaded from the tool table file (tool number,\n diameter, frontangle, backangle and orientation for lathe, tool offset information).\n The authoritative source and only process actually setting tool information in this structure is the\n iocontrol process. All others processes just consult this structure. The interpreter holds actually a\n local copy of the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 545 / 1278\n \n For the curious, the current emcStatus structure can be accessed by Python statements. The interpreter\u2019s perception of the tool currently loaded for instance is accessed by:\n ;py,from interpreter import *\n ;py,print(this.tool_table[0])\n \n@@ -26414,15 +26414,15 @@\n When the interpreter sees an M6, it:\n 1. checks whether a T command has already been executed (test settings->selected_pocket to be\n >= 0) and fail with Need tool prepared -Txx- for toolchange message if not.\n 2. check for cutter compensation being active, and fail with Cannot change tools with cutter radius\n compensation on if so.\n 3. stop the spindle except if the \u201dTOOL_CHANGE_WITH_SPINDLE_ON\u201d INI option is set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 546 / 1278\n \n 4. generate a rapid Z up move if if the \u201dTOOL_CHANGE_QUILL_UP\u201d INI option is set.\n 5. if TOOL_CHANGE_AT_G30 was set:\n a. move the A, B and C indexers if applicable\n b. generate rapid move to the G30 position\n@@ -26456,15 +26456,15 @@\n in configs/sim/axis/remap/toolchange/python/toolchange.py.\n 9.6.17.13. How M61 (Change tool number) works\n M61 requires a non-negative \u0300Q \u0300parameter (tool number). If zero, this means unload tool, else set\n current tool number to Q.\n Building the replacement for M61 An example Python redefinition for M61 can be found in the\n set_tool_number function in configs/sim/axis/remap/toolchange/python/toolchange.py.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 547 / 1278\n \n 9.6.18. Status\n 1. The RELOAD_ON_CHANGE feature is fairly broken. Restart after changing a Python file.\n 2. M61 (remapped or not) is broken in iocontrol and requires iocontrol-v2 to actually work.\n \n@@ -26507,15 +26507,15 @@\n internally. A warning pin is set and a message issued if the apply-offsets pin is deasserted while offsets\n are applied. The warning pin remains TRUE until the offsets are removed or the apply-offsets pin is\n set.\n Typically, the move-enable pin is connected to external controls and the apply-offsets pin is connected\n to halui.program.is-paused (for offsets only while paused) or set to TRUE (for continuously applied\n offsets).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 548 / 1278\n \n Applied offsets are automatically returned to zero (respecting limits) when either of the enabling\n inputs is deactivated. The zero value tolerance is specified by the epsilon input pin value.\n Waypoints are recorded when the moveoff componenent is enabled. Waypoints are managed with the\n waypoint-sample-secs and waypoint-threshold pins. When the backtrack-enable pin is TRUE, the autoreturn path follows the recorded waypoints. When the memory available for waypoints is exhausted,\n@@ -26558,15 +26558,15 @@\n configs/sim/touchy/ngcgui (touchy-ui)\n \n 9.7.1. Modifying an existing configuration\n A system-provided HAL file (LIB:hookup_moveoff.tcl) can be used to adapt an existing configuration to\n use the moveoff component. Additional INI file settings support the use of a simple GUI (moveoff_gui)\n for controlling offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 549 / 1278\n \n When the system HAL file (LIB:hookup_moveoff.tcl) is properly specified in a configuration INI file, it\n will:\n 1. Disconnect the original joint.N.motor-pos-cmd and joint.N.motor-pos-fb pin connections\n 2. Load (loadrt) the moveoff component (using the name mv) with a personality set to accommodate\n@@ -26608,15 +26608,15 @@\n EPSILON =\n WAYPOINT_SAMPLE_SECS =\n WAYPOINT_THRESHOLD =\n \n The moveoff_gui is used to make additional required connections and provide a popup GUI to:\n 1. Provide a control togglebutton to Enable/Disable offsets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 550 / 1278\n \n 2. Provide a control togglebutton to Enable/Disable backtracking\n 3. Provide control pushbuttons to Increment/Decrement/Zero each axis offset\n 4. Display each axis offset current value\n 5. Display current offset status (disabled, active, removing, etc)\n@@ -26659,15 +26659,15 @@\n net external_offset_1 mv.offset-in-1\n net external_offset_2 mv.offset-in-2\n net external_backtrack_en mv.backtrack-enable\n \n 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\n while using the moveoff_gui display for current offset values and offset status.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 551 / 1278\n \n The moveoff_gui is configured with command line options. For details on the operation of moveoff_gui,\n see the man page:\n $ man moveoff_gui\n \n@@ -26732,15 +26732,15 @@\n Note: If the moveoff move-enable pin (mv.move-enable) is connected when\n moveoff_gui is started, external controls are required and only\n displays are provided.\n \n 9.8. Stand Alone Interpreter\n The rs274 stand alone interpreter is available for use via the command line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 552 / 1278\n \n 9.8.1. Usage\n Usage: rs274 [-p interp.so] [-t tool.tbl] [-v var-file.var] [-n 0|1|2]\n [-b] [-s] [-g] [input file [output file]]\n -p: Specify the pluggable interpreter to use\n@@ -26778,15 +26778,15 @@\n \n 9.9. External Axis Offsets\n External axis offsets are supported during teleop (world) jogs and coordinated (G-code) motion. External axis offsets are enabled on a per-axis basis by INI file settings and controlled dynamically by\n INI input pins. The INI interface is similar to that used for wheel jogging. This type of interface is\n typically implemented with a manual-pulse-generator (mpg) connected to an encoder INI component\n that counts pulses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 553 / 1278\n \n 9.9.1. INI File Settings\n For each axis letter (L in xyzabcuvw):\n [AXIS_L]OFFSET_AV_RATIO = value (controls accel/vel for external offsets)\n \n@@ -26817,15 +26817,15 @@\n 9.9.2.2. Other Motion HAL Pins\n 1. motion.eoffset-active Output(bit): non-zero external offsets applied\n 2. motion.eoffset-limited Output(bit): motion inhibited due to soft limit\n \n 9.9.3. Usage\n The axis input HAL pins (enable,scale,counts) are similar to the pins used for wheel jogging.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 554 / 1278\n \n 9.9.3.1. Offset Computation\n At each servo period, the axis.L.eoffset-counts pin is compared to its value in the prior period. The\n increase or decrease (positive or negative delta) of the axis.L.eoffset-counts pin is multiplied by the\n current axis.L.eoffset-scale pin value. This product is accumulated in an internal register and exported\n@@ -26863,15 +26863,15 @@\n limit will stop motion in the offending axis without a deacceleration interval. Similarly, during\n 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.\n When motion is stopped with no deacceleration phase, system acceleration limits may be violated\n and lead to: 1) a following error (and/or a thump) for a servo motor system, 2) a loss of steps for a\n stepper motor system. In general, it is recommended that external offsets are applied in a manner to\n avoid approaching soft limits.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 555 / 1278\n \n 9.9.3.4. Notes\n External offsets apply to axis coordinate letters (xyzabcuvw). All joints must be homed before external\n axis offsets are honored.\n If an axis.L.eoffset-enable HAL pin is reset when its offset is non-zero, the offset is maintained. The\n@@ -26906,15 +26906,15 @@\n a terminal:\n $ sim_pin axis.z.eoffset-enable axis.z.eoffset-scale axis.z.eoffset-counts\n \n The use of external offsets is aided by displaying information related to the current offsets: the current\n eoffset value and the requested eoffset value, the axis pos-cmd, and (for an identity kinematics machine) the corresponding joint motor pos-cmd and motor-offset. The provided sim configuration (see\n below) demonstrates an example PyVCP panel for the AXIS GUI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 556 / 1278\n \n In the absence of a custom display, halshow can be started as an auxiliary application with a custom\n watch list.\n Example INI file settings to simulate the HAL pin eoffset connections and display eoffset information\n for the z axis (for identity kinematics with z==joint2):\n@@ -26952,15 +26952,15 @@\n 9.9.6.2. jwp_z.ini\n The sim config sim/configs/axis/external_offsets/jwp_z.ini demonstrates a jog-while-pause capability\n for a single (Z) coordinate:\n Panel LEDs are provided to show important status items.\n Controls are provided to set the eoffset scale factor and to increment/decrement/clear the eoffset\n counts.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 557 / 1278\n \n 9.9.6.3. dynamic_offsets.ini\n This sim config sim/configs/axis/external_offsets/dynamic_offsets.ini demonstrates dynamically applied\n offsets by connecting a sinusoidal waveform to the z coordinate external offset inputs.\n Panel LEDs are provided to show important status items.\n@@ -26995,15 +26995,15 @@\n INI file settings enable the (optional) operation of a user-provided tool database program:\n [EMCIO]\n DB_PROGRAM = db_program [args]\n \n When included, db_program specifies the path to a user-provided executable program that provides\n tooldata. Up to 10 space-separated args may be included and passed to the db_program at startup.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 558 / 1278\n \n nota\n INI file settings for [EMCIO]TOOL_TABLE are ignored when a db_program is specified.\n \n nota\n@@ -27039,15 +27039,15 @@\n tool number and pocket number.\n \u201du\u201d spindle_unload (T0M6). The tool data line includes only the T and P items identifying the relevant\n tool number and pocket number.\n nota\n When a NON_RANDOM tool changer is specified using [EMCIO]RANDOM_TOOL_CHANGER=0 (the default), the spindle_load command issued for TnM6 (or M61Qn) is: l Tn P0 (pocket 0 is the spindle).\n The spindle_unload command issued for T0M6 is u T0 P0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 559 / 1278\n \n nota\n When a RANDOM tool changer is specified using [EMCIO]RANDOM_TOOL_CHANGER=1, a pair of\n spindle_unload/spindle_load commands are issued at each tool exchange. The pair of commands\n issued for TnM6 (or M61Qn) are u Tu Pm followed by l Tn P0, where u is the current tool to be sent\n@@ -27091,15 +27091,15 @@\n Removal of a tool number should only be done if the tool number is not currently loaded in spindle.\n \n Exporting the environmental variable DB_SHOW enables LinuxCNC prints (to stdout) that show tool\n data retrieved from the db_program at startup and at subsequent reloading of tool data.\n Exporting the environmental variable DB_DEBUG enables LinuxCNC prints (to stdout) for additional\n debugging information about interface activity.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 560 / 1278\n \n 9.10.1.4. Example program\n An example db_program (implemented as a Python script) is provided with the simulation examples.\n The program demonsrates the required operations to:\n 1. acknowledge startup version\n@@ -27144,15 +27144,15 @@\n )\n tooldb_loop()\n \n nota\n Use of tooldb is not required \u2014 it is provided as a demonstration of the required interface and as a\n convenience for implementing Python-based applications that interface with an external database.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 561 / 1278\n \n 9.10.2. Simulation configs\n Simulation configs using the AXIS gui:\n 1. configs/sim/axis/db_demo/db_ran.ini (random_toolchanger)\n 2. configs/sim/axis/db_demo/db_nonran.ini (nonrandom_toolchanger)\n@@ -27172,50 +27172,50 @@\n LinuxCNC tooldata updates and the database application updates.\n 9.10.2.1. Notes\n \n When a db_program is used in conjunction with a random tool changer ([EMCIO]RANDOM_TOOLCHANGER\n LinuxCNC maintains a file (db_spindle.tbl in the configuration directory) that consists of a single tool\n table line identifying the current tool in the spindle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Parte II\n \n Usage\n \n 562 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 563 / 1278\n \n Cap\u00edtulo 10\n \n User Interfaces\n 10.1. AXIS GUI\n 10.1.1. Introduction\n AXIS is a graphical front-end for LinuxCNC which features a live preview and backplot. It is written\n in Python and uses Tk and OpenGL to display its user interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 564 / 1278\n \n Figura 10.1: The AXIS Window\n \n 10.1.2. Getting Started\n If your configuration is not currently set up to use AXIS, you can change it by editing the .ini file (INI\n file). In the section [DISPLAY] change the [DISPLAY] line to read DISPLAY = axis.\n The sample configuration sim/axis.ini is already configured to use AXIS as its front-end.\n When AXIS starts, a window like the one in the figure Figura 10.1 above opens.\n 10.1.2.1. INI settings\n For more information on INI file settings that can change how AXIS works see the Display Section of\n the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 565 / 1278\n \n CYCLE_TIME - Adjust the response rate of the GUI in milliseconds. Typical 100, useable range 50\n - 200\n (will accept time in seconds (.05 -.2) for legacy reasons - milliseconds preferred to match other\n screens).\n@@ -27249,15 +27249,15 @@\n The AXIS window contains the following elements:\n A display area that shows one of the following:\n \u2022 A preview of the loaded file (in this case, axis.ngc), as well as the current location of the CNC\n machine\u2019s controlled point. Later, this area will display the path the CNC machine has moved\n through, called the backplot.\n \u2022 A large readout showing the current position and all offsets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 566 / 1278\n \n A menu bar and toolbar that allow you to perform various actions\n Manual Control Tab - which allows you to make the machine move, turn the spindle on or off, and\n turn the coolant on or off if included in the INI file.\n MDI Tab - where G-code programs can be entered manually, one line at a time. This also shows the\n@@ -27293,15 +27293,15 @@\n Ladder editor - If you have loaded ClassicLadder you can edit it from here. See the ClassicLadder\n chapter for more information.\n Quit - Terminates the current LinuxCNC session.\n Toggle Emergency Stop F1 - Change the state of the Emergency Stop.\n Toggle Machine Power F2 - Change the state of the Machine Power if the Emergency Stop is not\n on.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 567 / 1278\n \n Run Program - Run the currently loaded program from the beginning.\n Run From Selected Line - Select the line you want to start from first. Use with caution as this will\n move the tool to the expected position before the line first then it will execute the rest of the code.\n \n@@ -27337,15 +27337,15 @@\n G10 L10 in the G-code chapter.\n \u2022 Tool touch off to fixture - When performing Touch Off, the value entered is relative to the ninth\n (G59.3) coordinate system, with the axis offset (G92) ignored. This is useful when there is a tool\n touch-off fixture at a fixed location on the machine, with the ninth (G59.3) coordinate system set\n such that the tip of a zero-length tool is at the fixture\u2019s origin when the Relative coordinates are\n 0. See G10 L11 in the G-code chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 568 / 1278\n \n Top View - The Top View (or Z view) displays the G-code looking along the Z axis from positive to\n negative. This view is best for looking at X & Y.\n Rotated Top View - The Rotated Top View (or rotated Z view) also displays the G-code looking along\n the Z axis from positive to negative. But sometimes it\u2019s convenient to display the X & Y axes rotated\n@@ -27386,15 +27386,15 @@\n Show Tool - The display of the tool cone/cylinder can be disabled if desired.\n Show Extents - The display of the extents (maximum travel in each axis direction) of the loaded\n G-code program can be disabled if desired.\n Show Offsets - The selected fixture offset (G54-G59.3) origin location can be shown as a set of three\n orthogonal lines, one each of red, blue, and green. This offset origin (or fixture zero) display can be\n disabled if desired.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 569 / 1278\n \n Show Machine Limits - The machine\u2019s maximum travel limits for each axis, as set in the INI file,\n are shown as a rectangular box drawn in red dashed lines. This is useful when loading a new Gcode program, or when checking for how much fixture offset would be needed to bring the G-code\n program within the travel limits of your machine. It can be shut off if not needed.\n Show Velocity - A display of velocity is sometimes useful to see how close your machine is running\n@@ -27426,15 +27426,15 @@\n Open G Code file [O]\n \n Reload current file [Ctrl-R]\n Begin executing the current file [R]\n Execute next line [T]\n Pause Execution [P] Resume Execution [S]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 570 / 1278\n \n Stop Program Execution [ESC]\n Toggle Skip lines with \u201d/\u201d [Alt-M-/]\n Toggle Optional Pause [Alt-M-1]\n Zoom In\n@@ -27466,15 +27466,15 @@\n commanded position due to following error, dead band, encoder resolution, or step size. For instance,\n if you command a movement to X 0.0033 on your mill, but one step of your stepper motor or one\n encoder count is 0.00125, then the Commanded position might be 0.0033, but the Actual position will\n be 0.0025 (2 steps) or 0.00375 (3 steps).\n Preview Plot When a file is loaded, a preview of it is shown in the display area. Fast moves (such as\n those produced by the G0 command) are shown as cyan lines. Moves at a feed rate (such as those\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 571 / 1278\n \n produced by the G1 command) are shown as solid white lines. Dwells (such as those produced by the\n G4 command) are shown as small pink X marks.\n 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\n@@ -27507,15 +27507,15 @@\n By dragging with the left mouse button pressed, the preview plot will be shifted (panned).\n 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\n of the line. Otherwise, the center of rotation is the center of the entire program.\n By rotating the mouse wheel, or by dragging with the right mouse button pressed, or by dragging\n with control and the left mouse button pressed, the preview plot will be zoomed in or out.\n By clicking one of the Preset View icons, or by pressing V, several preset views may be selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 572 / 1278\n \n 10.1.3.4. Text Display Area\n By left-clicking a line of the program, the line will be highlighted in both the graphical and text displays.\n When the program is running, the line currently being executed is highlighted in red. If no line has\n been selected by the user, the text display will automatically scroll to show the current line.\n@@ -27535,15 +27535,15 @@\n the desired direction of motion. The first four axes can also be moved by the arrow keys (X and Y),\n PAGE UP and PAGE DOWN keys (Z), and the [ and ] keys (A).\n If Continuous is selected, the motion will continue as long as the button or key is pressed. If another\n value is selected, the machine will move exactly the displayed distance each time the button is clicked\n or the key is pressed. By default, the available values are 0.1000, 0.0100, 0.0010, 0.0001.\n See the DISPLAY Section for more information on setting the increments.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 573 / 1278\n \n Homing (Identity Kinematics) The INI file setting [KINS]JOINTS defines the total number of joints\n for the system. A joint may be configured with a home switch or for immediate homing. Joints may\n specify a home sequence that organizes the order for homing groups of joints.\n If all joints are configured for homing and have valid home sequences, the homing button will show\n@@ -27569,15 +27569,15 @@\n programs, except that variables may not be referred to. The resulting value is shown as a number.\n \n Figura 10.4: Touch Off Window\n See also the Machine menu options: Touch part and Touch part holder.\n Tool Touch Off By pressing the Tool Touch Off button the tool length and offsets of the currently\n loaded tool will be changed so that the current tool tip position matches the entered coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 574 / 1278\n \n Figura 10.5: Tool Touch Off Window\n See also the Tool touch off to workpiece and Tool touch off to fixture options in the Machine menu.\n Override Limits By pressing Override Limits, the machine will temporarily be allowed to jog off of\n a physical limit switch. This check box is only available when a limit switch is tripped. The override\n@@ -27591,15 +27591,15 @@\n Pressing the spindle start button sets the S speed to 1.\n The Coolant group The two buttons allow the Mist and Flood coolants to be turned on and off.\n Depending on your machine configuration, not all the items in this group may appear.\n 10.1.3.6. MDI\n MDI allows G-code commands to be entered manually. When the machine is not turned on, or when a\n program is running, the MDI controls are unavailable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 575 / 1278\n \n Figura 10.6: The MDI tab\n History - This shows MDI commands that have been typed earlier in this session.\n MDI Command - This allows you to enter a G-code command to be executed. Execute the command\n by pressing Enter or by clicking Go.\n@@ -27613,15 +27613,15 @@\n By moving this slider, the programmed spindle speed can be modified. For instance, if a program\n requests S8000 and the slider is set to 80 %, then the resulting spindle speed will be 6400. This item\n only appears when the HAL pin spindle.0.speed-out is connected.\n 10.1.3.9. Jog Speed\n By moving this slider, the speed of jogs can be modified. For instance, if the slider is set to 1 in/min,\n then a .01 inch jog will complete in about .6 seconds, or 1/100 of a minute. Near the left side (slow\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 576 / 1278\n \n jogs) the values are spaced closely together, while near the right side (fast jogs) they are spaced much\n further apart, allowing a wide range of jog speeds with fine control when it is most important.\n On machines with a rotary axis, a second jog speed slider is shown. This slider sets the jog rate for\n the rotary axes (A, B and C).\n@@ -27698,15 +27698,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Manual\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 577 / 1278\n \n Cuadro 10.1: (continued)\n Keystroke\n R\n P\n@@ -27749,15 +27749,15 @@\n Any\n Any\n \n 10.1.5. Show LinuxCNC Status (linuxcnctop)\n AXIS includes a program called linuxcnctop which shows some of the details of LinuxCNC\u2019s state. You\n can run this program by invoking Machine > Show LinuxCNC Status\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 578 / 1278\n \n Figura 10.7: LinuxCNC Status Window\n The name of each item is shown in the left column. The current value is shown in the right column. If\n the value has recently changed, it is shown on a red background.\n \n@@ -27774,15 +27774,15 @@\n (0.0, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI> G1 F5 X1\n MDI>\n (0.5928500000000374, 0.0, 0.0, 0.0, 0.0, 0.0)\n MDI>\n (1.0000000000000639, 0.0, 0.0, 0.0, 0.0, 0.0)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 579 / 1278\n \n 10.1.7. axis-remote\n AXIS includes a program called axis-remote which can send certain commands to a running AXIS.\n The available commands are shown by running axis-remote --help and include checking whether AXIS\n is running (--ping), loading a file by name, reloading the currently loaded file (--reload), and making\n@@ -27813,50 +27813,50 @@\n rs274 provides additional tools for working with rs274ngc files\n hal allows the creation of userspace HAL components written in Python\n _togl provides an OpenGL widget that can be used in Tkinter applications\n minigl provides access to the subset of OpenGL used by AXIS\n To use these modules in your own scripts, you must ensure that the directory where they reside is on\n Python\u2019s 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 580 / 1278\n \n 10.1.10. Using AXIS in Lathe Mode\n By including the line LATHE = 1 in the [DISPLAY] section of the INI file, AXIS selects lathe mode. The\n Y axis is not shown in coordinate readouts, the view is changed to show the Z axis extending to the\n right and the X axis extending towards the bottom of the screen, and several controls (such as those\n for preset views) are removed. The coordinate readouts for X are replaced with diameter and radius.\n \n Figura 10.9: AXIS Lathe Mode\n Pressing V zooms out to show the entire file, if one is loaded.\n When in lathe mode, the shape of the loaded tool (if any) is shown.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 581 / 1278\n \n Figura 10.10: Lathe Tool Shape\n To change the display to a back tool lathe you need to have both LATHE = 1 and BACK_TOOL_LATHE\n = 1 in the [DISPLAY] section. This will invert the view and put the tool on the back side of the Z axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 582 / 1278\n \n Figura 10.11: Lathe Back Tool Shape\n \n 10.1.11. Using AXIS in Foam Cutting mode\n By including the line FOAM = 1 in the [DISPLAY] section of the INI file, AXIS selects foam-cutting\n mode. In the program preview, XY motions are displayed in one plane, and UV motions in another. In\n the live plot, lines are drawn between corresponding points on the XY plane and the UV plane. The\n special comments (XY_Z_POS) and (UV_Z_POS) set the Z coordinates of these planes, which default\n to 0 and 1.5 machine units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 583 / 1278\n \n Figura 10.12: Foam Cutting Mode\n \n 10.1.12. Advanced Configuration\n When AXIS is started it creates the HAL pins for the GUI then it executes the HAL file named in the INI\n@@ -27864,15 +27864,15 @@\n _postgui + .hal eg. lathe_postgui.hal, but can be any legal filename. These commands are executed\n after the screen is built, guaranteeing the widget\u2019s HAL pins are available. You can have multiple line\n of POSTGUI_HALFILE= in the INI. Each will be run one after the other in the order they\n appear.\n For more information on the INI file settings that can change the way AXIS works, see the Display\n Section of the INI configuration chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 584 / 1278\n \n 10.1.12.1. Program Filters\n AXIS has the ability to send loaded files through a filter program. This filter can do any desired task:\n Something as simple as making sure the file ends with M2, or something as complicated as generating\n G-code from an image.\n@@ -27894,15 +27894,15 @@\n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n Figura 10.13: Circular Holes\n If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 585 / 1278\n \n FILTER_PROGRESS= %d\n \n will set the AXIS progress bar to the given percentage. This feature should be used by any filter that\n runs for a long time.\n@@ -27938,15 +27938,15 @@\n Example of .axisrc file\n root_window.bind(\u201d\u201d, \u201ddestroy .\u201d)\n help2.append((\u201dControl-Q\u201d, \u201dQuit\u201d))\n \n The following stops the \u201dDo you really want to quit\u201d dialog.\n root_window.tk.call(\u201dwm\u201d,\u201dprotocol\u201d,\u201d.\u201d,\u201dWM_DELETE_WINDOW\u201d,\u201ddestroy .\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 586 / 1278\n \n 10.1.12.5. USER_COMMAND_FILE\n \n A configuration-specific Python file may be specified with an INI file setting [DISPLAY]USER_COMMAND_FIL\n Like a ~/.axisrc file, this file is sourced just before the AXIS GUI is displayed. This file is specific to\n@@ -27982,15 +27982,15 @@\n G-code file, one can disable the preview on certain parts that are already working OK).\n (AXIS,hide) Stops the preview (must be first)\n (AXIS,show) Resumes the preview (must follow a hide)\n (AXIS,stop) Stops the preview from here to the end of the file.\n (AXIS,notify,the_text) Displays the_text as an info display\n This display can be useful in the AXIS preview when (debug,message) comments are not displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 587 / 1278\n \n 10.1.13. Axisui\n To improve the interaction of AXIS with physical jog wheels, the axis currently selected in the GUI is\n also reported on a pin with a name like axisui.jog.x. One of these pins is TRUE at one time, and the\n rest are FALSE. These are meant to control motion\u2019s jog-enable pins.\n@@ -28073,15 +28073,15 @@\n 10.1.14. AXIS Customization Hints\n AXIS is a fairly large and difficult-to-penetrate code base, this is helpful To keep the code stable but\n makes it difficult to customize.\n Here we will show code snippets to modify behaviours or visuals of the screen. Keep in mind the\n internal code of AXIS can change from time to time.\n these snippets are not guaranteed to continue to work - they may need adjustment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 588 / 1278\n \n 10.1.14.1. The update function\n There is a function in AXIS named user_live_update that is called every time AXIS updates itself. You\n can use this to update your own functions.\n # continuous update function\n@@ -28120,15 +28120,15 @@\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n root_window.bind(\u2019\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(50))\n@@ -28167,15 +28167,15 @@\n # connect pins\n hal.new_sig(\u2019idle-led\u2019,hal.HAL_BIT)\n hal.connect(\u2019halui.program.is-idle\u2019,\u2019idle-led\u2019)\n hal.connect(\u2019my_component.idle-led\u2019,\u2019idle-led\u2019)\n \n 589 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 590 / 1278\n \n # set a pin\n hal.set_p(\u2019my_component.pause-led\u2019,\u20191\u2019)\n # get a pin 2,8+ branch\n value = hal.get_value(\u2019halui.program.is-idle\u2019)\n@@ -28216,15 +28216,15 @@\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-text\u2019,\u2019Home Y\u2019,\u2019-command\u2019,\u2019 \u2190goto_home Y\u2019,\u2019-height\u2019,\u20192\u2019)\n # place the button\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20197\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n # any function called from Tcl needs to be added to TclCommands\n TclCommands.goto_home = goto_home\n commands = TclCommands(root_window)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 591 / 1278\n \n 10.1.14.12. Add Button to manual frame\n # make a new button and put it in the manual frame\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-text\u2019,\u2019My Button\u2019,\u2019- \u2190command\u2019,\u2019mybutton_clicked\u2019,\u2019-height\u2019,\u20192\u2019)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20196\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n@@ -28280,15 +28280,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 592 / 1278\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28385,15 +28385,15 @@\n # use \u2019grid\u2019 or \u2019pack\u2019 depending on how it was originally placed\n root_window.tk.call(\u2019grid\u2019,\u2019forget\u2019,\u2019.pane.top.tabs.fmanual.jogf.zerohome.tooltouch\u2019)\n \n 10.1.14.15. Change a label\n # change label of a widget\n root_window.tk.call(\u2019setup_widget_accel\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019Downdraft\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 593 / 1278\n \n # make sure it appears (only needed in this case if the mist button was hidden)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20195\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n \n 10.1.14.16. Redirect an existing command\n@@ -28423,15 +28423,15 @@\n root_window.tk.call(\u2019.toolbar.program_run\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019RUN\u2019,\u2019-width\u2019, \u2190buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_step\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STEP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_pause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019PAUSE\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_stop\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STOP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_blockdelete\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Skip /\u2019 \u2190,\u2019-width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_optpause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019M1\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 594 / 1278\n \n root_window.tk.call(\u2019.toolbar.view_zoomin\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom+\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_zoomout\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom-\u2019,\u2019-width \u2190\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top X\u2019,\u2019-width\u2019,buW, \u2190\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z2\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top Y\u2019,\u2019-width\u2019,buW \u2190,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n@@ -28467,15 +28467,15 @@\n It has support for integrated virtual keyboard (onboard or matchbox-keyboard), so there is no need\n for a hardware keyboard or mouse, but it can also be used with that hardware. GMOCCAPY offers a\n separate settings page to configure most settings of the GUI without editing files.\n 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.\n You could just copy the gmoccapy.pot file to something like it.po and translate that file with gtranslator\n or poedit. After rebuilding, you\u2019d get the GUI in your preference language. To facilitate the sharing\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 595 / 1278\n \n of the translation, GMOCCAPY is available on the Weblate web interface. GMOCCAPY is currently\n 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\u2019t hesitate to contact me on\n nieson@web.de.\n \n@@ -28489,15 +28489,15 @@\n it should fit to every standard screen. It is recommended to use screens with minimum resolution of\n 1024x748.\n \n 10.2.3. How to Get GMOCCAPY\n GMOCCAPY 3 is included in the standard distribution of LinuxCNC since release 2.7. So the easiest\n way to get GMOCCAPY on your controlling PC is just to download the ISO and install it from the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 596 / 1278\n \n CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n In the release notes aka changelist you can track the latest bugfixes and features.\n You will get a similar screen to the following (the design may vary depending on your config):\n \n@@ -28508,15 +28508,15 @@\n -logo : If given, the logo will hide the jog button tab in manual mode, this is only\n useful for machines with hardware buttons for jogging and increment selection.\n There is really not to much to configure just to run GMOCCAPY, but there are some points you should\n take care off if you want to use all the features of the GUI.\n You will find a lot of simulation configurations (INI files) included, just to show the basics:\n gmoccapy.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 597 / 1278\n \n gmoccapy_4_axis.ini\n lathe_configs/gmoccapy_lathe.ini\n lathe_configs/gmoccapy_lathe_imperial.ini\n gmoccapy_left_panel.ini\n@@ -28549,15 +28549,15 @@\n PROGRAM_PREFIX = ../../nc_files/\n \n DISPLAY = gmoccapy - This tells LinuxCNC to use GMOCCAPY.\n PREFERENCE_FILE_PATH - Gives the location and name of the preferences file to be used. In most\n cases this line will not be needed, it is used by GMOCCAPY to store your settings of the GUI, like\n themes, DRO units, colors, and keyboard settings, etc., see settings page for more details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 598 / 1278\n \n nota\n If no path or file is given, GMOCCAPY will use as default .pref, if no machine\n name is given in your INI File it will use gmoccapy.pref. The file will be stored in your config directory,\n so the settings will not be mixed if you use several configs. If you only want to use one file for several\n@@ -28592,15 +28592,15 @@\n If not set, half of MAX_LINEAR_VELOCITY will be used. If that value is also not given, it will default\n to 180.\n \n MAX_LINEAR_VELOCITY = 230.0 - Sets the maximal velocity of the machine.\n nota\n Defaults to 600 if not set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 599 / 1278\n \n 10.2.4.3. Macro Buttons\n You can add macros to GMOCCAPY, similar to Touchy\u2019s way. A macro is nothing else than a NGC file.\n You are able to execute complete CNC programs in MDI mode by just pushing one button. To do so,\n you first have to specify the search path for macros:\n@@ -28640,15 +28640,15 @@\n GMOCCAPY will also accept macros asking for parameters like:\n [MACRO]\n MACRO = go_to_position X-pos Y-pos Z-pos\n \n The parameters must be separated by spaces. This example calls a file go_to_position.ngc with the\n following content:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 600 / 1278\n \n ; Test file \u201dgo to position\u201d\n ; will jog the machine to a given position\n O sub\n G17\n@@ -28668,15 +28668,15 @@\n M2\n \n After pushing the execute macro button, you will be asked to enter the values for X-pos Y-pos Z-pos\n and the macro will only run if all values have been given.\n nota\n If you would like to use a macro without any movement, see also the notes in known problems.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 601 / 1278\n \n Macro example using the \u201dgo to position\u201d-macro\n 10.2.4.4. Embedded Tabs and Panels\n You can add embedded programs to GMOCCAPY like you can do in AXIS, Touchy and Gscreen. All is\n done by GMOCCAPY automatically if you include a few lines in your INI file in the DISPLAY section.\n@@ -28690,15 +28690,15 @@\n EMBED_TAB_LOCATION = ntb_preview\n EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade\n \n All you have to take care of, is that you include for every tab or side panel the mentioned three lines:\n EMBED_TAB_NAME = Representa el nombre de la pesta\u00f1a o el panel lateral. Depende de usted\n qu\u00e9 nombre usar, pero \u00a1debe estar presente!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 602 / 1278\n \n EMBED_TAB_LOCATION = The place where your program will be placed in the GUI, see figure\n Embedded tab locations. Valid values are:\n \u2022 ntb_user_tabs (as main tab, covering the complete screen)\n \u2022 ntb_preview (as tab on the preview side (1))\n@@ -28734,29 +28734,29 @@\n \n will add a the panel manual-example.ui, include a custom Python handler, hitcounter.py and make\n all connections after realizing the panel according to manual-example.hal.\n hide\n \n will hide the chosen box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 603 / 1278\n \n Figura 10.14: Embedded tab locations\n nota\n If you make any HAL connections to your custom glade panel, you need to do that in the HAL file\n specified in the EMBED_TAB_COMMAND line, otherwise you may get an error that the HAL pin does\n not exist \u2014 this is because of race conditions loading the HAL files. Connections to GMOCCAPY HAL\n pins need to be made in the postgui HAL file specified in your INI file, because these pins do not exist\n prior of realizing the GUI.\n \n Here are some examples:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ntb_preview\n \n 604 / 1278\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -28779,15 +28779,15 @@\n provide a -response HAL pin.\n For more detailed information of the pins see User Created Message HAL Pins.\n Example of User Message Configuration\n MESSAGE_TEXT = This is a info-message test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 605 / 1278\n \n MESSAGE_TEXT = This is a yes no dialog test\n MESSAGE_TYPE = yesnodialog\n MESSAGE_PINNAME = yesnodialog\n MESSAGE_TEXT = Text can be small, big, bolditalic,\n@@ -28832,15 +28832,15 @@\n self.widgets.vbtb_main.remove(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.remove(self.widgets.lbl_time)\n self.widgets.vbtb_main.add(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.add(self.widgets.lbl_time)\n \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 606 / 1278\n \n 10.2.4.8. User CSS File\n Similar to the User command file it\u2019s possible to influence the appearance by cascading style sheets\n (CSS). If a file ~/.gmoccapy_css exists, its contents are loaded into the stylesheet provider and are\n so beeing applied to the GUI.\n@@ -28879,15 +28879,15 @@\n are count from up to down and from left to right beginning with 0.\n nota\n The pin names have changed in GMOCCAPY 2 to order them in a better way.\n \n The pins for the right (vertical) buttons are:\n gmoccapy.v-button.button-0 (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 607 / 1278\n \n gmoccapy.v-button.button-1 (bit IN)\n gmoccapy.v-button.button-2 (bit IN)\n gmoccapy.v-button.button-3 (bit IN)\n gmoccapy.v-button.button-4 (bit IN)\n@@ -28959,15 +28959,15 @@\n enabled in settings,\n otherwise Nothing\n optional blocks\n full-size preview\n \n edit code\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 608 / 1278\n \n Cuadro 10.3: Functional assignment of horizontal buttons\n (2)\n Pin\n Settings Mode\n@@ -29058,15 +29058,15 @@\n \n \u00a1As\u00ed que tenemos 67 reacciones con s\u00f3lo 10 pines de HAL!\n These pins are made available to be able to use the screen without an touch panel, or protect it\n from excessive use by placing hardware buttons around the panel. They are available in a sample\n configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 609 / 1278\n \n 10.2.5.2. Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n nota\n For GMOCCAPY 3 some HAL pin names have changed when new controls have been implemented.\n@@ -29078,15 +29078,15 @@\n gmoccapy.jog.jog-velocity.count-enable (bit IN) - Must be True, to enable counts\n gmoccapy.feed.feed-override.counts (s32 IN) - feed override\n gmoccapy.feed.feed-override.count-enable (bit IN) - Must be True, to enable counts\n gmoccapy.feed.reset-feed-override (bit IN) - reset the feed override to *0 %\n gmoccapy.spindle.spindle-override.counts (s32 IN) - spindle override\n gmoccapy.spindle.spindle-override.count-enable (bit IN) - Must be True, to enable counts\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 610 / 1278\n \n gmoccapy.spindle.reset-spindle-override (bit IN) - reset the spindle override to *0 %\n gmoccapy.rapid.rapid-override.counts (s32 IN) - Maximal Velocity of the *chine\n gmoccapy.rapid.rapid-override.count-enable (bit IN) - Must be True, to enable counts\n To connect potentiometers, use the following pins:\n@@ -29116,15 +29116,15 @@\n gmoccapy.spc_spindle.increase (bit IN) - As long as True the value of the slider will increase\n gmoccapy.spc_spindle.decrease (bit IN) - As long as True the value of the slider will decrease\n gmoccapy.spc_spindle.scale (float IN) - A value to scale the output value (handy to change units/min to units/sec)\n gmoccapy.spc_spindle.value (float OUT) - Value of the widget\n gmoccapy.spc_spindle.scaled-value (float OUT) - Scaled value of the widget .RAPIDS\n gmoccapy.spc_rapid.increase (bit IN) - As long as True the value of the slider will increase\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 611 / 1278\n \n gmoccapy.spc_rapid.decrease (bit IN) - As long as True the value of the slider will decrease\n gmoccapy.spc_rapid.scale (float IN) - A value to scale the output value (handy to change units/min\n to units/sec)\n gmoccapy.spc_rapid.value (float OUT) - Value of the widget\n@@ -29159,15 +29159,15 @@\n For the standard XYZ config following HAL pins will be available:\n gmoccapy.jog.axis.jog-x-plus (bit IN)\n gmoccapy.jog.axis.jog-x-minus (bit IN)\n gmoccapy.jog.axis.jog-y-plus (bit IN)\n gmoccapy.jog.axis.jog-y-minus (bit IN)\n gmoccapy.jog.axis.jog-z-plus (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 612 / 1278\n \n gmoccapy.jog.axis.jog-z-minus (bit IN)\n If you use a 4 axes configuration, there will be two additional pins:\n gmoccapy.jog.jog--plus (bit IN)\n gmoccapy.jog.jog--minus (bit IN)\n@@ -29198,15 +29198,15 @@\n gmoccapy.jog.jog-inc-3 (bit IN)\n gmoccapy.jog.jog-inc-4 (bit IN)\n gmoccapy.jog.jog-inc-5 (bit IN)\n gmoccapy.jog.jog-inc-6 (bit IN)\n GMOCCAPY offers also a HAL pin to output the selected jog increment:\n gmoccapy.jog.jog-increment (float OUT)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 613 / 1278\n \n 10.2.5.6. Hardware Unlock Pin\n To be able to use a key switch to unlock the settings page, the following pin is exported:\n gmoccapy.unlock-settings (bit IN) - The settings page is unlocked if the pin is high. To use this\n pin, you need to activate it on the settings page.\n@@ -29240,15 +29240,15 @@\n MESSAGE_TEXT = LUBE FAULT\n MESSAGE_TYPE = okdialog\n MESSAGE_PINNAME = lube-fault\n MESSAGE_TEXT = X SHEAR PIN BROKEN\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 614 / 1278\n \n 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.\n Example Connection of User Messages (HAL file)\n net gmoccapy-lube-fault gmoccapy.messages.lube-fault\n net gmoccapy-lube-fault-waiting gmoccapy.messages.lube-fault-waiting\n@@ -29268,15 +29268,15 @@\n Also loops will cause different values.\n 10.2.5.11. Tool Related Pins\n Tool Change Pins These pins are provided to use GMOCCAPY\u2019s internal tool change dialog, similar\n to the one known from AXIS, but with several modifications. So you will not only get the message to\n change to tool number 3, but also the description of that tool like 7.5 mm 3 flute cutter. The information\n is taken from the tool table, so it is up to you what to display.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 615 / 1278\n \n Figura 10.15: GMOCCAPY tool change dialog\n gmoccapy.toolchange-number (s32 IN) - The number of the tool to be changed\n gmoccapy.toolchange-change (bit IN) - Indicates that a tool has to be changed\n gmoccapy.toolchange-changed (bit OUT) - Indicates tool has been changed\n@@ -29292,15 +29292,15 @@\n \n Tool Offset Pins These pins allow you to show the active tool offset values for X and Z in the tool\n information frame. You should know that they are only active after G43 has been sent.\n \n Figura 10.16: Tool information area\n gmoccapy.tooloffset-x (float IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 616 / 1278\n \n gmoccapy.tooloffset-z (float IN)\n nota\n The tooloffset-x line is not needed on a mill, and will not be displayed on a mill with trivial kinematics.\n \n@@ -29329,15 +29329,15 @@\n 1. Touch off your workpiece in X and Y.\n 2. Measure the height of your block from the base where your tool switch is located, to the upper\n face of the block (including chuck etc.).\n 3. Push the button block height and enter the measured value.\n 4. Go to auto mode and start your program.\n Here is a small sketch:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 617 / 1278\n \n Figura 10.17: Tool measurement data\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of the GMOCCAPY way is, that you do not need a reference tool.\n nota\n@@ -29353,15 +29353,15 @@\n gmoccapy.probeheight (float OUT) - The probe switch height\n gmoccapy.searchvel (float OUT) - The velocity to search for the tool probe switch\n gmoccapy.probevel (float OUT) - The velocity to probe tool length\n 10.2.6.2. Tool Measurement INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 618 / 1278\n \n [RS274NGC]\n # is the sub, with is called when a error during tool change happens, not needed on every\n machine configuration\n ON_ABORT_COMMAND=O call\n@@ -29403,15 +29403,15 @@\n toplevel.py\n remap.py\n stdglue.py\n From /configs/sim/gmoccapy/macros copy\n on_abort.ngc\n change.ngc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 619 / 1278\n \n to the directory specified as SUBROUTINE_PATH, see RS274NGC Section.\n Open change.ngc with a editor and uncomment the following lines (49 and 50):\n F #<_hal[gmoccapy.probevel]>\n G38.2 Z-4\n@@ -29447,15 +29447,15 @@\n \n To enter the page you will have to click on\n and give an unlock code, which is 123 by\n default. If you want to change it at this time you will have to edit the hidden preference file, see the\n display section for details.\n The page is separated in three main tabs:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 620 / 1278\n \n 10.2.7.1. Appearance\n \n Figura 10.18: GMOCCAPY settings page Appearance\n On this tab you will find the following options:\n@@ -29465,15 +29465,15 @@\n Start as full screen\n Start maximized\n Start as window - If you select start as window the spinboxes to set the position and size will get\n 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\n on the settings.\n hide the cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 621 / 1278\n \n Keyboard The checkboxes allow the user to select if he wants the on board keyboard to be shown\n immediately, when entering the MDI Mode, when entering the offset page, the tooledit widget or when\n open a program in the EDIT mode. The keyboard button on the bottom button list will not be affected\n by these settings, so you are able to show or hide the keyboard by pressing the button. The default\n@@ -29497,15 +29497,15 @@\n The letters \u201dde\u201d are for German, you will have to set them according to your locale settings. Just\n execute this file before starting LinuxCNC, it can be done also adding a starter to your local folder.\n ./config/autostart\n \n So that the layout is set automatically on starting.\n For matchbox-keyboard you will have to make your own layout, for a German layout ask in the forum.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 622 / 1278\n \n GMOCCAPY with Onboard keyboard in edit mode\n On Touch Off This gives the option whether to show the preview tab or the offset page tab when you\n enter the touch off mode by clicking the corresponding bottom button.\n show preview\n@@ -29516,15 +29516,15 @@\n Relative mode = black\n Absolute mode = blue\n Distance to go = yellow\n The foreground color of the DRO can be selected with:\n homed color = green\n unhomed color = red\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 623 / 1278\n \n nota\n You can change through the DRO modes (absolute, relative, distance to go) by clicking the number\n on the DRO! If you click on the left side letter of the DRO a popup window will allow you to set the\n value of the axes, making it easier to set the value, as you will not need to go over the touch off\n@@ -29562,15 +29562,15 @@\n \u2022 left zoom, middle move, right rotate\n \u2022 left move, middle rotate, right zoom\n \u2022 left zoom, middle rotate, right move\n \u2022 left move, middle zoom, right rotate\n \u2022 left rotate, middle zoom, right move\n Default is left move, middle zoom, right rotate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 624 / 1278\n \n The mouse wheel will still zoom the preview in every mode.\n sugerencia\n If you select an element in the preview, the selected element will be taken as rotation center point\n and in auto mode the corresponding code line will be highlighted.\n@@ -29587,15 +29587,15 @@\n messages sounds should be played. By default \u201dFollow System Theme\u201d is set.\n It further allows to change the icon theme. Currently there are three themes available:\n classic\n material\n material light\n To create custom icon themes, see section Icon Theme for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 625 / 1278\n \n 10.2.7.2. Hardware\n \n Hardware MPG Scale For the different HAL pins to connect MPG wheels to, you may select individual\n scales to be applied. The main reason for this was my own test to solve this through HAL connections,\n@@ -29611,15 +29611,15 @@\n are others that will never allow this. So everybody can select whether to use them or not.\n Keyboard shortcuts are disabled by default.\n \n aviso\n It is not recommended to use keyboard jogging, as it represents a serious risk for operator and\n machine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 626 / 1278\n \n Please take care if you use a lathe, then the shortcuts will be different, see the Lathe Specific Section.\n General\n F1 - Trigger Estop (will work even if keyboard shortcuts are disabled)\n F2 - Toggle machine on/off\n@@ -29650,15 +29650,15 @@\n Spindle\n Starting RPM - Sets the rpm to be used if the spindle is started and no S value has been set.\n nota\n This value will be presetted according to your settings in [DISPLAY] DEFAULT_SPINDLE_SPEED of\n your INI file. If you change the settings on the settings page, that value will be default from that\n moment, your INI file will not be modified.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 627 / 1278\n \n Spindle bar min and Spindle bar max - Sets the limits of the spindle bar shown in the INFO frame\n on the main screen.\n Default values are:\n MIN = 0\n@@ -29673,15 +29673,15 @@\n please take care that the \u201drabbit mode\u201d is activated, otherwise you will not be able to jog faster\n than the turtle jog velocity, which is calculated using the turtle jog factor.\n Turtle jog factor - Sets the scale to apply for turtle jog mode (button pressed, showing the turtle).\n If you set a factor of 20, the turtle max. jog velocity will be 1/20 of the max. velocity of the machine.\n nota\n This button can be controlled using the Turtle-Jog HAL Pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 628 / 1278\n \n 10.2.7.3. Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n nota\n@@ -29694,15 +29694,15 @@\n \u2022 X Pos. - The X position of the tool switch.\n \u2022 Y Pos. - The Y position of the tool switch.\n \u2022 Z Pos. - The Z position of the tool switch, we will go as rapid move to this coordinate.\n \u2022 Max. Probe The distance to search for contact, an error will be launched, if no contact is\n given in this range. The distance has to be given in relative coordinates, beginning the move\n from Z Pos., so you have to give a negative value to go down!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 629 / 1278\n \n \u2022 Probe Height - The height of your probe switch, you can measure it. Just touch off the base\n where the probe switch is located and set that to zero. Then make a tool change and watch\n the tool_offset_z value, that is the height you must enter here.\n Probe velocities\n@@ -29736,15 +29736,15 @@\n the 11th message will delete the first one, so you will only see the last 10.\n Font - The font and size you want to use to display the messages.\n Use frames - If you activate the checkbox, each message will be displayed in a frame, so it is much\n easier to distinguish the messages. But you will need a little bit more space.\n Launch test message-button - It will show a message, so you can see the changes of your settings\n without the need to generate an error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 630 / 1278\n \n 10.2.8. Icon Theme\n Icon themes are used to customize the look and feel of GMOCCAPY\u2019s icons.\n GMOCCAPY ships with three different icon themes:\n classic - The classic GMOCCAPY icons.\n@@ -29781,15 +29781,15 @@\n png files). A special case is the directory called \u201dscalable/actions\u201d, this contains scalable icons not\n tied to a specific size (e.g. svg files).\n By supplying different sized versions of the icons, we can guarantee a nice looking icon if different\n sizes and we also have the ability to change the icon according to its size, for example a 64x64 px\n sized icon may contain more details than its 16x16 px version.\n For each directory we also have to write a section in the index.theme file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 631 / 1278\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -29838,25 +29838,25 @@\n Warning: this color indicates \u201dwarning\u201d (usually something\n yellow/orange\u2019ish).\n Error: this color indicates \u201derror\u201d (usually something red\u2019ish).\n \n sugerencia\n Examples of symbolic icons can be found at linuxcnc/share/gmoccapy/icons/material.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 632 / 1278\n \n 10.2.9. Lathe Specific Section\n If in the INI file LATHE = 1 is given, the GUI will change its appearance to the special needs for a\n lathe. Mainly the Y axis will be hidden and the jog buttons will be arranged in a different order.\n \n Figura 10.19: Normal Lathe\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 633 / 1278\n \n Figura 10.20: Back Tool Lathe\n As you see the R DRO has a black background and the D DRO is gray. This will change according to\n the active G-code G7 or G8. The active mode is visible by the black background, meaning in the shown\n images G8 is active.\n@@ -29867,15 +29867,15 @@\n Normal Lathe:\n Arrow_Left or NumPad_Left - Jog Z minus\n Arrow_Right or NumPad_Right - Jog Z plus\n Arrow_up or NumPad_Up - Jog X minus\n Arrow_Down or NumPad_Down - Jog X plus\n Back Tool Lathe:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 634 / 1278\n \n Arrow_Left or NumPad_Left - Jog Z minus\n Arrow_Right or NumPad_Right - Jog Z plus\n Arrow_up or NumPad_Up - Jog X plus\n Arrow_Down or NumPad_Down - Jog X minus\n@@ -29887,15 +29887,15 @@\n There is a very good WIKI, which is actually growing, maintained by Marius, see Plasma wiki page.\n \n 10.2.11. Videos on YouTube\n Below is a series of videos that show GMOCCAPY in action. Unfortunately, these videos don\u2019t show\n the latest version of GMOCCAPY, but the way to use it will still be the same as in the current version.\n I will update the videos as soon as possible.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 635 / 1278\n \n 10.2.11.1. Basic Usage\n https://youtu.be/O5B-s3uiI6g\n 10.2.11.2. Simulated Jog Wheels\n https://youtu.be/ag34SGxt97o\n@@ -29915,15 +29915,15 @@\n 10.2.12.1. Strange numbers in the info area\n If you get strange numbers in the info area of GMOCCAPY like:\n \n You have made your config file using an older version of StepConfWizard. It has made a wrong\n entry in the INI file under the [TRAJ] named MAX_LINEAR_VELOCITY = xxx. Change that entry to\n MAX_VELOCITY = xxx.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 636 / 1278\n \n 10.2.12.2. Not ending macro\n If you use a macro without movement, like this one:\n o sub\n G92.1\n@@ -29950,15 +29950,15 @@\n not require keyboard or mouse.\n It is meant to be used with a touch screen, and works in combination with a wheel/MPG and a few\n buttons and switches.\n The Handwheel tab has radio buttons to select between Feed Override, Spindle Override, Maximum\n Velocity and Jogging functions for the wheel/MPG input. Radio buttons for axis selection and increment\n for jogging are also provided.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 637 / 1278\n \n 10.3.1. Panel Configuration\n 10.3.1.1. HAL connections\n Touchy looks in the INI file, under the heading [HAL] for entries of POSTGUI_HALFILE=.\n Typically would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -29971,15 +29971,15 @@\n are preferred.\n \n For more information on HAL files and the net command see the HAL Basics.\n Touchy has several output pins that are meant to be connected to the motion controller to control\n wheel jogging:\n touchy.jog.wheel.increment, which is to be connected to the axis.N.jog-scale pin of each axis N.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 638 / 1278\n \n touchy.jog.wheel.N, which is to be connected to axis.N.jog-enable for each axis N.\n nota\n N represents the axis number 0-8.\n \n@@ -30011,15 +30011,15 @@\n When you start Touchy the first time, check the Preferences tab. If using a touchscreen, choose the\n option to hide the pointer for best results.\n The Status Window is a fixed height, set by the size of a fixed font. This can be affected by the Gnome\n DPI, configured in System / Preferences / Appearance / Fonts / Details. If the bottom of the screen is\n cut off, reduce the DPI setting.\n All other font sizes can be changed on the Preferences tab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 639 / 1278\n \n 10.3.2.3. Macros\n Touchy can invoke O-word macros using the MDI interface. To configure this, in the [TOUCHY] section\n of the INI file, add one or more MACRO lines. Each should be of the following format:\n MACRO=increment xinc yinc\n@@ -30050,39 +30050,39 @@\n from GladeVCP. GladeVCP uses the GTK widget editor GLADE to build virtual control panels (VCP) by\n point and click. Gscreen combines this with Python programming to create a GUI screen for running\n a CNC machine.\n Gscreen is customizable if you want different buttons and status LEDs. Gscreen supports GladeVCP\n which is used to add controls and indicators. To customize Gscreen you use the Glade editor. Gscreen\n is not restricted to adding a custom panel on the right or a custom tab it is fully editable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.21: Gscreen Default Screen\n \n 640 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.22: Gscreen Silverdragon Screen\n \n 641 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.23: Gscreen Spartan Screen\n \n 642 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.24: Gscreen Gaxis Screen\n \n 643 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 644 / 1278\n \n Figura 10.25: Gscreen Industrial Screen\n Gscreen is based on Glade (the editor), PyGTK (the widget toolkit), and GladeVCP (LinuxCNC\u2019s connection to Glade and PyGTK). GladeVCP has some special widgets and actions added just for LinuxCNC\n A widget is just the generic name used for the buttons, sliders, labels etc of the PyGTK toolkit.\n 10.4.1.1. Glade File\n@@ -30090,15 +30090,15 @@\n the screen. PyGTK uses this file to actually display and react to those widgets. The Glade editor makes\n it relatively easy to build and edit this file You must use the Glade 3.38.2 editor that uses the GTK3\n widgets.\n 10.4.1.2. PyGTK\n PyGTK is the Python binding to GTK. GTK is the toolkit of visual widgets, it\u2019s programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 645 / 1278\n \n 10.4.2. GladeVCP\n 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\n creates the HAL pins for the special widgets described in the Glade file. GladeVCP also allows one\n to add Python commands to interact with the widgets, to make them do things not available in their\n@@ -30144,15 +30144,15 @@\n named widgets. This ties the theme file to the Glade file more tightly. Some of the sample screen skins\n allow the user to select any of the themes on the system. The sample gscreen is an example. Some\n will load the theme that is the same name in the config file. The sample gscreen-gaxis is an example.\n This is done by putting the theme folder in the config folder that has the INI and HAL files and naming\n it: SCREENNAME_theme (SCREENNAME being the base name of the files eg. gaxis_theme). Inside\n this folder is another folder call gtk-2.0, inside that is the theme files. If you add this file, Gscreen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 646 / 1278\n \n will default to this theme on start up. gscreen-gaxis has a sample custom theme that looks for certain\n named widgets and changes the visual behavior of those specific widgets. The Estop and machine-on\n buttons use different colors then the rest of the buttons so that they stand out. This is done in the\n handler file by giving them specific names an by adding specific commands in the theme\u2019s gtkrc file.\n@@ -30183,15 +30183,15 @@\n about GladeVCP widgets is a prerequisite. If the existing widgets give you the function you want or\n need then no Python code needs be added, just save the Glade file in your configuration folder. If you\n need something more custom then you must do some Python programming. The name of the parent\n window needs to be window1. Gscreen assumes this name.\n Remember, if you use a custom screen option YOU are responsible for fixing it (if required) when\n updating LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 647 / 1278\n \n 10.4.3. Building a simple clean-sheet custom screen\n \n Lets build a simple usable screen. Build this in the Glade editor (if using a RIP package run it from a\n terminal after using . scripts/rip-environment ).\n@@ -30204,15 +30204,15 @@\n The sourceview widget will try to use the whole window so adding it to a scrolled window will cover\n this (This is already been done in the example).\n The buttons will expand as the window is made larger which is ugly so we will set the box they are\n in, to not expand (see below).\n The button types to use depend on the VCP_action used -eg vcp_toggle_action usually require toggle\n buttons (Follow the example for now).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 648 / 1278\n \n The buttons in this example are regular buttons not HAL buttons. We don\u2019t need the HAL pins.\n \n In this screen we are using VCP_actions to communicate to LinuxCNC the actions we want. This allows\n us standard functions without adding Python code in the handler file. Let\u2019s link the estop toggle button\n@@ -30220,15 +30220,15 @@\n and click the button beside it. Now select the toggle estop action. Now the button will toggle estop on\n and off when clicked. Under the general tab you can change the text of the button\u2019s label to describe\n it\u2019s function. Do this for all the buttons.\n Select the gremlin widget click the common tab and set the requested height to 100 and click the\n checkbox beside it.\n Click the horizontal box that holds the buttons. Click the packing tab and click expand to No.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 649 / 1278\n \n Save it as tester.glade and save it in sim/gscreen/gscreen_custom/ folder. Now launch LinuxCNC and\n click to sim/gscreen/gscreen_custom/tester and start it. If all goes well our screen will pop up and the\n buttons will do their job This works because the tester.ini tells gscreen to look for and load tester.glade\n and tester_handler.py. The tester_handler.py file is included in that folder and is coded just show the\n@@ -30269,15 +30269,15 @@\n periodic(self): This is called every (default 100) milliseconds. Use it to update your widgets/HAL\n pins. You can call Gscreen regular periodic afterwards too, self.gscreen.update_position() or just\n add pass to not update anything. Gscreen\u2019s update_position() actually calls many separate functions.\n If you wish to incorporate some of those widgets then just call those functions directly.\n You can also add you own functions to be called in this file. Usually you would add a signal to a widget\n to call your function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 650 / 1278\n \n 10.4.4.1. Adding Keybindings Functions\n Our tester example would be more useful if it responded to keyboard commands. There is a function\n called keybindings() that tries to set this up. While you can override it completely, we didn\u2019t - but it\n assumes some things:\n@@ -30324,15 +30324,15 @@\n pressed. Then we add the function to the handle file to call a Gscreen builtin function to start halmeter.\n 10.4.4.2. Linuxcnc State Status\n The module Gstat polls LinuxCNC\u2019s state every 100ms and sends callback messages to user functions\n when state changes. You can register messages to act on specific state changes. As an example we\n will register to get file-loaded messages when LinuxCNC loads a new file. First we must import the\n module and instantiate it: In the import section of the handler file add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 651 / 1278\n \n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n@@ -30374,15 +30374,15 @@\n 2. Gscreen sets the debug mode and set the optional skin name.\n 3. Gscreen checks to see if there are local XML, handler and/or locale files in the configuration\n folder. It will use them instead of the default ones (in share/gscreen/skins/) (There can be two\n separate screens displayed).\n 4. The main screen is loaded and translations set up. If present the second screen will be loaded\n and translations set up.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 652 / 1278\n \n 5. Optional Audio is initialized if available.\n 6. It reads some of the INI file to initialize the units, and the number/type of axes.\n 7. Initializes Python\u2019s binding to HAL to build a userspace component with the Gscreen name.\n 8. GladeVCP\u2019s makepins is called to parse the XML file to build HAL pins for the HAL widgets and\n@@ -30419,15 +30419,15 @@\n 29. Gscreen set up messages specified in the INI file.\n 30. Gscreen tells HAL the Gscreen HAL component is finished making pins and is ready. If there is a\n terminal widget in the screen it will print all the Gscreen pins to it.\n 31. Gscreen sets the display cycle time based on the INI file.\n 32. Gscreen checks the handler file for timer_interupt(self) function call otherwise use Gscreen\u2019s\n default function call.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 653 / 1278\n \n 10.4.6. INI Settings\n Under the [DISPLAY] heading:\n DISPLAY = gscreen -c tester\n options:\n@@ -30468,15 +30468,15 @@\n # This just shows in the status bar and desktop notify popup.\n MESSAGE_BOLDTEXT = NONE\n MESSAGE_TEXT = This is a statusbar test\n MESSAGE_DETAILS = STATUS DETAILS\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 654 / 1278\n \n # This will pop up a dialog that asks a yes no question\n MESSAGE_BOLDTEXT = NONE\n MESSAGE_TEXT = This is a yes no dialog test\n MESSAGE_DETAILS = Y/N DETAILS\n@@ -30520,15 +30520,15 @@\n \n The line:\n **** GSCREEN INFO: handler file path: [\u2019/home/chris/emc-dev/share/gscreen/skins/industrial/ \u2190industrial_handler.py\u2019]\n \n shows where the stock file lives. Copy this file to your config folder. This works the same for the Glade\n file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 655 / 1278\n \n 10.5. QtDragon GUI\n 10.5.1. Introduction\n QtDragon and QtDragon_hd are built with the QtVCP framework. It is the creative vision of forum\n personality Persei8. Much of it is based on the excellent work of others in the LinuxCNC community.\n@@ -30542,15 +30542,15 @@\n \n 10.5.1.1. QtDragon\n \n Figura 10.26: QtDragon - 3 or 4 Axes Sample (1440x860) in silver theme\n QtDragon is resizable from a resolution of 1280x768 to 1680x1200. It will work in window mode on\n any monitor with higher resolution but not on monitors with lower resolution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 656 / 1278\n \n 10.5.1.2. QtDragon_hd\n \n Figura 10.27: QtDragon_hd - 3 or 4 Axis Sample for larger monitors (1920x1056) in dark theme\n QtDragon_hd is a similar design as QtDragon but modified to utilize the extra space of modern larger\n@@ -30565,15 +30565,15 @@\n In the section [DISPLAY] change the DISPLAY line to read:\n qtdragon for a small version\n qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for verbose, debug, info or quiet (respectably) output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 657 / 1278\n \n 10.5.2.2. Preferences\n To keep track of preferences, QtDragon looks for a preference text file. add the following entry under\n the [DISPLAY] heading. This example will save the file in the config folder of the launch screen. (other\n options are possible see the QtVCP\u2019s screenoption widget docs.)\n@@ -30609,15 +30609,15 @@\n [DISPLAY]\n INCREMENTS = Continuous, .001 mm, .01 mm, .1 mm, 1 mm, 1.0 inch, 0.1 inch, 0.01 inch\n ANGULAR_INCREMENTS = 1, 5, 10, 30, 45, 90, 180, 360\n \n 10.5.2.7. Jog speed\n Set jog speed controls (in units per second)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 658 / 1278\n \n [DISPLAY]\n MIN_LINEAR_VELOCITY\n = 0\n MAX_LINEAR_VELOCITY\n@@ -30664,15 +30664,15 @@\n On very large programs the preview can take a long time to load. You can control what is shown and\n what is hidden the the graphics screen by adding the appropriate comments from this list into your\n G-code:\n (PREVIEW,stop)\n (PREVIEW,hide)\n (PREVIEW,show)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 659 / 1278\n \n 10.5.2.11. Program Extensions/Filters\n You can control what programs are displayed in the filemanager window with program extensions:\n Create a line with the . endings you wish to use separated by commas, then a space and the description.\n You can add multiple lines for different selections in the combo box.\n@@ -30713,15 +30713,15 @@\n routines if desired. This example shows how to move Z axis up first. The commands are separated by\n the ; The label is set after the comma. The symbols \\n adds a line break.\n [MDI_COMMAND_LIST]\n # for macro buttons\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 660 / 1278\n \n 10.5.2.14. Post GUI HAL File\n These HAL files will be called after QtDragon has loaded everything else.\n You can add multiple line for multiple file. Each one will be called in the order they appear.\n Calling HAL files after QtDragon is already loaded assures that QtDragon\u2019s HAL pins are available.\n@@ -30760,15 +30760,15 @@\n \n 10.5.5. Virtual Keyboard\n QtDragon includes a virtual keyboard for use with touchscreens.\n To enable the keyboard, check the Use Virtual Keyboard checkbox in the Settings page.\n Clicking on any input field, such as probe parameters or tool table entries, will show the keyboard.\n To hide the keyboard, do one of the following:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 661 / 1278\n \n click the MAIN page button\n The currently selected page button.\n go into AUTO mode\n It should be noted that keyboard jogging is disabled when using the virtual keyboard.\n@@ -30822,15 +30822,15 @@\n \n These float output pins reflect the current slider override rates:\n qtdragon.slider-override-feed\n qtdragon.slider-override-maxv\n qtdragon.slider-override-rapid\n qtdragon.slider-override-spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 662 / 1278\n \n These pins are available when setting the Versa Probe INI option. They can be used for auto-toollength-probe at tool change - with added remap code.\n qtdragon.versaprobe-blockheight\n qtdragon.versaprobe-probeheight\n qtdragon.versaprobe-probevel\n@@ -30885,15 +30885,15 @@\n qtdragon.eoffset-value <= axis.z.eoffset\n # uncomment for dragon_hd\n #net limited\n qtdragon.led-limits-tripped <= motion.eoffset-limited\n setp axis.z.eoffset-enable 1\n setp axis.z.eoffset-scale 1.0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 663 / 1278\n \n 10.5.11. Z level compensation\n QtDragon_hd can be set up to probe and compensate for Z level height changes by utilizing the external program G-code Ripper.\n nota\n This is only available in the QtDragon_hd version.\n@@ -30908,15 +30908,15 @@\n The probe data file is generated by a probing program, which itself is generated by an external python\n program called gcode_ripper, which can be launched from the file manager tab using the G-code\n Ripper button.\n 10.5.11.1. Using G-code Ripper for Z level Compensation\n \n Figura 10.28: QtDragon_hd showing G-code Ripper\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 664 / 1278\n \n nota\n G-code Ripper offers many functions that we will not go in to here. This is only available in the\n QtDragon_hd version.\n \n@@ -30958,15 +30958,15 @@\n axis.z.eoffset\n setp axis.z.eoffset-enable True\n # external offsets for spindle pause function\n ########################################################################\n net eoffset-spindle-count\n <= qtdragon.eoffset-spindle-count\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 665 / 1278\n \n # Z level compensation\n ########################################################################\n net xpos-cmd\n z_level_compensation.x-pos\n@@ -30999,15 +30999,15 @@\n Probe routines run without blocking the main GUI. This gives the operator the opportunity to watch\n the DROs and stop the routine at any time.\n nota\n Probing is very unforgiving to mistakes; be sure to check settings before using.\n \n Figura 10.29: QtDragon - Versa Probe Option\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 666 / 1278\n \n 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\n the probe signal. Z0 is set to probe height - plate thickness.\n The second method uses a tool setter in a fixed position and a known height above the table where\n the probe signal will be triggered. In order to set Z0 to the top of the workpiece, it has to know how\n@@ -31023,15 +31023,15 @@\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n The combo box allows selecting the basic type of probing buttons shown:\n Outside Corners\n Inside Corners\n Edge Angles\n Boss and Pockets\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 667 / 1278\n \n Ridge and Valleys\n Calibration\n You must carefully set the Probing Parameters:\n Probe Tool: will only allow probing if this tool number is in the spindle\n@@ -31055,15 +31055,15 @@\n Manually move the probe to the approximate position represented by the green target on the button.\n Confirm the parameters are reasonable.\n Press the desired probing button.\n The probing routine will start immediately.\n nota\n Pressing the stop button or the keyboard escape key, will abort the probing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 668 / 1278\n \n 10.5.13. Touch plate\n \n Figura 10.31: QtDragon - Touch Plate\n You can use a conductive touch plate or equivalent to auto touch off (zero the user coordinate) for the\n@@ -31082,15 +31082,15 @@\n calculation from the touchplate height setting.\n \n 10.5.14. Auto Tool Measurement\n QtDragon can be setup to do integrated auto tool measurement using the Versa Probe widget and\n remap code. To use this feature, you will need to do some additional settings and you may want to use\n the offered HAL pin to get values in your own ngc remap procedure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 669 / 1278\n \n importante\n Before starting the first test, do not forget to enter the probe height and probe velocities on\n the versa probe settings page.\n \n@@ -31105,15 +31105,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it\u2019s easy to break a tool/probe. Abort will be honoured while the probe is in motion.\n \n Figura 10.32: Auto tool measurement\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of this way is, that you do not need a reference tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 670 / 1278\n \n nota\n Your program must contain a tool change at the beginning. The tool will be measured, even it has\n been used before, so there is no danger if the block height has changed. There are several videos\n on you tube that demonstrate the technique using GMOCCAPY. The GMOCCAPY screen pioneered the\n@@ -31128,15 +31128,15 @@\n \n Enable Probe Position Set Buttons\n Wwhen checked, the SET buttons are enabled.\n This allows the user to automatically fill in the X, Y and Z parameters with the current position as\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 671 / 1278\n \n When checked, the calculated height is automatically transferred to the Workpiece Height field in\n the main screen.\n Otherwise, the main screen is not affected.\n Workpiece Probe At\n@@ -31163,15 +31163,15 @@\n Units are irrelevant in this program. The probed values are not saved and only the difference is\n reported.\n \n atenci\u00f3n\n Setting incorrect values can lead to crashes into fixtures on the machine work surface. Initial\n testing with no tool and safe heights is recommended.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 672 / 1278\n \n 10.5.14.2. Tool Measurement Pins\n Versaprobe offers 5 pins for tool measurement purpose. The pins are used to be read from a remap\n G-code subroutine, so the code can react to different values.\n qtversaprobe.toolmeasurement (HAL_BIT) enable or not tool measurement\n@@ -31211,15 +31211,15 @@\n o endsub\n m2\n \n The position of the tool sensor and the start position of the probing movement, all values are absolute\n (G53) coordinates, except MAXPROBE, what must be given in relative movement. All values are in\n machine native units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 673 / 1278\n \n [TOOLSENSOR]\n X = 10\n Y = 10\n Z = -20\n@@ -31262,15 +31262,15 @@\n In ~/linuxcnc/nc_files/examples/remap_lib/python_stdglue/ folder.\n nota\n These file names and location could be different depending on installed verses development (RIP) version of LinuxCNC. For instance ~/linuxcnc/nc_files/macros is\n ~/linuxcnc/nc_files/examples/macros in installed versions of LinuxCNC. You could use customized versions of the same files or name them differently. The entries in the [RS274NGC] section\n dictate to LinuxCNC what and where to look. The names and location quoted should be available in\n either system by default.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 674 / 1278\n \n 10.5.14.5. Needed HAL Connections\n Make sure to connect the tool probe input in your HAL file: If connected properly, you should be able\n to toggle the probe LED in QtDragon if you press the probe stylus.\n net probe\n@@ -31307,15 +31307,15 @@\n P,X,Y,Z: Set standard views\n D: Toggle display of dimensions\n +, -: Zoom controls\n C: Clear graphics of tool movement lines\n In QtDragon_hd there are also macro buttons available on the right side. Up to tens buttons can be\n defined in the INI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 675 / 1278\n \n 10.5.17.2. File Tab\n You can use this tab to load or transfer programs. Editing of G-code programs can be selected from\n this tab. With qtdragon_hd, this is where you can load Gcode Ripper\n 10.5.17.3. Offsets Tab\n@@ -31343,15 +31343,15 @@\n 10.5.17.7. Camview Tab\n If the recognized webcam is connected, this tab will display the video image overlayed with a crosshair, circle and degree readout. This can be adjusted to suit a part feature for such things as touchoff.\n The underlying library uses openCV Python module to connect to the webcam.\n 10.5.17.8. G-codes Tab\n This tab will display a list of LinuxCNC\u2019s G-code. if you click on a line, a description of the code will\n be displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 676 / 1278\n \n 10.5.17.9. Setup Tab\n It\u2019s possible to load HTML or PDF file (.html / .pdf ending) with setup notes. HTML/PDF docs will\n be displayed in the setup tab. Some program, such as Fusion 360 and Aspire will create these files\n for you. If you load a G-code program and there is an HTML/PDF file of the same name, it will load\n@@ -31365,15 +31365,15 @@\n 10.5.17.11. Utilities Tab\n This tabs will display another stab election of G-code utility programs:\n Facing: allows quick face milling of a definable area at angles of 0,45 and 90 degrees\n Hole Circle: allows quick setting of a program to drill a bolt circle of definable diameter and number\n of holes.\n NGCGUI: is a QtVCP version of the popular G-code subroutine builder/selector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 677 / 1278\n \n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_utilities\n 10.5.17.12. User Tab\n \n This tab will only be displayed if an embedded panel has been designated for the location stackedWidget_mai\n@@ -31401,15 +31401,15 @@\n border: 1px solid black;\n border-radius: 4px;\n font: 20pt \u201dNoto Mono\u201d;\n }\n \n To change the DRO display font and display format:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019 %9.5f\u2019;\n qproperty-metric_template: \u2019 %10.4f\u2019;\n qproperty-angular_template: \u2019 %11.2f\u2019;\n }\n@@ -31460,26 +31460,26 @@\n qproperty-styleFont5: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n qproperty-styleFont6: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n qproperty-styleFont7: \u201dTimes,15,-1,5,90,0,0,1,1,0\u201d;\n }\n \n 678 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 679 / 1278\n \n 10.5.19.2. Qt Designer and Python code\n 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\n 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. See QtVCP\n Overview for more information.\n \n Figura 10.36: QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 680 / 1278\n \n 10.6. NGCGUI\n \n Figura 10.37: NGCGUI embedded into AXIS\n \n@@ -31489,15 +31489,15 @@\n NGCGUI can run as a standalone application or can be embedded in multiple tab pages in the AXIS\n GUI.\n PyNGCGUI is an alternate, Python implementation of NGCGUI.\n PyNGCGUI can run as a standalone application or can be embedded as a tab page (with its own set\n of multiple subroutine tabs) in any GUI that supports embedding of GladeVCP applications AXIS,\n Touchy, Gscreen and GMOCCAPY.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 681 / 1278\n \n Using NGCGUI or PyNGCGUI:\n Tab pages are provided for each subroutine specified in the INI file.\n New subroutines tab pages can be added on the fly using the custom tab.\n Each subroutine tab page provides entry boxes for all subroutine parameters.\n@@ -31529,15 +31529,15 @@\n (.ngc) files and G-code-meta-compiler (.gcmc) files:\n nc_files/ngcgui_lib\n \u2022 ngcgui.ngc - An easy to understand example using subroutines\n \u2022 arc1.ngc - basic arc using cutter radius compensation\n \u2022 arc2.ngc - arc speced by center, offset, width, angle (calls arc1)\n \u2022 backlash.ngc - routine to measure an axis backlash with dial indicator\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 682 / 1278\n \n \u2022 db25.ngc - creates a DB25 plug cutout\n \u2022 gosper.ngc - a recursion demo (flowsnake)\n \u2022 helix.ngc - helix or D-hole cutting\n \u2022 helix_rtheta.ngc - helix or D-hole positioned by radius and angle\n@@ -31577,15 +31577,15 @@\n the Run\n different tab pages.\n To create several subroutines concatenated into a single file, go to each tab fill in the blanks, press\n Create Feature then using the arrow keys move any tabs needed to put them in order. Now press\n Finalize and answer the prompt to create\n Other GUIs will have similar functionality but the buttons and names may be different.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 683 / 1278\n \n nota\n The demonstration configs create tab pages for just a few of the provided examples. Any GUI with a\n custom tab can open any of the library example subroutines or any user file if it is in the LinuxCNC\n subroutine path.\n@@ -31622,15 +31622,15 @@\n And then create or copy system-provided files to these user-writable directories. For instance, a user\n might create a NGCGUI-compatible subfile named:\n /home/myusername/mysubs/example.ngc\n \n To use files in new directories, the INI file must be edited to include the new subfiles and to augment\n the search path(s). For this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 684 / 1278\n \n [RS274NGC]\n ...\n SUBROUTINE_PATH = /home/myusername/mysubs:../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib \u2190:../../nc_files/ngcgui_lib/utilitysubs\n USER_M_PATH\n@@ -31683,15 +31683,15 @@\n \n 10.6.4.2. Standalone PyNGCGUI\n For usage, type in a terminal:\n pyngcgui --help\n Usage:\n pyngcgui [Options] []\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 685 / 1278\n \n Options requiring values:\n [-d | --demo] [0|1|2] (0: DEMO standalone toplevel)\n (1: DEMO embed new notebook)\n (2: DEMO embed within existing notebook)\n@@ -31743,15 +31743,15 @@\n NGCGUI_SUBFILE = simp.ngc - Creates a tab from the named subroutine.\n NGCGUI_SUBFILE = \u201d\u201d - Creates a custom tab\n #NGCGUI_OPTIONS = opt1 opt2 \u2026 - NGCGUI options:\n \u2022 nonew \u2014 Prohibits creation of new custom tab\n \u2022 noremove \u2014 Prohibits deleting a tab page\n \u2022 noauto \u2014 Do not run automatically (makeFile, then manual run)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 686 / 1278\n \n \u2022 noiframe \u2014 No internal image, image on separate top level\n TTT = truetype-tracer - name of the truetype tracer program (it must be in user PATH)\n TTT_PREAMBLE = in_std.ngc - Optional, specifies filename for preamble used for ttt created subfiles. (alternate: mm_std.ngc)\n nota\n@@ -31782,15 +31782,15 @@\n concatenating several common subroutine invocations, this preamble is only added once. For mmbased machines, use mm_std.ngc\n NGCGUI_SUBFILE = filename1.ngc - creates a tab from the filename1 subroutine\n NGCGUI_SUBFILE = filename2.ngc - creates a tab from the filename2 subroutine\n \u2026 etc.\n NGCGUI_SUBFILE = gcmcname1.gcmc - creates a tab from the gcmcname1 file\n NGCGUI_SUBFILE = gcmcname2.gcmc - creates a tab from the gcmcname2 file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 687 / 1278\n \n \u2026 etc.\n NGCGUI_SUBFILE = \u201d\u201d - creates a custom tab that can open any subroutine in the search path\n NGCGUI_OPTIONS = opt1 opt2 \u2026 - NGCGUI options\n \u2022 nonew - disallow making a new custom tab\n@@ -31864,15 +31864,15 @@\n #\n noauto\n -- no auto send (makeFile, then manually send)\n #\n noiframe\n -- no internal image, image on separate top level\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 688 / 1278\n \n GCMC_INCLUDE_PATH = /home/myname/gcmc_includes\n TTT\n TTT_PREAMBLE\n \n@@ -31918,15 +31918,15 @@\n [RS274NGC]SUBROUTINE_PATH = directory1_name:directory1_name:directory3_name ...\n \n Directories Directories may be specified as absolute paths or relative paths.\n Example: [DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files\n Example: [DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files\n Example: [DISPLAY]PROGRAM_PREFIX = ../../nc_files\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 689 / 1278\n \n Absolute Paths An absolute path beginning with a \u201d/\u201d specifies a complete filesystem location. A path\n beginning with a \u201d~/\u201d specifies a path starting from the user\u2019s home directory. A path beginning with\n \u201d~username/\u201d specifies a path starting in username\u2019s home directory.\n Relative Paths Relative paths are based on the startup directory which is the directory containing\n@@ -31964,15 +31964,15 @@\n comment: \u201d(not_a_subfile)\u201d so that NGCGUI will reject them automatically with a relevant message.\n 10.6.5.6. Summary of INI File item details for NGCGUI usage\n \n [RS274NGC]SUBROUTINE_PATH = dirname1:dirname2:dirname3 \u2026\n Example: [RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_li\n Note: Optional, but very useful to organize subfiles and utility files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 690 / 1278\n \n [RS274NGC]USER_M_PATH = dirname1:dirname2:dirname3 \u2026\n Example: [RS274NGC]USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles\n Note: Optional, needed to locate custom user M-files.\n [DISPLAY]EMBED_TAB_NAME = name to display on embedded tab page\n@@ -32018,15 +32018,15 @@\n Note: Optional, when specified, the file is appended to a subfiles.\n Files created with \u201dCustom\u201d tab pages use the postamble specified with the page.\n [DISPLAY]NGCGUI_OPTIONS = opt1 opt2 \u2026\n Example: [DISPLAY]NGCGUI_OPTIONS = nonew noremove\n Note: Multiple options are separated by blanks.\n By default, NGCGUI configures tab pages so that:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 691 / 1278\n \n 1) a user can make new tabs;\n 2) a user can remove tabs (except for the last remaining one);\n 3) finalized files are automatically sent to LinuxCNC;\n 4) an image frame (iframe) is made available to display an image for the subfile (if an image is\n@@ -32070,15 +32070,15 @@\n \n The body of the subroutine should begin with a set of statements that define local named parameters\n for each positional parameter expected for the subroutine call. These definitions must be consecutive\n beginning with #1 and ending with the last used parameter number. Definitions must be provided for\n each of these parameters (no omissions).\n Parameter Numbering\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 692 / 1278\n \n # = #1\n # = #2\n # = #3\n \n@@ -32127,15 +32127,15 @@\n o call [#] [#] (call a subroutine)\n # = #<_helper:answer> (immediately localize the helper global result)\n #<_helper:answer> = 0.0\n (nullify global named parameter used by subroutine)\n ...\n o endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 693 / 1278\n \n In the above example, the utility subroutine will be found in a separate file named helper.ngc. The\n helper routine returns a result in a global named parameter named #<_helper:answer.\n For good practice, the calling subfile immediately localizes the result for use elsewhere in the subfile\n and the global named parameter used for returning the result is nullified in an attempt to mitigate its\n@@ -32177,15 +32177,15 @@\n //ngcgui: varname3 = value3, label3;\n \n Variable Tags Examples\n //ngcgui: zsafe =\n //ngcgui: feedrate = 10\n //ngcgui: xl = 0, x limit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 694 / 1278\n \n For these examples, the entry box for varname1 will have no default, the entry box for varname2 will\n have a default of value2, and the entry box for varname 3 will have a default of value 3 and a label\n label3 (instead of varname3). The default values must be numbers.\n To make it easier to modify valid lines in a gcmc file, alternate tag line formats accepted. The alternate\n@@ -32227,28 +32227,28 @@\n [DISPLAY]\n GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib\n \n 10.6.7. DB25 Example\n The following shows the DB25 subroutine. In the first photo you see where you fill in the blanks for\n each variable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n This photo shows the backplot of the DB25 subroutine.\n \n 695 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 696 / 1278\n \n This photo shows the use of the new button and the custom tab to create three DB25 cutouts in one\n program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 697 / 1278\n \n 10.6.8. Creating a subroutine\n For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the\n same.\n The file must be placed in the subdirectory pointed to in the INI file.\n@@ -32266,15 +32266,15 @@\n # = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i# f#\n g3 i[0-#]\n o endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 698 / 1278\n \n 10.7. TkLinuxCNC GUI\n 10.7.1. Introduction\n TkLinuxCNC is one of the first graphical front-ends for LinuxCNC. It is written in Tcl and uses the Tk\n toolkit for the display. Being written in Tcl makes it very portable (it runs on a multitude of platforms).\n@@ -32290,15 +32290,15 @@\n Then, start LinuxCNC and select that INI file. The sample configuration sim/tklinuxcnc/tklinuxcnc.ini\n is already configured to use TkLinuxCNC as its front-end.\n When LinuxCNC is launched the TKLinuxCNC window is opened.\n 10.7.2.1. A typical session with TkLinuxCNC\n 1. Start LinuxCNC and select a configuration file.\n 2. Clear the E-STOP condition and turn the machine on (by pressing F1 then F2).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 699 / 1278\n \n 3. Home each axis.\n 4. Load the file to be milled.\n 5. Put the stock to be milled on the table.\n 6. Set the proper offsets for each axis by jogging and either homing again or right-clicking an axis\n@@ -32330,15 +32330,15 @@\n Abort\n then on the second line:\n Operation mode: MANUAL > MDI > AUTO\n Toggle flood coolant\n Toggle spindle brake control\n 1 For some of these actions it might be necessary to change the mode LinuxCNC is currently running in.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 700 / 1278\n \n 10.7.3.2. Offset display status bar\n The Offset display status bar displays the currently selected tool (selected with Txx M6), the tool\n length offset (if active), and the work offsets (set by right-clicking the coordinates).\n 10.7.3.3. Coordinate Display Area\n@@ -32370,15 +32370,15 @@\n execution will be stopped on any M1 encountered).\n Text Program Display Area When the program is running, the line currently being executed is\n highlighted in white. The text display will automatically scroll to show the current line.\n 10.7.3.5. Manual Control\n Implicit keys TkLinuxCNC allows you to manually move the machine. This action is known as jogging.\n First, select the axis to be moved by clicking it. Then, click and hold the + or - button depending on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 701 / 1278\n \n the desired direction of motion. The first four axes can also be moved by the keyboard arrow keys (X\n and Y), the PAGE UP and PAGE DOWN keys (Z) and the [ and ] keys (A/4th).\n + If Continuous is selected, the motion will continue as long as the button or key is pressed. If another\n value is selected, the machine will move exactly the displayed distance each time the button is clicked\n@@ -32401,15 +32401,15 @@\n The Coolant groupCoolant The two buttons allow the Mist and Flood coolants to be turned on and\n off. Depending on your machine configuration, not all the items in this group may appear.\n 10.7.3.6. Code Entry\n Manual Data Input (also called MDI), allows G-code programs to be entered manually, one line at\n a time. When the machine is not turned on, and not set to MDI mode, the code entry controls are\n unavailable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 702 / 1278\n \n This allows you to enter a G-code command to be executed. Execute the command by pressing Enter.\n Active G-Codes This shows the modal codes that are active in the interpreter. For instance, G54\n indicates that the G54 offset is applied to all coordinates that are entered.\n 10.7.3.7. Jog Speed\n@@ -32458,15 +32458,15 @@\n Send active axis Home\n Jog first axis\n Jog second axis\n Jog third axis\n Jog fourth axis\n Stop execution\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 703 / 1278\n \n 10.8. QtPlasmaC\n 10.8.1. Preamble\n Except where noted, this guide assumes the user is using the latest version of QtPlasmaC.\n Version history can be seen by visiting this link which will show the latest available version.\n@@ -32486,25 +32486,25 @@\n enough hardware I/O pins to fulfill the requirements of a plasma configuration.\n There are three available formats:\n 16:9 with a minimum resolution of 1366 x 768\n 9:16 with a minimum resolution of 768 x 1366\n 4:3 with a minimum resolution of 1024 x 768\n Screenshot examples of QtPlasmaC are below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.40: 16:9\n \n 704 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 705 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 706 / 1278\n \n Figura 10.42: 4:3\n \n 10.8.4. Installing LinuxCNC\n The preferred method for installing LinuxCNC is via an ISO image as described below.\n@@ -32512,15 +32512,15 @@\n It is possible to install and run LinuxCNC on a variety of Linux distributions however that is beyond\n 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\n v2.9 or later along with any required dependencies.\n \n 10.8.4.1. If The User Does Not Have Linux Installed\n Installation instructions are available at: link:../getting-started/getting-linuxcnc.html\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 707 / 1278\n \n Following these instructions will yield a machine with the current stable branch (v2.8) of LinuxCNC\n on Debian Buster.\n 10.8.4.2. Package Installation (Buildbot) If The User Has Linux with LinuxCNC v2.8\n A package installation (Buildbot) uses prebuilt packages from the LinuxCNC Buildbot, instructions for\n@@ -32561,15 +32561,15 @@\n to use a reed relay as an alternative method to establish an Arc OK signal when the power\n source does not provide one.\n \n nota\n For fine tuning of Mode 0 Ark OK see Tuning Mode 0 Arc OK in the Advanced Topics section of the\n manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 708 / 1278\n \n 10.8.5.2. Available I/Os\n nota\n This section only touches on the hardware I/O\u2019s required for QtPlasmaC. Base machine requirements\n such as limit switches, home switches, etc. are in addition to these.\n@@ -32650,15 +32650,15 @@\n This signal senses if the torch has broken away from its cradle.\n Digital output; required.\n HAL pin name plasmac.torch-on\n Connected from a breakout board output to the torch-on input\n of the plasma power supply. This signal is used to control the\n plasma power supply and start the arc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -32724,15 +32724,15 @@\n then set the Z minimum to 5 mm (0.2\u201d) plus an allowance for overrun (either calculated using the\n equation below or allow 5 mm (0.2\u201d) below the lowest slat).\n [AXIS_Z] MAX_LIMIT should be the highest the user wants the Z axis to travel (it must not be\n lower than Z HOME_OFFSET).\n [AXIS_Z] HOME should be set to be approximately 5 mm-10 mm (0.2\u201d-0.4\u201d) below the maximum\n limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 710 / 1278\n \n Floating Head - it is recommended that a floating head be used and that it has enough movement\n to allow for overrun during probing. Overrun can be calculated using the following formula:\n o = 0.5 * a * (v / a)^2\n \n@@ -32763,33 +32763,33 @@\n Fill in the required entries to suit the machine wiring/breakout board configuration.\n QtPlasmaC adds two pages to the LinuxCNC configuration wizards for QtPlasmaC specific parameters,\n the two pages are QtPlasmaC options and User Buttons. Complete each of the wizards QtPlasmaC page\n to suit the machine that is being configured and the user button requirements.\n Note that PnCconf options allow user selection of Feed Override, Linear Velocity, and Jog Increments,\n whereas in StepConf these are automatically calculated and set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.43: PnCConf QtPlasmaC Options\n \n 711 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.44: StepConf QtPlasmaC Options\n \n 712 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 10.45: QtPlasmaC User Buttons\n \n 713 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 714 / 1278\n \n Figura 10.46: QtPlasmaC THCAD\n The THCAD screen will only appear if a Plasma Encoder is selected in the card screen. The the dedicated section on Mesa THCAD for more information.\n When the configuration is complete, the wizard will save a copy of the configuration that may be\n loaded and edited at a later time, a working QtPlasmaC configuration will be created in the following\n@@ -32798,15 +32798,15 @@\n depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/__/__.ini\n \n For a run in place installation:\n \\~/linuxcnc‑dev/scripts/linuxcnc ~/linuxcnc/configs/__/__material.cfg file to the existing QtPlasmaC configuration.\n To run the cfg2prefs conversion program, use the following instructions:\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 721 / 1278\n \n Figura 10.47: qtplasmac-cfg2prefs\n Select the INI file of the old PlasmaC configuration, select the INI file of the new QtPlasmaC configuration, then press CONVERT.\n \n 10.8.7. Other QtPlasmaC Setup Considerations\n@@ -33021,15 +33021,15 @@\n file in the machine\u2019s configuration directory to add the appropriate cutoff frequency as measured in\n Hertz (Hz).\n For example:\n setp plasmac.lowpass-frequency 100\n \n The above example would give a cutoff frequency of 100Hz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 722 / 1278\n \n 10.8.7.2. Contact Bounce\n Contact bounce from mechanical relays, switches, or external interference may cause some inconsistent behavior of the following switches:\n Float Switch\n Ohmic Probe\n@@ -33065,15 +33065,15 @@\n Depending on the specified minimum contact current and the current drawn by the input device there\n may be a need to provide a method to increase the current through the contacts.\n Most relays using gold contacts will not require any additional current for reliable operation.\n There are two different methods available to provide this minimum current if it is required:\n 1. A 0.1 \u03bcF film capacitor placed across the contacts.\n 2. A 1200 \u03a9 1 W resistor across the load (see calculations below).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 723 / 1278\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page III of Finder Relays General Technical\n Information\n Calculations:\n@@ -33113,15 +33113,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs//.ini\u201d\n Type=Application\n Icon=/usr/share/pixmaps/linuxcncicon.png\n 2 In the US, the letter V is commonly used as a symbol (Voltage) and as a unit (Volt).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 724 / 1278\n \n If the user would like a terminal window to open behind the GUI window then change the Terminal\n line to:\n Terminal=true\n \n@@ -33174,15 +33174,15 @@\n nota\n The configuration files (.ini and .hal) that are created by configuration wizard are notated to explain the requirements to aid in manual manipulation of these\n configurations. They may be edited with any text editor.\n \n nota\n The .prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 725 / 1278\n \n 10.8.7.6. INI File\n QtPlasmaC has some specific .ini file variables as follows:\n [FILTER] Section These variables are mandatory.\n PROGRAM_EXTENSION = .ngc,.nc,.tap G-code File (*.ngc, *.nc, *.tap)\n@@ -33231,15 +33231,15 @@\n [DISPLAY] Section\n This variable is mandatory.\n DISPLAY = qtvcp qtplasmac\n (use 16:9 resolution)\n = qtvcp qtplasmac_9x16 (use 9:16 resolution)\n = qtvcp qtplasmac_4x3 (use 4:3 resolution)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 726 / 1278\n \n There are multiple QtVCP options that are described here: QtVCP INI Settings\n For example the following would start a 16:9 resolution QtPlasmaC screen in full screen mode:\n DISPLAY = qtvcp -f qtplasmac\n \n@@ -33280,15 +33280,15 @@\n 10.8.8.1. Exiting QtPlasmaC\n Exiting or shutting down QtPlasmaC is done by either:\n 1. Click the window shutdown button on the window title bar\n 2. Long press the POWER button on the MAIN Tab.\n A shutdown warning can be displayed on every shutdown by checking the Exit Warning checkbox on\n the SETTINGS Tab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 727 / 1278\n \n 10.8.8.2. MAIN Tab\n Screenshot example of the QtPlasmaC MAIN Tab in 16:9 aspect ratio:\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n@@ -33305,15 +33305,15 @@\n used to manually select the current material cut parameters. If there are\n no materials in the material file then only the default material will be\n displayed.\n This displays the actual cut feed rate the table is moving at.\n If \u201dView Material\u201d is selected on the SETTINGS Tab, this displays the\n currently selected material\u2019s Feed Rate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 728 / 1278\n \n Cuadro 10.7: (continued)\n Name\n PH:\n PD:\n@@ -33390,15 +33390,15 @@\n - Probe Test\n - Framing\n - Manual Cut\n This slider overrides the feed rate for all feed moves.\n Any value other than 100 % will cause the label to flash.\n Clicking the label will return the slider to 100 %.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 729 / 1278\n \n Cuadro 10.8: (continued)\n Name\n RAPID\n \n@@ -33472,15 +33472,15 @@\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Each press of this button will lower the target voltage by\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Clicking this label will return any voltage override to 0.00.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 730 / 1278\n \n Cuadro 10.10: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -33572,15 +33572,15 @@\n LED will still show the status of the probe input, but the\n Ohmic Probe results will be ignored.\n This box will enable or disable the communications to a\n PowerMax. This button is only visible if a PM_PORT is\n configured in the [POWERMAX] section of the\n .prefs file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 731 / 1278\n \n Cuadro 10.10: (continued)\n Name\n Status\n \n@@ -33648,15 +33648,15 @@\n This button moves the Z axis in the negative direction.\n \n nota\n During Paused Motion, this section will be shown on top of the JOGGING panel. The following section\n will cover each button encountered in this panel. Please see CUT RECOVERY for a detailed description\n of the cut recovery functionality.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -33733,15 +33733,15 @@\n This drop down button will display the following options:\n Zero - zeros the axis.\n Set - launches a dialog box to manually input the axis\u2019 coordinate.\n Divide By 2 - divides the currently displayed coordinate in the DRO by\n two.\n Set To Last - sets the axis to the previously set coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 733 / 1278\n \n 10.8.8.3. Preview Views\n The QtPlasmaC preview screen has the ability to be switched between different views and displays,\n as well as zooming in and out, and panning horizontally and vertically.\n When QtPlasmaC is first started, the Z (top down) view will be selected as the default view for a loaded\n@@ -33754,30 +33754,30 @@\n orientation, then pressing either Z or P will change the display to the newly selected view. If the user\n then wishes to display the full table while maintaining the currently selected view as the default view\n for a loaded G-code file, then pressing CLEAR will achieve this and allow the selected view orientation\n to prevail the next time a G-code file is loaded.\n 10.8.8.4. CONVERSATIONAL Tab\n Screenshot example of the QtPlasmaC CONVERSATIONAL Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 734 / 1278\n \n The CONVERSATIONAL Tab enables the user to quickly program various simple shapes for quick\n cutting without the need for CAM software.\n See Conversational Shape Library for detailed information on the Conversational feature.\n It is possible to disable this tab so the conversational feature cannot be used by an operator. This may\n be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a HAL\n file using the following command:\n setp qtplasmac.conv_disable 1\n \n 10.8.8.5. PARAMETERS Tab\n Screenshot example of the QtPlasmaC PARAMETERS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 735 / 1278\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n required by the chosen QtPlasmaC mode.\n Due to space constraints, the 4x3 GUI\u2019s PARAMETERS Tab will be spread across two tabs, PARAMETERS and SETTINGS.\n This tab is used to display configuration parameters that are modified infrequently.\n@@ -33794,15 +33794,15 @@\n 0, 1, 2\n \n Description\n This sets the amount of time (in seconds) QtPlasmaC will wait\n between commanding a \u201dTorch On\u201d and receiving an Arc OK\n signal before timing out and displaying an error message.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 736 / 1278\n \n Cuadro 10.15: (continued)\n Name\n Max Starts\n \n@@ -33885,15 +33885,15 @@\n This sets the distance threshold used to determine if an Initial Height\n Sense (probe) can be skipped for the current cut, see IHS Skip.\n \n nota\n If the amount of time between the torch contacting the material and when the torch moves up and\n comes to rest at the Pierce Height seems excessive, see the probing section for a possible solution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 737 / 1278\n \n Cuadro 10.17: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -33944,15 +33944,15 @@\n \n CONFIGURATION - THC Two methods of THC activation are available and are selected with the\n Auto Activation checkbutton. Both methods begin their calculations when the current velocity of the\n torch matches the cut feed rate specified for the selected material:\n 1. Delay Activation (the default) is selected when Auto Activation is unchecked. This method uses\n a time delay set with the Delay parameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 738 / 1278\n \n 2. Auto Activation is selected when Auto Activation is checked. This method determines that the\n arc voltage is stable by using the Sample Counts and Sample Threshold parameters.\n Name\n Delay\n@@ -34040,15 +34040,15 @@\n Description\n The top drop down menu is used to manually select the current material\n cut parameters. If there are no materials in the material file then only the\n default material will be displayed.\n This sets the kerf width for the currently selected material. Refer to the\n Heights Diagram diagram for a visual representation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 739 / 1278\n \n Cuadro 10.21: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34110,15 +34110,15 @@\n The Cut Parameters for the new material will then need to be adjusted and saved.\n The DELETE this button is used to delete a material. After pressing it, the user will be prompted for\n a material number to be deleted, and prompted again to ensure the user is sure. After deletion, the\n material file will be reloaded and the drop down list will display the default material.\n 10.8.8.6. SETTINGS Tab\n Screenshot example of the QtPlasmaC SETTINGS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 740 / 1278\n \n This tab is used to display GUI configuration parameters, button text, and shutdown text that are\n modified infrequently as well as some utility buttons.\n It is possible to disable this tab so machine settings cannot be modified by unauthorized personnel.\n This may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set\n@@ -34134,15 +34134,15 @@\n Foreground\n Highlight\n \n Description\n This button allows the user to change the color of the GUI Foreground.\n This button allows the user to change the color of the GUI Highlight.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 741 / 1278\n \n Cuadro 10.22: (continued)\n Name\n LED\n Background\n@@ -34220,15 +34220,15 @@\n current tool) in the Preview Window on the MAIN Tab.\n This allows a user to change the default zoom level for the top down full\n table view in the Preview Window on the MAIN Tab.\n \n USER BUTTON ENTRIES USERBUTTON\n This section shows the text that appears on the Custom User Buttons as well as the code associated\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 742 / 1278\n \n with the user button. User buttons may be changed and the new settings used without restarting\n LinuxCNC.\n The text and/or code may be edited at any time and will be loaded ready for use if the SAVE button is\n clicked.\n@@ -34267,15 +34267,15 @@\n current QtPlasmaC version the user is on, is the current date (YY-MM-DD), and

refer to\n the same parameter. Named parameters must be enclosed with < > marks.\n@@ -38665,15 +38665,15 @@\n #<_motion_mode> - Return the interpreter\u2019s current motion mode:\n Motion return\n mode\n value\n G1\n 10\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Motion return\n mode\n value\n G2\n 20\n G3\n@@ -38755,15 +38755,15 @@\n #<_absolute> - Return 1 if G90 is on, else 0.\n #<_incremental> - Return 1 if G91 is on, else 0.\n #<_inverse_time> - Return 1 if inverse feed mode (G93) is on, else 0.\n #<_units_per_minute> - Return 1 if Units/minute feed mode (G94) is on, else 0.\n \n 846 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 847 / 1278\n \n #<_units_per_rev> - Return 1 if Units/revolution mode (G95) is on, else 0.\n #<_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\n value is 591.000000.\n Mode\n@@ -38808,15 +38808,15 @@\n #<_feed_override> - Return 1 if feed override (M48 or M51 P1) is on, else 0.\n #<_adaptive_feed> - Return 1 if adaptive feed (M52 or M52 P1) is on, else 0.\n #<_feed_hold> - Return 1 if feed hold switch is enabled (M53 P1), else 0.\n #<_feed> - Return the current value of F, not the actual feed rate.\n #<_rpm> - Return the current value of S, not the actual spindle speed.\n #<_x> - Return current relative X coordinate including all offsets. Same as #5420. In a lathe configuration, it always returns radius.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 848 / 1278\n \n #<_y> - Return current relative Y coordinate including all offsets. Same as #5421.\n #<_z> - Return current relative Z coordinate including all offsets. Same as #5422.\n #<_a> - Return current relative A coordinate including all offsets. Same as #5423.\n #<_b> - Return current relative B coordinate including all offsets. Same as #5424.\n@@ -38851,15 +38851,15 @@\n If enabled in the INI file G-code has access to the values of INI file entries and HAL pins.\n #<_ini[section]name> Returns the value of the corresponding item in the INI file.\n For example, if the INI file looks like so:\n [SETUP]\n XPOS = 3.145\n YPOS = 2.718\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 849 / 1278\n \n you may refer to the named parameters #<_ini[setup]xpos> and #<_ini[setup]ypos> within Gcode.\n EXISTS can be used to test for presence of a given INI file variable:\n o100 if [EXISTS[#<_ini[setup]xpos>]]\n (debug, [setup]xpos exists: #<_ini[setup]xpos>)\n@@ -38901,15 +38901,15 @@\n 11.4.6. Binary Operators\n Binary operators only appear inside expressions. There are four basic mathematical operations: addition (+), subtraction (-), multiplication (*), and division (/). There are three logical operations: nonexclusive or (OR), exclusive or (XOR), and logical and (AND). The eighth operation is the modulus\n operation (MOD). The ninth operation is the power operation (**) of raising the number on the left of\n the operation to the power on the right. The relational operators are equality (EQ), inequality (NE),\n strictly greater than (GT), greater than or equal to (GE), strictly less than (LT), and less than or equal\n to (LE).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 850 / 1278\n \n The binary operations are divided into several groups according to their precedence. If operations\n in different precedence groups are strung together (for example in the expression [2.0 / 3 * 1.5 - 5.5\n / 11.0]), operations in a higher group are to be performed before operations in a lower group. If an\n expression contains more than one operation from the same group (such as the first / and * in the\n@@ -38968,15 +38968,15 @@\n Round to nearest integer\n Base-e logarithm\n Sine\n Square Root\n Tangent\n Check named Parameter\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 851 / 1278\n \n The FIX function rounds towards the left (less positive or more negative) on a number line, so that\n FIX[2.8] =2 and FIX[-2.8] = -3.\n The FUP operation rounds towards the right (more positive or less negative) on a number line;\n FUP[2.8] = 3 and FUP[-2.8] = -2.\n@@ -39021,15 +39021,15 @@\n If the third group (the comments) contains more than one comment and is reordered, only the last\n comment will be used.\n If each group is kept in order or reordered without changing the meaning of the line, then the three\n groups may be interleaved in any way without changing the meaning of the line. For example, the\n line g40 g1 #3=15 (foo) #4=-7.0 has five items and means exactly the same thing in any of the 120\n possible orders (such as #4=-7.0 g1 #3=15 g40 (foo)) for the five items.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 852 / 1278\n \n 11.4.11. Commands and Machine Modes\n Many commands cause the controller to change from one mode to another, and the mode stays active\n until some other command changes it implicitly or explicitly. Such commands are called modal. For\n example, if coolant is turned on, it stays on until it is explicitly turned off. The G-codes for motion are\n@@ -39056,15 +39056,15 @@\n @.5 ^90\n @.5 ^90\n G90 G0 X0 Y0 M2\n \n You can see from the following figure that the output is not what you might expect. Because we added\n 0.5 to the distance each time the distance from the XY zero position increased with each line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 853 / 1278\n \n Figura 11.10: Polar Spiral\n The following code will produce our square pattern:\n F100 G1 @.5 ^90\n G91 ^90\n@@ -39072,15 +39072,15 @@\n ^90\n ^90\n G90 G0 X0 Y0 M2\n \n As you can see by only adding to the angle by 90 degrees each time the end point distance is the same\n for each line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 854 / 1278\n \n Figura 11.11: Polar Square\n It is an error if:\n An incremental move is started at the origin\n A mix of Polar and X or Y words are used\n@@ -39104,15 +39104,15 @@\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81\n G82, G83, G84, G85, G86, G87, G88, G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 855 / 1278\n \n Cuadro 11.7: (continued)\n Modal Group Meaning\n Arc IJK Distance Mode\n (Group 4)\n@@ -39177,15 +39177,15 @@\n \n 11.4.14. Comments\n Comments are purely informative and have no influence on machine behaviour.\n Comments can be added to lines of G-code to help clear up the intention of the programmer. Comments\n can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon. The\n semi-colon is not treated as the start of a comment when enclosed in parentheses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 856 / 1278\n \n Comments may appear between words, but not between words and their corresponding parameter.\n So, S100(set speed)F200(feed) is OK while S(speed)100F(feed) is not.\n Here is an example of a commented program:\n G0 (Rapid to start) X1 Y1\n@@ -39220,15 +39220,15 @@\n (LOGAPPEND,filename) - opens the named log file. If the file already exists, the data is appended.\n (LOGCLOSE) - closes an open log file.\n (LOG,) - everything past the , is written to the log file if it is open. Supports expansion of parameters\n as described below.\n Examples of logging are in nc_files/examples/smartprobe.ngc and in nc_files/ngcgui_lib/rectange_probe.ngc\n sample G-code files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 857 / 1278\n \n 11.4.18. Debug Messages\n (DEBUG,) - displays a message like (MSG,) with the addition of special handling for comment parameters as described below.\n \n 11.4.19. Print Messages\n@@ -39262,15 +39262,15 @@\n 11.4.21. File Requirements\n A G-code file must contain one or more lines of G-code and be terminated with a Program End. Any\n G-code past the program end is not evaluated.\n If a program end code is not used a pair of percent signs % with the first percent sign on the first\n line of the file followed by one or more lines of G-code and a second percent sign. Any code past the\n second percent sign is not evaluated.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 858 / 1278\n \n aviso\n Using % to wrap a G-code file will not do the same thing as using a program end. The machine\n will be in what ever state the program left it in using %, the spindle and coolant may still be on\n and things like G90/91 are left as the last program set them. If you don\u2019t use a proper preamble\n@@ -39305,15 +39305,15 @@\n Enable or disable overrides (M48, M49,M50,M51,M52,M53).\n User-defined Commands (M100-M199).\n Dwell (G4).\n Set active plane (G17, G18, G19).\n Set length units (G20, G21).\n Cutter radius compensation on or off (G40, G41, G42)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 859 / 1278\n \n Cutter length compensation on or off (G43, G49)\n Coordinate system selection (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).\n Set path control mode (G61, G61.1, G64)\n Set distance mode (G90, G91).\n@@ -39349,15 +39349,15 @@\n Don\u2019t use line numbers Line numbers offer no benefits. When line numbers are reported in error\n messages, the numbers refer to the line number in the file, not the N-word value.\n When several coordinate systems are moved Consider using the inverse time speed mode.\n Because the meaning of an F word in meters per minute varies depending on the type of axis to be\n moved and because the amount of removed material does not depend only on the feed rate, it can be\n simpler to use G93, inverse speed of time, to achieve the removal of desired material.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 860 / 1278\n \n 11.4.25. Linear and Rotary Axis\n 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,\n it may be easier to use G93 inverse time feed mode to achieve the desired material removal rate.\n \n@@ -39391,15 +39391,15 @@\n Any items in the G-code prototypes not explicitly described as optional are required.\n The values following letters are often given as explicit numbers. Unless stated otherwise, the explicit\n numbers can be real values. For example, G10 L2 could equally well be written G[2*5] L[1+1]. If the\n value of parameter 100 were 2, G10 L#100 would also mean the same.\n If L- is written in a prototype the - will often be referred to as the L number, and so on for any other\n letter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11.5.2. G-Code Quick Reference Table\n Code\n G0\n G1\n G2 G3\n G4\n@@ -39505,15 +39505,15 @@\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n 861 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -39560,15 +39560,15 @@\n G1 axes\n \n For linear (straight line) motion at programmed feed rate (for cutting or not), program G1 \u2019axes\u2019,\n where all the axis words are optional. The G1 is optional if the current motion mode is G1. This will\n produce coordinated motion to the destination point at the current feed rate (or slower).\n G1 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 863 / 1278\n \n G90 (set absolute distance mode)\n G1 X1.2 Y-3 F10 (linear move at a feed rate of 10 from current position to X1.2 Y-3)\n Z-2.3 (linear move at same feed rate from current position to Z-2.3)\n Z1 F25 (linear move at a feed rate of 25 from current position to Z1)\n@@ -39609,15 +39609,15 @@\n If the pitch of the helix is very small (less than the naive CAM tolerance) then the helix might\n be converted into a straight line. Bug #222\n \n If a line of code makes an arc and includes rotary axis motion, the rotary axes turn at a constant rate\n so that the rotary motion starts and finishes when the XYZ motion starts and finishes. Lines of this\n sort are hardly ever programmed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 864 / 1278\n \n If cutter compensation is active, the motion will differ from the above; see the Cutter Compensation\n section.\n The arc center is absolute or relative as set by G90.1 or G91.1 respectively.\n Two formats are allowed for specifying an arc: Center Format and Radius Format.\n@@ -39652,15 +39652,15 @@\n Z - helix\n I - X offset\n J - Y offset\n P - number of turns\n XZ-plane (G18)\n G2 or G3 \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 865 / 1278\n \n Y - helix\n I - X offset\n K - Z offset\n P - number of turns\n@@ -39692,28 +39692,28 @@\n In the following figure you can see the start position is X0 Y0, the end position is X1 Y1. The arc center\n 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.\n In this case only an I offset is needed.\n G2 Example Line\n G0 X0 Y0\n G2 X1 Y1 I1 F10 (clockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 866 / 1278\n \n Figura 11.12: G2 Example\n In the next example we see the difference between the offsets for Y if we are doing a G2 or a G3 move.\n 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\n for both moves. The G2 move the J offset is 0.5 and the G3 move the J offset is -0.5.\n G2-G3 Example Line\n G0 X0 Y0\n G2 X0 Y1 I1 J0.5 F25 (clockwise arc in the XY plane)\n G3 X0 Y0 I1 J-0.5 F25 (counterclockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 867 / 1278\n \n Figura 11.13: G2-G3 Example\n In the next example we show how the arc can make a helix in the Z axis by adding the Z word.\n G2 Example Helix\n G0 X0 Y0 Z0\n@@ -39732,15 +39732,15 @@\n R - radius from current position\n It is not good practice to program radius format arcs that are nearly full circles or nearly semicircles\n because a small change in the location of the end point will produce a much larger change in the\n location of the center of the circle (and, hence, the middle of the arc). The magnification effect is\n large enough that rounding error in a number can produce out-of-tolerance cuts. For instance, a 1 %\n displacement of the endpoint of a 180 degree arc produced a 7 % displacement of the point 90 degrees\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 868 / 1278\n \n along the arc. Nearly full circles are even worse. Other size arcs (in the range tiny to 165 degrees or\n 195 to 345 degrees) are OK.\n In the radius format, the coordinates of the end point of the arc in the selected plane are specified\n along with the radius of the arc. Program G2 axes R- (or use G3 instead of G2 ). R is the radius. The\n@@ -39775,15 +39775,15 @@\n G5 X- Y- P- Q-\n \n I - X incremental offset from start point to first control point\n J - Y incremental offset from start point to first control point\n P - X incremental offset from end point to second control point\n Q - Y incremental offset from end point to second control point\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 869 / 1278\n \n G5 creates a cubic B-spline in the XY plane with the X and Y axes only. P and Q must both be specified\n for every G5 command.\n For the first G5 command in a series of G5 commands, I and J must both be specified. For subsequent\n G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting\n@@ -39820,15 +39820,15 @@\n G5.1 X2 I2 J-8\n \n It is an error if:\n both I and J offset are unspecified or zero\n An axis other than X or Y is specified\n The active plane is not G17\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 870 / 1278\n \n 11.5.9. G5.2 G5.3 NURBS Block\n G5.2 \n X- Y- \n ...\n@@ -39855,15 +39855,15 @@\n ; The rapid moves show the same path without the NURBS Block\n G0 X0 Y1\n X2 Y2\n X2 Y0\n X0 Y0\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 871 / 1278\n \n Sample NURBS Output\n More information on NURBS can be found here:\n https://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS\n \n@@ -39873,15 +39873,15 @@\n Program G7 to enter the diameter mode for axis X on a lathe. When in the diameter mode the X axis\n moves on a lathe will be 1/2 the distance to the center of the lathe. For example X1 would move the\n cutter to 0.500\u201d from the center of the lathe thus giving a 1\u201d diameter part.\n \n 11.5.11. G8 Lathe Radius Mode\n G8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 872 / 1278\n \n Program G8 to enter the radius mode for axis X on a lathe. When in Radius mode the X axis moves\n on a lathe will be the distance from the center. Thus a cut at X1 would result in a part that is 2\u201d in\n diameter. G8 is default at power up.\n \n@@ -39911,15 +39911,15 @@\n It is an error if:\n Cutter Compensation is on\n The P number is unspecified\n The P number is not a valid tool number from the tool table\n The P number is 0\n For more information on cutter orientation used by the Q word, see the Lathe Tool Orientation diagram.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 873 / 1278\n \n 11.5.14. G10 L2 Set Coordinate System\n G10 L2 P- \n \n P - coordinate system (0-9)\n@@ -39979,15 +39979,15 @@\n afterwards.\n When programming a coordinate system with R, any G52 or G92 will be applied after the rotation.\n The coordinate system whose origin is set by a G10 command may be active or inactive at the time\n the G10 is executed. If it is currently active, the new coordinates take effect immediately.\n It is an error if:\n The P number does not evaluate to an integer in the range 0 to 9.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 874 / 1278\n \n An axis is programmed that is not defined in the configuration.\n G10 L2 Example Line\n G10 L2 P1 X3.5 Y17.2\n \n@@ -40021,15 +40021,15 @@\n See T & M6, and G43/G43.1 sections for more information.\n It is an error if:\n Cutter Compensation is on\n The P number is unspecified\n The P number is not a valid tool number from the tool table\n The P number is 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 875 / 1278\n \n 11.5.16. G10 L11 Set Tool Table\n G10 L11 P- axes \n \n P - tool number\n@@ -40057,15 +40057,15 @@\n G10 L20 Example Line\n G10 L20 P1 X1.5 (set the X axis current location in coordinate system 1 to 1.5)\n \n It is an error if:\n The P number does not evaluate to an integer in the range 0 to 9.\n An axis is programmed that is not defined in the configuration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 876 / 1278\n \n 11.5.18. G17 - G19.1 Plane Select\n These codes set the current plane as follows:\n G17 - XY (default)\n G18 - ZX\n@@ -40099,15 +40099,15 @@\n G28.1 - stores the current absolute position into parameters 5161-5166.\n G28 Example Line\n G28 Z2.5 (rapid to Z2.5 then to Z location specified in #5163)\n \n It is an error if :\n Cutter Compensation is turned on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 877 / 1278\n \n 11.5.21. G30, G30.1 Go/Set Predefined Position\n \n aviso\n Only use G30 when your machine is homed to a repeatable position and the desired G30\n@@ -40144,15 +40144,15 @@\n The (optional) $ argument sets which spindle the motion is synchronised to (default is zero). For\n example G33 Z10 K1 $1 will move the spindle in synchrony with the spindle.N.revs HAL pin value.\n Spindle-synchronized motion waits for the spindle index and spindle at speed pins, so multiple passes\n line up. G33 moves end at the programmed endpoint. G33 could be used to cut tapered threads or a\n fusee.\n All the axis words are optional, except that at least one must be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 878 / 1278\n \n nota\n 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\n for example when cutting tapered threads.\n \n@@ -40189,15 +40189,15 @@\n $ - optional spindle selector\n aviso\n For Z only tapping preposition the XY location prior to calling G33.1 and only use a Z word in\n the G33.1. If the coordinates specified are not the current coordinates when calling G33.1 for\n tapping the move will not be along the Z axis but will be a coordinated, spindle-synchronized\n move from the current location to the location specified and back.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 879 / 1278\n \n For rigid tapping (spindle synchronized motion with return), code G33.1 X- Y- Z- K- where K- gives the\n distance moved for each revolution of the spindle.\n A rigid tapping move consists of the following sequence:\n A move from the current coordinate to the specified coordinate, synchronized with the selected\n@@ -40232,15 +40232,15 @@\n G38.n axes\n \n G38.2 - probe toward workpiece, stop on contact, signal error if failure\n G38.3 - probe toward workpiece, stop on contact\n G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure\n G38.5 - probe away from workpiece, stop on loss of contact\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 880 / 1278\n \n importante\n You will not be able to use a probe move until your machine has been set up to provide a probe\n input signal. The probe input signal must be connected to motion.probe-input in a .hal file.\n G38.n uses motion.probe-input to determine when the probe has made (or lost) contact. TRUE\n@@ -40295,15 +40295,15 @@\n It is an error if:\n the current point is the same as the programmed point.\n no axis word is used\n cutter compensation is enabled\n the feed rate is zero\n the probe is already in the target state\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 881 / 1278\n \n 11.5.25. G40 Compensation Off\n G40 - turn cutter compensation off. If tool compensation was on the next move must be a linear\n move and longer than the tool diameter. It is OK to turn compensation off when it is already off.\n G40 Example\n@@ -40342,15 +40342,15 @@\n The lead in move must be at least as long as the tool radius. The lead in move can be a rapid move.\n Cutter compensation may be performed if the XY-plane or XZ-plane is active.\n User M100-M199 commands are allowed when Cutter Compensation is on.\n The behavior of the machining center when cutter compensation is on is described in the Cutter\n Compensation section along with code examples.\n It is an error if:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 882 / 1278\n \n The D number is not a valid tool number or 0.\n The YZ plane is active.\n Cutter compensation is commanded to turn on when it is already on.\n \n@@ -40388,15 +40388,15 @@\n \n It is an error if:\n the H number is not an integer, or\n the H number is negative, or\n the H number is not a valid tool number (though note that 0 is a valid tool number on nonrandom\n tool changer machines, it means \u201dthe tool currently in the spindle\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 883 / 1278\n \n 11.5.29. G43.1 Dynamic Tool Length Offset\n G43.1 axes\n \n G43.1 axes - change subsequent motions by replacing the current offset(s) of axes. G43.1 does not\n@@ -40432,15 +40432,15 @@\n It is an error if:\n H is unspecified and no axis offsets are specified.\n H is specified and the given tool number does not exist in the tool table.\n H is specified and axes are also specified.\n nota\n G43.2 does not write to the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 884 / 1278\n \n 11.5.31. G49 Cancel Tool Length Compensation\n G49 - cancels tool length compensation\n It is OK to program using the same offset already in use. It is also OK to program using no tool length\n offset if none is currently being used.\n@@ -40475,15 +40475,15 @@\n G57 - select coordinate system 4\n G58 - select coordinate system 5\n G59 - select coordinate system 6\n G59.1 - select coordinate system 7\n G59.2 - select coordinate system 8\n G59.3 - select coordinate system 9\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 885 / 1278\n \n The coordinate systems store the axis values and the XY rotation angle around the Z axis in the parameters shown in the following table.\n Cuadro 11.11: Coordinate System Parameters\n Select CS\n G54\n@@ -40633,15 +40633,15 @@\n from the programmed point you end up.\n G64 P- - Blend between best speed and deviation tolerance\n G64 P- blending with tolerance. It is a way to fine tune your system for best compromise\n between speed and accuracy. The P- tolerance means that the actual path will be no more than Paway from the programmed endpoint. The velocity will be reduced if needed to maintain the path.\n If you set Q to a non-zero value it turns on the Naive CAM Detector: when there are a series of\n linear XYZ feed moves at the same feed rate that are less than Q- away from being collinear, they\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 886 / 1278\n \n are collapsed into a single linear move. On G2/G3 moves in the G17 (XY) plane when the maximum\n deviation of an arc from a straight line is less than the G64 P- tolerance the arc is broken into two\n lines (from start of arc to midpoint, and from midpoint to end). those lines are then subject to the\n naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases as well as line-line benefit\n@@ -40679,15 +40679,15 @@\n this point.\n Fillet and chamfers in the profile. It is possible to add fillets or chamfers in the profile, see Secci\u00f3n 11.5.39 for more details.\n It is an error if:\n There is no subroutine defined with the number given in Q.\n The path given in the profile is not monotonic in Z or X.\n Secci\u00f3n 11.5.18 has not been used to select the ZX plane.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 887 / 1278\n \n 11.5.39. G71 G72 Lathe roughing cycles\n G71\n Q- \n G71.1 Q- \n@@ -40729,15 +40729,15 @@\n finishing.\n It is an error if:\n There is no subroutine defined with the number given in Q.\n The path given in the profile is not monotonic in Z or X.\n Secci\u00f3n 11.5.18 has not been used to select the ZX plane.\n Secci\u00f3n 11.5.26 is active.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 888 / 1278\n \n 11.5.40. G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- \n \n R - retract position along the Z axis.\n@@ -40768,15 +40768,15 @@\n \n aviso\n G74 does not use synchronized motion.\n \n The G74 cycle is intended for tapping with floating chuck and dwell at the bottom of the hole.\n 1. Preliminary motion, as described in the Preliminary and In-Between Motion section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 889 / 1278\n \n 2. Disable Feed and Speed Overrides.\n 3. Move the Z-axis at the current feed rate to the Z position.\n 4. Stop the selected spindle (chosen by the $ parameter)\n 5. Start spindle rotation clockwise.\n@@ -40791,15 +40791,15 @@\n G76 P- Z- I- J- R- K- Q- H- E- L- $-\n \n Figura 11.14: G76 Threading\n Drive Line - A line through the initial X position parallel to the Z.\n P- - The thread pitch in distance per revolution.\n Z- - The final position of threads. At the end of the cycle the tool will be at this Z position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 890 / 1278\n \n nota\n When G7 Lathe Diameter Mode is in force the values for I, J and K are diameter measurements. When\n G8 Lathe Radius Mode is in force the values for I, J and K are radius measurements.\n \n@@ -40839,15 +40839,15 @@\n taper. No entry taper and the tool will rapid to the cut depth then synchronize and begin the cut.\n The tool is moved to the initial X and Z positions prior to issuing the G76. The X position is the drive\n line and the Z position is the start of the threads.\n The tool will pause briefly for synchronization before each threading pass, so a relief groove will be\n required at the entry unless the beginning of the thread is past the end of the material or an entry\n taper is used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 891 / 1278\n \n Unless using an exit taper, the exit move is not synchronized to the spindle speed and will be a rapid\n move. With a slow spindle, the exit move might take only a small fraction of a revolution. If the spindle\n speed is increased after several passes are complete, subsequent exit moves will require a larger\n portion of a revolution, resulting in a very heavy cut during the exit move. This can be avoided by\n@@ -40874,15 +40874,15 @@\n \n In the figure the tool is in the final position after the G76 cycle is completed. You can see the entry\n path on the right from the Q29.5 and the exit path on the left from the L2 E0.045. The white lines are\n the cutting moves.\n \n Figura 11.15: G76 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 892 / 1278\n \n 11.5.43. G80-G89 Canned Cycles\n The canned cycles G81 through G89 and the canned cycle stop G80 are described in this section.\n All canned cycles are performed with respect to the currently-selected plane. Any of the nine planes\n may be selected. Throughout this section, most of the descriptions assume the XY-plane has been\n@@ -40915,15 +40915,15 @@\n do the same cycle in the same place several times, Omitting the L word is equivalent to specifying\n L=1.\n 11.5.43.4. Retract Mode\n The height of the retract move at the end of each repeat (called clear Z in the descriptions below) is\n determined by the setting of the retract mode, either to the original Z position (if that is above the R\n position and the retract mode is G98, OLD_Z), or otherwise to the R position. See the G98 G99 section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 893 / 1278\n \n 11.5.43.5. Canned Cycle Errors\n It is an error if:\n axis words are all missing during a canned cycle,\n axis words from different groups (XYZ) (UVW) are used together,\n@@ -40954,15 +40954,15 @@\n same order as the earlier example. But the program writing economy of a good canned cycle should\n be obvious.\n nota\n Line numbers are not needed but help clarify these examples.\n \n Eight Holes\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 894 / 1278\n \n N100 G90 G0 X0 Y0 Z0 (move coordinate home)\n N110 G1 F10 X0 G4 P0.1\n N120 G91 G81 X1 Y0 Z-1 R1 L4(canned drill cycle)\n N130 G90 G0 X0 Y1\n@@ -40985,15 +40985,15 @@\n N1050 X0 Y-1 L2 (repeat)\n N1060 G80 (turn off canned cycle)\n N1070 G90 G0 X0 (rapid move home)\n N1080 Y0\n N1090 Z0\n N1100 M2 (program end)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 895 / 1278\n \n The second reason to use a canned cycle is that they all produce preliminary moves and returns that\n you can anticipate and control regardless of the start point of the canned cycle.\n \n 11.5.44. G80 Cancel Canned Cycle\n@@ -41015,15 +41015,15 @@\n first set of blocks, the programmer must turn motion back on with G0, as is done in the next line, or\n any other motion mode G word.\n If a canned cycle is not turned off with G80 or another motion word, the canned cycle will attempt\n to repeat itself using the next block of code that contains an X, Y, or Z word. The following file drills\n (G81) a set of eight holes as shown in the following caption.\n G80 Example 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 896 / 1278\n \n N100 G90 G0 X0 Y0 Z0 (coordinate home)\n N110 G1 X0 G4 P0.1\n N120 G81 X1 Y0 Z0 R1 (canned drill cycle)\n N130 X2\n@@ -41052,15 +41052,15 @@\n \n The G81 cycle is intended for drilling.\n The cycle functions as follows:\n Preliminary motion, as described in the Preliminary and In-Between Motion section.\n Move the Z-axis at the current feed rate to the Z position.\n The Z-axis does a rapid move to clear Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 897 / 1278\n \n Figura 11.16: G81 Cycle\n Example 1 - Absolute Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n@@ -41073,15 +41073,15 @@\n The R value and clear Z are 2.8. OLD_Z is 3.\n The following moves take place:\n A rapid move parallel to the XY plane to (X4, Y5)\n A rapid move move parallel to the Z-axis to (Z2.8).\n Move parallel to the Z-axis at the feed rate to (Z1.5)\n A rapid move parallel to the Z-axis to (Z3)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 898 / 1278\n \n Example 2 - Relative Position G81\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n Suppose the current position is (X1, Y2, Z3) and the preceding line of NC code is interpreted.\n@@ -41102,27 +41102,27 @@\n A rapid move parallel to the Z-axis to (X9, Y12, Z4.8)\n The third repeat consists of 3 moves. The X position is reset to 13 (=9+4) and the Y position to 17\n (=12+5).\n A rapid move parallel to the XY-plane to (X13, Y17, Z4.8)\n Move parallel to the Z-axis at the feed rate to (X13, Y17, Z4.2)\n A rapid move parallel to the Z-axis to (X13, Y17, Z4.8)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 899 / 1278\n \n Example 3 - Relative Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n Now suppose that you execute the first G81 block of code but from (X0, Y0, Z0) rather than from (X1,\n Y2, Z3).\n Since OLD_Z is below the R value, it adds nothing for the motion but since the initial value of Z is less\n than the value specified in R, there will be an initial Z move during the preliminary moves.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 900 / 1278\n \n Example 4 - Absolute G81 R > Z This is a plot of the path of motion for the second g81 block of\n code.\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n@@ -41132,15 +41132,15 @@\n \n Example 5 - Relative position R > Z\n G90 G98 G81 X4 Y5 Z-0.6 R1.8\n \n Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves\n to that location as in Example 4. After that initial Z move, the rapid move to X4 Y5 is done. Then the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 901 / 1278\n \n final Z depth being 0.6 below the R value. The repeat function would make the Z move in the same\n location again.\n \n 11.5.46. G82 Drilling Cycle, Dwell\n@@ -41173,15 +41173,15 @@\n Rapid move back out to the retract plane specified by the R word.\n Rapid move back down to the current hole bottom, less .010 of an inch or 0.254 mm.\n Repeat steps 2, 3, and 4 until the Z position is reached at step 2.\n The Z-axis does a rapid move to clear Z.\n It is an error if:\n the Q number is negative or zero.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 902 / 1278\n \n 11.5.48. G84 Right-hand Tapping Cycle, Dwell\n G84 (X- Y- Z-) or (U- V- W-) R- L- P- $- F-\n \n R- - Retract position along the Z axis.\n@@ -41211,15 +41211,15 @@\n \n The G85 cycle is intended for boring or reaming, but could be used for drilling or milling.\n Preliminary motion, as described in the Preliminary and In-Between Motion section.\n Move the Z-axis only at the current feed rate to the Z position.\n Retract the Z-axis at the current feed rate to the R plane if it is lower than the initial Z.\n Retract at the traverse rate to clear Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 903 / 1278\n \n 11.5.50. G86 Boring Cycle, Spindle Stop, Rapid Move Out\n G86 (X- Y- Z-) or (U- V- W-) R- L- P- $-\n \n The G86 cycle is intended for boring. This cycle uses a P number for the number of seconds to dwell.\n@@ -41251,15 +41251,15 @@\n 11.5.54. G90, G91 Distance Mode\n G90 - absolute distance mode In absolute distance mode, axis numbers (X, Y, Z, A, B, C, U, V, W)\n usually represent positions in terms of the currently active coordinate system. Any exceptions to\n that rule are described explicitly in the G80 G89 section.\n G91 - incremental distance mode In incremental distance mode, axis numbers usually represent\n increments from the current coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 904 / 1278\n \n G90 Example\n G90 (set absolute distance mode)\n G0 X2.5 (rapid move to coordinate X2.5 including any offsets in effect)\n \n@@ -41297,15 +41297,15 @@\n Being in incremental distance mode (G91 instead of G90) has no effect on the action of G92.\n G92 offsets may be already be in effect when the G92 is called. If this is the case, the offset is replaced\n with a new offset that makes the current point become the specified value.\n It is an error if all axis words are omitted.\n LinuxCNC stores the G92 offsets and reuses them on the next run of a program. To prevent this, one\n can program a G92.1 (to erase them), or program a G92.2 (to remove them - they are still stored).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 905 / 1278\n \n nota\n The G52 command can also be used to change this offset; see the Offsets section for more details\n about G92 and G52 and how they interact.\n See the Coordinate System section for an overview of coordinate systems.\n@@ -41343,15 +41343,15 @@\n threading, for threading use G33 or G76. G95 requires that spindle.N.speed-in to be connected.\n The actual spindle to which the feed is synchronised is chosen by the $ parameter.\n It is an error if:\n Inverse time feed mode is active and a line with G1, G2, or G3 (explicitly or implicitly) does not have\n an F-word.\n A new feed rate is not specified after switching to G94 or G95\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 906 / 1278\n \n 11.5.60. G96, G97 Spindle Control Mode\n G96 S- <$-> (Constant Surface Speed Mode)\n G97 S- <$-> (RPM Mode)\n \n@@ -41389,15 +41389,15 @@\n \n The G98 to the second line above means that the return move will be to the value of Z in the first line\n since it is higher that the R value specified.\n The initial (G98) plane is reset any time cycle motion mode is abandoned, whether explicitly (G80) or\n implicitly (any motion code that is not a cycle). Switching among cycle modes (say G81 to G83) does\n NOT reset the initial plane. It is possible to switch between G98 and G99 during a series of cycles.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 907 / 1278\n \n 11.6. M-Codes\n 11.6.1. M-Code Quick Reference Table\n Code\n M0 M1\n@@ -41463,15 +41463,15 @@\n \n 11.6.3. M2, M30 Program End\n M2 - end the program. Pressing Cycle Start (\u201dR\u201d in the Axis GUI) will restart the program at the\n beginning of the file.\n M30 - exchange pallet shuttles and end the program. Pressing Cycle Start will start the program\n at the beginning of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 908 / 1278\n \n Both of these commands have the following effects:\n Change from Auto mode to MDI mode.\n Origin offsets are set to the default (like G54).\n Selected plane is set to XY plane (like G17).\n@@ -41505,15 +41505,15 @@\n S100 $0\n S200 $1\n S300 $2\n M3 $-1\n \n This example will then reverse spindle 1 but leave the other spindles rotating forwards:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 909 / 1278\n \n M4 $1\n \n And this will stop spindle 2 and leave the other spindles rotating:\n M5 $2\n@@ -41550,15 +41550,15 @@\n \n The tool change may include axis motion. It is OK (but not useful) to program a change to the tool\n already in the spindle. It is OK if there is no tool in the selected slot; in that case, the spindle will\n be empty after the tool change. If slot zero was last selected, there will definitely be no tool in the\n spindle after a tool change. The tool changer will have to be setup to perform the tool change in HAL\n and possibly ClassicLadder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 910 / 1278\n \n 11.6.7. M7, M8, M9 Coolant Control\n M7 - turn mist coolant on. M7 controls iocontrol.0.coolant-mist pin.\n M8 - turn flood coolant on. M8 controls iocontrol.0.coolant-flood pin.\n M9 - turn both M7 and M8 off.\n@@ -41592,15 +41592,15 @@\n with an error message.\n \u2022 spindle.N.is-oriented (in bit) Acknowledge pin for spindle-orient. Completes orient cycle. If spindleorient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared and the\n spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.\n \u2022 spindle.N.orient-fault (in s32) Fault code input for orient cycle. Any value other than zero will\n cause the orient cycle to abort.\n \u2022 spindle.N.locked (out bit) Spindle orient complete pin. Cleared by any of M3,M4,M5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 911 / 1278\n \n 11.6.9. M48, M49 Speed and Feed Override Control\n M48 - enable the spindle speed and feed rate override controls.\n M49 - disable both controls.\n These commands also take an optional $ parameter to determine which spindle they operate on.\n@@ -41633,15 +41633,15 @@\n \n 11.6.13. M53 Feed Stop Control\n M53 - enable the feed stop switch. The P1 is optional. Enabling the feed stop switch will allow\n motion to be interrupted by means of the feed stop control. In LinuxCNC, the HAL pin motion.feedhold is used for this purpose. A true value will cause the motion to stop when M53 is active.\n M53 P0 - disable the feed stop switch. The state of motion.feed-hold will have no effect on feed when\n M53 is not active.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 912 / 1278\n \n 11.6.14. M61 Set Current Tool\n M61 Q- - change the current tool number while in MDI or Manual mode without a tool change.\n One use is when you power up LinuxCNC with a tool currently in the spindle you can set that tool\n number without doing a tool change.\n@@ -41675,15 +41675,15 @@\n 11.6.16. M66 Wait on Input\n M66 P- | E- \n \n P- - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio)\n E- - specifies the analog input number from 0 to 3. (Adjustable from motmod argument num_aio)\n L- - specifies the wait mode type.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 913 / 1278\n \n \u2022 Mode 0: IMMEDIATE - no waiting, returns immediately. The current value of the input is stored\n in parameter #5399\n \u2022 Mode 1: RISE - waits for the selected input to perform a rise event.\n \u2022 Mode 2: FALL - waits for the selected input to perform a fall event.\n@@ -41720,15 +41720,15 @@\n program a motion G-code (G0, G1, etc) right after the M67. M67 functions the same as M62-63.\n The number of I/O can be increased by using the num_dio or num_aio parameter when loading the\n motion controller. See the Motion section for more information.\n nota\n M67 will not function unless the appropriate motion.analog-out-nn pins are connected in your HAL\n file to outputs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 914 / 1278\n \n 11.6.18. M68 Analog Output, Immediate\n M68 E- Q-\n \n M68 - set an analog output immediately.\n@@ -41760,15 +41760,15 @@\n arc distance mode (G90.1, G91.1)\n lathe radius/diameter mode (G7,G8)\n path control mode (G61, G61.1, G64)\n current feed and speed (F and S values)\n spindle status (M3,M4,M5) - on/off and direction\n mist (M7) and flood (M8) status\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 915 / 1278\n \n speed override (M51) and feed override (M50) settings\n adaptive feed setting (M52)\n feed hold setting (M53)\n Note that in particular, the motion mode (G1 etc) is NOT restored.\n@@ -41806,15 +41806,15 @@\n g91 (relative mode)\n F5 (low feed)\n S300 (low rpm)\n (debug, in subroutine, state now:)\n o call\n O endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 916 / 1278\n \n ; main program\n g21 (metric)\n g90 (absolute)\n f200 (fast speed)\n@@ -41859,15 +41859,15 @@\n (debug, in main, state now:)\n o call\n o call\n (debug, back in main, state now:)\n o call\n m2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 917 / 1278\n \n 11.6.23. M98 and M99\n The interpreter supports Fanuc-style main- and sub-programs with the M98 and M99 M-codes. See\n Fanuc-Style Programs.\n 11.6.23.1. Selectively Restoring Modal State\n@@ -41908,15 +41908,15 @@\n values as its two arguments.\n Execution of the G-code file pauses until the external program exits. Any valid executable file can be\n used. The file must be located in the search path specified in the INI file configuration. See the Display\n section for more information on search paths.\n After creating a new M1nn program, the GUI should be restarted so that the new program is taken\n into account, otherwise a Unknown M-code error will occur.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 918 / 1278\n \n aviso\n Do not use a word processor to create or edit the files. A word processor will leave unseen\n codes that will cause problems and may prevent a bash or python file from working. Use a\n text editor like Geany in Debian or Notepad++ in other operating systems to create or edit the\n@@ -41958,15 +41958,15 @@\n To display a graphic message and stop until the message window is closed use a graphic display\n program like Eye of Gnome to display the graphic file. When you close it the program will resume.\n M110 Example file\n #!/bin/bash\n eog /home/john/linuxcnc/nc_files/message.png\n exit 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 919 / 1278\n \n To display a graphic message and continue processing the G-code file suffix an ampersand to the\n command.\n M110 Example display and keep going\n #!/bin/bash\n@@ -42000,15 +42000,15 @@\n The same number is used for more than one block.\n Other words are used on a line with an O- word.\n Comments are used on a line with an O-word.\n nota\n Using the lower case o makes it easier to distinguish from a 0 that might have been mistyped. For\n example o100 is easier to see than O100 that it is not a 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 920 / 1278\n \n 11.7.4. Subroutines\n Subroutines starts at Onnn sub and ends at Onnn endsub. The lines between Onnn sub and Onnn\n endsub are not executed until the subroutine is called with Onnn call. Each subroutine must use a\n unique number.\n@@ -42056,15 +42056,15 @@\n \n Subroutine bodies may not be nested. They may only be called after they are defined. They may\n be called from other functions, and may call themselves recursively if it makes sense to do so. The\n maximum subroutine nesting level is 10.\n Subroutines can change the value of parameters above #30 and those changes will be visible to the\n calling code. Subroutines may also change the value of global named parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 921 / 1278\n \n 11.7.4.1. Fanuc-Style Numbered Programs\n Numbered programs (both main and subprograms), the M98 call and M99 return M-codes, and their\n respective semantic differences are an alternative to the rs274ngc subroutines described above, provided for compatibility with Fanuc and other machine controllers.\n Numbered programs are enabled by default, and may be disabled by placing DISABLE_FANUC_STYLE_SUB\n@@ -42110,15 +42110,15 @@\n M98 subprogram call blocks may contain an optional L-word specifying a loop repeat count. Without\n the L-word, the subprogram will execute once only (equivalent to M98 L1). An M98 L0 block will not\n execute the subprogram.\n In rare cases, the M99 M-code may be used to terminate the main program, where it indicates an\n endless program. When the interpreter reaches an M99 in the main program, it will skip back to the\n beginning of the file and resume execution at the first line. An example use of an endless program is\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 922 / 1278\n \n in a machine warm-up cycle; a block delete program end /M30 block might be used to stop the cycle\n at a tidy point when the operator is ready.\n Numbered Subprogram Full Example\n O1\n@@ -42184,15 +42184,15 @@\n #1 = 3 (assign the value of 3 to parameter #1)\n (msg, #1 has been assigned the value of 3)\n o100 continue (skip to start of loop)\n o110 endif\n (some code here)\n #1 = [#1 + 1] (increment the test counter)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 923 / 1278\n \n o100 while [#1 LT 3]\n (msg, Loop Done!)\n M2\n \n@@ -42238,15 +42238,15 @@\n O102 elseif [#2 LT 2]\n F20\n (parameter #2 is between 2 and 5)\n O102 else\n F200\n O102 endif\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 924 / 1278\n \n 11.7.7. Repeat\n The repeat will execute the statements inside of the repeat/endrepeat the specified number of times.\n The example shows how you might mill a diagonal series of shapes starting at the present position.\n Example with repeat\n@@ -42288,15 +42288,15 @@\n M2\n \n nota\n The file names are lowercase letters only so o is converted to o by the interpreter.\n More information about the search path and options for the search path are in the INI configuration\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 925 / 1278\n \n 11.7.10. Subroutine return values\n Subroutines may optionally return a value by an optional expression at an endsub or return statement.\n Return value example\n o123 return [#2 *5]\n@@ -42331,15 +42331,15 @@\n spindle speed for a specific spindle. Without the $ the command will default to spindle.0.\n The spindle(s) or selected spindle will turn at that speed when a M3 or M4 is in effect. It is OK to\n program an S word whether the spindle is turning or not. If the speed override switch is enabled and\n not set at 100 %, the speed will be different from what is programmed.\n It is OK to program S0, the spindle will not turn if that is done.\n It is an error if:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 926 / 1278\n \n the S number is negative.\n As described in the section Right-hand Tapping Cycle with Dwell, if a G84 (tapping) drilling cycle is\n active and the speed and feed potentiometers are enabled, the one with the lowest setting will be\n used. The rotational speed and feed rate will remain synchronized. In this case, the speed may differ\n@@ -42376,37 +42376,37 @@\n file is appropriate for your machine before running.\n \n 11.9.1. Mill Examples\n 11.9.1.1. Helical Hole Milling\n File Name: useful-subroutines.ngc\n Description: Subroutine for milling a hole using parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 927 / 1278\n \n 11.9.1.2. Slotting\n File Name: useful-subroutines.ngc\n Description: Subroutine for milling a slot using parameters.\n \n 11.9.1.3. Grid Probe\n File Name: gridprobe.ngc\n Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 928 / 1278\n \n 11.9.1.4. Smart Probe\n File Name: smartprobe.ngc\n Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file. This is improved from the grid probe file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 929 / 1278\n \n 11.9.1.5. Tool Length Probe\n File Name: tool-length-probe.ngc\n Description: Tool Length Probing\n This program shows an example of how to measure tool lengths automatically using a switch hooked\n@@ -42416,15 +42416,15 @@\n File Name: probe-hole.ngc\n Description: Finding the Center and Diameter of a hole.\n The program demonstrates how to find the center of a hole, measure the hole diameter and record\n the results.\n 11.9.1.7. Cutter Compensation\n File Name: comp-g1.ngc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 930 / 1278\n \n Description: Entry and exit movements with compensation of tool radius.\n This program demonstrates the peculiarity of the toolpath without and with tool radius compensation.\n The tool radius is taken from the tool table.\n \n@@ -42436,15 +42436,15 @@\n \n 11.10. Image to G-Code\n \n 11.10.1. What is a depth map?\n A depth map is a greyscale image where the brightness of each pixel corresponds to the depth (or\n height) of the object at each point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 931 / 1278\n \n 11.10.2. Integrating image-to-gcode with the AXIS user interface\n Add the following lines to the [FILTER] section of your INI file to make AXIS automatically invoke\n image-to-gcode when you open a PNG, GIF, or JPEG image:\n PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image\n@@ -42478,15 +42478,15 @@\n cut off. If White or Black, then a border of pixels equal to the tool diameter is added on all sides, and\n details which are at the very edges of the images will not be cut off.\n 11.10.4.5. Tolerance (units)\n When a series of points are within tolerance of being a straight line, they are output as a straight line.\n Increasing tolerance can lead to better contouring performance in LinuxCNC, but can also remove or\n blur small details in the image.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 932 / 1278\n \n 11.10.4.6. Pixel Size (units)\n One pixel in the input image will be this many units\u2014usually this number is much smaller than 1.0. For\n instance, to mill a 2.5x2.5-inch object from a 400x400 image file, use a pixel size of .00625, because\n 2.5 / 400 = .00625.\n@@ -42513,15 +42513,15 @@\n 11.10.4.12. Depth (units)\n The top of material is always at Z = 0. The deepest cut into the material is at Z = -depth.\n 11.10.4.13. Step Over (pixels)\n The distance between adjacent rows or columns. To find the number of pixels for a given units distance,\n compute distance/pixel size and round to the nearest whole number. For example, if pixel size=.006\n and the desired step over distance=.015, then use a Step Over of 2 or 3 pixels, because .015/.006=2.5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 933 / 1278\n \n 11.10.4.14. Tool Diameter\n The diameter of the cutting part of the tool.\n 11.10.4.15. Safety Height\n The height to move to for traverse movements. image-to-gcode always assumes the top of material is\n@@ -42547,15 +42547,15 @@\n Image-to-gcode can optionally perform roughing passes. The depth of successive roughing passes is\n given by Roughing depth per pass. For instance, entering 0.2 will perform the first roughing pass with\n 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\n is reached. No part of any roughing pass will cut closer than Roughing Offset to the final part. The\n following figure shows a tall vertical feature being milled. In this image, Roughing depth per pass is\n 0.2 inches and roughing offset is 0.1 inches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 934 / 1278\n \n Figura 11.17: Roughing passes and final pass\n \n 11.11. RS274/NGC Differences\n 11.11.1. Changes from RS274/NGC\n@@ -42577,15 +42577,15 @@\n and well-formed (starting with G20 or G21, and didn\u2019t change units throughout the program),\n without changing the tool table.\n G84, G87 not implemented\n G84 and G87 are not currently implemented, but may be added to a future release of LinuxCNC.\n G28, G30 with axis words\n When G28 or G30 is programmed with only some axis words present, LinuxCNC only moves the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 935 / 1278\n \n named axes. This is common on other machine controls. To move some axes to an intermediate\n point and then move all axes to the predefined point, write two lines of G code:\n G0 X- Y- (axes to move to intermediate point)\n G28 (move all axes to predefined point)\n@@ -42622,15 +42622,15 @@\n tool is currently loaded, it is an error. This change was made so the user doesn\u2019t have to specify\n the tool number in two places for each tool change, and because it\u2019s consistent with the way\n G41/G42 work when the D word is not specified.\n U, V, and W axes\n LinuxCNC allows machines with up to 9 axes by defining an additional set of 3 linear axes known\n as U, V and W\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 936 / 1278\n \n Cap\u00edtulo 12\n \n Virtual Control Panels\n 12.1. PyVCP\n@@ -42640,15 +42640,15 @@\n Hardware machine control panels can use up a lot of I/O pins and can be expensive. That is where\n Virtual Control Panels have the advantage as well as it cost nothing to build a PyVCP.\n Virtual Control Panels can be used for testing or monitoring things to temporarily replace real I/O\n devices while debugging ladder logic, or to simulate a physical panel before you build it and wire it\n to an I/O board.\n The following graphic displays many of the PyVCP widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 937 / 1278\n \n Figura 12.1: PyVCP Widgets Showcase\n \n 12.1.2. Panel Construction\n The layout of a PyVCP panel is specified with an XML file that contains widget tags between \n@@ -42656,15 +42656,15 @@\n \n \n \n Figura 12.2: Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 938 / 1278\n \n If you place this text in a file called tiny.xml, and run\n halcmd loadusr pyvcp -c mypanel tiny.xml\n \n PyVCP will create the panel for you, which includes two widgets, a Label with the text This is a LED\n@@ -42709,15 +42709,15 @@\n \n \n Here we\u2019ve made a panel with a Label and a Bar widget, specified that the HAL pin connected to\n the Bar should be named spindle-speed, and set the maximum value of the bar to 5000 (see widget\n reference below for all options). To make AXIS aware of this file, and call it at start up, we need to\n specify the following in the [DISPLAY] section of the INI file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 939 / 1278\n \n PYVCP = spindle.xml\n \n If the panel should appear at the bottom of the AXIS user interface then we need to specify the\n following in the [DISPLAY] section of the INI file:\n@@ -42736,15 +42736,15 @@\n assuming that a signal called spindle-rpm-filtered already exists. Note that when running together\n with AXIS, all PyVCP panel widget HAL pins have names that start with pyvcp., all PyVCP embedded\n tab widget HAL pins start with the name specified as EMBED_TAB_NAME converted to lower case.\n \n This is what the newly created PyVCP panel should look like in AXIS. The sim/lathe configuration is\n already configured this way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 940 / 1278\n \n 12.1.5. Stand Alone\n This section describes how PyVCP panels can be displayed on their own with or without LinuxCNC\u2019s\n machine controller.\n To load a stand alone PyVCP panel with LinuxCNC use these commands:\n@@ -42782,15 +42782,15 @@\n An optional command to use if you want the panel to stop HAL from continuing commands / shutting\n down. After loading any other components you want the last HAL command to be:\n waitusr panelname\n \n This tells HAL to wait for component panelname to close before continuing HAL commands. This is\n usually set as the last command so that HAL shuts down when the panel is closed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 941 / 1278\n \n 12.1.6. Widgets\n HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be float,\n s32 or u32. For more information on HAL data types see the HAL Data section. The PyVCP widget\n can either display the value of the signal with an indicator widget, or modify the signal value with a\n@@ -42827,15 +42827,15 @@\n Editing the XML file Edit the XML file with a text editor. In most cases you can right click on the file\n and select open with text editor or similar.\n Colors\n Colors can be specified using the X11 rgb colors by name gray75 or hex #0000ff. A complete list is\n located here https://sedition.com/perl/rgb.html.\n Common Colors (colors with numbers indicate shades of that color)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 942 / 1278\n \n white\n black\n blue and blue1 - 4\n cyan and cyan1 - 4\n@@ -42864,15 +42864,15 @@\n (\u201dHelvetica\u201d,20)\n \n \n The above code produced this example:\n \n Figura 12.3: Simple Label Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 943 / 1278\n \n 12.1.6.4. Multi_Label\n An extension of the text label.\n Selectable text label, can display up to 6 label legends when associated bit pin is activated.\n Attach each legend pin to a signal and get a descriptive label when the signal is TRUE.\n@@ -42909,15 +42909,15 @@\n red.\n n - sets the height of the LED in pixels.\n n - sets the width of the LED in pixels.\n false - when true adds a disable pin to the led.\n color - sets the color of the LED to color when the pin is disabled.\n Round LED\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 944 / 1278\n \n \n \u201dmy-led\u201d\n 50\n \u201dgreen\u201d\n@@ -42946,15 +42946,15 @@\n \n 12.1.6.6. Buttons\n A button is used to control a BIT pin. The pin will be set True when the button is pressed and held\n down, and will be set False when the button is released. Buttons can use the following optional options.\n n - where n is the amount of extra horizontal extra space.\n n - where n is the amount of extra vertical extra space.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 945 / 1278\n \n \u201dcolor\u201d - the cursor over color set to color.\n \u201dcolor\u201d - the foreground color set to color.\n \u201dcolor\u201d - the background color set to color.\n True - disable pin.\n@@ -42982,15 +42982,15 @@\n \n Figura 12.8: Checked button\n Checkbutton Code Example\n \n \u201dcoolant-chkbtn\u201d\n \u201dCoolant\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 946 / 1278\n \n 1\n \n \n \u201dchip-chkbtn\u201d\n@@ -43018,15 +43018,15 @@\n Figura 12.10: Simple Radiobutton Example\n Note that the HAL pins in the example above will be named my-radio.one, my-radio.two, and myradio.three. In the image above, one is the selected value. Use the tag HORIZONTAL\n to display horizontally.\n 12.1.6.7. Number Displays\n Number displays can use the following formatting options\n (\u201dFont Name\u201d,n), where n is the font size.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 947 / 1278\n \n _n_, where n is the overall width of the space used.\n _pos_, where pos is LEFT, CENTER, or RIGHT (doesn\u2019t work).\n _n_, where n is the amount of extra horizontal extra space.\n _n_, where n is the amount of extra vertical extra space.\n@@ -43055,15 +43055,15 @@\n 6\n \n \n The above code produced this example:\n \n Figura 12.12: Simple s32 Number Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 948 / 1278\n \n u32 Number The u32 number widget displays the value of a u32 number. The syntax is the same as\n number except the name which is .\n Bar 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\n set to change color, dependent upon the value of the halpin (range1, range2 range3 must all be set,\n@@ -43098,15 +43098,15 @@\n \n \n The above code produced this example:\n \n Figura 12.13: Simple Bar Example\n Meter Meter displays the value of a FLOAT signal using a traditional dial indicator.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 949 / 1278\n \n \n \u201dmymeter\u201d\n \u201dBattery\u201d\n \u201dVolts\u201d\n@@ -43132,15 +43132,15 @@\n \n \u201dmy-spinbox\u201d\n -12\n 33\n 0\n 0.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 950 / 1278\n \n \u201d2.3f\u201d\n (\u201dArial\u201d,30)\n 1\n \n@@ -43174,15 +43174,15 @@\n 100\n 0\n 1\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 951 / 1278\n \n Figura 12.16: Simple Scale Example\n nota\n Note that by default it is \u201dmin\u201d which is displayed even if it is greater than \u201dmax\u201d, unless \u201dmin\u201d is\n negative.\n@@ -43205,15 +43205,15 @@\n \u201dgreen\u201d\n \u201dblack\u201d\n 1\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 952 / 1278\n \n Figura 12.17: Simple Dial Example\n Jogwheel Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as\n the wheel is turned, either by dragging in a circular motion, or by rolling the mouse-wheel.\n \n@@ -43225,15 +43225,15 @@\n \u201dmy-wheel\u201d\n 45\n 250\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 953 / 1278\n \n Figura 12.18: Simple Jogwheel Example\n \n 12.1.6.9. Images\n Image displays use only .gif image format. All of the images must be the same size. The images must\n@@ -43247,15 +43247,15 @@\n \n \n This example was produced from the above code. Using the two image files fwd.gif and rev.gif. FWD\n is displayed when selectimage is false and REV is displayed when selectimage is true.\n \n Figura 12.19: Selectimage False Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 954 / 1278\n \n Figura 12.20: Selectimage True Example\n Image u32 The image_u32 is the same as image_bit, except you have essentially an unlimited number\n of images and you select the image by setting the halpin to a integer value with 0 for the first image\n in the images list and 1 for the second image, etc.\n@@ -43268,15 +43268,15 @@\n \n The above code produced the following example by adding the stb.gif image.\n \n Figura 12.21: Simple image_u32 Example with halpin=0\n \n Figura 12.22: Simple image_u32 Example withhalpin=1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 955 / 1278\n \n Figura 12.23: Simple image_u32 Example withhalpin=2\n Notice that the default is the min even though it is set higher than max unless there is a negative min.\n 12.1.6.10. Containers\n Containers are widgets that contain other widgets. Containers are used to group other widgets.\n@@ -43312,15 +43312,15 @@\n \u201dRIDGE\u201d\n 3\n \n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 956 / 1278\n \n Figura 12.24: Containers Borders Showcase\n Fill Container fill are specified with the tag. Valid entries are none, x, y and both.\n The x fill is a horizontal fill and the y fill is a vertical fill\n \n@@ -43347,15 +43347,15 @@\n The above code produced this example:\n \n Figura 12.25: Simple hbox Example\n Inside an Hbox, you can use the , , and tags to choose how items in the box behave when the window is re-sized. The default is\n fill=\u201dy\u201d, anchor=\u201dcenter\u201d, expand=\u201dyes\u201d for an Hbox.\n Vbox Use a Vbox when you want to stack widgets vertically on top of each other.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 957 / 1278\n \n \n RIDGE\n 6\n \n@@ -43381,15 +43381,15 @@\n \n The above code produced this example:\n \n Figura 12.27: Simple labelframe Example\n Table A table is a container that allows layout in a grid of rows and columns. Each row is started by\n a tag. A contained widget may span rows or columns through the use of the tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the tag. A table expands on its flexible rows and columns.\n Table Code Example\n

\n@@ -43433,15 +43433,15 @@\n \n \u201dspindle-speed\u201d\n 5000\n \n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \n \n \n \n \n \n The above code produced this example showing each tab selected.\n \n 959 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 960 / 1278\n \n Figura 12.29: Simple Tabs Example\n \n 12.2. PyVCP Examples\n 12.2.1. AXIS\n@@ -43479,15 +43479,15 @@\n Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to\n LinuxCNC.\n The following is an example of a loadusr command to load two PyVCP panels and name each one so\n the connection names in HAL will be known.\n loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml\n loadusr -Wn sppanel pyvcp -c sppanel panel2.xml\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 961 / 1278\n \n The -Wn makes HAL Wait for name to be loaded before proceeding.\n The pyvcp -c makes PyVCP name the panel.\n The HAL pins from panel1.xml will be named btnpanel.<_pin name_>.\n The HAL pins from panel2.xml will be named sppanel.<_pin name_>.\n@@ -43496,27 +43496,27 @@\n 12.2.3. Jog Buttons Example\n In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be\n built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure\n our machine, then on the Advanced Configuration Options page we make a couple of selections to add\n a blank PyVCP panel as shown in the following figure. For this example we named the configuration\n pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 962 / 1278\n \n Figura 12.30: XYZ Wizard Configuration\n 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.\n 12.2.3.1. Create the Widgets\n Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between\n the tags we will add the widgets for our panel.\n Look in the PyVCP Widgets Reference section of the manual for more detailed information on each\n widget documentation des widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n In your custompanel.xml file we will add the description of the widgets.\n \n \n (\u201dHelvetica\u201d,16)\n \n \n@@ -43570,15 +43570,15 @@\n \n \n \n \n \n 963 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 964 / 1278\n \n RAISED\n 3\n \n \n The above gives us a PyVCP panel that looks like the following.\n \n 969 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 970 / 1278\n \n 12.2.5.2. The Connections\n To make it work we add the following code to the custom_postgui.hal file.\n # display the rpm based on freq * rpm per hz\n loadrt mult2\n@@ -43930,15 +43930,15 @@\n custom.hal file whereas the rev led needs to use the spindle-rev bit. You can\u2019t link the spindle-fwd bit\n twice so you use the signal that it was linked to.\n \n 12.2.6. Rapid to Home Button\n This example creates a button on the PyVCP side panel when pressed will send all the axis back to\n the home position. This example assumes you don\u2019t have a PyVCP panel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 971 / 1278\n \n In your configuration directory create the XML file. In this example it\u2019s named rth.xml. In the rth.xml\n file add the following code to create the button.\n \n \n@@ -43954,15 +43954,15 @@\n \n If you don\u2019t have a [HALUI] section in the INI file create it and add the following MDI command.\n MDI_COMMAND = G53 G0 X0 Y0 Z0\n \n nota\n Information about G53 and G0 G-codes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 972 / 1278\n \n In the [HAL] section if you don\u2019t have a post gui file add the following and create a file called postgui.hal.\n POSTGUI_HALFILE = postgui.hal\n \n In the postgui.hal file add the following code to link the PyVCP button to the MDI command.\n@@ -43993,15 +43993,15 @@\n Widget set: uses TkInter widgets.\n User interface creation: \u201dedit XML file / run result / evaluate looks\u201d cycle.\n No support for embedding user-defined event handling.\n No LinuxCNC interaction beyond HAL pin I/O supported.\n GladeVCP:\n Widget set: relies on the GTK+ widget set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 973 / 1278\n \n User interface creation: uses the Glade WYSIWYG user interface editor.\n Any HAL pin change may be directed to call back into a user-defined Python event handler.\n Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python.\n Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a\n@@ -44025,31 +44025,31 @@\n make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the\n LinuxCNC wiki page.\n \n Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_panel.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Run the same panel, but as a tab inside AXIS:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_tab.ini\n \n 974 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 975 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 976 / 1278\n \n 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\n names), mixed setups are possible as well - for instance a panel on the right hand side, and one or\n more tabs for less-frequently used parts of the interface.\n 12.3.2.1. Exploring the example panel\n@@ -44063,15 +44063,15 @@\n and M6 commands in the MDI window will change the current and prepared tool number fields.\n The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI\n command in the interpreter. The third button Execute Oword subroutine is an advanced example - it\n takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword\n subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body.\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 977 / 1278\n \n 12.3.2.2. Exploring the User Interface description\n The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed.\n To edit the user interface, run the command\n $ glade configs/axis/gladevcp/manual-example.ui\n@@ -44106,15 +44106,15 @@\n Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian\n Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error.\n 12.3.3.2. Running Glade to create a new user interface\n This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on\n Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube.\n Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 978 / 1278\n \n If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with /scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNC-specific\n widgets.\n When asked for unsaved preferences, just accept the defaults and hit Close.\n@@ -44129,15 +44129,15 @@\n File\u2192Save as, give it a name like myui.ui and make sure it\u2019s saved as GtkBuilder file (radio button\n left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but\n there is no point in using it. The convention for GtkBuilder file extension is .ui.\n 12.3.3.3. Testing a panel\n You\u2019re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with:\n gladevcp myui.ui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 979 / 1278\n \n GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n@@ -44175,15 +44175,15 @@\n It is possible to create a custom HAL component name by adding the -c option:\n [DISPLAY]\n # add GladeVCP panel where PyVCP used to live:\n GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui\n \n The command line actually run by AXIS for the above is:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 980 / 1278\n \n halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example \u2190.ui\n \n nota\n The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located in\n@@ -44219,15 +44219,15 @@\n nota\n Make sure the UI file is the last option passed to GladeVCP in both the GLADEVCP= and\n EMBED_TAB_COMMAND= statements.\n \n 12.3.3.7. Integrating into Touchy\n To do add a GladeVCP tab to Touchy, edit your INI file as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 981 / 1278\n \n [DISPLAY]\n # add GladeVCP panel as a tab\n EMBED_TAB_NAME=GladeVCP demo\n EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal \u2190./manual-example.ui\n@@ -44266,15 +44266,15 @@\n -H FILE::\n Execute HAL statements from FILE with halcmd after the\n component is set up and ready\n -m MAXIMUM::\n Force panel window to maximize. Together with the -g geometry option\n one can move the panel to a second monitor and force it to use all of the screen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 982 / 1278\n \n -t THEME::\n Set gtk theme. Default is system theme. Different panels can have different themes.\n An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? \u2190GTK_Themes[EMC Wiki].\n -x XID::\n@@ -44313,15 +44313,15 @@\n So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded\n fashion):\n You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the\n right point in time, so comment that out in the INI file.\n Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H\n option (see previous section).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 983 / 1278\n \n 12.3.6. HAL Widget reference\n GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended\n to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used\n with the Glade user interface editor. With proper installation, the HAL Widgets should show up in\n@@ -44351,15 +44351,15 @@\n General\u2192Name).\n Exceptions to this rule currently are:\n \n HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a (s32) pin\n HAL_ProgressBar, which has a -value input pin, and a -scale input\n pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 984 / 1278\n \n 12.3.6.2. Python attributes and methods of HAL Widgets\n HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the\n applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties\n and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual.\n@@ -44397,15 +44397,15 @@\n callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin\u2019s\n value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback\n into your Python code when - well, a HAL pin changes its value. This means there\u2019s no more need for\n permanent polling of HAL pin changes in your code, the widgets do that in the background and let\n you know.\n Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 985 / 1278\n \n The example in configs/apps/gladevcp/complex shows how this is handled in Python.\n 12.3.6.5. Buttons\n This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton,\n HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical\n@@ -44416,15 +44416,15 @@\n Important common methods: set_active(), get_active()\n Important properties: label, image\n \n Figura 12.31: Check button\n \n Figura 12.32: Radio buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 986 / 1278\n \n Figura 12.33: Toggle button\n sugerencia\n Defining radio button groups in Glade:\n Decide on default active button.\n@@ -44447,15 +44447,15 @@\n 12.3.6.7. SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n -f\n out FLOAT pin\n -s\n out s32 pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 987 / 1278\n \n To be useful, Spinbuttons need an adjustment value like scales, see above.\n \n Figura 12.35: Example SpinButton\n \n@@ -44489,15 +44489,15 @@\n Set the content of the label which may be shown over the counts value.\n If the label given is longer than 15 Characters, it will be cut to 15 Characters.\n default = blank\n center_color\n This allows one to change the color of the wheel. It uses a GDK color string.\n default = #bdefbdefbdef (gray)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 988 / 1278\n \n count_type_shown\n There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts.\n default = 1\n count is based on the CPR selected - it will count positive and negative. It is available as a s32\n@@ -44538,15 +44538,15 @@\n There are two GObject signals emitted:\n count_changed\n Emitted when the widget\u2019s count changes eg. from being wheel scrolled.\n scale_changed\n Emitted when the widget\u2019s scale changes eg. from double clicking.\n Connect to these like so:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 989 / 1278\n \n [widget name].connect(\u2019count_changed\u2019, [count function name])\n [widget name].connect(\u2019scale_changed\u2019, [scale function name])\n \n The callback functions would use this pattern:\n@@ -44568,15 +44568,15 @@\n may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough\n movements the drag and drop way.\n jogwheel exports it\u2019s count value as HAL pin:\n -s\n out s32 pin\n jogwheel has the following properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 990 / 1278\n \n size\n Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40\n@@ -44599,15 +44599,15 @@\n Sets the label content with \u201dstring\u201d\n \n Figura 12.37: Example JogWheel\n \n 12.3.6.10. Speed Control\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 991 / 1278\n \n The value is controlled with two button to increase or decrease the value. The increment will change\n as long a button is pressed. The value of each increment as well as the time between two changes can\n be set using the widget properties.\n speedcontrol offers some HAL pin:\n@@ -44652,15 +44652,15 @@\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n Default is 100.0.\n If you change this value, the increment will be reset to default, so it might be necessary to set\n afterwards a new increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 992 / 1278\n \n increment\n Float\n Sets the applied increment per mouse click.\n Allowed values are 0.001 to 99999.0 and -1.\n@@ -44706,15 +44706,15 @@\n [widget name].get_value()\n Will return the counts value as float\n [widget name].set_value(float(value))\n Sets the widget to the commanded value\n [widget name].set_digits(int(value))\n Sets the digits of the value to be used\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 993 / 1278\n \n [widget name].hide_button(bool(value))\n Hide or show the button\n \n Figura 12.38: Example Speedcontrol\n@@ -44745,15 +44745,15 @@\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n Have one HAL BIT input pin which controls if their child widgets are sensitive or not.\n Pin: , .\n in bit pin\n If the pin is low then child widgets are inactive which is the default state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 994 / 1278\n \n State_Sensitive_Table\n Responds to the state to LinuxCNC\u2019s interpreter.\n Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle.\n You can combine them. It will always be insensitive at Estop.\n@@ -44794,15 +44794,15 @@\n led_blink_rate\n If set and LED is ON then it\u2019s blinking.\n Blink period is equal to \u201dled_blink_rate\u201d specified in milliseconds.\n create_hal_pin\n Select/deselect creation of a HAL pin to control the LED.\n With no HAL pin created LED can be controlled with a Python function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 995 / 1278\n \n As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification\n in your code when the LED\u2019s HAL pin was changed, then connect this signal to a handler, for example\n on_led_pin_changed and provide the handler as follows:\n def on_led_pin_changed(self,hal_led,data=None):\n@@ -44834,15 +44834,15 @@\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n text_template\n Text template to display the current value of the pin.\n Python formatting may be used for dict {\u201dvalue\u201d:value}.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 996 / 1278\n \n Figura 12.40: Example HAL_ProgressBar\n \n 12.3.6.15. ComboBox\n HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list.\n@@ -44872,15 +44872,15 @@\n invert\n Swap min and max direction.\n An inverted HBar grows from right to left, an inverted VBar from top to bottom.\n min, max\n Minimum and maximum value of desired range. It is not an error condition if the current value\n is outside this range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 997 / 1278\n \n show limits\n Used to select/deselect the limits text on bar.\n zero\n Zero point of range.\n@@ -44918,15 +44918,15 @@\n to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border\n and zone 2 from last border to 1.\n Borders are set as fractions.\n Valid values range from 0 to 1.\n \n Figura 12.41: Horizontal bar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 998 / 1278\n \n Figura 12.42: Vertical bar\n \n 12.3.6.17. Meter\n HAL_Meter is a widget similar to PyVCP meter - it represents a float value.\n@@ -44955,15 +44955,15 @@\n z0_border, z1_border\n Define up bounds of color zones.\n By default only one zone is enabled. If you want more then one zone set z0_border and z1_border\n to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second\n border and zone 2 from last border to max.\n Borders are set as values in range min-max.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 999 / 1278\n \n Figura 12.43: Example HAL Meters\n \n 12.3.6.18. HAL_Graph\n This widget is for plotting values over time.\n@@ -44988,15 +44988,15 @@\n show rapids\n This tells the plotter to show the rapid moves.\n Default = true.\n show DTG\n This selects the DRO to display the distance-to-go value.\n Default = true.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1000 / 1278\n \n show relative\n This selects the DRO to show values relative to user system or machine coordinates.\n Default = true.\n show live plot\n@@ -45040,15 +45040,15 @@\n Mouse button handling: leads to different functions of the button:\n 0 = default: left rotate, middle move, right zoom\n 1 = left zoom, middle move, right rotate\n 2 = left move, middle rotate, right zoom\n 3 = left zoom, middle rotate, right move\n 4 = left move, middle zoom, right rotate\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1001 / 1278\n \n 5 = left rotate, middle zoom, right move\n 6 = left move, middle zoom, right zoom\n Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines.\n There a couple ways to directly control the widget using Python.\n@@ -45086,15 +45086,15 @@\n If you set all the plotting options false but show_offsets true you get an offsets page instead of\n a graphics plot.\n If you get the zoom distance before changing the view then reset the zoom distance, it\u2019s much\n more user friendly.\n if you select an element in the preview, the selected element will be used as rotation center\n point\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.44: Gremlin Example\n \n 12.3.6.20. HAL_Offset\n The HAL_Offset widget is used to display the offset of a single axis.\n HAL_Offset has the following properties:\n Joint Number\n@@ -45112,15 +45112,15 @@\n The DRO widget is used to display the current axis position.\n It has the following properties:\n Actual Position\n select actual (feedback) position or commanded position.\n \n 1002 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1003 / 1278\n \n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n@@ -45158,15 +45158,15 @@\n By clicking on the DRO the Order of the DRO will toggle around.\n In Relative Mode the actual coordinate system will be displayed.\n Combi_DRO has the following properties:\n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis vrs. joint number are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1004 / 1278\n \n 0:X 1:Y 2:Z etc.\n actual\n Select actual (feedback) or commanded position.\n metric_units\n@@ -45211,15 +45211,15 @@\n cycle_time\n The time the DRO waits between two polls.\n this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis\n config, to avoid, that the DRO slows down the main application too much.\n The value must be an integer in the range of 100 to 1000. FIXME unit=ms ?\n Default is 150.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1005 / 1278\n \n Using GObject to set the above listed properties:\n [widget name].set_property(property, value)\n \n There are several Python methods to control the widget:\n@@ -45259,15 +45259,15 @@\n \u2022 Absolute = the machine coordinates, depends on the actual property will give actual or commanded position.\n \u2022 Relative = will be the coordinates of the actual coordinate system.\n \u2022 DTG = the distance to go.\n Will mostly be 0, as this function should not be used while the machine is moving, because of time\n delays.\n The widget will emit the following signals:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1006 / 1278\n \n clicked\n This signal is emitted, when the user has clicked on the Combi_DRO widget.\n It will send the following data:\n \u2022 widget = widget object\n@@ -45297,15 +45297,15 @@\n [widget name].system\n The actual system, as mentioned in the system_changed signal.\n [widget name].homed\n True if the joint is homed.\n [widget name].machine_units\n 0 if Imperial, 1 if Metric.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1007 / 1278\n \n Figura 12.45: Example: Three Combi_DRO in a window\n X = Relative Mode\n Y = Absolute Mode\n Z = DTG Mode\n@@ -45330,15 +45330,15 @@\n Sets the file filter for the objects to be shown.\n Must be a string containing a comma separated list of extensions to be shown.\n Default is \u201dngc,py\u201d.\n sortorder\n Sets the sorting order of the displayed icon.\n Must be an integer value from 0 to 3, where:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1008 / 1278\n \n 0 = ASCENDING (sorted according to file names)\n 1 = DESCENDING (sorted according to file names)\n 2 = FOLDERFIRST (show the folders first, then the files), default\n 3 = FILEFIRST (show the files first, then the folders)\n@@ -45382,15 +45382,15 @@\n [widget name].btn_sel_next.emit(\u201dclicked\u201d)\n [widget name].btn_get_selected.emit(\u201dclicked\u201d)\n [widget name].btn_dir_up.emit(\u201dclicked\u201d)\n [widget name].btn_exit.emit(\u201dclicked\u201d)\n \n The widget will emit the following signals:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1009 / 1278\n \n selected\n This signal is emitted when the user selects an icon.\n It will return a string containing a file path if a file has been selected, or None if a directory has been\n selected.\n@@ -45405,15 +45405,15 @@\n \u2022 state is a boolean and will be True or False.\n exit\n This signal is emitted when the exit button has been pressed to close the IconView.\n Mostly needed if the application is started as stand alone.\n \n Figura 12.46: Iconview Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1010 / 1278\n \n 12.3.6.24. Calculator widget\n This is a simple calculator widget, that can be used for numerical input.\n You can preset the display and retrieve the result or that preset value.\n calculator has the following properties:\n@@ -45446,15 +45446,15 @@\n \n tooleditor has the following properties:\n Hidden Columns\n This will hide the given columns.\n The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q.\n You can hide any number of columns including the select and comments.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1011 / 1278\n \n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n [widget name].set_properties(\u2019hide_columns\u2019,\u2019uvwijq\u2019)\n \n@@ -45493,15 +45493,15 @@\n Convenience method to hide buttons.\n You must call this after show_all().\n [widget name].get_selected_tool()\n Return the user selected (highlighted) tool number.\n [widget name].set_selected_tool(toolnumber)\n Selects (highlights) the requested tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1012 / 1278\n \n Figura 12.47: Tooleditor Example\n \n 12.3.6.26. Offsetpage\n The Offsetpage widget is used to display/edit the offsets of all the axes.\n@@ -45526,15 +45526,15 @@\n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1013 / 1278\n \n [widget name].set_property(\u201dhighlight_color\u201d,gdk.Color(\u2019blue\u2019))\n [widget name].set_property(\u201dforeground_color\u201d,gdk.Color(\u2019black\u2019))\n [widget name].set_property(\u201dhide_columns\u201d,\u201dxyzabcuvwt\u201d)\n [widget name].set_property(\u201dhide_rows\u201d,\u201d123456789abc\u201d)\n@@ -45560,15 +45560,15 @@\n This is a list of a list of offset-name/user-name pairs.\n The default text is the same as the offset name.\n [widget name].get_names()\n This returns a list of a list of row-keyword/user-name pairs.\n The user name column is editable, so saving this list is user friendly.\n See set_names above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1014 / 1278\n \n Figura 12.48: Offsetpage Example\n \n 12.3.6.27. HAL_sourceview widget\n \n@@ -45589,15 +45589,15 @@\n Sets the line to highlight.\n Uses the sourceview line numbers.\n [widget name].get_line_number()\n Returns the currently highlighted line.\n [widget name].line_up()\n Moves the highlighted line up one line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1015 / 1278\n \n [widget name].line_down()\n Moves the highlighted line down one line.\n [widget name].load_file(\u2019filename\u2019)\n Loads a file.\n@@ -45619,15 +45619,15 @@\n use_double_click\n Boolean, True enables the mouse double click feature and a double click on an entry will submit\n that command.\n It is not recommended to use this feature on real machines, as a double click on a wrong entry\n may cause dangerous situations\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1016 / 1278\n \n [widget name].set_property(\u201dfont_size_tree\u201d,10)\n [widget name].set_property(\u201dfont_size_entry\u201d,20)\n [widget name].set_property(\u201duse_double_click\u201d,False)\n \n@@ -45640,15 +45640,15 @@\n \n Figura 12.50: HAL widgets in a bitmap Example\n \n 12.3.7. Action Widgets Reference\n GladeVCP includes a collection of \u201dcanned actions\u201d called VCP Action Widgets for the Glade user\n interface editor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1017 / 1278\n \n nota\n Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the\n G-code interpreter.\n \n@@ -45672,15 +45672,15 @@\n The command string may use special keywords to access important functions.\n ACTION for access to the ACTION command library.\n GSTAT for access to the Gstat status message library.\n INFO for access to collected data from the INI file.\n HAL for access to the HAL linuxcnc Python module\n STAT for access to LinuxCNC\u2019s raw status via the LinuxCNC Python module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1018 / 1278\n \n CMD for access to LinuxCNC\u2019s commands via the LinuxCNC Python module.\n EXT for access to the handler file functions if available.\n linuxcnc for access to the LinuxCNC Python module.\n self for access to the widget instance.\n@@ -45714,15 +45714,15 @@\n that the requested operation is running:\n The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is\n idle again.\n The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then\n allows user to send AUTO_ABORT command.\n The MDI toggle sends given MDI command and waits for its completion in pressed inactive state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1019 / 1278\n \n 12.3.7.4. The Action_MDI Toggle and Action_MDI widgets\n These widgets provide a means to execute arbitrary MDI commands.\n The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which\n remains disabled until command complete.\n@@ -45741,15 +45741,15 @@\n 12.3.7.6. Parameter passing with Action_MDI and ToggleAction_MDI widgets\n 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\n it works:\n assume you have a HAL SpinBox named speed, and you want to pass it\u2019s current value as a parameter in an MDI command.\n The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description).\n To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name}\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1020 / 1278\n \n for the above HAL SpinBox, we could use (MSG, \u201dThe speed is: ${speed-f}\u201d) just to show what\u2019s\n happening.\n The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here\u2019s what you\n get when running it:\n@@ -45766,15 +45766,15 @@\n \n 12.3.7.8. Preparing for an MDI Action, and cleaning up afterwards\n 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\n might get changed by the command or subroutine - for example, a probing subroutine will very likely\n set the feed value quite low. With no further precautions, your previous feed setting will be overwritten\n by the probing subroutine\u2019s value.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1021 / 1278\n \n 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\n handlers with a given LinuxCNC ToggleAction_MDI. These handlers are optional and provide a way to\n save any state before executing the MDI Action, and to restore it to previous values afterwards. The\n signal names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade\n@@ -45812,15 +45812,15 @@\n mode-related:\n \u2022 mode-manual: emitted when LinuxCNC enters manual mode,\n \u2022 mode-mdi: emitted when LinuxCNC enters MDI mode,\n \u2022 mode-auto: emitted when LinuxCNC enters automatic mode,\n interpreter-related: emitted when the G-code interpreter changes into that mode\n \u2022 interp-run\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1022 / 1278\n \n \u2022 interp-idle\n \u2022 interp-paused\n \u2022 interp-reading\n \u2022 interp-waiting\n@@ -45859,15 +45859,15 @@\n print(INFO.MACHINE_IS_METRIC)\n ACTION.SET_ERROR_MESSAGE(\u2019Something went wrong\u2019)\n \n More information can be found here: GladeVCP Libraries modules There is a sample configuration\n that demonstrates using the core library with GladeVCP\u2019s action Python widgets and with a Python\n handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1023 / 1278\n \n 12.3.8.3. An example: adding custom user callbacks in Python\n This is just a minimal example to convey the idea - details are laid out in the rest of this section.\n GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in\n Python. This could be used, among others, to execute MDI commands. Here\u2019s how you do it:\n@@ -45902,15 +45902,15 @@\n The overall approach is as follows:\n Design your UI with Glade, and set signal handlers where you want actions associated with a widget.\n Write a Python module which contains callable objects (see handler models below).\n Pass your module\u2019s path name to GladeVCP with the -u option.\n GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree.\n The main event loop is run.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1024 / 1278\n \n For simple tasks it\u2019s sufficient to define functions named after the Glade signal handlers. These will be\n called when the corresponding event happens in the widget tree. Here\u2019s a trivial example - it assumes\n that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press:\n nhits = 0\n@@ -45956,15 +45956,15 @@\n self.active = False\n # connect to client-events from the host GUI\n def on_map_event(self, widget, data=None):\n top = widget.get_toplevel()\n print(\u201dmap event\u201d)\n top.connect(\u2019client-event\u2019, self.event)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1025 / 1278\n \n If during module inspection GladeVCP finds a function get_handlers, it calls it as follows:\n get_handlers(halcomp,builder,useropts)\n \n The arguments are:\n@@ -45999,15 +45999,15 @@\n on screen). And the HAL component isn\u2019t ready as well, so its unsafe to access pins values in your\n __init__() method.\n If you want to have a callback to execute at program start after it is safe to access HAL pins, then a\n connect a handler to the realize signal of the top level window1 (which might be its only real purpose).\n At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about\n to enter the Gtk main loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1026 / 1278\n \n 12.3.8.7. Multiple callbacks with the same name\n Within a class, method names must be unique. However, it is OK to have multiple class instances\n passed to GladeVCP by get_handlers() with identically named methods. When the corresponding signal\n occurs, these methods will be called in definition order - module by module, and within a module, in\n@@ -46047,15 +46047,15 @@\n are saved and to be restored. In the case of signature mismatch, a new INI file with default settings\n is generated.\n 12.3.8.10. Using persistent variables\n If you want any of Gtk widget state, HAL widgets output pin\u2019s values and/or class attributes of your\n handler class to be retained across invocations, proceed as follows:\n Import the gladevcp.persistence module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1027 / 1278\n \n Decide which instance attributes, and their default values you want to have retained, if any.\n Decide which widgets should have their state retained.\n Describe these decisions in your handler class\u2019 \\__init()__ method through a nested dictionary\n as follows:\n@@ -46096,15 +46096,15 @@\n ini.restore_state(obj)\n Restore HAL out pins and obj\u2019s attributes as saved/initialized to default as above.\n 12.3.8.11. Saving the state on GladeVCP shutdown\n To save the widget and/or variable state on exit, proceed as follows:\n Select some interior widget (type is not important, for instance a table).\n In the Signals tab, select GtkObject. It should show a destroy signal in the first column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1028 / 1278\n \n Add the handler name, e.g. on_destroy to the second column.\n Add a Python handler like below:\n import gtk\n ...\n@@ -46141,15 +46141,15 @@\n 12.3.8.14. Adding HAL pins\n If you need HAL pins which are not associated with a specific HAL widget, add them as follows:\n import hal_glib\n ...\n # in your handler class __init__():\n self.example_trigger = hal_glib.GPin(halcomp.newpin(\u2019example-trigger\u2019, hal.HAL_BIT, hal. \u2190HAL_IN))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1029 / 1278\n \n To get a callback when this pin\u2019s value changes, associate a value-change callback with this pin, add:\n self.example_trigger.connect(\u2019value-changed\u2019, self._on_example_trigger_change)\n \n and define a callback method (or function, in this case leave out the self parameter):\n@@ -46190,15 +46190,15 @@\n self.max_value = hal_glib.GPin(halcomp.newpin(\u2019max-value\u2019, hal.HAL_FLOAT, hal. \u2190HAL_IN))\n self.max_value.connect(\u2019value-changed\u2019, self._on_max_value_change)\n inifile = linuxcnc.ini(os.getenv(\u201dINI_FILE_NAME\u201d))\n mmin = float(inifile.find(\u201dMETER\u201d, \u201dMIN\u201d) or 0.0)\n self.meter = self.builder.get_object(\u2019meter\u2019)\n self.meter.min = mmin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1030 / 1278\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17. Examples, and rolling your own GladeVCP application\n@@ -46235,15 +46235,15 @@\n 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value\n 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\n has no window object of its own for performance reasons, and only window objects can have a\n background color. The solution is to enclose the Label in an EventBox container, which has a\n window but is otherwise invisible - see the coloredlabel.ui file.\n 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero?\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1031 / 1278\n \n 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\n http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin\n value, it is better to set it explicitly in an on_realize signal handler during widget creation. See\n the example in configs/apps/gladevcp/by-widget/spinbutton.{ui,py}.\n@@ -46283,15 +46283,15 @@\n 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\n items reported by the script linuxcnc_var:\n $ linuxcnc_var LINUXCNC_AUX_GLADEVCP\n /usr/share/linuxcnc/aux_gladevcp\n $ linuxcnc_var LINUXCNC_AUX_EXAMPLES\n /usr/share/linuxcnc/aux_examples\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1032 / 1278\n \n 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\n is imported at GladeVCP startup and made available to subsequent GladeVCP applications including\n embedded usage in supporting GUIs.\n 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\n@@ -46329,15 +46329,15 @@\n MACRO_PATH_LIST = []\n INI_MACROS = self.INI.findall(\u201dDISPLAY\u201d, \u201dMACRO\u201d)\n IMAGE_PATH = IMAGEDIR\n LIB_PATH = os.path.join(HOME, \u201dshare\u201d,\u201dqtvcp\u201d)\n PROGRAM_FILTERS = None\n PARAMETER_FILE = None\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n MACHINE_IS_LATHE = False\n MACHINE_IS_METRIC = False\n MACHINE_UNIT_CONVERSION = 1\n MACHINE_UNIT_CONVERSION_9 = [1]*9\n TRAJ_COORDINATES =\n JOINT_COUNT = int(self.INI.find(\u201dKINS\u201d,\u201dJOINTS\u201d)or 0)\n@@ -46390,15 +46390,15 @@\n (heading: [EMCIO], title:TOOL_TABLE)\n (heading: [HAL], title: POSTGUI_HALFILE)\n \n There are some helper functions - mostly used for widget support\n \n 1033 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1034 / 1278\n \n get_error_safe_setting(self, heading, detail, default=None)\n convert_metric_to_machine(data)\n convert_imperial_to_machine(data)\n convert_9_metric_to_machine(data)\n@@ -46441,15 +46441,15 @@\n ACTION = Action()\n \n To access Action commands use general syntax such as these:\n ACTION.SET_ESTOP_STATE(state)\n ACTION.SET_MACHINE_STATE(state)\n ACTION.SET_MACHINE_HOMING(joint)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SET_MACHINE_UNHOMED(joint)\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.SET_MDI_MODE()\n ACTION.SET_MANUAL_MODE()\n ACTION.SET_AUTO_MODE()\n ACTION.SET_LIMITS_OVERRIDE()\n@@ -46490,15 +46490,15 @@\n ACTION.SET_FLOOD_OFF()\n ACTION.TOGGLE_MIST()\n ACTION.SET_MIST_ON()\n ACTION.SET_MIST_OFF()\n \n 1035 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1036 / 1278\n \n ACTION.RELOAD_TOOLTABLE()\n ACTION.UPDATE_VAR_FILE()\n ACTION.TOGGLE_OPTIONAL_STOP()\n ACTION.SET_OPTIONAL_STOP_ON()\n@@ -46524,60 +46524,60 @@\n to create a GUI screen for running a CNC machine.\n QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python\n code for even finer grain customization.\n \n 12.5.1. Showcase\n Few examples of QtVCP built screens and virtual control panels:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.55: QtDragon - 3/4-Axis Sample\n \n 1037 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.56: QtDefault - 3-Axis Sample\n \n 1038 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1039 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.58: Blender - 4-Axis Sample\n \n 1040 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.59: X1mill - 4-Axis Sample\n \n 1041 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.60: cam_align - Camera Alignment VCP\n \n 1042 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.61: test_panel - Test Panel VCP\n \n 12.5.2. Overview\n Two files are used, individually or in combination, to add customizations:\n \n 1043 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1044 / 1278\n \n A UI file that is a XML file made with Qt Designer graphical editor.\n A handler file which is a Python code text file.\n Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and\n handler files.\n@@ -46610,15 +46610,15 @@\n \n Options\n -d Debugging on.\n -i Enable info output.\n -v Enable verbose debug output.\n -q Enable only error debug output.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1045 / 1278\n \n -a Set window always on top.\n -c NAME HAL component name. Default is to use the UI file name.\n -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\n -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100\n@@ -46654,15 +46654,15 @@\n 12.5.2.4. Handler Files\n A handler file is a file containing Python code, which adds to QtVCP default routines.\n A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify\n QtVCP\u2019s core code. In this way you can have custom behaviors.\n If present a handler file will be loaded.\n Only one file is allowed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1046 / 1278\n \n 12.5.2.5. Libraries Modules\n QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt\n behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install).\n Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what\n@@ -46692,15 +46692,15 @@\n QtVCP will look for a folder named (in the launched configuration folder that holds\n the INI file).\n In that folder, QtVCP will load any of the available following files:\n .ui,\n _handler.py, and\n .qss.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1047 / 1278\n \n 12.5.2.8. Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Minor StyleSheet Changes Stylesheets can be used to set Qt properties.\n If a widget uses properties they usually can be modified by stylesheets.\n@@ -46740,46 +46740,46 @@\n basename in the edit box.\n Validate to copy all the files\n Delete the files you don\u2019t wish to modifyso that the original files will be used.\n \n 12.5.3. VCP Panels\n QtVCP can be used to create control panels that interface with HAL.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1048 / 1278\n \n 12.5.3.1. Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n Figura 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.63: cam_align - Camera Alignment VCP\n sim_panel\n A small control panel to simulate MPG jogging controls etc.\n For simulated configurations.\n \n 1049 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.64: QtVCP Sim Builtin Panel\n vismach_mill_xyz\n 3D openGL view of a 3-Axis milling machine.\n \n 1050 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1051 / 1278\n \n Figura 12.65: QtVismach - 3-Axis Mill Builtin Panel\n You can load these from the terminal or from a HAL file with this basic command:\n loadusr qtvcp test_panel\n \n@@ -46788,15 +46788,15 @@\n \n In this way HAL will wait till the HAL pins are made before continuing on.\n 12.5.3.2. Custom Panels\n You can of course make your own panel and load it.\n If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load\n this from a terminal with:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1052 / 1278\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -46845,15 +46845,15 @@\n 1\n \n In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing\n to run the next HAL command.\n This is to ensure that the panel created HAL pins are actually done in case they are used in the\n rest of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1053 / 1278\n \n 12.5.4. Build A Simple Clean-sheet Custom Screen\n \n Figura 12.66: QtVCP Ugly custom screen\n 12.5.4.1. Overview\n@@ -46869,15 +46869,15 @@\n \n Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the\n qtvcp_plugin.py in one of the folders that Qt Designer will search into.\n In a RIP version of LinuxCNC qtvcp_plugin.py will be:\n \u2019~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py\u2019\n For a Package installed version it should be:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1054 / 1278\n \n \u2019usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py\u2019 or\n \u2019usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py\u2019\n Make a symbolic link to the above file and move it to one of the places Qt Designer searches in.\n Qt Designer searches in these two place for links (pick one):\n@@ -46913,15 +46913,15 @@\n \n We are going to make this window a specific non resizeable size:\n Set MainWindow Minimum and Maximum Size\n Grab the corner of the window and resize to an appropriate size, say 1000x600.\n Right click on the window and click set minimum size.\n Do it again and set maximum size.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1055 / 1278\n \n Our sample widget will now not be resizable.\n Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main\n window.\n This widget doesn\u2019t add anything visually but sets up some common options.\n@@ -46955,28 +46955,28 @@\n Click the machine_on action checkbox you will see in the list of properties and values.\n The button will now control machine on/off.\n Do the same for all the other button with the addition of:\n With the Home button we must also change the joint_number property to -1.\n This tells the controller to home all the axes rather then a specific axis.\n With the Pause button:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022 Under the Indicated_PushButton heading check the indicator_option.\n \u2022 Under the QAbstactButton heading check checkable.\n \n 1056 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1057 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1058 / 1278\n \n Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder.\n We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler\n file to display it.\n 12.5.4.4. Handler file\n@@ -47009,15 +47009,15 @@\n after the screen is built,\n after all the POSTGUI_HALFILEs are run.\n In our example there are no HAL pins to connect.\n \n 12.5.5. Handler File In Detail\n Handler files are used to create custom controls using Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.5.5.1. Overview\n Here is a sample handler file.\n It\u2019s broken up in sections for ease of discussion.\n ############################\n # **** IMPORT SECTION **** #\n ############################\n@@ -47064,15 +47064,15 @@\n def initialized__(self):\n pass\n def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl):\n # when typing in MDI, we don\u2019t want keybinding to call functions\n \n 1059 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1060 / 1278\n \n # so we catch and process the events directly.\n # We do want ESC, F1 and F2 to call keybinding functions though\n if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2,\n QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5):\n@@ -47123,15 +47123,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # keyboard jogging from key binding calls\n # double the rate if fast is true\n def kb_jog(self, state, joint, direction, fast = False, linear = True):\n if not STATUS.is_man_mode() or not STATUS.machine_is_on():\n return\n if linear:\n@@ -47180,15 +47180,15 @@\n def on_keycall_ZPOS(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, 1, shift)\n def on_keycall_ZNEG(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, -1, shift)\n \n 1061 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1062 / 1278\n \n def on_keycall_APOS(self,event,state,shift,cntrl):\n pass\n #self.kb_jog(state, 3, 1, shift, False)\n def on_keycall_ANEG(self,event,state,shift,cntrl):\n@@ -47223,15 +47223,15 @@\n 12.5.5.5. INITIALIZE Section\n Like all Python libraries the +__init__+ function is called when the library is first instantiated.\n This is where you would set up defaults, as well as reference variables and global variables.\n The widget references are not available at this point.\n The variables halcomp, widgets and paths give access to QtVCP\u2019s HAL component, widgets, and path\n info respectively.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1063 / 1278\n \n 12.5.5.6. SPECIAL FUNCTIONS Section\n There are several special functions that QtVCP looks for in the handler file.\n If QtVCP finds these it will call them, if not it will silently ignore them.\n initialized__(self):\n@@ -47266,15 +47266,15 @@\n The Linux system will not shutdown if using this function, you will have to do that yourself.\n QtVCP/LinuxCNC will terminate without a prompt once this function returns.\n closing_cleanup__(self):\n This function is called just before the screen closes. It can be used to do cleanup before closing.\n 12.5.5.7. STATUS CALLBACKS Section\n By convention this is where you would put functions that are callbacks from STATUS definitions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1064 / 1278\n \n 12.5.5.8. CALLBACKS FROM FORM Section\n By convention this is where you would put functions that are callbacks from the widgets connected\n to the MainWindow in the Qt Designer editor.\n 12.5.5.9. GENERAL FUNCTIONS Section\n@@ -47305,15 +47305,15 @@\n 12.5.6.1. Overview\n In the Qt Designer editor:\n You create user function slots\n You connect the slots to widgets using signals.\n In the handler file:\n You create the slot\u2019s functions defined in Qt Designer.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1065 / 1278\n \n 12.5.6.2. Using Qt Designer to add Slots\n When you have loaded your screen into Qt Designer, add a plain PushButton to the screen.\n You could change the name of the button to something interesting like test_button.\n There are two ways to edit connections - This is the graphical way.\n@@ -47329,15 +47329,15 @@\n You can now edit a new slot name.\n Erase the default name slot() and change it to test_button()\n Press the OK button.\n You\u2019ll be back to the Configure Connections dialog.\n Now you can select your new slot in the slot list.\n Then press OK and save the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1066 / 1278\n \n Figura 12.68: Qt Designer Signal/Slot Selection\n \n 12.5.6.3. Python Handler Changes\n Now you must add the function to the handler file.\n@@ -47354,15 +47354,15 @@\n \n In fact it doesn\u2019t matter where in the handler class you put the commands but by convention this is\n where to put it.\n Save the handler file.\n Now when you load your screen and press the button it should print the name of the button in the\n terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1067 / 1278\n \n 12.5.7. More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -47379,28 +47379,28 @@\n In a terminal type qtvcp list to see a list.\n 12.6.1.1. copy\n Used for copying QtVCP\u2019s builtin Screens/VCP Panels/QtVismach code to a folder so one can\n customize it.\n In a terminal run:\n qtvcp copy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1068 / 1278\n \n Figura 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2. test_dial\n This panel has a dial that adjusts S32 and Float HAL output pins.\n The dial\u2019s range can be adjusted from a drop down menu.\n The output can be scaled with the spinbox.\n A combobox can be used to automatically select and connect to a signal.\n loadusr qtvcp test_dial\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n 12.6.1.3. test_button\n This panel has a button that will set a HAL pin.\n The button can be selected as a momentary or a toggle button.\n The button\u2019s indicator color can be adjusted from a drop down menu.\n@@ -47415,15 +47415,15 @@\n The -o switch sets how many buttons the panel starts with.\n If loading directly from a terminal omit the loadusr.\n \n Figura 12.71: QtVCP test_button - Test Button VCP\n \n 1069 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1070 / 1278\n \n 12.6.1.4. test_led\n This panel has an LED that can selected to watch HAL bit pins/signals.\n The LED\u2019s color can be adjusted from a drop down menu.\n The text box and state can be output as speech if sound is selected.\n@@ -47439,24 +47439,24 @@\n \n Figura 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.5. test_panel\n Collection of useful widgets for testing HAL component, including speech of LED state.\n loadusr qtvcp test_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.6. cam_align\n A camera display widget for rotational alignment.\n \n 1071 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1072 / 1278\n \n Figura 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel\n Usage Add these lines to the INI file:\n [DISPLAY]\n EMBED_TAB_NAME = cam_align\n@@ -47470,15 +47470,15 @@\n You can add window width and height size, rotation increment, and camera number from the INI with\n -o options.\n EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size \u2190=400,400 -o rotincr=.2 -o camnumber=0 cam_align\n \n Mouse controls:\n left mouse single click - increase cross hair rotation one increment\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1073 / 1278\n \n right mouse single click - decrease cross hair rotation one increment\n middle mouse single click - cycle through rotation increments\n left mouse hold and scroll - scroll camera zoom\n right mouse hold and scroll - scroll cross hair rotation angle\n@@ -47496,83 +47496,83 @@\n Note the comma and text after is optional - it will override the default button text.\n These buttons are QtVCP action buttons and follow those rules.\n 12.6.1.7. sim_panel\n Small control panel to simulate MPG jogging controls etc.\n For simulated configurations\n loadusr qtvcp sim_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1074 / 1278\n \n Figura 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.8. tool_dialog\n Manual tool change dialog that gives tool description.\n loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog\n \n Options:\n -o notify_on - use desktop notify dialogs instead of QtVCP native ones.\n -o audio_on - play sound on tool change\n -o speak_on - speak announcement of tool change\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.76: QtVCP tool_dialog - Manual Tool Change Dialog\n \n 12.6.2. vismach 3D Simulation Panels\n These panels are prebuilt simulation of common machine types.\n These are also embed-able in other screens such as AXIS or GMOCCAPY.\n 12.6.2.1. QtVCP vismach_mill_xyz\n 3D OpenGL view of a 3-Axis milling machine.\n loadusr qtvcp vismach_mill_xyz\n \n 1075 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2. QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n 1076 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.3. QtVCP vismach_millturn\n 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle.\n loadusr qtvcp vismach_millturn\n \n 1077 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.4. QtVCP vismach_mill_5axis_gantry\n 3D OpenGL view of a 5-Axis gantry type milling machine.\n loadusr qtvcp vismach_mill_5axis_gantry\n \n 1078 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1079 / 1278\n \n Figura 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.5. QtVCP vismach_fanuc_200f\n 3D openGL view of a 6 joint robotic arm.\n loadusr qtvcp vismach_fanuc_200f\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1080 / 1278\n \n Figura 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm\n \n 12.6.3. Custom Virtual Control Panels\n You can of course make your own panel and load it.\n@@ -47600,15 +47600,15 @@\n # connect pins\n net bit-input1\n \n test_panel.checkbox_1\n \n classicladder.0.in-00\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n net bit-hide\n \n test_panel.checkbox_4\n \n classicladder.0.hide_gui\n \n@@ -47658,15 +47658,15 @@\n Allows one to embed a program into the widget.\n Only programs that utilize the xembed protocol will work such as:\n GladeVCP virtual control panels\n Onboard virtual keyboard\n QtVCP virtual control panels\n mplayer video player\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1082 / 1278\n \n 12.7.1.2. Slider - HAL Pin Value Adjusting Widget\n Allows one to adjust a HAL pin value using a sliding pointer.\n 12.7.1.3. LED - Indicator Widget\n \n@@ -47696,15 +47696,15 @@\n qproperty-flashRate: 150;\n }\n \n 12.7.1.4. CheckBox Widget\n This widget allows the user to check a box to set a HAL pin true or false.\n It is based on PyQt\u2019s QCheckButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1083 / 1278\n \n 12.7.1.5. RadioButton Widget\n This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group\n can be true at a time.\n It is based on PyQt\u2019s QRadioButton.\n@@ -47725,15 +47725,15 @@\n In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings\n on the gauge face.\n It should be set to a number that ensures the text readings around the gauge face are readable.\n The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to the\n threshold point.\n It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1084 / 1278\n \n minimum reading, which is 0.\n It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge.\n threshold:: The threshold is the transition point between the zones.\n It should be set to a value between 0 and the maximum value.\n@@ -47751,15 +47751,15 @@\n to a value between 0 and the maximum value.\n 12.7.1.7. HALPad - HAL Buttons Joypad\n \n Figura 12.84: QtVCP HALPad: HAL Buttons Joypad\n This widget looks and acts like a 5 buttons D-pad, with an LED ring.\n Each button has an selectable type (Bit, S32 or Float) output HAL pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1085 / 1278\n \n The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin.\n HALPad ENUMS There are enumerated constants used:\n To reference indicator positions:\n \u2022 NONE\n@@ -47797,15 +47797,15 @@\n left_text , right_text , center_text , top_text , bottom_text\n A text string to be displayed in the described button location.\n If left blank an image can be designated to be displayed.\n true_color , false_color\n Color selection for the center LED ring to be displayed when the .light.center HAL\n pin is True or False.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1086 / 1278\n \n text_color\n Color selection for the button text.\n text_font\n Font selection for the button text.\n@@ -47820,15 +47820,15 @@\n As an option it can be a toggle button.\n For a LED Indicator Option, see Secci\u00f3n 12.7.5.1[IndicatedPushButton] below for more info.\n It also has other options.\n It is based on PyQt\u2019s QPushButton.\n 12.7.1.9. focusOverlay - Focus Overlay Widget\n This widget places a colored overlay over the screen, usually while a dialog is showing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figura 12.85: Focus overlay example for confirm close prompt\n Used to create a focused feel and to draw attention to critical information.\n It can also show a translucent image.\n It can also display message text and buttons.\n This widget can be controlled with STATUS messages.\n 12.7.1.10. gridLayout - Grid Layout Widget\n@@ -47836,15 +47836,15 @@\n Disabled widgets typically have a different color and do not respond to actions.\n It is based on PyQt\u2019s QGridLayout.\n 12.7.1.11. hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1087 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1088 / 1278\n \n Values can be sent from:\n HAL pins\n The input pin can be selected as Bit, S32, Float or no pin selected\n Programmatically\n@@ -47879,15 +47879,15 @@\n When using floats you can set a formatting string.\n You must set the digitCount property to an appropriate setting to display the largest number.\n Properties\n pin_name\n Option string to be used as the HAL pin name.\n If set to an empty string the widget name will be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1089 / 1278\n \n bit_pin_type\n Selects the input pin as type BIT.\n s32_pin_type\n Selects the input pin as type S32.\n@@ -47918,15 +47918,15 @@\n a large view of a widget and a smaller multi widget view.\n It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it\n in its page with a different layout than it originally had.\n The original widget must be in a layout for switcher to put it back.\n In Qt Designer you will:\n Add the WidgetSwitcher widget on screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1090 / 1278\n \n Right click the WidgetSwitcher and add a page.\n Populate it with the widgets/layouts you wish to see in a default form.\n Add as many pages as there are views to switch to.\n On each page, add a layout widget.\n@@ -47959,15 +47959,15 @@\n Estop , Machine On , Auto , mdi , manual , run , run_from_line status\n Gets line number from STATUS message gcode-line-selected.\n run_from_line slot\n Gets line number from Qt Designer int/str slot setRunFromLine.\n abort , pause , load dialog\n Requires a dialog widget present.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1091 / 1278\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -48008,15 +48008,15 @@\n spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change\n Set view_type_string.\n limits override , flood , mist , block delete , optional stop , mdi command\n Set command_string, i.e.,calls a hard coded MDI command\n INI mdi number\n Set ini_mdi_number, i.e., calls an INI based MDI command\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1092 / 1278\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -48055,15 +48055,15 @@\n Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines.\n The commands are separated by the ;.\n The label is set after the comma, and \\n symbol adds a line break.\n [MDI_COMMAND_LIST]\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1093 / 1278\n \n Action buttons are subclassed from Secci\u00f3n 12.7.5.1[IndicatedPushButton]. See the following sections for more information about:\n LED Indicator option\n Enabled on State\n Text Changes On State\n@@ -48096,15 +48096,15 @@\n Divide the axis by 2\n Set the axis arbitrarily\n Reset the axis to the last number recorded\n You select the axis by setting the joint number.\n You can select a halpin option that is set true when the axis is selected.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1094 / 1278\n \n 12.7.2.5. CamView - Workpiece Alignment and Origin Setting Widget\n This widget displays a image from a web camera.\n It overlays an adjustable circular and cross hair target over the image.\n CamView was built with precise visual positioning in mind.\n@@ -48144,15 +48144,15 @@\n Here is how you specify a particular widget by its objectName in Qt Designer:\n DROLabel #dr0_x_axis [isHomed=false] {\n color: yellow;\n }\n \n It is based on PyQt\u2019s QLabel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1095 / 1278\n \n 12.7.2.7. GcodeDisplay - G-code Text Display Widget\n This displays G-code in text form, highlighting the currently running line.\n This can also display:\n MDI history when LinuxCNC is in MDI mode.\n@@ -48194,15 +48194,15 @@\n styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including\n () or anything after ; (when used outside of parenthesis) with the exception of the note below)\n styleColor2 = G-code: G and the digits after\n styleColor3 = M-code: M and the digits after\n styleColor4 = Axis: XYZABCUVW\n styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1096 / 1278\n \n styleColor6 = AxisValue: Values following XYZABCUVW\n styleColor7 = OtherValue: Values following EFHIJKDQLRPST$\n nota\n For comments, the \u201dOtherValue\u201d color (Color 5) can be used to highlight \u201dprint,\u201d \u201ddebug,\u201d \u201dmsg,\u201d\n@@ -48215,15 +48215,15 @@\n \u201dstyle name, size, -1, 0, bold setting (0-99), italics (0-1),\n underline (0-1),0,0,0\u201d\n It is based on PyQt\u2019s QsciScintilla.\n 12.7.2.8. GcodeEditor - G-code Program Editor Widget\n This is an extension of the GcodeDisplay widget that adds editing convenience.\n It is based on PyQt\u2019s QWidget which incorporates GcodeDisplay widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1097 / 1278\n \n 12.7.2.9. GCodeGraphics - G-code Graphic Backplot Widget\n \n Figura 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -48239,15 +48239,15 @@\n +_dro+ (bool)\n Determines whether or not to show the DRO.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dro: False;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n +_dtg+ (bool)\n Determine whether or not to show the Distance To Go.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dtg: False;\n }\n@@ -48296,15 +48296,15 @@\n \n +_use_gradient_background+ (bool)\n Determines whether or not use a gradient background by default.\n The following shows an example of how to set this property:\n \n 1098 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1099 / 1278\n \n #gcodegraphics{\n qproperty-_use_gradient_background: False;\n }\n \n@@ -48375,15 +48375,15 @@\n Middle\n Middle\n Left\n \n Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some\n lathes and have no rotate button assigned.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Mode\n 6\n 7\n 8\n 9\n 10\n@@ -48440,15 +48440,15 @@\n inhibit-selection-off\n dimensions-on\n dimensions-off\n grid-size\n record-view\n set-recorded-view\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n P\n X\n Y\n Y2\n Z\n Z2\n@@ -48478,15 +48478,15 @@\n This will be the text set when the option is False.\n You can use Qt rich text code for different fonts/colors etc.\n Typical template for metric mode in false state, might be: Imperial Mode.\n It is based on PyQt\u2019s QLabel.\n \n 1101 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1102 / 1278\n \n 12.7.2.11. StatusLabel - Controller Variables State Label Display Widget\n This will display a label based on selectable status of the machine controller.\n You can change how the status will be displayed by substituting python formatting code in the text\n template. You can also use rich text for different fonts/colors etc.\n@@ -48525,15 +48525,15 @@\n jograte_angular_status\n Shows the current QtVCP based Angular Jog Rate.\n jogincr_status\n Shows the current QtVCP based Jog increment.\n jogincr_angular_status\n Shows the current QtVCP based Angular Jog increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1103 / 1278\n \n machine_state_status\n Shows the current machine interpreter state using the text described from the machine_state_list.\n The interpreter states are:\n Estopped\n@@ -48572,15 +48572,15 @@\n tool_number_status\n Returns the tool number of the current loaded tool.\n tool_offset_status\n Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.).\n user_system_status\n Shows the active user coordinate system (G5x setting).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1104 / 1278\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -48609,15 +48609,15 @@\n Toggles between 2 images: axis not homed, axis homed.\n *watch_all_homed\n Would toggle between 2 images: not all homed, all homed.\n *watch_hard_limits\n Would toggle between 2 images or one per joint.\n Here is an example of using it to display an icon of Z axis homing state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1105 / 1278\n \n Figura 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher\n In the properties section notice that:\n watch_axis_homed is checked\n axis_letter is set to Z\n@@ -48630,15 +48630,15 @@\n \n Right click the image name and you should see Copy path.\n Click Copy path.\n Now double click the image list property so the dialog shows.\n Click the New button.\n Paste the image path in the entry box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1106 / 1278\n \n Do that again for the next image.\n Use a clear image to represent a hidden icon.\n You can test the images display from the image list by changing the image number. In this case 0 is\n unhomed and 1 would be homed.\n@@ -48672,15 +48672,15 @@\n notify_option\n Hooking into the desktop notification bubbles for error and messages.\n notify_max_messages\n Number of messages shown on screen at one time.\n catch_close_option\n Catching the close event to pop up a \u2019are you sure\u2019 prompt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1107 / 1278\n \n close_overlay_color\n Color of transparent layer shown when quitting.\n catch_error_option\n Monitoring of the LinuxCNC error channel.\n@@ -48721,15 +48721,15 @@\n tool_overlay_color\n Color of transparent layer shown when the tool dialog is shown.\n ToolUseDesktopNotify\n Option to use desktop notify dialogs for manual tool change dialog.\n ToolFrameless\n Frameless dialogs can not be easily moved by users.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1108 / 1278\n \n fileDialog_option\n Sets up the file choosing dialog.\n file_overlay_color\n Color of transparent layer shown when the file dialog is shown.\n@@ -48767,15 +48767,15 @@\n Color of transparent layer shown when the machineLog dialog is shown.\n runFromLineDialog_option\n Sets up a dialog to display starting options when starting machine execution from a arbitrary\n line.\n runFromLine_overlay_color\n Color of transparent layer shown when the runFromLine dialog is shown.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1109 / 1278\n \n Setting Properties Programmatically The screen designer chooses the default settings of the\n screenOptions widget.\n Once chosen, most won\u2019t ever need to be changed. But if needed, some can be changed in the handler\n file or in stylesheets.\n@@ -48818,15 +48818,15 @@\n Turns all sounds on or off.\n [MCH_MSG_OPTIONS]\n mchnMsg_play_sound (bool)\n To play alert sound when dialog pops.\n mchnMsg_speak_errors (bool)\n To use Espeak to speak error messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1110 / 1278\n \n mchnMsg_speak_text (bool)\n To use Espeak to speak all other messages.\n mchnMsg_sound_type (str)\n Sound to play when messages displayed. See notes below.\n@@ -48866,15 +48866,15 @@\n \u2022 DONE\n \u2022 ATTENTION\n \u2022 RING\n \u2022 LOGIN\n \u2022 LOGOUT\n \u2022 BELL\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1111 / 1278\n \n These Sound options require python3-gst1.0 installed.\n Audio Files\n You can also specify a file path to an arbitrary audio file.\n You can use ~ in path to substitute for the user home file path.\n@@ -48908,15 +48908,15 @@\n jograte_angular_rate\n Selects a angular jograte slider.\n max_velocity_rate\n Selects a maximum velocity rate slider.\n alertState\n String to define style change: read-only, under, over and normal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1112 / 1278\n \n alertUnder\n Sets the float value that signals the stylesheet for under warning.\n alertOver\n Sets the float value that signals the stylesheet for over warning.\n@@ -48952,15 +48952,15 @@\n diameter\n Diameter of the LED.\n color\n Color of the LED when on.\n off_color\n Color of the LED when off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1113 / 1278\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -48997,15 +48997,15 @@\n Rapid override rate\n It is based on PyQt\u2019s QProgressBar.\n 12.7.2.19. SystemToolButton - User System Selection Widget\n This widget allows you to manually select a G5x user system by pressing and holding.\n If you don\u2019t set the button text it will automatically update to the current system.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1114 / 1278\n \n 12.7.2.20. MacroTab - Special Macros Widget\n \n Figura 12.88: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -49023,15 +49023,15 @@\n ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros\n \n MACROCOMMAND This is the first line in the O-word file.\n It is a comma separated list of text to display above an entry.\n There will be one for every variable required in the O-word function.\n If the macro does not require variables, leave it empty:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1115 / 1278\n \n ; MACROCOMMAND=\n \n MACRODEFAULTS This must be the second line in the O-word file.\n It is a comma separated list of the default values for each variable in the O-word function.\n@@ -49068,15 +49068,15 @@\n MACROOPTIONS This optional line must be the fourth line in the O-word file.\n It is a comma separated list of keyword and data:\n LOAD:yes\n Shows a load button.\n SAVE:yes\n Shows a save button.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1116 / 1278\n \n 12.7.2.21. MDILine - MDI Commands Line Entry Widget\n One can enter MDI commands here.\n A popup keyboard is available.\n Embedded Commands There are also embedded commands available from this widget.\n@@ -49113,15 +49113,15 @@\n Disconnects a pin from a signal.\n An error will result if the pin does not exist.\n Running LinuxCNC from terminal may help determine the root cause as error messages from\n hal_lib.c will be displayed there.\n Syntax: unlinkp \n Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1117 / 1278\n \n nota\n The MDILine function spindle_inhibit can be used by a GUI\u2019s handler file to inhibit M3, M4, and M5\n spindle commands if necessary.\n \n@@ -49133,15 +49133,15 @@\n default):\n MDI_HISTORY_FILE = \u2019~/.axis_mdi_history\u2019\n \n 12.7.2.23. MDITouchy - Touch Screen MDI Entry Widget\n \n Figura 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1118 / 1278\n \n This widget displays buttons and entry lines to use for entering MDI commands.\n Based on LinuxCNC\u2019s Touchy screen\u2019s MDI entry process, its large buttons are most useful for touch\n screens.\n To use MDITouchy:\n@@ -49180,15 +49180,15 @@\n G90\n O endsub\n \n Notice the name of the sub matches the file name and macro name exactly, including case.\n When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc\n and yinc in our example).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1119 / 1278\n \n These are passed to the macro as positional parameters: #1, #2\u2026 #N respectively.\n Parameters you leave empty are passed as value 0.\n If there are several different macros, press the Macro button repeatedly to cycle through them.\n In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0\n@@ -49201,15 +49201,15 @@\n Figura 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget\n This widget allows one to visualize and modify User System Origin offsets directly.\n It will update LinuxCNC\u2019s Parameter file for changes made or found.\n The settings can only be changed in LinuxCNC after homing and when the motion controller is idle.\n The display and entry will change between metric and imperial, based on LinuxCNC\u2019s current G20 /\n G21 setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1120 / 1278\n \n The current in-use user system will be highlighted.\n Extra actions can be integrated to manipulate settings.\n These actions depend on extra code added either to a combined widget, like originoffsetview dialog,\n or the screens handler code.\n@@ -49248,15 +49248,15 @@\n It can selectably react to:\n Machine on\n Interpreter idle\n E-stop off\n All-homed\n It is based on PyQt\u2019s QGridLayout.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.26. MachineLog - Machine Events Journal Display Widget\n FIXME MachineLog documentation\n 12.7.2.27. JointEnableWidget - FIXME\n FIXME JointEnableWidget documentation\n 12.7.2.28. StatusImageSwitcher - Controller Status Image Switching Widget\n This widget will display images based on LinuxCNC status.\n@@ -49265,15 +49265,15 @@\n the state of all homed,\n the state of a certain axis homed,\n the state of hard limits.\n It is based on PyQt\u2019s FIXME\n \n 1121 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1122 / 1278\n \n 12.7.2.29. FileManager - File Loading Selector Widget\n \n Figura 12.91: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -49286,15 +49286,15 @@\n if temp[1]:\n print(\u2019Is a file\u2019)\n \n It is based on PyQt\u2019s FIXME\n 12.7.2.30. RadioAxisSelector - FIXME\n FIXME RadioAxisSelector documentation\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1123 / 1278\n \n 12.7.2.31. ToolOffsetView - Tools Offsets View And Edit Widget\n \n Figura 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget\n This widget displays and allows one to modify tools offsets.\n@@ -49318,15 +49318,15 @@\n Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or\n (if appropriate) in stylesheets:\n dialog_code_string\n Sets which dialog will pop up with numerical entry.\n test_dialog_code_string\n Sets which dialog will pop up with text entry.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1124 / 1278\n \n metric_template\n Metric numerical data format.\n imperial_template\n Imperial numerical data format.\n@@ -49355,24 +49355,24 @@\n Uncheck all selected tools.\n Example for handler file executing aforementioned functions.\n self.w.tooloffsetview.add_tool()\n self.w.tooloffsetview.delete_tools()\n toolList = self.w.tooloffsetview.get_checked_list()\n self.w.tooloffsetview.set_all_unchecked()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.32. BasicProbe - Simple Mill Probing Widget\n \n Figura 12.93: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1125 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1126 / 1278\n \n 12.7.2.33. VersaProbe - Mill Probing Widget\n \n Figura 12.94: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -49390,15 +49390,15 @@\n \n Add a function to call a dialog:\n This function must build a message dict to send to the dialog.\n This message will be passed back in the general message with the addition of the return variable.\n It is possible to add extra user information to the message. The dialog will ignore these and pass\n them back.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1127 / 1278\n \n NAME\n Launches code name of dialog to show.\n ID\n A unique id so we process only a dialog that we requested.\n@@ -49439,15 +49439,15 @@\n TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME\n Not implemented yet.\n FOCUSTEXT (overlay text|None)\n Text to display if focus overlay is used. Use None for no text.\n FOCUSCOLOR (QColor(_R, G, B, A_))\n Color to use if focus overlay is used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1128 / 1278\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -49457,15 +49457,15 @@\n This is used as a manual tool change prompt.\n It has HAL pins to connect to the machine controller. The pins are named the same as the original\n AXIS manual tool prompt and works the same.\n The tool change dialog can only be launched by HAL pins.\n If there is a Focus Overlay widget present, it will signal it to display.\n It is based on PyQt\u2019s QMessagebox.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1129 / 1278\n \n 12.7.3.3. FileDialog - Load and Save File Chooser Dialog Widget\n \n Figura 12.96: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -49481,15 +49481,15 @@\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n }\n ACTION.CALL_DIALOG(mess)\n \n And for a save dialog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1130 / 1278\n \n mess = {\u2019NAME\u2019:\u2019SAVE\u2019,\u2019ID\u2019:\u2019_MY_DIALOG_\u2019,\n \u2019TITLE\u2019:\u2019Save Some text File\u2019,\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n@@ -49501,15 +49501,15 @@\n \n Figura 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget\n This widget allows one to modify User System origin offsets directly in a dialog form.\n If there is an Focus Overlay widget present, it will signal it to display.\n When using STATUS \u2019s request-dialog function, the default launch name is ORIGINOFFSET.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1131 / 1278\n \n 12.7.3.5. ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figura 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -49529,61 +49529,61 @@\n 12.7.3.8. EntryDialog - Edit Line Dialog Widget\n This is a dialog to display an edit line for information entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is ENTRY.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1132 / 1278\n \n 12.7.3.9. CalculatorDialog - Calculator Dialog Widget\n \n Figura 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget\n This is a dialog to display a calculator for numeric entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is CALCULATOR.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.3.10. RunFromLine - Run-From-Line Dialog Widget\n \n Figura 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget\n Dialog to preset spindle settings before running a program from a specific line.\n It is based on PyQt\u2019s QDialog.\n \n 1133 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1134 / 1278\n \n 12.7.3.11. VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figura 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget\n This is a dialog to display a part probing screen based on Verser Probe v2.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1135 / 1278\n \n 12.7.3.12. MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figura 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget\n This is a dialog to display the machine log and QtVCP\u2019s debugging log.\n It is based on PyQt\u2019s QDialog.\n \n 12.7.4. Other Widgets\n Other available widgets:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1136 / 1278\n \n 12.7.4.1. NurbsEditor - NURBS Editing Widget\n \n Figura 12.103: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -49592,15 +49592,15 @@\n It is based on PyQt\u2019s QDialog.\n 12.7.4.2. JoyPad - 5 button D-pad Widget\n It is the base class for the HALPad widget.\n This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring.\n You can put text or icons in each of the button positions.\n You can connect to output signals when the buttons are pressed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1137 / 1278\n \n There are also input slots to change the color of the indicator(s).\n ENUMS There are enumerated constants used to reference indicator positions.\n They are used in Qt Designer editor\u2019s property editor or in Python code.\n NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A\n@@ -49637,15 +49637,15 @@\n The set_highlight() function must be used prior to set the indicator to use.\n Signals These signals will be sent when buttons are pressed.\n They can be connected to in Qt Designer editor or Python code.\n The first two output a string that indicates the button pressed:\n \n joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1138 / 1278\n \n They are based on PyQt\u2019s Signal (QtCore.pyqtSignal())\n Slots Slots can be connected to in Qt Designer editor or Python code:\n set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_)\n \n@@ -49681,15 +49681,15 @@\n self.w.joypadename.setProperty(\u2019true_color\u2019,\u2019green\u2019)\n self.w.joypadename.setProperty(\u2019false_color\u2019,\u2019red\u2019)\n \n 12.7.5. BaseClass/Mixin Widgets\n These widgets are used combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1139 / 1278\n \n 12.7.5.1. IndicatedPushButtons\n This class modifies QPushButton behaviour.\n indicator_option puts a LED on the top of the button.\n \n@@ -49719,15 +49719,15 @@\n \n Options IndicatedPushButton have exclusive options:\n indicator_HAL_pin_option\n Adds a halpin, named -led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1140 / 1278\n \n Is Estopped\n Is On\n All Homed\n Is Joint Homed\n@@ -49769,15 +49769,15 @@\n color: yellow;\n }\n \n Often, having the button disabled and enabled based on the state of LinuxCNC\u2019s motion controller is\n necessary.\n There are several properties that can be selected to aid with this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1141 / 1278\n \n isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen\n You can select multiple properties for combined requirements.\n Choosing the checked_state_text_option allows a checkable button to change the text based on it\u2019s\n checked state.\n@@ -49813,15 +49813,15 @@\n \n 12.7.6. Import-Only Widgets\n These widgets are usually the base class widget for other QtVCP widgets.\n They are not available directly from the Qt Designer editor but could be imported and manually\n inserted.\n They could also be subclassed to make a similar widget with new features.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1142 / 1278\n \n 12.7.6.1. Auto Height\n Widget for measuring two heights with a probe.\n For setup.\n 12.7.6.2. G-code Utility\n@@ -49844,15 +49844,15 @@\n 12.8.1. Status\n Status is a library that sends GObject messages based on LinuxCNC\u2019s current state. It is an\n extension of GladeVCP\u2019s GStat object.\n It also has some functions to report status on such things as internal jog rate.\n You connect a function call to the STATUS message you are interested in, and QtVCP will call this\n function when the message is sent from STATUS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1143 / 1278\n \n 12.8.1.1. Usage\n Import Status modules\n Add this Python code to your import section:\n ############################\n@@ -49886,15 +49886,15 @@\n print(\u2019LinuxCNC machine is on\u2019)\n def on_state_off(self):\n print(\u2019LinuxCNC machine is off\u2019)\n \n 12.8.2. Info\n Info is a library to collect and filter data from the INI file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.2.1. Available data and defaults\n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n INI = linuxcnc.ini(INIPATH)\n MDI_HISTORY_PATH = \u2019~/.axis_mdi_history\u2019\n@@ -49942,15 +49942,15 @@\n MAX_SPINDLE_0_OVERRIDE = 100\n MIN_SPINDLE_0_OVERRIDE = 50\n MAX_FEED_OVERRIDE = 1.5\n MAX_TRAJ_VELOCITY\n \n 1144 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1145 / 1278\n \n 12.8.2.2. User message dialog info\n USRMESS_BOLDTEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_BOLDTEXT\u201d)\n USRMESS_TEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TEXT\u201d)\n USRMESS_TYPE = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TYPE\u201d)\n@@ -49994,15 +49994,15 @@\n INFO = Info()\n \n Access INFO data Use this general syntax:\n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1146 / 1278\n \n 12.8.3. Action\n Action library is used to command LinuxCNC\u2019s motion controller.\n It tries to hide incidental details and add convenience methods for developers.\n 12.8.3.1. Helpers\n@@ -50038,15 +50038,15 @@\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.CALL_MDI(code)\n ACTION.CALL_MDI_WAIT(code)\n ACTION.CALL_INI_MDI(number)\n ACTION.CALL_OWORD()\n ACTION.OPEN_PROGRAM(filename)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SAVE_PROGRAM(text_source, fname):\n ACTION.SET_AXIS_ORIGIN(axis,value)\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n@@ -50087,15 +50087,15 @@\n ACTION.SET_BLOCK_DELETE_OFF()\n ACTION.RELOAD_DISPLAY()\n ACTION.SET_GRAPHICS_VIEW(view)\n ACTION.UPDATE_MACHINE_LOG(text, option=None):\n \n 1147 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1148 / 1278\n \n ACTION.CALL_DIALOG(command):\n ACTION.HIDE_POINTER(state):\n ACTION.PLAY_SOUND(path):\n ACTION.PLAY_ERROR():\n@@ -50130,15 +50130,15 @@\n [0] will be real tools information\n [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear)\n By default, adds a blank tool entry with tool number -99.\n You can preload the newtool array with tool information.\n DELETE_TOOLS(_toolnumber_)\n Delete the numbered tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1149 / 1278\n \n SAVE_TOOLFILE(_toolarray_)\n This will parse the toolarray and save it to the tool file specified in the INI file as the tool\n path.\n This tool array must contain all the available tools information.\n@@ -50174,15 +50174,15 @@\n PATH.RIPCONFIGDIR\n The Run-in-place config folder for QtVCP screens.\n PATH.BASEDIR\n Base folder for LinuxCNC.\n PATH.BASENAME\n The Qt Designer files name (no ending).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n PATH.IMAGEDIR\n The QtVCP image folder.\n PATH.SCREENDIR\n The QtVCP builtin Screen folder.\n PATH.PANELDIR\n The QtVCP builtin VCP folder.\n@@ -50215,15 +50215,15 @@\n There are some helper functions available:\n file_list = PATH.find_vismach_files()\n directory_list = PATH.find_screen_dirs()\n directory_list = PATH.find_panel_dirs()\n \n 1150 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1151 / 1278\n \n 12.8.5.3. Usage\n Import Path module\n Add this Python code to your import section:\n ############################\n@@ -50255,15 +50255,15 @@\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n WIDGETS = VCPWindow()\n \n 12.8.7. Aux_program_loader\n Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.7.1. Helpers\n \n load_halmeter()\n Halmeter is used to display one HAL pin data.\n Load a halmeter with:\n AUX_PRGM.load_halmeter()\n@@ -50302,15 +50302,15 @@\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.lib.aux_program_loader import Aux_program_loader\n \n 1152 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1153 / 1278\n \n Instantiate Aux_program_loader module\n Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n@@ -50349,15 +50349,15 @@\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n def initialized__(self):\n KEYBIND.add_call(\u2019Key_F10\u2019,\u2019on_keycall_F10\u2019,None)\n KEYBIND.add_call(\u2019Key_F11\u2019,\u2019on_keycall_override\u2019,10)\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_override\u2019,20)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1154 / 1278\n \n And then we need to add the functions that get called.\n In the handler file, under the KEY BINDING CALLS section, add this:\n #####################\n # KEY BINDING CALLS #\n@@ -50393,15 +50393,15 @@\n no buttons to close the dialog.\n Yes/No messages have three HAL pins:\n One to show the dialog,\n One for waiting, and\n one for the answer.\n By default it will send STATUS messages for focus_overlay and alert sound.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1155 / 1278\n \n 12.8.9.2. Examples\n Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading:\n Status bar and desktop notify pop up message:\n MESSAGE_BOLDTEXT = NONE\n@@ -50441,15 +50441,15 @@\n Typically STATUS messages are used to sent notify messages.\n \n 12.8.10.1. Properties\n You can set the:\n title\n Notification message title text.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1156 / 1278\n \n message\n Notification message content text.\n icon\n Notification message icon.\n@@ -50482,15 +50482,15 @@\n READY\n ATTENTION\n RING\n DONE\n LOGIN\n LOGOUT\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1157 / 1278\n \n Beeps There are three beeps:\n BEEP_RING\n BEEP_START\n BEEP\n@@ -50525,15 +50525,15 @@\n \n 12.8.14. Toolbar Actions\n This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons.\n Toolbuttons, menu and toolbar menus are:\n built in Qt Designer, and\n assigned actions/submenus in the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1158 / 1278\n \n 12.8.14.1. Actions\n \n estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop\n Toggles dimensions display.\n@@ -50573,15 +50573,15 @@\n Add a custom toolbar function:\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def my_function(self, widget, state):\n print(\u2019My function State = ()\u2019.format(state))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1159 / 1278\n \n 12.8.15. Qt Vismach Machine Graphics library\n Qt_vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach:\n displays the model in a 3D viewport\n@@ -50611,15 +50611,15 @@\n to.\n Translate\n This object will perform an OpenGL translation calculation on a Collection object.\n Translation refers to moving an object in straight line to a different position on screen.\n Scale\n This object will perform an OpenGL scale function on a collection object.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1160 / 1278\n \n HalTranslate\n This object will perform an OpenGL translation calculation on a Collection object, offset by\n the HAL pin value.\n Translation refers to moving an object in straight line to a different position on screen.\n@@ -50660,15 +50660,15 @@\n ArcX\n Build an arc by specifying\n Box\n Build a box specified by the 6 vertex coordinates.\n BoxCentered\n Build a box centered on origin by specifying the width in X and Y, and the height in Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1161 / 1278\n \n BoxCenteredXY\n Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y,\n and running up or down to the specified height in Z.\n Capture\n@@ -50709,30 +50709,30 @@\n def initialized__(self):\n machine = MILL.Window()\n self.w.mainLayout.addWidget(machine)\n \n 12.8.15.4. More Information\n More information on how to build a custom machine simulation in the Qt Vismach chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1162 / 1278\n \n 12.9. QtVismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ .\n \n 12.9.1. Introduction\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n Figura 12.105: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1163 / 1278\n \n zoom by scroll wheel\n pan by middle button drag\n rotate by right-button drag\n tilt by left button drag\n@@ -50793,15 +50793,15 @@\n |\n |---zassembly\n |\n |---zframe\n |\n |\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1164 / 1278\n \n |\n |---zbody\n |\n |\n@@ -50844,15 +50844,15 @@\n c.ready()\n \n 12.9.5. Creating Parts\n 12.9.5.1. Import STL or OBJ Files\n It is probably easiest to:\n create geometry in a CAD package\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1165 / 1278\n \n import into the model script using the AsciiSTL() or AsciiOBJ() functions.\n Both functions can take one of two named arguments, either a filename or data:\n part = AsciiSTL(filename=\u201dpath/to/file.stl\u201d)\n part = AsciiSTL(data=\u201dsolid part1 facet normal ...\u201d)\n@@ -50888,15 +50888,15 @@\n Creates a box ground on WY plane of width xw / yw and height z.\n Composite parts may be created by assembling these primitives either at creation time or subsequently:\n part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)])\n part2 = Box(50,40,75,100,75,100)\n part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)])\n part4 = Collection([part1, part2])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1166 / 1278\n \n 12.9.6. Moving Model Parts\n Parts may need to be moved in the Vismach space to assemble the model. The origin does not move\n - Translate() and Rotate() move the Collection as you add parts, relative to a stationary origin. They\n may also need to be moved to create the animation as the animation rotation axis is created at the\n@@ -50930,15 +50930,15 @@\n The HAL component is the next argument.\n In QtVCP if you are reading system pins directly then the component argument is set to None.\n hal_pin\n The name of the HAL pin that will animate the motion.\n This needs to match an existing HAL pin that describes the joint position such as:\n \u201djoint.2.pos-fb\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1167 / 1278\n \n Otherwise the component instance would be specified and the pin name of that component\n would be specified. xs, ys, zs;; The X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in\n the positive X direction.\n@@ -50973,15 +50973,15 @@\n Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded\n tool.\n tool = HalToolTriangle()\n toolshape = Color([1, 1, 0, 1],[tool])\n # or more compact:\n toolshape = Color([1, 1, 0, 1],[HalToolTriangle()])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1168 / 1278\n \n 12.9.8. Assembling the model\n In order for parts to move together they need to be assembled with the Collection() command.\n It is important to assemble the parts and define their motions in the correct sequence.\n For example to create a moving head milling machine with a rotating spindle and an animated draw\n@@ -51023,15 +51023,15 @@\n Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final\n model is created by:\n model = Collection([link0, floor, table])\n \n Whereas a VMC model with separate parts moving on the base might have\n model = Collection([base, saddle, head, carousel])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1169 / 1278\n \n 12.9.9. Other functions\n part = Color([_colorspec_], [_part_])\n Sets the display color of the part.\n Note that unlike the other functions, the part definition comes second in this case.\n@@ -51073,15 +51073,15 @@\n \n Add it to the Window class Collection so it is never moved from the origin.\n v.model = Collection([origin, model, world])\n \n Start from the cutting tip and work your way back. Add each collection to the model at the origin and\n run the script to confirm the location, then rotate/translate and run the script to confirm again.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.9.11. Basic structure of a QtVismach script\n # imports\n import hal\n from qtvcp.lib.qt_vismach.qt_vismach import *\n # create HAL pins here if needed\n #c = hal.component(\u201dsamplegui\u201d)\n@@ -51124,15 +51124,15 @@\n # if you call this file directly from python3, it will display a PyQt5 window\n # good for confirming the parts of the assembly.\n if __name__ == \u2019__main__\u2019:\n main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215)\n \n 1170 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1171 / 1278\n \n 12.9.12. Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10. QtVCP: Building Custom Widgets\n@@ -51160,15 +51160,15 @@\n Injecting important variables,\n Calling an extra setup function\n Calling a closing cleanup function at shutdown.\n These functions are not called when the Qt Designer editor displays the widgets.\n When QtVCP builds a screen from the .ui file:\n 1. It searches for all the HAL-ified widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1172 / 1278\n \n 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets\n 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function.\n hal_init() is defined in the base class and it:\n a. Adds variables such as the preference file to every HAL-ified widget.\n@@ -51221,15 +51221,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1173 / 1278\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -51301,15 +51301,15 @@\n #!/usr/bin/env python3\n ###############################\n # Imports\n ###############################\n from PyQt5.QtCore import pyqtProperty\n from qtvcp.widgets.led_widget import LED\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -51359,15 +51359,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1174 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1175 / 1278\n \n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, \u2190reset_is_estopped)\n is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on)\n@@ -51437,15 +51437,15 @@\n self.setState(False)\n self.is_estopped = False\n self.is_on = False\n self.invert_state = False\n \n #\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 1\n \n Defines the name of our custom widget and what other class it inherits from.\n In this case we inherit LED - a QtVCP widget that represents a status light.\n@@ -51506,15 +51506,15 @@\n self.PREFS_\n the instance of an optional preference file\n self.SETTINGS_\n the Qsettings object\n We could use this information to create HAL pins or look up image paths etc.\n STATUS.connect(\u2019state-estop\u2019, lambda w:self._flip_state(True))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1177 / 1278\n \n Lets look at this line more closely:\n STATUS is very common theme is widget building.\n STATUS uses GObject message system to send messages to widgets that register to it.\n This line is the registering process.\n@@ -51561,15 +51561,15 @@\n return self.is_on\n def reset_is_on(self):\n self.is_on = False\n \n This is how Qt Designer sets the attributes of the widget.\n This can also be called directly in the widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1178 / 1278\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -51609,15 +51609,15 @@\n self._last = 0\n self._block_signal = False\n self._auto_label_flag = True\n SettingMenu = QMenu()\n for system in(\u2019G54\u2019, \u2019G55\u2019, \u2019G56\u2019, \u2019G57\u2019, \u2019G58\u2019, \u2019G59\u2019, \u2019G59.1\u2019, \u2019G59.2\u2019, \u2019G59.3\u2019):\n Button = QAction(QIcon(\u2019exit24.png\u2019), system, self)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1179 / 1278\n \n Button.triggered.connect(self[system.replace(\u2019.\u2019,\u2019_\u2019)])\n SettingMenu.addAction(Button)\n self.setMenu(SettingMenu)\n self.dialog = EntryDialog()\n@@ -51660,15 +51660,15 @@\n def ChangeState(self, joint):\n if int(joint) != self._joint:\n self._block_signal = True\n self.setChecked(False)\n self._block_signal = False\n self.hal_pin.set(False)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1180 / 1278\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -51715,15 +51715,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.10.6. Use Stylesheets To Change Custom Widget Properties\n class Label(QLabel):\n def __init__(self, parent=None):\n super(Label, self).__init__(parent)\n alternateFont0 = self.font\n # Qproperty getter and setter\n@@ -51768,15 +51768,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1181 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n return \u201dLinuxCNC - HAL\u201d\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019lcnc_gridlayout\u2019)))\n def toolTip(self):\n return \u201dHAL enable/disable GridLayout widget\u201d\n def whatsThis(self):\n@@ -51825,15 +51825,15 @@\n def domXml(self):\n return \u2019\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1182 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1183 / 1278\n \n 12.10.7.3. Making a plugin with a MenuEntry dialog box\n It possible to add an entry to the dialog that pops up when you right click the widget in the layout.\n This can do things such as selecting options in a more convenient way.\n This is the plugin used for action buttons.\n@@ -51879,15 +51879,15 @@\n def createWidget(self, parent):\n return ActionButton(parent)\n # This method returns the name of the custom widget class\n def name(self):\n return \u201dActionButton\u201d\n # Returns the name of the group in Qt Designer\u2019s widget box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n def group(self):\n return \u201dLinuxCNC - Controller\u201d\n # Returns the icon\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019actionbutton\u2019)))\n # Returns a tool tip short description\n@@ -51928,15 +51928,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1184 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1185 / 1278\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -51975,15 +51975,15 @@\n if self.w.PREFS_:\n # variable name (entry name, default value, type, section name)\n self.int_value = self.w.PREFS_.getpref(\u2019Integer_value\u2019, 75, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.string_value = self.w.PREFS_.getpref(\u2019String_value\u2019, \u2019on\u2019, str, \u2019 \u2190CUSTOM_FORM_ENTRIES\u2019)\n \n Writing preferences at close time In the closing_cleanup__() function, add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1186 / 1278\n \n if self.w.PREFS_:\n # variable name (entry name, variable name, type, section name)\n self.w.PREFS_.putpref(\u2019Integer_value\u2019, self.integer_value, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.w.PREFS_.putpref(\u2019String_value\u2019, self.string_value, str, \u2019CUSTOM_FORM_ENTRIES\u2019)\n@@ -52018,15 +52018,15 @@\n Being able to edit a style on a running screen is convenient.\n Import StyleSheetEditor module in the IMPORT SECTION:\n from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE\n \n Instantiate StyleSheetEditor module in the INSTANTIATE SECTION:\n STYLEEDITOR = SSE()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1187 / 1278\n \n Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets,\n paths):+ function add:\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_F12\u2019)\n \n@@ -52070,15 +52070,15 @@\n def return_value(self, w, message):\n num = message.get(\u2019RETURN\u2019)\n id_code = bool(message.get(\u2019ID\u2019) == \u2019FORM__NUMBER\u2019)\n name = bool(message.get(\u2019NAME\u2019) == \u2019ENTRY\u2019)\n if id_code and name and num is not None:\n print(\u2019The {} number from {} was: {}\u2019.format(name, id_code, num))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1188 / 1278\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog.\n In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know\n the message is for us.\n@@ -52113,15 +52113,15 @@\n The objectName of the toolbar button is used to identify the button when configuring it - descriptive\n names help.\n Using the action editor menu, right click and select edit.\n Edit the object name, text, and button type for an appropriate action.\n In this example the:\n submenu name must be menuRecent,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1189 / 1278\n \n actions names must be actionAbout, actionQuit, actionMyFunction\n Loads the toolbar_actions library in the IMPORT SECTION\n from qtvcp.lib.toolbar_actions import ToolBarActions\n \n@@ -52165,15 +52165,15 @@\n Define the function called by pin state change in the GENERAL FUNCTIONS SECTION\n #####################\n # general functions #\n #####################\n def cycleStart(self, state):\n if state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1190 / 1278\n \n tab = self.w.mainTab.currentWidget()\n if tab in( self.w.tab_auto, self.w.tab_graphics):\n ACTION.RUN(line=0)\n elif tab == self.w.tab_files:\n@@ -52215,15 +52215,15 @@\n jog increment after.\n We will build a button that toggles between continuous jog and whatever increment that was already\n selected.\n In Qt Designer:\n Add an ActionButton with no action\n Call it btn_toggle_continuous.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1191 / 1278\n \n Set the AbstractButton property checkable to True.\n Set the ActionButton properties incr_imperial_number and incr_mm_number to 0.\n Use Qt Designer\u2019s slot editor to use the button signal clicked(bool) to call form\u2019s handler function\n toggle_continuous_clicked().\n@@ -52269,15 +52269,15 @@\n Class patching (monkey patching) is a little like black magic - so use it only if needed.\n \n The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want\n to print the file name first.\n We can \u201dclass patch\u201d the library to redirect the function call.\n In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1192 / 1278\n \n from qtvcp.widgets.file_manager import FileManager as FM\n \n Here we are going to:\n 1. Keep a reference to the original function (1) so we can still call it\n@@ -52309,15 +52309,15 @@\n def our_load(self,fname):\n print(fname)\n self.old_load(self.w.filemanager,fname)\n \n Now our custom function will print the file path to the terminal before loading the file.\n Obviously boring but shows the principle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1193 / 1278\n \n nota\n 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.\n The trick here is to make sure the function name you use to store it is not already used in the class.\n super__ added to the function name would be a good choice.\n@@ -52355,15 +52355,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from PyQt5 import QtWidgets\n from PyQt5.QtGui import QColor\n from qtvcp.widgets.state_led import StateLED as LED\n from qtvcp.core import Status, Info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1194 / 1278\n \n Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so\n as to be global references (no self. in front):\n ##########################################\n # **** instantiate libraries section **** #\n@@ -52414,15 +52414,15 @@\n #\n self.w.led.setProperty(\u2019is_spindle_at_speed_status\u2019,True) #\n \n y\n 2y\n 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1195 / 1278\n \n y\n 4y\n \n self.w.led.setProperty(\u2019color\u2019,QColor(0,255,0,255))\n@@ -52535,15 +52535,15 @@\n \n 7\n \n We create a QWidget\n Since you can only add one widget to the tab corner and we want two there, we must add both\n into a container.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 8\n \n 1196 / 1278\n \n@@ -52623,15 +52623,15 @@\n self.w = widgets\n self.PATHS = paths\n # register a function to be called at CYCLE_TIME period (usually every 100 ms)\n STATUS.connect(\u2019periodic\u2019, lambda w: self.update_periodic())\n \n Create the custom function to be called periodically\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1197 / 1278\n \n #####################\n # general functions #\n #####################\n def update_periodic(self):\n@@ -52673,15 +52673,15 @@\n #!/usr/bin/env python3\n from time import sleep\n import zmq\n import json\n context = zmq.Context()\n socket = context.socket(zmq.PUB)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1198 / 1278\n \n socket.bind(\u201dtcp://127.0.0.1:5690\u201d)\n topic = b\u2019QtVCP\u2019\n # prebuilt message 1\n # makes a dict of function to call plus any arguments\n@@ -52739,15 +52739,15 @@\n def __init__(self, halcomp,widgets,paths):\n # directly select ZMQ message sending\n self.w.screen_options.setProperty(\u2019use_send_zmq_option\u2019,True)\n \n This allows sending messages to a separate program.\n The message sent will depend on what the external program is expecting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1199 / 1278\n \n Create a function to send ZMQ messages Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n Also, something needs to be added to call this function, such as a button click.\n #####################\n@@ -52788,15 +52788,15 @@\n You can also use the Status library to send a message to the notify library if it is enabled (usually\n set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify\n dialog.\n The messages are also recorded until the user erases them using controls. The users can recall any\n recorded messages.\n There are several options:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1200 / 1278\n \n STATUS.TEMPORARY_MESSAGE\n Show the message for a short time only.\n STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT\n \n@@ -52835,15 +52835,15 @@\n Notice we sometimes compare to widget, sometimes to widget.parent().\n This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get\n the focus; so we need to check the parent of those sub-widgets.\n Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to\n accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent()\n would get you the container that holds the G-code widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1201 / 1278\n \n 12.12. QtVCP Development\n 12.12.1. Overview\n The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building\n for LinuxCNC.\n@@ -52872,15 +52872,15 @@\n 12.12.3. QtVCP Startup To Shutdown\n QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree.\n 12.12.3.1. QtVCP Startup\n When QtVCP first starts:\n 1. It must decide if this object is a screen or a panel.\n 2. It searches for and collects information about paths of required files and useful folders.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1202 / 1278\n \n 3. It then:\n a. Builds the HAL component,\n b. Loads the window instance,\n c. Adds handler extensions,\n@@ -52916,15 +52916,15 @@\n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n XML\n Path of .ui file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1203 / 1278\n \n DOMAIN\n Path of translation\n IS_SCREEN\n Screen/panel switch\n@@ -52959,15 +52959,15 @@\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n 12.12.5.4. Preference File\n Some QtVCP widgets use the preference file to record important information.\n This requires the preference file to be set up early in the widget initialization process.\n The easiest way to do this is to use the ScreenOptions widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1204 / 1278\n \n 12.12.5.5. Widget Special Setup Functions\n QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded.\n It is not called when using Qt Designer editor.\n After this function is called the widget has access to some special variables:\n@@ -52994,15 +52994,15 @@\n By default, if there is a preference file, the dialogs will remember their last size/placement.\n It is possible to override this so they open in the same location each time.\n 12.12.5.7. Styles (Themes)\n While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are\n all set in a separate .qss file.\n The file should be put in the same location as the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1205 / 1278\n \n Cap\u00edtulo 13\n \n User Interface Programming\n 13.1. Panelui\n@@ -53031,15 +53031,15 @@\n loadrt sampler cfg=u depth=1025\n #uncomment to validate the panelui INI file\n #loadusr pyui\n # -d = debug, -v = verbose debug\n # -d will show you keypress identification and commands called\n # -v is for develeper info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1206 / 1278\n \n loadusr -W panelui -d\n # using simulated buttons instead of the MESA 7I73 card\n # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes\n loadrt sim_matrix_kb\n@@ -53080,15 +53080,15 @@\n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1207 / 1278\n \n This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program.\n Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group\n has its own output pin, separate from each button in the group. Radio button definitions start with\n the text RADIO_BUTTON inside single brackets.\n@@ -53142,15 +53142,15 @@\n \n Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets.\n [TOGGLE_BUTTONS]\n # Each button name inside double brackets, must be unique and is case sensitive.\n # This button, named \u2019tool_change\u2019is controller by the row 2 column 5 key.\n # It has a BIT output, will output 1 on true state and 0 on false state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1208 / 1278\n \n # It also has a status pin which will follow it\u2019s current state.\n # DEFAULT sets this to true when first initialized.\n # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will\n # add the lines regardless\n@@ -53195,15 +53195,15 @@\n required argument: axis number (int)\n spindle_forward_adjust\n optional argument: starting RPM (int) - default 100\n Description: If the spindle is stopped it will start in the forward direction. If it is already running it\n will increase or decrease the rpm depending on what direction the spindle is running in.\n spindle_forward\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1209 / 1278\n \n optional argument: starting RPM (int) - default 100\n spindle_reverse\n optional argument: starting RPM (int) - default 100\n spindle_reverse_adjust\n@@ -53229,15 +53229,15 @@\n Description: Move Z axis to the given machine position\n feed_hold\n required argument: state (bool 0 or 1)\n feed_override\n required argument: rate (float)\n rapid_override\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n required argument: rate (float 0-1)\n spindle_override\n required argument: rate (float)\n max_velocity\n required argument: rate (float)\n optional_stop\n@@ -53269,15 +53269,15 @@\n STATUS_PIN = False\n DEFAULT = FALSE\n TRUE_STATE = 1\n FALSE_STATE = 0\n \n 1210 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1211 / 1278\n \n Here is a sample program that will receive the message and print it to the terminal.\n import zmq\n import json\n # ZeroMQ Context\n@@ -53321,15 +53321,15 @@\n print(wname.metadata)\n # Print the calling widgets internal metadata (from config \u2190file)\n # Call a mdi command to print a msg in LinuxCNC.\n # This requires LinuxCNC to be homed, but does not check for that.\n # parent commands expect a widget_instance - None is substituted\n self.parent.mdi(None,\u2019(MSG, Hello Linuxcnc World!)\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1212 / 1278\n \n # Each call to this function will cycle the mode of LinuxCNC.\n def cycle_mode(self, wname, m):\n if self.current_mode == 0:\n self.current_mode = 1\n@@ -53369,15 +53369,15 @@\n PROGRAM_EXTENSION = .py Python Script\n py = python\n \n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1213 / 1278\n \n Figura 13.1: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -53397,15 +53397,15 @@\n time.sleep(.1)\n # output a line of G-code\n print(\u2019G0 X1\u2019, file=sys.stdout)\n # update progress\n print(\u2019FILTER_PROGRESS={}\u2019.format(i), file=sys.stderr)\n except:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1214 / 1278\n \n # This causes an error message\n print(\u2019Error; But this was only a test\u2019, file=sys.stderr)\n raise SystemExit(1)\n \n@@ -53448,15 +53448,15 @@\n raise SystemExit(1)\n def process(self):\n try:\n # get next line of code\n codeLine = self.temp[self.line]\n # process the line somehow\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1215 / 1278\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -53496,15 +53496,15 @@\n Make sure you use the correct path to your INI file.\n loadusr halui -ini /path/to/inifile.ini\n \n 13.3.2. MDI\n Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL\n pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1216 / 1278\n \n [HALUI]\n MDI_COMMAND = G0 X0\n MDI_COMMAND = G0 G53 Z0\n MDI_COMMAND = G28\n@@ -53549,15 +53549,15 @@\n 13.3.4.1. Abort\n halui.abort (bit, in) - pin to send an abort message (clears out most errors)\n 13.3.4.2. E-Stop\n halui.estop.activate (bit, in) - pin for requesting E-Stop\n halui.estop.is-activated (bit, out) - indicates E-stop reset\n halui.estop.reset (bit, in) - pin for requesting E-Stop reset\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1217 / 1278\n \n 13.3.4.3. Feed Override\n halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work.\n halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder\n or direct-value.\n@@ -53584,15 +53584,15 @@\n halui.lube.on (bit, in) - pin for requesting lube on\n 13.3.4.8. Machine\n 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\n halui.machine.is-on (bit, out) - indicates machine on\n halui.machine.off (bit, in) - pin for requesting machine off\n halui.machine.on (bit, in) - pin for requesting machine on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1218 / 1278\n \n 13.3.4.9. Max Velocity\n The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ]\n section of the INI file.\n halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work.\n@@ -53626,15 +53626,15 @@\n limit\n halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software\n limit\n halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software\n limit\n halui.joint.N.override-limits (bit out) - status pin telling that joint N\u2019s limits are temporarily overridden\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1219 / 1278\n \n halui.joint.N.unhome (bit in) - pin for unhoming joint N\n halui.joint.selected (u32 out) - selected joint number (0 \u2026 num_joints-1)\n halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted\n halui.joint.selected.home (bit in) - pin for homing the selected joint\n@@ -53667,15 +53667,15 @@\n halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when\n using increment-plus/minus\n halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in\n the negative direction by the increment amount\n halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the\n positive direction by the increment amount\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1220 / 1278\n \n halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the\n halui.joint.jog-speed velocity\n \n halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity\n@@ -53708,15 +53708,15 @@\n halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the\n positive direction by the increment amount\n halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the\n halui.axis.jog-speed velocity\n halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the\n halui.axis.jog-speed velocity\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1221 / 1278\n \n 13.3.4.15. Mode\n halui.mode.auto (bit, in) - pin for requesting auto mode\n halui.mode.is-auto (bit, out) - indicates auto mode is on\n halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on\n@@ -53746,15 +53746,15 @@\n halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override\n when counts changes.\n halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used with\n an encoder or direct-value.\n halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale)\n halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1222 / 1278\n \n halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale)\n halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override\n halui.rapid-override.value (float out) - current Rapid Override value\n halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0)\n@@ -53779,15 +53779,15 @@\n halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction)\n halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion\n halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse\n halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward\n halui.spindle.N.start (bit, in) - starts the spindle\n halui.spindle.N.stop (bit, in) - stops the spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1223 / 1278\n \n 13.3.4.20. Tool\n halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis\n halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis\n halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis\n@@ -53808,15 +53808,15 @@\n To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the\n halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto\n pin. You do this with an and2 component. The following figure shows how this is done. When the\n Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK\n for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component are\n on the and2.0.out will be on and this will start the program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1224 / 1278\n \n Figura 13.2: Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= \n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -53839,15 +53839,15 @@\n Your input and output pins are connected to the pins wired to the other controller. They may be parallel\n port pins or any other I/O pins that you have access to.\n \n This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p\n signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC\n is paused.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1225 / 1278\n \n To resume the LinuxCNC G-code program, when the external controller is ready it will make its output\n true. This will signal LinuxCNC that it should resume executing G-code.\n Difficulties in timing\n The \u201dresume\u201d input return signal should not be longer than the time required to get the G-code\n@@ -53881,15 +53881,15 @@\n send the command by using one of the linuxcnc command channel methods\n To retrieve messages from the error channel, poll the error channel periodically, and process any\n messages retrieved.\n poll the status channel, either periodically or as needed\n print any error message and explore the exception code\n linuxcnc also defines the error Python exception type to support error reporting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1226 / 1278\n \n 13.5.3. Reading LinuxCNC status\n Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some\n 80+ values (run while linuxcnc is running for typical values):\n #!/usr/bin/env python3\n@@ -53932,15 +53932,15 @@\n Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256.\n block_delete\n (returns boolean) - block delete current status.\n call_level\n (returns integer) \u0300 - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise\n specified\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1227 / 1278\n \n command\n (returns string) - currently executing command.\n current_line\n (returns integer) - currently executing line.\n@@ -53982,15 +53982,15 @@\n file\n (returns string) - currently loaded G-code filename with path.\n flood\n (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON.\n g5x_index\n (returns integer) - currently active coordinate system, G54=1, G55=2 etc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1228 / 1278\n \n g5x_offset\n (returns tuple of floats) - offset of the currently active coordinate system.\n g92_offset\n (returns tuple of floats) - pose of the current g92 offset.\n@@ -54032,15 +54032,15 @@\n KINEMATICS_IDENTITY\n KINEMATICS_FORWARD_ONLY\n KINEMATICS_INVERSE_ONLY\n KINEMATICS_BOTH\n limit\n (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, maxSoftLimit=8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1229 / 1278\n \n linear_units\n (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value.\n lube\n (returns integer) - lube on flag.\n@@ -54081,15 +54081,15 @@\n position\n (returns tuple of floats) - trajectory position.\n probe_tripped\n (returns boolean) - flag, True if probe has tripped (latch)\n probe_val\n (returns integer) - reflects value of the motion.probe-input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1230 / 1278\n \n probed_position\n (returns tuple of floats) - position where probe tripped.\n probing\n (returns boolean) - flag, True if a probe operation is in progress.\n@@ -54130,15 +54130,15 @@\n tool_offset\n (returns tuple of floats) - offset values of the current tool.\n tool_table\n (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields:\n id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle,\n backangle, orientation. The id and orientation are integers and the rest are floats.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1231 / 1278\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n s.poll()\n@@ -54174,15 +54174,15 @@\n enabled\n (returns integer) - non-zero means enabled.\n fault\n (returns integer) - non-zero means axis amp fault.\n ferror_current\n (returns float) - current following error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1232 / 1278\n \n ferror_highmark\n (returns float) - magnitude of max following error.\n homed\n (returns integer) - non-zero means has been homed.\n@@ -54217,15 +54217,15 @@\n units\n (returns float) - joint units per mm, or per degree for angular joints.\n (joint units are the same as machine units, unless set otherwise by the configuration parameter\n [JOINT_n]UNITS)\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1233 / 1278\n \n 13.5.4. The spindle dictionary\n brake\n (returns integer) - value of the spindle brake flag.\n direction\n@@ -54262,15 +54262,15 @@\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n c = linuxcnc.command()\n def ok_for_mdi():\n s.poll()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1234 / 1278\n \n return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state \u2190== linuxcnc.INTERP_IDLE)\n if ok_for_mdi():\n c.mode(linuxcnc.MODE_MDI)\n c.wait_complete() # wait until mode switch executed\n@@ -54311,15 +54311,15 @@\n c.override_limits()\n c.program_open(\u201dfoo.ngc\u201d)\n c.reset_interpreter()\n c.tool_offset(toolno, z_offset,\n \n x_offset, diameter, frontangle, backangle, orientation)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1235 / 1278\n \n 13.5.6.1. linuxcnc.command attributes\n \n serial\n the current command serial number\n@@ -54360,15 +54360,15 @@\n linuxcnc.JOG_STOP\n linuxcnc.JOG_CONTINUOUS\n linuxcnc.JOG_INCREMENT\n jjogmode\n True\n request individual joint jog (requires teleop_enable(0))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1236 / 1278\n \n False\n request axis Cartesian coordinate jog (requires teleop_enable(1))\n joint_num_or_axis_index\n For joint jog (jjogmode=1)\n@@ -54409,15 +54409,15 @@\n set_block_delete(int)\n set block delete flag\n set_digital_output(int, int)\n set digital output pin to value\n set_feed_hold(int)\n set feed hold on/off\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1237 / 1278\n \n set_feed_override(int)\n set feed override on/off\n set_max_limit(int, float)\n set max position limit for a given axis\n@@ -54454,15 +54454,15 @@\n c.spindle.(linuxcnc.SPINDLE_OFF)\n # Stop spindle 0 explicitly.\n c.spindle.(linuxcnc.SPINDLE_OFF, 0)\n \n spindleoverride(float [, int])\n Set spindle override factor. Defaults to spindle 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1238 / 1278\n \n state(int)\n Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, or STATE_OFF.\n task_plan_sync()\n On completion of this call, the VAR file on disk is updated with live values from the interpreter.\n@@ -54501,15 +54501,15 @@\n Here\u2019s an example for reading values from an INI file through the linuxcnc.ini object:\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*# run as:\n # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini\n import sys\n import linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n inifile = linuxcnc.ini(sys.argv[1])\n # inifile.find() returns None if the key wasn\u2019t found - the\n # following idiom is useful for setting a default value:\n machine_name = inifile.find(\u201dEMC\u201d, \u201dMACHINE\u201d) or \u201dunknown\u201d\n print(\u201dmachine name: \u201d, machine_name)\n # inifile.findall() returns a list of matches, or an empty list\n@@ -54544,15 +54544,15 @@\n clear()\n clear the position logger\n stop()\n stop the position logger\n \n 1239 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1240 / 1278\n \n call()\n Plot the backplot now.\n last([int])\n Return the most recent point on the plot or None\n@@ -54586,15 +54586,15 @@\n 13.6.2.1. Sample HAL component code pattern\n This program creates two HAL pins that output the status of G20/G21.\n #!/usr/bin/env python3\n import gi\n gi.require_version(\u2019Gtk\u2019, \u20193.0\u2019)\n from gi.repository import GObject\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1241 / 1278\n \n from gi.repository import GLib\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n@@ -54634,15 +54634,15 @@\n self.builder = builder\n GSTAT.connect(\u201dstate-estop\u201d,lambda w: self.update_estate_label(\u2019ESTOP\u2019))\n GSTAT.connect(\u201dstate-estop-reset\u201d,lambda w: self.update_estate_label(\u2019RESET\u2019))\n GSTAT.connect(\u201dstate-on\u201d,lambda w: self.update_state_label(\u2019MACHIBE ON\u2019))\n GSTAT.connect(\u201dstate-off\u201d,lambda w: self.update_state_label(\u2019MACHINE OFF\u2019))\n GSTAT.connect(\u201dinterp-paused\u201d,lambda w: self.update_interp_label(\u2019Paused\u2019))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1242 / 1278\n \n GSTAT.connect(\u201dinterp-run\u201d,lambda w: self.update_interp_label(\u2019Run\u2019))\n GSTAT.connect(\u201dinterp-idle\u201d,lambda w: self.update_interp_label(\u2019Idle\u2019))\n def update_state_label(self,text):\n self.builder.get_object(\u2019state_label\u2019).set_label(\u201dState: %s\u201d % (text))\n@@ -54677,15 +54677,15 @@\n def update_estate_label(self,text):\n self.w.e_state_label.setText(\u201dE State: %s\u201d % (text))\n def update_interp_label(self,text):\n self.winterp_state_label.setText(\u201dInterpreter State: %s\u201d % (text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1243 / 1278\n \n 13.6.3. Messages\n periodic\n (returns nothing) - sent every 100 ms.\n state-estop\n@@ -54724,15 +54724,15 @@\n interp-idle\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is idle.\n interp-paused\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is paused.\n interp-reading\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is reading.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1244 / 1278\n \n interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n jograte-changed\n (returns float) - Sent when jog rate has changed.\n@@ -54776,15 +54776,15 @@\n motion-mode-changed\n (returns integer) - Sent when motion\u2019s mode has changed\n spindle-control-changed\n (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction\n & rate, at-speed state)\n Sent when spindle direction or running status changes or at-speed changes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1245 / 1278\n \n current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n current-x-rel-position\n (returns float) - Sent every 100 ms.\n@@ -54827,15 +54827,15 @@\n rpm-mode\n (returns bool) - Sent when G97 status changes\n (constant RPM mode)\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1246 / 1278\n \n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n flood-changed\n@@ -54877,15 +54877,15 @@\n machine-log-changed\n (returns None) - intended to be sent when machine log has changed.\n This depends on the widget/libraries used.\n update-machine-log\n (returns string, string) - intended to be sent when updating the machine.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1247 / 1278\n \n move-text-lineup\n (returns None) - intended to be sent when moving the cursor one line up in G-code display.\n This depends on the widget/libraries used.\n move-text-linedown\n@@ -54929,15 +54929,15 @@\n General message should be used a sparsely as reasonable because all object connected to it will\n have to parse it.\n It uses a Python dict for communication.\n The dict should include and be checked for a unique id keyname pair:\n ID: UNIQUE_ID_CODE\n The dict usually has more keyname pair - it depends on implementation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1248 / 1278\n \n forced-update\n (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object.\n This depends on the widget/libraries used.\n progress\n@@ -54972,15 +54972,15 @@\n (nothing) - This will return the state of Estop (BOOL)\n set_tool_touchoff\n (tool,axis,value) - This command will\n 1. record the current mode,\n 2. switch to MDI mode,\n 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE],\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1249 / 1278\n \n 4. wait for it to complete,\n 5. invoke G43,\n 6. wait for it to complete,\n 7. switch back to the original mode.\n@@ -55018,15 +55018,15 @@\n get_selected_axis\n (None) - returns string representing the internal selected axis letter.\n is_man_mode\n (None) is_mdi_mode\n (None) is_auto_mode\n (None) -\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1250 / 1278\n \n is_on_and_idle\n (None) is_auto_running\n (None) is_auto_paused\n (None) is_file_loaded\n@@ -55041,30 +55041,30 @@\n state-tags branch.\n \n 13.7. Vismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1251 / 1278\n \n The Vismach viewport view can be manipulated as follows:\n zoom by scroll wheel or right button drag,\n pan by left button drag,\n rotate by middle-button drag or shift-drag.\n A Vismach model takes the form of a Python script and can use standard Python syntax. This means\n that there is more than one way to lay out the script, but in the examples given in this document I will\n use the simplest and most basic of them.\n The basic sequence in creating the Vismach model is\n Create the HAL pins that control the motion.\n Create the parts.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1252 / 1278\n \n Define how they move.\n Assemble into movement groups.\n \n 13.7.1. Start the script\n@@ -55104,15 +55104,15 @@\n cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder\n = CylinderZ(z1, r1, z2, r2)\n Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on\n the axis.\n sphere = Sphere(x, y, z, r)\n Creates a sphere of radius r at (x,y,z)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1253 / 1278\n \n triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1,\n x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2)\n Creates a triangular plate between planes defined by the last two values parallel to the specified\n plane, with vertices given by the three coordinate pairs.\n@@ -55150,15 +55150,15 @@\n The function arguments are:\n \u2022 first a collection/part which can be pre-created earlier in the script, or could be created at this\n point if preferred eg part1 = HalTranslate([Box(....)], ...).\n \u2022 The HAL component is the next argument, ie the object returned by the comp = hal.component(...)\n command. After that is the name of the HAL in that will animate the motion, this needs to match\n an existing HAL pin that is part of the HAL component created earlier in the script.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1254 / 1278\n \n \u2022 Then follow the X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the\n positive X direction.\n However if the STL file happened to be in cm and the machine was in inches, this could be fixed\n@@ -55199,15 +55199,15 @@\n head = AsciiSTL(filename=\u201d./head.stl\u201d)\n head = Color([0.3,0.3,0.3,1],[head])\n head = Translate([head],0,0,4)\n head = Collection([head, tool, dogs, draw])\n head = HalTranslate([head],c,\u201dZ\u201d,0,0,0.1)\n # base\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1255 / 1278\n \n base = AsciiSTL(filename=\u201d./base.stl\u201d)\n base = Color([0.5,0.5,0.5,1],[base])\n # mount head on it\n base = Collection([head, base])\n@@ -55248,15 +55248,15 @@\n import hal\n #create the HAL component and pins\n comp = hal.component(\u201dcompname\u201d)\n comp.newpin(\u201dpin_name\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n ...\n #create the floor, tool and work\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n floor = Box(-50, -50, -3, 50, 50, 0)\n work = Capture()\n tooltip = Capture()\n ...\n #Build and assemble the model\n part1 = Collection([Box(-6,-3,94,6,3,100)])\n@@ -55267,23 +55267,23 @@\n #create a top-level model\n model = Collection([base, saddle, head, carousel])\n #Start the visualization\n main(model, tooltip, work, 100, lat=-75, lon=215)\n \n 1256 / 1278\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1257 / 1278\n \n Parte III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1258 / 1278\n \n Cap\u00edtulo 14\n \n Overleaf\n \n@@ -55303,15 +55303,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1259 / 1278\n \n Cap\u00edtulo 15\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -55345,15 +55345,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1260 / 1278\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -55396,15 +55396,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1261 / 1278\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -55447,15 +55447,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1262 / 1278\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -55499,15 +55499,15 @@\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum\n speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program\n for the first time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1263 / 1278\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI and build the software to\n run in the special real-time environment. For this reason real-time software runs in kernel-space.\n@@ -55548,28 +55548,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1264 / 1278\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1265 / 1278\n \n Cap\u00edtulo 16\n \n Copyright\n 16.1. Legal Section\n@@ -55596,15 +55596,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1266 / 1278\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any such\n manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -55653,15 +55653,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover\n must present the full title with all words of the title equally prominent and visible. You may add other\n material on the covers in addition. Copying with changes limited to the covers, as long as they preserve\n the title of the Document and satisfy these conditions, can be treated as verbatim copying in other\n respects.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1267 / 1278\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must\n either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n@@ -55708,15 +55708,15 @@\n N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any Invariant\n Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1268 / 1278\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -55757,15 +55757,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of this\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1269 / 1278\n \n License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English\n version will prevail.\n 9. TERMINATION\n You may not copy, modify, sublicense, or distribute the Document except as expressly provided for\n@@ -55792,15 +55792,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1270 / 1278\n \n Cap\u00edtulo 17\n \n Historia de LinuxCNC\n 17.1. Origin\n@@ -55832,15 +55832,15 @@\n interested in improving EMC. Many people requested or coded small improvements to the code. Ray\n Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code\n 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\n NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the\n predominant user interface for EMC at the time.\n For NIST\u2019s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1271 / 1278\n \n By this time interest in EMC as beginning to pick up substantially. As more and more people attempted\n installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of\n compiling the EMC code became glaringly obvious. Many attempts to document the process and write\n scripts were attempted, some with moderate success. The problem of matching the correct version of\n@@ -55875,15 +55875,15 @@\n The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0.\n \n 17.1.2. Additional Info\n NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf .\n NIST also published a paper on the history of EMC and its transition to open source. The paper is also\n available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1272 / 1278\n \n Cap\u00edtulo 18\n \n \u00cdndice alfab\u00e9tico\n _\n@@ -55967,15 +55967,15 @@\n connecting-rs485, 344\n Controlled Point, 64\n coolant, 63\n Cooling, 65\n coordinate measuring machine, 1260\n Coordinate Systems, 819\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Core components, 250\n Creating Userspace Python Components, 302\n Custom sections and variables, 156\n Cutter Radius Compensation, 832\n D\n debounce, 282\n@@ -56083,15 +56083,15 @@\n Spindle Stop\n Manual Out, 903\n G89 Boring\n Dwell\n Feed Out, 903\n G90\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n G91 Distance Mode, 903\n G91 Distance Mode, 903\n G92 Coordinate System Offset, 904\n G92.1\n G92.2 Reset G92 Offsets, 905\n G92.2 Reset G92 Offsets, 905\n@@ -56202,15 +56202,15 @@\n HAL xor2\n xor2, 216\n HAL: Implementation, 203\n HAL: Interconnections Design, 203\n HAL: Testing, 203\n HAL:Function, 206\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n HAL:Thread, 206\n HAL:Velocity example, 247\n Halcmd Tutorial, 220\n Halmeter, 312\n Tutorial Halmeter, 226\n Halui Examples, 1223\n@@ -56317,15 +56317,15 @@\n M48\n M49 Speed and Feed Override Control, 911\n M49 Speed and Feed Override Control, 911\n M5 Spindle Control, 908\n M50 Feed Override Control, 911\n M51 Spindle Speed Override, 911\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n M52 Adaptive Feed Control, 911\n M53 Feed Stop Control, 911\n M6-Tool-Change, 909\n M60 Pallet Change Pause, 908\n M61 Set Current Tool, 912\n M62 - M65 Digital Output Control, 912\n@@ -56432,15 +56432,15 @@\n real-time, 1263\n refsig-timing-diagram, 337\n Repeat Loop, 924\n Return Values, 925\n RS274NGC, 1263\n RS274NGC STARTUP CODE, 163\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n RTAI, 1263\n RTAPI, 1263\n RTLINUX, 1263\n Running LinuxCNC, 14\n S\n s32, 213\n@@ -56548,15 +56548,15 @@\n User Foreword, 43\n User Introduction, 44\n USER M PATH, 164\n V\n Variables, 156\n VOLATILE HOME, 186\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n W\n weighted_sum, 216\n Words, 840\n world coordinates, 1264\n X\n xor2, 216\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Getting Started\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n \u00cdndice general\n 1. About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.5. Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.6. Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 10\n \n@@ -272,15 +272,15 @@\n \n 28\n \n 5.5.2. INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 5.6. HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n@@ -434,15 +434,15 @@\n \n 38\n \n 5.13.4.XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 5.13.4.1.xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n@@ -581,15 +581,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 49\n 49\n 54\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vi\n \n The LinuxCNC Team\n \n 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\n Copyright \u00a9 2000-2020 LinuxCNC.org\n@@ -607,15 +607,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 55\n \n Cap\u00edtulo 1\n \n About LinuxCNC\n 1.1. The Software\n@@ -642,15 +642,15 @@\n It can simultaneously move up to 9 axes and supports a variety of interfaces.\n The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC\n software at the computer, or open loop with step-servos or stepper motors.\n Motion control features include: cutter radius and length compensation, path deviation limited to\n a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed\n override, and constant velocity control.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 55\n \n Support for non-Cartesian motion systems is provided via custom kinematics modules. Available\n architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary\n joints to provide motion such as PUMA or SCARA robots.\n LinuxCNC runs on Linux using real time extensions.\n@@ -683,15 +683,15 @@\n 1.3.2. Mailing List\n An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at\n their convenience. You get better exposure to your questions on a mailing list than on the IRC but\n answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or\n individual replies back depending on how you set up your account.\n You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 55\n \n 1.3.3. Web Forum\n A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the\n linuxcnc.org home page.\n This is quite active but the demographic is more user-biased than the mailing list. If you want to be\n@@ -701,15 +701,15 @@\n A Wiki site is a user maintained web site that anyone can add to or edit.\n \n The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or\n \n 1.3.5. Bug Reports\n Report bugs to the LinuxCNC github bug tracker.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 55\n \n Cap\u00edtulo 2\n \n System Requirements\n 2.1. Minimum Requirements\n@@ -736,15 +736,15 @@\n 2.2. Kernel and Version requirements\n 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\n files and learning the system. To work with these kernel versions there are two versions of LinuxCNC\n distributed. The package names are \u201dlinuxcnc\u201d and \u201dlinuxcnc-uspace\u201d.\n The realtime kernel options are preempt-rt, RTAI and Xenomai.\n You can discover the kernel version of your system with the command:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 55\n \n uname -a\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n@@ -780,15 +780,15 @@\n an extended time will give you the info you need to determine suitability.\n \n 2.3.2. Video Cards\n If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize\n your video card or monitor. This can sometimes be worked-around by installing drivers or creating /\n editing Xorg.conf files.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 55\n \n Cap\u00edtulo 3\n \n Getting LinuxCNC\n This section describes the recommended way to download and make a fresh install of LinuxCNC.\n@@ -814,15 +814,15 @@\n \n 3.1.1. Normal Download\n For x86 PCs Download the Live/Install CD by clicking here:\n https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso\n For the Raspberry Pi a complete SD card image is available here:\n https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 55\n \n This can be installed using the normal Pi install process including with the Raspberry Pi Imager app.\n This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version\n of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both\n WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by\n@@ -858,15 +858,15 @@\n 2. Then compare to these checksums\n md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41\n sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700\n \n Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program,\n but there are alternatives. More information can be found at: How To MD5SUM\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 55\n \n 3.2. Write the image to a bootable device\n The Raspberry Pi image is a completes SD card image and should be written to an SD card in the\n normal way.\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n@@ -901,15 +901,15 @@\n 4. Select the write speed. It is recommended that you write at the lowest possible speed.\n 5. Start the burning process.\n 6. If a choose a file name for the disc image window pops up, just pick OK.\n Writing the image to a DVD in Windows\n \n 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 55\n \n 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up.\n 3. Open Infra Recorder, and select the Actions menu, then Burn image.\n Writing the image to a DVD in Mac OSX\n 1. Download the .iso file\n@@ -943,15 +943,15 @@\n line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything\n except the operating system when asked to.\n \n aviso\n Do not upgrade the operating system if prompted to do so. You should accept OS updates\n however, especially security updates.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 55\n \n 3.6. Install Problems\n In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot\n recognize the hard drive during the boot up.\n \n@@ -1054,15 +1054,15 @@\n Debian Wheezy: deb https://linuxcnc.org wheezy base\n Ubuntu Precise: deb https://linuxcnc.org precise base\n nota\n Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is\n strongly advised not to use either for a new install, and to seriously consider upgrading an existing\n installation.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 55\n \n The Buster / RTAI package is only available on amd64, but there are very few surviving systems that\n can not run a 64-bit OS.\n aviso\n There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The\n@@ -1100,15 +1100,15 @@\n 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right\n click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the\n system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels\n need not be deleted, but grub boot configuration changes will be needed beyond the scope of\n this document.\n 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 55\n \n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n Alternate keyserver: keyserver.ubuntu.com\n \n 6. Add the apt repository:\n@@ -1144,15 +1144,15 @@\n sudo apt-get update\n \n 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc\n sudo apt-get install linux-image-4.19.195-rtai-amd64\n \n 6. Install the RTAI application layer\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 55\n \n sudo apt-get install rtai-modules-4.19.195\n \n 7. Install LinuxCNC (may be necessary to reboot before installing)\n sudo apt-get install linuxcnc\n@@ -1189,15 +1189,15 @@\n \n 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n # Alternate keyserver: keyserver.ubuntu.com\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n \n 4. Add a new apt source\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 55\n \n sudo add-apt-repository \u201ddeb https://linuxcnc.org/ precise base 2.8-rt\u201d\n \n 5. Fetch the package list from linuxcnc.org.\n sudo apt-get update\n@@ -1211,15 +1211,15 @@\n 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name\n is 3.4-9-rtai-686-pae.\n uname -r\n \n 9. Run\n sudo apt-get install linuxcnc\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 55\n \n Cap\u00edtulo 4\n \n Running LinuxCNC\n 4.1. Invoking LinuxCNC\n@@ -1246,15 +1246,15 @@\n applications like PyVCP or GladeVCP.\n \u2022 attic - Obsolete or historical configurations.\n The sim configurations are often the most useful starting point for new users and are organized around\n supported GUIs:\n axis - Keyboard and Mouse GUI\n gmoccapy - Touch Screen GUI\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 55\n \n gscreen - Touch Screen GUI\n low_graphics - Keyboard GUI\n pyvcp_demo - Paneles de Control Virtuales Python\n qtvcp_screens - Guis dise\u00f1adas con Qt5 y Python\n@@ -1285,15 +1285,15 @@\n applications that can be used with linuxcnc:\n info - creates a file with system information that may be useful for problem diagnosis.\n gladevcp - Example GladeVCP applications.\n halrun - Starts halrun in an terminal.\n latency - Applications to investigate latency\n \u2022 latency-test - standard test\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 55\n \n \u2022 latency-plot - stripchart\n \u2022 latency-histogram - histogram\n parport - Applications to test parport.\n pyvcp - Example pyvcp applications.\n@@ -1305,15 +1305,15 @@\n Figura 4.1: Selector de Configuraci\u00f3n de LinuxCNC\n Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration.\n Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly\n launch this configuration without showing the Configuration Selector screen.\n When you select a configuration from the Sample Configurations section, it will automatically place a\n copy of that config in the ~/linuxcnc/configs directory.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 55\n \n 4.3. Next steps in configuration\n After finding the sample configuration that uses the same interface hardware as your machine (or a\n simulator configuration), and saving a copy to your home directory, you can customize it according to\n the details of your machine. Refer to the Integrator Manual for topics on configuration.\n@@ -1340,15 +1340,15 @@\n HAL files, local modifications will then prevail.\n The Configuration selector makes a symbolic link in the user configuration directory (named hallib)\n that points to the system HAL file library. This link simplifies copying a library file. For example, to\n copy the library core_sim.hal file in order to make local modifications:\n cd ~/linuxcnc/configs/name_of_configuration\n cp hallib/core_sim.hal core_sim.hal\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 55\n \n Cap\u00edtulo 5\n \n Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n@@ -1380,15 +1380,15 @@\n \n You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also\n available for Debian Jessie or Debian Buster if you happen to already be running one of those.\n You will also need to check which realtime kernel is being used:\n uname -r\n 4.19.0-9-rt-amd64\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 55\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC\n version to install.\n@@ -1433,15 +1433,15 @@\n deb https://linuxcnc.org jessie base\n 2.8-rt\n deb https://linuxcnc.org buster base\n 2.8-rtpreempt\n deb https://linuxcnc.org buster base\n 2.8-rt\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 55\n \n Click Add Source, then Close in the Software Sources window. If it pops up a window informing\n you that the information about available software is out-of-date, click the Reload button.\n \n 5.1.2. Upgrading to the new version\n@@ -1461,15 +1461,15 @@\n \n 5.1.3. Ubuntu Precise\n Click on the Dash Home icon in the top left.\n In the Search field, type \u201dupdate\u201d, then click on the Update Manager icon.\n Click the Check button to fetch the list of packages available.\n Click the Install Updates button to install the new versions of all packages.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 55\n \n 5.2. Updating without Network\n To update without a network connection you need to download the .deb then install it with dpkg. The\n .debs can be found in https://linuxcnc.org/dists/ .\n You have to drill down from the above link to find the correct deb for your installation. Open a terminal\n@@ -1506,15 +1506,15 @@\n /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting\n correspondingly needs to change from libcanterp.so to canterp.so.\n \n 5.4. Updating Configuration Files (for 2.8.x)\n The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your\n machine configuration.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 55\n \n The main difference is that LinuxCNC no longer makes any assumptions about which joint controls\n which axis. This change is generally termed \u201djoints-axes\u201d after the name of the development branch\n where the changes started. This change has been in development since at least 2010, and has finally\n been merged.\n@@ -1554,15 +1554,15 @@\n spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for\n the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a\n HAL file loadrt entry for motmod).\n The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match.\n The spindle control pin names have been changed to make spindles look more like axes and joints.\n motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 55\n \n take care of these changes. To control extra spindles the G and M-codes which control spindle speed\n now accept an additional \u201d$\u201d argument, for example M3 $2 to start the third spindle. \u201d$\u201d was chosen\n to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match\n any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man\n@@ -1610,15 +1610,15 @@\n \n HAL file:\n \n loadrt [KINS]KINEMATICS\n \n haltcl file: loadrt $::KINS(KINEMATICS)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 55\n \n 5.4.6. Lathe Configurations\n 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\n configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for\n homing the unused Y coordinate. These arrangements are no longer required or recommended.\n@@ -1658,15 +1658,15 @@\n \n Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters:\n [KINS]KINEMATICS = trivkins coordinates=XZ\n [KINS]JOINTS\n = 2\n [TRAJ]COORDINATES = XZ\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 55\n \n Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint\n positioning (for homing):\n [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH\n [KINS]JOINTS\n@@ -1712,15 +1712,15 @@\n [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer\n \n Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe\n [JOINT_N]LOCKING_INDEXER = 1\n \n HAL pins can be created to coordinate use of a locking indicator joint:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 55\n \n joint.N.unlock\n (BIT output from HAL)\n joint.N.is-unlocked (BIT input to\n HAL)\n@@ -1762,15 +1762,15 @@\n For example, lines like this will no longer be accepted:\n MAX_VELOCITY = 7.5 # This is the max velocity of the axis.\n \n They could be transformed into pairs of lines like this:\n # This is the max velocity of the axis.\n MAX_VELOCITY = 7.5\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 55\n \n 5.4.11. [TRAJ] settings\n In 2.7.x versions, trajectory planning ([TRAJ]) settings included:\n [TRAJ]\n DEFAULT_ACCELERATION\n@@ -1838,15 +1838,15 @@\n axis.L.jog-vel-mode\n \n where N is a joint number and L is an axis letter.\n To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint\n number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example,\n if joint 1 corresponds exactly to axis letter y:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 55\n \n net jora_1_y_enable\n => joint.1.jog-enable => axis.y.jog-enable\n net jora_1_y_scale\n => joint.1.jog-scale => axis.y.jog-scale\n@@ -1906,15 +1906,15 @@\n 5.6.1. halcompile\n The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt)\n the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names=\n items for userspace (loadusr) components.\n For components using personality, the maximum number is now settable by a command line option\n -P|--personalities.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 55\n \n 5.6.2. Parameter to Pin changes\n The following HAL output pins were changed from parameters to pins so that they can be connected\n to signals:\n motion.servo.last-period\n@@ -1946,15 +1946,15 @@\n homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode\n and axis jogging (coordinate letter X,Y,\u2026) is used. This is appropriate for all G-code moves requested\n by MDI commands or by G-code programs.\n Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide\n a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that\n use non-IDENTITY kinematics.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 55\n \n In many common situations, joint jogging is never needed since homing is accomplished using home\n switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine,\n issues the Home-All command, the machine homes and changes to world mode automatically. See\n Homing Configuration.\n@@ -2001,15 +2001,15 @@\n was: halui.jog.N.minus\n ... etc.\n \n is: halui.joint.N.plus\n is: halui.joint.N.minus\n ... etc.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 55\n \n where N is a joint number (0 \u2026 num_noints-1) or selected for the joint selected by the halui.joint.N.select\n pins.\n 5.8.2.3. Additional pin renames\n The HAL pins for selected joints were renamed for consistency with related pins.\n@@ -2042,15 +2042,15 @@\n 2. Preview Tab display of joints or axes according to joint or teleop mode\n 3. Preview Tab display of Home and Limit icons in joint mode\n 4. Preview Tab display of All-homed and Any-limit icons in teleop mode\n 5. DRO Tab display of joint or axes according to joint or teleop mode\n 6. Jogging is supported in both joint and teleop motion modes.\n 7. External changes to the joint/teleop motion mode are detected.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 55\n \n 5.8.3.4. Home icons\n For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a\n joint is homed.\n For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint\n@@ -2085,15 +2085,15 @@\n commands have been simplified to use an argument that is just the coordinate letter.\n Commands now using a coordinate letter argument are:\n 1. emc_pos_offset\n 2. emc_abs_cmd_pos\n 3. emc_abs_act_pos\n 4. emc_rel_cmd_pos\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 55\n \n 5. emc_rel_act_pos\n 6. emc_tool_offset\n 7. emc_probed_pos\n \n@@ -2132,15 +2132,15 @@\n is: set jog_stop joint_number|axis_letter\n \n nota\n Test for teleop mode using command: get teleop_enable\n If TELEOP_ENABLE=YES, use axis_letter;\n Else use joint_number\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 55\n \n nota\n Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234\n in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided\n the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding\n@@ -2170,15 +2170,15 @@\n \n 5.12. Simulator configurations (updates for joints axes 2.8.x)\n 5.12.1. Pre-joints_axes\n Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common\n milling machine \u2014 a Cartesian system with trivial kinematics and three axes named X Y Z. Typical\n HAL file entries:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 55\n \n [HAL]\n HALFILE = core_sim.hal\n HALFILE = sim_spindle_encoder.hal\n HALFILE = axis_manualtoolchange.hal\n@@ -2217,15 +2217,15 @@\n Omitting one or more of the core functions allows testing without without the function or addition of\n new HALFILEs to implement or expand on the functionality.\n 5.12.2.1. Equivalent HAL commands file\n When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to\n show the halcmd commands issued. The file name is based on the name of the INI file with _cmds\n appended to the basename and a conventional .hal file extension. Example:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 55\n \n inifilename:\n example.ini\n equivalent_halfilename: example_cmds.hal\n \n@@ -2257,15 +2257,15 @@\n Commits to unreleased branches may make changes that affect testers and early-adopters of the\n unreleased software.\n \n 5.13.1. Motion pins\n New pins (see the motion man page for more info):\n --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction ---\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 55\n \n 5.13.2. HAL pins\n Name changes:\n was: axis.L.vel-cmd\n is: axis.l.teleop-vel-cmd\n@@ -2296,15 +2296,15 @@\n 5.13.6. bldc3_hall\n The bldc_hall3 component has been removed. The bldc component is more flexible and better tested.\n \n 5.13.7. [JOINT_n]HOME_SEQUENCE Starting values\n Starting sequence values may be 0, 1 (or -1) only. See the \u201dHoming Configuration\u201d documentation for\n more information.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 55\n \n 5.13.8. [JOINT_n]HOME_SEQUENCE Negative values\n Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent\n misalignment (racking) in common gantry configurations. As always, machines with any kinematics\n type must be homed prior to enabling conventional world mode jogging.\n@@ -2337,15 +2337,15 @@\n \n 5.14.4. Configuration Updates\n 5.14.4.1. INI file Settings\n New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET \u2014 support encoder with index that does not\n reset upon receipt of index pulse following assertion of index_enable.\n axis.py default for [DISPLAY]GEOMETRY was:\u201dXYZBCUVW\u201d,is:\u201dXYZABCUVW\u201d\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 55\n \n 5.14.5. Code Updates\n Management of the internal storage of tool data and the communication of same between EMCIO and\n TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata\n is deprecated and may be removed before a new release.\n@@ -2375,15 +2375,15 @@\n 5.14.5.5. Motion\n The motion module supports kinematics modules that define new functions kinematicsSwitchable()\n and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided\n for use of such kinematics modules.\n Provided kinematics modules that implement kinematics switching use the switchkins.o object to\n supply the required rtapi_main() and related functions. Kinematics modules that do not support kinematics switching use the macro \u201dKINS_NOT_SWITCHABLE\u201d provided by kinematics.h.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 55\n \n 5.14.5.6. Switchkins Kinematics Modules\n Several kinematics modules are now switchable between their eponymous kinematics and an alternate\n identity kinematics mode.\n Kinematic modules supporting switchkins:\n@@ -2412,15 +2412,15 @@\n lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified.\n lib/python/vismach.py: new HAL pin vismach.plotclear\n \n 5.14.6. HAL\n 5.14.6.1. Components\n sim_home_switch: added I/O pin for index-enable\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 55\n \n 5.14.6.2. Motion module pins\n motion.feed-upm \u2014 current feed in units per minute\n \n 5.14.7. Configs\n@@ -2430,15 +2430,15 @@\n 5.14.7.2. Simulation Configs\n sim/configs/axis/axis_9axis: demonstrate simulated encoder index\n \n 5.15. Changes after 2.8.x\n Future versions of this document will take into account changes made to the development branch\n after the latest 2.8.x release.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 55\n \n Cap\u00edtulo 6\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -2472,15 +2472,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 55\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -2523,15 +2523,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 55\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -2574,15 +2574,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 55\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -2626,15 +2626,15 @@\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum\n speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program\n for the first time.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 55\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI and build the software to\n run in the special real-time environment. For this reason real-time software runs in kernel-space.\n@@ -2675,28 +2675,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 55\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 55\n \n Cap\u00edtulo 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -2722,15 +2722,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 55\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any such\n manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -2779,15 +2779,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover\n must present the full title with all words of the title equally prominent and visible. You may add other\n material on the covers in addition. Copying with changes limited to the covers, as long as they preserve\n the title of the Document and satisfy these conditions, can be treated as verbatim copying in other\n respects.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 55\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must\n either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n@@ -2834,15 +2834,15 @@\n N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any Invariant\n Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 55\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -2883,15 +2883,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of this\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 55\n \n License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English\n version will prevail.\n 9. TERMINATION\n You may not copy, modify, sublicense, or distribute the Document except as expressly provided for\n@@ -2918,15 +2918,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 55\n \n Cap\u00edtulo 8\n \n \u00cdndice alfab\u00e9tico\n A\n@@ -3003,15 +3003,15 @@\n RS274NGC, 47\n RTAI, 47\n RTAPI, 47\n RTLINUX, 47\n Running LinuxCNC, 15\n S\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n servo motor, 47\n Signed Integer, 47\n spindle, 47\n stepper motor, 47\n System Requirements, 4\n T\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Integrator Information\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n \u00cdndice general\n 1. Stepper Information\n \n 1\n@@ -127,15 +127,15 @@\n \n 17\n \n 3.12.3.Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 18\n \n Cap\u00edtulo 1\n \n Stepper Information\n 1.1. Stepper Motor Operation\n@@ -154,15 +154,15 @@\n time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing the\n overall torque. This relationship between speed and torque is largely inversely proportional.\n In the below example, the charging time for three coils is shown when the applied voltage is stepped\n from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time\n taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full\n current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again:\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 18\n \n If the rate at which step changes are applied to the coils is significantly shorter than the rise time,\n it\u2019s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus\n maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before\n the step voltage is removed, but the 4 mH and 8 mH coils cannot:\n@@ -181,15 +181,15 @@\n In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several\n orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor\n may have a rating of only a handful of volts, yet the power supply and driver could be operating at\n 48 VDC or more.\n Nearly all modern stepper motor drivers on the market today are constant-current types. That is,\n the current being applied to each winding is fixed irrespective of how much voltage is being applied.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 18\n \n Most drivers accomplish this by monitoring the current being drawn through the motor windings and\n rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending\n on the drivers being used, it may even be possible to hear this high frequency whistling in the motors\n themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding\n@@ -234,15 +234,15 @@\n introduced.\n Several methods exist to help control the effects of resonance, all with varying degrees of complexity,\n effectiveness and side effects:\n Microstepping can help reduce resonance by using smaller step changes in current between each\n step. These smaller step changes cause less ringing in the motor and windings and thus cause less\n excitation at the point of resonance.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 18\n \n Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic\n method of reducing resonance, always accelerating or decelerating through the resonant peak.\n Increasing inertial load will damp unwanted resonances at the expense of some torque and potentially some accuracy. Elastomeric motor mounts, shaft couplings or bearing mounts can be employed.\n More advanced stepper motor drives may have the ability to switch between stepping modes such\n@@ -279,15 +279,15 @@\n in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper\n motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely\n meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with\n leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees\n of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain\n the necessary resolution and torque gains.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 18\n \n 1.5. Open and Closed Loop\n In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver\n receives no feedback from the motor that it has achieved the desired outcome when commanded\n to begin stepping. The assumption by the software, driver and end user is that the motor operated\n@@ -307,15 +307,15 @@\n to the downstream driver as it would normally when running in open loop. In these situations the\n drivers usually include an alarm output which signals the software to halt when the load placed on\n the stepper becomes too great for the driver to compensate without losing steps.\n More advanced implementations of closed loop operation bring the encoder signal all the way back\n to the host computer, but require that a much higher hardware and software overhead be installed to\n manage the encoder feedback and calculation and delivery of drive compensation.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 18\n \n Cap\u00edtulo 2\n \n Stepper Timing\n This page is for step and direction timing of stepper drives.\n@@ -378,15 +378,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 202\n \n@@ -478,15 +478,15 @@\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g212rev15.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g213vrev7.html\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 320\n \n@@ -623,15 +623,15 @@\n http://granitedevices.fi/assets/files/vsde_160_manual.pdf\n http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.piclist.com/techref/io/stepper/linistep/index.htm\n http://www.piclist.com/techref/io/stepper/THB6064/index.htm\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n *Motion\n Control\n \n MSD542\n@@ -855,15 +855,15 @@\n http://www.kelinginc.net/kL6852.pdf\n https://www.sherline.com/-\n \n http://www.lewetz.de/download/ibstep3se.pdf\n http://www.compumotor.com\n manuals/ZETA/ZETA_Rev_A_Entire.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1102,15 +1102,15 @@\n http://leadshine.com/UploadFile/Down/EM503d_P.pdf\n http://leadshine.com/UploadFile/Down/EM705d_P.pdf\n http://leadshine.com/UploadFile/Down/EM806d_P.pdf\n http://leadshineusa.com/UploadFile/Down/M415Bm.pdf\n http://leadshineusa.com/UploadFile/Down/M542V2m.pdf\n http://leadshineusa.com/UploadFile/Down/M752m.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1289,15 +1289,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 18\n \n Cap\u00edtulo 3\n \n Best Wiring Practices\n 3.1. Electrical Noise\n@@ -1325,15 +1325,15 @@\n this discussion the terms earth and common must be made distinct from each other to avoid confusion.\n \n 3.3. Wire Selection and Use\n 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\n wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have\n some effect on the overall system. What follows are some tips that may prove helpful.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 18\n \n 3.3.1. Single Conductor Wire\n Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than\n 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\n wherever possible.\n@@ -1376,15 +1376,15 @@\n 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\n cable may also be shielded along with an overall shield being applied to the entire cable jacket.\n \n 3.4. AC Line Voltage\n The incoming mains AC that powers the CNC system can pick up and carry noise into the power\n supplies and other equipment. For example, if the incoming supply is also used to feed large motors,\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 18\n \n electrical noise may be generated on the line feeding the CNC components. Although most modern\n electronic devices feature built-in mains filtering to help minimise the susceptibility to mains-borne\n interference, the custom and modularised nature of a CNC system can mean that components used\n come from a wide variety of sources with differing degrees of inherent noise immunity.\n@@ -1423,15 +1423,15 @@\n In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system\n separate from each other, and separate from the AC mains earth unless there is a specific requirement\n to tie them together. In most cases the common points of the heavy-duty power sections of the CNC\n system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common\n points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool\n probe circuitry etc) to prevent cross-contamination of the two systems.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 18\n \n Should it be necessary to connect several common points of different PSUs together, or to connect\n a common of a PSU to AC main earth, it should be done at a single point only and as close to the\n common terminal of the PSUs as possible.\n 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.\n@@ -1472,15 +1472,15 @@\n issues with a limit switch operating with a 24V signal.\n \n 3.8. Stepper or Servo Motor Drivers\n The metal housing of the driver should be connected to the local mains earth in the CNC system. Some\n driver enclosures will indicate a specific terminal as being the earthing point, in which case this point\n must be connected to earth via a dedicated wire.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 18\n \n Control and power wiring should be segregated as much as possible. Route signal input wires well\n away from power supply and motor drive output lines.\n It is recommended to run both driver input and motor output wiring in shielded cable with the shield\n terminated to mains earth. The shield on the input lines helps reduce the amount of interference they\n@@ -1516,15 +1516,15 @@\n against this surface as much as possible while wiring between two points.\n \n 3.11. Mechanical Noise\n Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly\n when operated. More often than not the switch contacts will physically bounce against each other\n several times within a very short space of time when operated. This may be interpreted by the machine\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 18\n \n controller as multiple operations of the same signal when in reality only one clean state change was\n expected. Sometimes it doesn\u2019t matter, but in many circumstances it is desirable to ensure that any\n state change is as clean as possible and does not interfere with the operation of the machine. This is\n accomplished by debouncing.\n@@ -1562,15 +1562,15 @@\n 3.12.2. Wiring Schematics\n As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The\n schematic does not have to be all that neat, but it should be understandable in such a way that it\n could be easily interpreted at a later date, ideally by anyone who may need to service the equipment.\n Include details such as wire colours used, pin numbers, part numbers and any other notes that will\n help explain particular details not immediately apparent from first glance at the schematic.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 18\n \n 3.12.3. Wiring Identification\n Take the time to identify each wire in the system. When a bundle of wires has been cable-tied in place\n it can be very difficult to look at them and know for sure which wire goes where. Label the motor wires\n with the joint or axis they are associated with, or identify each signal wire so that it is easy to identify\n"}]}]}]}]}, {"source1": "linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "source2": "linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary\n--rw-r--r-- 0 0 0 1132 2023-02-10 04:33:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 25959972 2023-02-10 04:33:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 1136 2023-02-10 04:33:18.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 25958684 2023-02-10 04:33:18.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: linuxcnc-doc-fr\n Source: linuxcnc\n Version: 2.9.0~pre1+git20230208.f1270d6ed7-1\n Architecture: all\n Maintainer: LinuxCNC Developers \n-Installed-Size: 26736\n+Installed-Size: 26735\n Recommends: xdg-utils\n Suggests: pdf-viewer\n Breaks: linuxcnc-uspace (<= 2.9.0~pre0+git20220402.2500863908-4)\n Replaces: linuxcnc-uspace (<= 2.9.0~pre0+git20220402.2500863908-4)\n Provides: linuxcnc-doc\n Section: misc\n Priority: optional\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -4,18 +4,18 @@\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 331 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 357 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 372 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 361 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_fr.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 823628 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 25817380 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 498737 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 151649 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 823596 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 25816180 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 498730 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 151621 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf\n -rw-r--r-- 0 root (0) root (0) 14404 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_fr.html\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-fr/\n -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-fr/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-fr/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 277 2022-07-01 22:54:06.000000 ./usr/share/doc-base/linuxcnc-doc-fr.linuxcnc-doc-fr\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/lintian/\n"}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Manuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Manuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Manuel du d\u00e9veloppeur\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Table des mati\u00e8res\n 1 Introduction\n \n 1\n@@ -119,15 +119,15 @@\n \n 15\n \n 3.8.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.8.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n@@ -283,15 +283,15 @@\n \n 19\n \n 3.8.16.1Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 3.8.16.2Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n@@ -451,15 +451,15 @@\n \n 3.21.3Process line\n \n 27\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 3.21.4Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 28\n \n@@ -625,15 +625,15 @@\n \n 40\n \n 4.14Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 40\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vi\n \n 5 Coding Style\n \n 41\n \n@@ -779,15 +779,15 @@\n \n 53\n \n 8.4.1 Repo Git officiel de LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 53\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 8.4.2 Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n@@ -876,15 +876,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 63\n 63\n 68\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 69\n \n Chapitre 1\n \n Introduction\n \n@@ -904,15 +904,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 69\n \n Chapitre 2\n \n HAL General Reference\n 2.1 HAL Entity Names\n@@ -941,15 +941,15 @@\n This results in a structure that resembles a directory tree. Even though halcmd doesn\u2019t recognize the\n tree structure, proper choice of naming conventions will let it group related items together (since it\n sorts the names). In addition, higher level tools can be designed to recognize such structure, if the\n names provide the necessary information. To do that, all HAL components should follow these rules:\n \u2014 Dots (\u201c.\u201d) separate levels of the hierarchy. This is analogous to the slash (\u201c/\u201d) in a filename.\n \u2014 Hyphens (\u201c-\u201d) separate words or fields in the same level of the hierarchy.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 69\n \n \u2014 HAL components should not use underscores or \u201cMixedCase\u201d. 1\n \u2014 Use only lowercase letters and numbers in names.\n \n 2.3 Hardware Driver Naming Conventions\n@@ -993,15 +993,15 @@\n 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\n with 0. But at present, some drivers use the ID directly as the peripheral number. Which means it is possible to have a device\n number 2, without having any in number 0. This is a bug that should disappear in version 2.1.\n 3. One exception to the \u201dchannel numbers start at zero\u201d rule is the parallel port. Its HAL pins are numbered with the\n corresponding pin number on the DB-25 connector. This is convenient for wiring, but inconsistent with other drivers. There is\n some debate over whether this is a bug or a feature.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 69\n \n \n An individual I/O channel might have just a single HAL pin associated with it, but most have more\n than one. For example, a digital input has two pins, one is the state of the physical pin, the other\n is the same thing inverted. That allows the configurator to choose between active high and active\n@@ -1044,15 +1044,15 @@\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n \n 4. Note to driver programmers: do NOT implement separate functions for different I/O types unless they are interruptible\n and can work in independent threads. If interrupting an encoder read, reading digital inputs, and then resuming the encoder\n read will cause problems, then implement a single function that does everything.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 69\n \n Chapitre 3\n \n Code Notes\n 3.1 Intended audience\n@@ -1082,15 +1082,15 @@\n follow this distinction, but the internals of the motion controller do.\n \u2014 JOINT - A joint is one of the movable parts of the machine. Joints are distinct from axes, although\n 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\n table of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as\n are the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated\n with it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 69\n \n trivial kinematics that may be the case. Even on those machines, joint position and axis position\n are fundamentally different things. In this document, the terms joint and axis are used carefully\n to respect their distinct meanings. Unfortunately that isn\u2019t necessarily true everywhere else. In\n 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\n@@ -1119,19 +1119,19 @@\n 3.4 Architecture overview\n There are four components contained in the LinuxCNC Architecture: a motion controller (EMCMOT),\n a discrete IO controller (EMCIO), a task executor which coordinates them (EMCTASK) and several\n text-mode and graphical User Interfaces. Each of them will be described in the current document,\n both from the design point of view and from the developers point of view (where to find needed data,\n how to easily extend/modify things, etc.).\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 69\n \n 3.4.1 LinuxCNC software architecture\n 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\n controller is implemented as a hierarchy of controllers, in this case for spindle, coolant, and auxiliary\n (e.g., estop, lube) subsystems. The task controller coordinates the actions of the motion and discrete\n@@ -1159,19 +1159,19 @@\n processes. For realtime motion control, the script first loads the default tpmod and homemod modules\n and then loads the kinematics and motion modules according to settings in halfiles specified by the\n INI file.\n Custom (user-built) homing or trajectory-planning modules can be used in place of the default modules\n via INI file settings or command line options. Custom modules must implement all functions used by\n the default modules. The halcompile utility can be used to create a custom module.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 69\n \n 3.6 Block diagrams and Data Flow\n The following figure is a block diagram of a joint controller. There is one joint controller per joint.\n The joint controllers work at a lower level than the kinematics, a level where all joints are completely\n independent. All the data for a joint is in a single joint structure. Some members of that structure are\n@@ -1187,15 +1187,15 @@\n \u2014 emcmotStatus->joints[n].coarse_pos - This is the desired position, in joint coordinates, but before\n interpolation. It is updated at the traj rate, not the servo rate. In coord mode, it is generated by\n applying inverse kins to (1) In teleop mode, it is generated by applying inverse kins to (1) In free\n mode, it is copied from (3), I think.\n \u2014 \u2019emcmotStatus->joints[n].pos_cmd - This is the desired position, in joint coords, after interpolation.\n A new set of these coords is generated every servo period. In coord mode, it is generated from (2)\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 69\n \n by the interpolator. In teleop mode, it is generated from (2) by the interpolator. In free mode, it is\n generated by the free mode traj planner.\n \u2014 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\n (for homing) to (3). It is generated the same way regardless of the mode, and is the output to the\n@@ -1212,26 +1212,26 @@\n because one or more axes aren\u2019t homed. In that case, the options are: A) fake it by copying (1), or\n B) admit that we don\u2019t really know the Cartesian coordinates, and simply don\u2019t update actualPos.\n Whatever approach is used, I can see no reason not to do it the same way regardless of the operating\n mode. I would propose the following: If there are forward kins, use them, unless they don\u2019t work\n because of unhomed axes or other problems, in which case do (B). If no forward kins, do (A), since\n otherwise actualPos would never get updated.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3.7 Homing\n 3.7.1 Homing state diagram\n \n 13 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 69\n \n 3.7.2 Another homing diagram\n \n 3.8 Commands\n 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.\n@@ -1247,15 +1247,15 @@\n It does not disable the motion controller or change any state information, it simply cancels any motion\n that is currently in progress. 1\n 1. It seems that the higher level code (TASK and above) also use ABORT to clear faults. Whenever there is a persistent fault\n (such as being outside the hardware limit switches), the higher level code sends a constant stream of ABORTs to the motion\n controller trying to make the fault go away. Thousands of them\u2026. That means that the motion controller should avoid persistent\n faults. This needs to be looked into.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 69\n \n 3.8.1.1 Requirements\n None. The command is always accepted and acted on immediately.\n 3.8.1.2 Results\n In free mode, the free mode trajectory planners are disabled. That results in each joint stopping as fast\n@@ -1287,15 +1287,15 @@\n free mode. However the trajectory planner per se is not used, instead movement is controlled by a\n velocity vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space\n instead of joint space. On a machine with trivial kinematics, there is little difference between teleop\n mode and free mode, and GUIs for those machines might never even issue this command. However\n for non-trivial machines like robots and hexapods, teleop mode is used for most user commanded jog\n type movements.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 69\n \n 3.8.3.1 Requirements\n The command handler will reject the TELEOP command with an error message if the kinematics\n cannot be activated because the one or more joints have not been homed. In addition, if any joint is in\n motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error\n@@ -1330,15 +1330,15 @@\n None. The command can be issued at any time, and will always be accepted.\n 3.8.5.2 Results\n If the controller is already enabled, nothing. If not, the controller is enabled. Queues and interpolators\n are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated\n with active joints are turned on. If forward kinematics are not available, the machine is switched to\n free mode.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 69\n \n 3.8.6 DISABLE\n The DISABLE command disables the motion controller.\n 3.8.6.1 Requirements\n None. The command can be issued at any time, and will always be accepted.\n@@ -1366,15 +1366,15 @@\n Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually\n it will set the amp enable HAL pin false.\n \n 3.8.9 ACTIVATE_JOINT\n The ACTIVATE_JOINT command turns on all the calculations associated with a single joint, but does\n not change the joint\u2019s amp enable output pin.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 69\n \n 3.8.9.1 Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.9.2 Results\n Calculations for the specified joint are enabled. The amp enable pin is not changed, however, any\n@@ -1401,15 +1401,15 @@\n The DISABLE_WATCHDOG command disables a hardware based watchdog (if present).\n 3.8.12.1 Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.12.2 Results\n Currently nothing. The old watchdog was a strange thing that used a specific sound card. A new\n watchdog interface may be designed in the future.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 69\n \n 3.8.13 PAUSE\n The PAUSE command stops the trajectory planner. It has no effect in free or teleop mode. At this point\n I don\u2019t know if it pauses all motion immediately, or if it completes the current move and then pauses\n before pulling another move from the queue.\n@@ -1437,15 +1437,15 @@\n \n 3.8.16 SCALE\n The SCALE command scales all velocity limits and commands by a specified amount. It is used to\n implement feed rate override and other similar functions. The scaling works in free, teleop, and coord\n modes, and affects everything, including homing velocities, etc. However, individual joint velocity\n limits are unaffected.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 69\n \n 3.8.16.1 Requirements\n None. The command can be issued at any time, and will always be accepted.\n 3.8.16.2 Results\n All velocity commands are scaled by the specified constant.\n@@ -1475,15 +1475,15 @@\n 3.8.19 JOG_CONT\n The JOG_CONT command initiates a continuous jog on a single joint. A continuous jog is generated\n by setting the free mode trajectory planner\u2019s target position to a point beyond the end of the joint\u2019s\n range of travel. This ensures that the planner will move constantly until it is stopped by either the joint\n limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user presses\n a jog button, and ABORT when the button is released.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 69\n \n 3.8.19.1 Requirements\n The command handler will reject the JOG_CONT command with an error message if machine is not in\n free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not\n enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the\n@@ -1520,15 +1520,15 @@\n location, however they also stop when they hit a limit, or on an ABORT command.\n 3.8.21.1 Requirements\n The command handler will silently reject the JOG_ABS command if machine is not in free mode, or if\n any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will\n also silently ignore the command if the joint is already at or beyond its limit and the commanded jog\n would make it worse.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 69\n \n 3.8.21.2 Results\n The free mode trajectory planner for the joint identified by emcmotCommand->axis is activated, the\n 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\n position to the target position. The planner can correctly handle changes in the target position that\n@@ -1561,15 +1561,15 @@\n (More later)\n \n 3.8.27 SET_xix\n 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.\n 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\n of that code is identical or nearly identical for every parameter.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 69\n \n 3.9 Backlash and Screw Error Compensation\n + FIXME Backlash and Screw Error Compensation\n \n 3.10 Task controller (EMCTASK)\n@@ -1587,15 +1587,15 @@\n iocontrol main loop process:\n \u2014 registers for SIGTERM and SIGINT signals from the OS.\n \u2014 checks to see it HAL inputs have changed\n \u2014 checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status\n \u2014 checks for I/O related NML messages\n nml message numbers: from emc.hh:\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 69\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1643,15 +1643,15 @@\n to the data, and the size of the data.\n No memory for data storage is allocated.\n \n 3.16 SharedMemory\n Provides a block of shared memory along with a semaphore (inherited from the Semaphore class).\n Creation and destruction of the semaphore is handled by the SharedMemory constructor and destructor.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 69\n \n 3.17 ShmBuffer\n Class for passing NML messages between local processes using a shared memory buffer. Much of\n internal workings are inherited from the CMS class.\n \n@@ -1685,15 +1685,15 @@\n message buffer or just buffer). This buffer may exist as a shared memory block accessed by other\n CMS/NML processes, or a local and private buffer for data being transferred by network or serial\n interfaces.\n The buffer is dynamically allocated at run time to allow for greater flexibility of the CMS/NML subsystem. The buffer size must be large enough to accommodate the largest message, a small amount\n for internal use and allow for the message to be encoded if this option is chosen (encoded data will\n be covered later). The following figure is an internal view of the buffer space.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 69\n \n CMS buffer The CMS base class is primarily responsible for creating the communications pathways\n and interfacing to the operating system.\n \n 3.21 Configuration file format\n@@ -1711,15 +1711,15 @@\n \u2014 neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format,\n or raw.\n \u2014 RPC# - Obsolete - Place holder retained for backward compatibility only.\n \u2014 buffer# - A unique ID number used if a server controls multiple buffers.\n \u2014 max_procs - is the maximum processes allowed to connect to this buffer.\n \u2014 key - is a numerical identifier for a shared memory buffer\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 69\n \n 3.21.2 Type specific configs\n The buffer type implies additional configuration options whilst the host operating system precludes\n certain combinations. In an attempt to distill published documentation in to a coherent format, only\n the SHMEM buffer type will be covered.\n@@ -1753,15 +1753,15 @@\n \u2014 host - specifies where on the network this process is running.\n \u2014 ops - gives the process read only, write only, or read/write access to the buffer.\n \u2014 server - specifies if this process will running a server for this buffer.\n \u2014 timeout - sets the timeout characteristics for accesses to the buffer.\n \u2014 master - indicates if this process is responsible for creating and destroying the buffer.\n \u2014 c_num - an integer between zero and (max_procs -1)\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 69\n \n 3.21.4 Configuration Comments\n Some of the configuration combinations are invalid, whilst others imply certain constraints. On a\n Linux system, GLOBMEM is obsolete, whilst PHANTOM is only really useful in the testing stage of an\n application, likewise for FILEMEM. LOCMEM is of little use for a multi-process application, and only\n@@ -1799,15 +1799,15 @@\n Not to be confused with NMLmsg, RCS_STAT_MSG, or RCS_CMD_MSG.\n NML is responsible for parsing the config file, configuring the cms buffers and is the mechanism for\n routing messages to the correct buffer(s). To do this, NML creates several lists for:\n \u2014 cms buffers created or connected to.\n \u2014 processes and the buffers they connect to\n \u2014 a long list of format functions for each message type\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 69\n \n This last item is probably the nub of much of the malignment of libnml/rcslib and NML in general. Each\n message that is passed via NML requires a certain amount of information to be attached in addition to\n the actual data. To do this, several formatting functions are called in sequence to assemble fragments\n of the overall message. The format functions will include NML_TYPE, MSG_TYPE, in addition to the\n@@ -1846,15 +1846,15 @@\n is to be used.\n \n 3.23 Adding custom NML commands\n LinuxCNC is pretty awesome, but some parts need some tweaking. As you know communication is\n done through NML channels, the data sent through such a channel is one of the classes defined\n in emc.hh (implemented in emc.cc). If somebody needs a message type that doesn\u2019t exist, he should\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 69\n \n follow these steps to add a new one. (The Message I added in the example is called EMC_IO_GENERIC\n (inherits EMC_IO_CMD_MSG (inherits RCS_CMD_MSG)))\n 1. add the definition of the EMC_IO_GENERIC class to emc2/src/emc/nml_intf/emc.hh\n 2. add the type define: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605)\n@@ -1886,15 +1886,15 @@\n 3.24.1.2 Random Toolchangers\n Random toolchanger hardware swaps the tool in the spindle (if any) with the requested tool on tool\n change. Thus the pocket that a tool resides in changes as it is swapped in and out of the spindle.\n An example of random toolchanger hardware is a carousel toolchanger.\n When configured for a random toolchanger, LinuxCNC swaps the pocket number of the old and the\n new tool in the tool table file when tools are loaded. Internal to LinuxCNC, on tool change, the tool\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 69\n \n information is swapped between the tool table\u2019s source pocket and pocket 0 (which represents the\n spindle). So after a tool change, pocket 0 in the tool table has the tool information for the new tool,\n and the pocket that the new tool came from has the tool information for the old tool (the tool that was\n in the spindle before the tool change), if any.\n@@ -1931,15 +1931,15 @@\n \n 3.24.3 G-codes affectant les outils\n The G-codes that use or affect tool information are:\n 3.24.3.1 Txxx\n Tells the toolchanger hardware to prepare to switch to a specified tool xxx.\n Handled by Interp::convert_tool_select().\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 69\n \n 1. The machine is asked to prepare to switch to the selected tool by calling the Canon function\n SELECT_TOOL() with the tool number of the requested tool.\n a. (saicanon) No-op.\n b. (emccanon) Builds an EMC_TOOL_PREPARE message with the requested pocket number and\n@@ -1979,15 +1979,15 @@\n information from pocket 0 (spindle).\n 3.24.3.3 G43/G43.1/G49\n Apply tool length offset. G43 uses the TLO of the currently loaded tool, or of a specified tool if the\n H-word is given in the block. G43.1 gets TLO from axis-words in the block. G49 cancels the TLO (it\n uses 0 for the offset for all axes).\n Handled by Interp::convert_tool_length_offset().\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 69\n \n 1. It starts by building an EmcPose containing the 9-axis offsets to use. For G43.1, these tool offsets\n come from axis words in the current block. For G43 these offsets come from the current tool (the\n tool in pocket 0), or from the tool specified by the H-word in the block. For G49, the offsets are\n all 0.\n@@ -2027,15 +2027,15 @@\n spindle (by copying the information from interp\u2019s settings->tool_table to settings->parameters).\n (FIXME: this is a buglet, the params should only be updated if it was the current tool that was\n modified).\n 6. 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\u2019s pocket 0 as well, via a second\n call to SET_TOOL_TABLE_ENTRY(). (This second tool-table update is not needed on random toolchanger machines because there, tools don\u2019t have a home pocket and instead we just updated\n the tool in pocket 0 directly.)\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 69\n \n 3.24.3.5 M61\n Set current tool number. This switches LinuxCNC\u2019s internal representation of which tool is in the\n spindle, without actually moving the toolchanger or swapping any tools.\n Handled by Interp::convert_tool_change().\n@@ -2066,15 +2066,15 @@\n Tool number of the tool currently installed in the spindle. Exported on the HAL pin iocontrol.0.tool-n\n (s32).\n emcioStatus.tool.toolTable[]\n An array of CANON_TOOL_TABLE structures, CANON_POCKETS_MAX long. Loaded from the tool table\n file at startup and maintained there after. Index 0 is the spindle, indexes 1-(CANON_POCKETS_MAX1) are the pockets in the toolchanger. This is a complete copy of the tool information, maintained\n separately from Interp\u2019s settings.tool_table.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 69\n \n 3.24.4.2 interp\n \n settings is of type settings, defined as struct setup_struct in src/emc/rs274ngc/interp_internal.hh\n \n@@ -2119,15 +2119,15 @@\n performed.\n \n 3.25 Reckoning of joints and axes\n 3.25.1 In the status buffer\n The status buffer is used by Task and the UIs.\n FIXME: axis_mask and axes overspecify the number of axes\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 69\n \n status.motion.traj.axis_mask\n A bitmask with a \u201d1\u201d for the axes that are present and a \u201d0\u201d for the axes that are not present. X is\n bit 0 with value 20 = 1 if set, Y is bit 1 with value 21 = 2, Z is bit 2 with value 4, etc. For example,\n a machine with X and Z axes would have an axis_mask of 0x5, an XYZ machine would have 0x7,\n@@ -2151,15 +2151,15 @@\n 3.25.2 En mouvement\n The Motion controller realtime component first gets the number of joints from the num_joints loadtime parameter. This determines how many joints worth of HAL pins are created at startup.\n Motion\u2019s number of joints can be changed at runtime using the EMCMOT_SET_NUM_JOINTS command\n from Task.\n The Motion controller always operates on EMCMOT_MAX_AXIS axes. It always creates nine sets of axis.*.*\n pins.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Chapitre 4\n \n NML Messages\n List of NML messages.\n For details see src/emc/nml_intf/emc.hh.\n \n@@ -2191,15 +2191,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3 AXIS\n \n 37 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_AXIS_STAT_TYPE\n \n 4.4 JOG\n EMC_JOG_CONT_TYPE\n EMC_JOG_INCR_TYPE\n EMC_JOG_ABS_TYPE\n@@ -2245,15 +2245,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6 MOTION\n \n 38 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_MOTION_INIT_TYPE\n EMC_MOTION_HALT_TYPE\n EMC_MOTION_ABORT_TYPE\n EMC_MOTION_SET_AOUT_TYPE\n EMC_MOTION_SET_DOUT_TYPE\n EMC_MOTION_ADAPTIVE_TYPE\n@@ -2299,15 +2299,15 @@\n EMC_AUX_ESTOP_OFF_TYPE\n EMC_AUX_ESTOP_RESET_TYPE\n EMC_AUX_INPUT_WAIT_TYPE\n EMC_AUX_STAT_TYPE\n \n 39 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4.10 SPINDLE\n EMC_SPINDLE_ON_TYPE\n EMC_SPINDLE_OFF_TYPE\n EMC_SPINDLE_INCREASE_TYPE\n EMC_SPINDLE_DECREASE_TYPE\n EMC_SPINDLE_CONSTANT_TYPE\n@@ -2346,15 +2346,15 @@\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 40 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 69\n \n Chapitre 5\n \n Coding Style\n This chapter describes the source code style preferred by the LinuxCNC team.\n@@ -2379,15 +2379,15 @@\n if (x) {\n // do something appropriate\n }\n \n The closing brace is on a line of its own, except in the cases where it is followed by a continuation of\n the same statement, i.e. a while in a do-statement or an else in an if-statement, like this:\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 69\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2430,15 +2430,15 @@\n function.\n However, if you have a complex function, and you suspect that a less-than-gifted first-year high-school\n student might not even understand what the function is all about, you should adhere to the maximum\n limits all the more closely. Use helper functions with descriptive names (you can ask the compiler to\n in-line them if you think it\u2019s performance-critical, and it will probably do a better job of it that you\n would have done).\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 69\n \n Another measure of the function is the number of local variables. They shouldn\u2019t exceed 5-10, or\n you\u2019re doing something wrong. Re-think the function, and split it into smaller pieces. A human brain\n can generally easily keep track of about 7 different things, anything more and it gets confused. You\n know you\u2019re brilliant, but maybe you\u2019d like to understand what you did 2 weeks from now.\n@@ -2476,15 +2476,15 @@\n class name. Rationale: Maintains a common style across C and C++ sources, e.g., get_foo_bar().\n However, boolean methods are easier to read if they avoid underscores and use an is prefix (not to be\n confused with methods that manipulate a boolean). Rationale: Identifies the return value as TRUE or\n FALSE and nothing else, e.g., isOpen, isHomed.\n Do NOT use Not in a boolean name, it leads only leads to confusion when doing logical tests, e.g.,\n isNotOnLimit or is_not_on_limit are BAD.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 69\n \n Variable names should avoid the use of upper case and underscores except for local or private names.\n The use of global variables should be avoided as much as possible. Rationale: Clarifies which are\n variables and which are methods. Public: e.g., axislimit Private: e.g., maxvelocity_ .\n \n@@ -2519,24 +2519,24 @@\n File names: C++ sources and headers use .cc and .hh extension. The use of .c and .h are reserved for\n plain C. Headers are for class, method, and structure declarations, not code (unless the functions are\n declared inline).\n \n 5.10 Python coding standards\n Use the PEP 8 style for Python code.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 69\n \n 5.11 Comp coding standards\n In the declaration portion of a .comp file, begin each declaration at the first column. Insert extra blank\n lines when they help group related items.\n In the code portion of a .comp file, follow normal C coding style.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 69\n \n Chapitre 6\n \n Building LinuxCNC\n 6.1 Introduction\n@@ -2565,15 +2565,15 @@\n \n This might fail too! Read this whole document, but especially the section on Setting up the test environment.\n \n 6.2 Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 69\n \n We continuously test on the platforms listed at http://buildbot.linuxcnc.org.\n LinuxCNC builds on most other Linux distributions, though dependency management will be more\n manual and less automatic. Patches to improve portability to new platforms are always welcome.\n \n@@ -2606,15 +2606,15 @@\n within the build directory. Nothing is installed outside the build directory.\n This is quick and easy, and suitable for rapid iteration of changes.\n The LinuxCNC test suite runs only in a Run-In-Place build.\n Most LinuxCNC developers primarily build using this mode.\n Building for Run-In-Place follows the steps in the Quick Start section at the top of this document,\n possibly with different arguments to src/configure and make.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 69\n \n 6.3.1.1 src/configure arguments\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments.\n List all arguments to src/configure by running this:\n@@ -2655,15 +2655,15 @@\n in a Debian package, complete with dependency information. This takes more time, and the programs\n can\u2019t be used until the Debian package is installed on a target machine.\n This build mode is primarily useful when packaging the software for delivery to end users, and when\n building the software for a machine that doesn\u2019t have the build environment installed, or that doesn\u2019t\n have internet access.\n Building Debian packages requires the dpkg-buildpackage tool, from the dpkg-dev package:\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 69\n \n $ sudo apt-get install dpkg-dev\n \n Building Debian packages also requires that all build dependencies are installed, as described in the\n section Satisfying Build Dependencies.\n@@ -2704,15 +2704,15 @@\n Configure the Debian package for the currently running RTAI kernel. You must be running an\n RTAI kernel on your build machine for this to work!\n $KERNEL_VERSION\n Configure the debian package for the specified RTAI kernel version (for example \u201d3.4.9-rtai-686pae\u201d). The matching kernel headers debian package must be installed on your build machine (for\n example \u201dlinux-headers-3.4.9-rtai-686-pae\u201d). 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,\n including the test suite.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 69\n \n 6.4 Satisfying Build Dependencies\n 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\n LinuxCNC. You can use this meta-data to easily list the required packages missing from your build\n system.\n@@ -2751,15 +2751,15 @@\n on locked memory:\n RTAPI: ERROR: failed to map shmem\n RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB.\n \n 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\n the following line:\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 69\n \n * - memlock 20480\n \n Log out and log back in to make the changes take effect. Verify that the memory lock limit is raised\n using the following command:\n@@ -2775,15 +2775,15 @@\n at github, and use that to track and publish your changes.\n After creating your own github fork of LinuxCNC, clone it to your development machine and proceed\n with your hacking as usual.\n We of the LinuxCNC project hope that you will share your changes with us, so that the community can\n benefit from your work. Github makes this sharing very easy: after you polish your changes and push\n them to your github fork, send us a Pull Request.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 69\n \n Chapitre 7\n \n Adding Configuration Selection Items\n Example Configurations can be added to the Configuration Selector by two methods:\n@@ -2794,15 +2794,15 @@\n \n \u2014 Runtime settings \u2014 the configuration selector can also offer configuration subdirectories specified\n at runtime using an exported environamental variable (LINUXCNC_AUX_CONFIGS). This variable\n should be a path list of one or more configuration directories separated by a (:). Typically, this\n variable would be set in a shell starting linuxcnc or in a user\u2019s ~/.profile startup script. Example:\n export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 69\n \n Chapitre 8\n \n Contribuer \u00e0 LinuxCNC\n 8.1 Introduction\n@@ -2823,15 +2823,15 @@\n All of the LinuxCNC source is maintained in the Git revision control system.\n \n 8.4.1 Repo Git officiel de LinuxCNC\n The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/\n Anyone can get a read-only copy of the LinuxCNC source tree via git:\n git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 69\n \n If you are a developer with push access, then follow github\u2019s instructions for setting up a repository\n that you can push from.\n Note that the clone command put the local LinuxCNC repo in a directory called linuxcnc-dev, instead\n of the default linuxcnc. This is because the LinuxCNC software by default expects configs and G-code\n@@ -2869,15 +2869,15 @@\n \u2014 Clone the git repo\n \u2014 Make your changes in a local branch, making sure you \u201dsign off\u201d your commits according to our\n signed-off-by policy (see below).\n \u2014 Adding documentation and tests is an important part of adding a new feature. Otherwise, others\n won\u2019t know how to use your feature, and if other changes break your feature it can go unnoticed\n without a test.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 55 / 69\n \n \u2014 Share your changes with the other project developers in one of these ways:\n \u2014 Push your branch to github and create a github pull request to https://github.com/linuxcnc/linuxcnc (this requires a github account)\n \u2014 Push your branch to a publicly visible git repo (such as github, bitbucket, your own publiclyaccessible server, etc) and share that location on the emc-developers mailing list, or\n \u2014 Email your commits to the LinuxCNC-developers mailing list (emc-developers@lists.sourceforge.net)\n@@ -2906,15 +2906,15 @@\n Use the first line as a summary of the intent of the change (almost like the subject line of an e-mail).\n Follow it with a blank line, then a longer message explaining the change. Example:\n \n 8.7.3 Commit to the proper branch\n Bugfixes should go on the oldest applicable branch. New features should go in the master branch. If\n you\u2019re not sure where a change belongs, ask on irc or on the mailing list.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 69\n \n 8.7.4 Use multiple commits to organize changes\n When appropriate, organize your changes into a branch (a series of commits) where each commit\n is a logical step towards your ultimate goal. For example, first factor out some complex code into a\n new function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new\n@@ -2955,15 +2955,15 @@\n While the branch HEAD will build, not every commit might build in such a case. That breaks git\n bisect - something somebody else might use later on to find the commit which introduced a bug. So\n beyond making sure your branch builds, it is important to assure every single commit builds as well.\n \n There\u2019s an automatic way to check a branch for each commit being buildable - see https://dustin.sallings.org/2010/03/28/git-test-sequence.html and the code at https://github.com/dustin/bindir/blob/master/gittest-sequence. Use as follows (in this case testing every commit from origin/master to HEAD, including\n running regression tests):\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n 57 / 69\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n@@ -2994,15 +2994,15 @@\n 8.9 Other ways to contribute\n There are many ways to contribute to LinuxCNC, that are not addressed by this document. These ways\n include:\n \u2014 Answering questions on the forum, mailing lists, and in IRC\n \u2014 Reporting bugs on the bug tracker, forum, mailing lists, or in IRC\n \u2014 Helping test experimental features\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 58 / 69\n \n Chapitre 9\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -3039,15 +3039,15 @@\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 69\n \n Ball Nut\n A special nut designed for use with a ball-screw. It contains an internal passage to re-circulate\n the balls from one end of the screw to the other.\n CNC\n@@ -3093,15 +3093,15 @@\n real-time program and directly controls the motors.\n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n Relatively slow, controlled motion of the tool used when making a cut.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 60 / 69\n \n Feed rate\n The speed at which a cutting motion occurs. In auto or MDI mode, feed rate is commanded using\n an F word. F10 would mean ten machine units per minute.\n Feedback\n@@ -3146,15 +3146,15 @@\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n are two types of kinematics. Forward kinematics is used to calculate world coordinates from joint\n coordinates. Inverse kinematics is used for exactly the opposite purpose. Note that kinematics\n does not take into account, the forces, moments etc. on the machine. It is for positioning only.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 61 / 69\n \n Lead-screw\n An screw that is rotated by a motor to move a table or other part of a machine. Lead-screws are\n usually either ball-screws or acme screws, although conventional triangular threaded screws\n may be used where accuracy and long life are not as important as low cost.\n@@ -3204,15 +3204,15 @@\n RTLINUX\n See https://en.wikipedia.org/wiki/RTLinux, an older real-time extension for Linux that LinuxCNC\n used to use to achieve real-time performance. Obsolete, replaced by RTAI.\n RTAPI\n A portable interface to real-time operating systems including RTAI and POSIX pthreads with\n realtime extensions.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 69\n \n RS-274/NGC\n The formal name for the language used by LinuxCNC part programs.\n Servo Motor\n 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.\n@@ -3248,15 +3248,15 @@\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 69\n \n Chapitre 10\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -3282,15 +3282,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 64 / 69\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any such\n manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -3339,15 +3339,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover\n must present the full title with all words of the title equally prominent and visible. You may add other\n material on the covers in addition. Copying with changes limited to the covers, as long as they preserve\n the title of the Document and satisfy these conditions, can be treated as verbatim copying in other\n respects.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 69\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access\n@@ -3393,15 +3393,15 @@\n N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any Invariant\n Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 69\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -3442,15 +3442,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of this\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 69\n \n License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English\n version will prevail.\n 9. TERMINATION\n You may not copy, modify, sublicense, or distribute the Document except as expressly provided for\n@@ -3477,15 +3477,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples\n in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Chapitre 11\n \n Index\n A\n acme screw, 58\n axis, 58\n@@ -3559,15 +3559,15 @@\n RTLINUX, 61\n S\n servo motor, 62\n Signed Integer, 62\n \n 68 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fManuel du d\u00e9veloppeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n spindle, 62\n stepper motor, 62\n T\n TASK, 62\n Tk, 62\n Traverse Move, 62\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n LinuxCNC\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Table des mati\u00e8res\n \n I Getting Started & Configuration\n \n@@ -118,15 +118,15 @@\n \n 7\n \n 1.3.3 Testing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 1.3.4 Installing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 8\n \n@@ -282,15 +282,15 @@\n \n 26\n \n 1.5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 26\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 1.5.6.1 halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 26\n \n@@ -448,15 +448,15 @@\n \n 36\n \n 1.5.14.7Configs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 36\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 1.5.15Changes after 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 36\n \n@@ -618,15 +618,15 @@\n \n 2.3.1 Trajectory Control\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2.3.1.1 Trajectory Planning\n \n vi\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n@@ -786,15 +786,15 @@\n \n 65\n \n 2.5.2.12Tool Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 65\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vii\n \n 2.5.2.13Pallet Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 65\n \n@@ -950,15 +950,15 @@\n \n 80\n \n 2.7.7.3 Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . .\n \n 81\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n viii\n \n 2.7.7.4 Example HAL Code for Hypersensing . . . . . . . . . . . . . . . . . . . . . . .\n \n 82\n \n@@ -1112,15 +1112,15 @@\n \n 98\n \n 3.1.6 Parallel Port 2 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 99\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ix\n \n 3.1.7 Axis Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100\n 3.1.7.1 Finding Maximum Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102\n 3.1.7.2 Finding Maximum Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . 102\n 3.1.8 Spindle Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103\n@@ -1167,15 +1167,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n \n 4.1.3.1 Base Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n 4.1.3.2 Step Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138\n 4.1.4 Servo Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138\n 4.1.4.1 Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n x\n \n 4.1.4.2 Proportional term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139\n 4.1.4.3 Integral term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140\n 4.1.4.4 Derivative term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140\n 4.1.4.5 Loop tuning\n@@ -1238,15 +1238,15 @@\n 4.4.2.6 [TASK] Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159\n \n 4.4.2.7 [HAL] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159\n 4.4.2.8 [HALUI] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xi\n \n 4.4.2.9 [APPLICATIONS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160\n 4.4.2.10[TRAJ] Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161\n@@ -1299,15 +1299,15 @@\n 4.6.4 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183\n 4.6.5 Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183\n 4.7 Lathe Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184\n 4.7.1 Default Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184\n 4.7.2 INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184\n 4.8 Stepper Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xii\n \n 4.8.1 Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185\n 4.8.4 Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185\n@@ -1354,15 +1354,15 @@\n 5.1.1.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196\n 5.1.1.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196\n 5.1.1.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196\n 5.1.2 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.3 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199\n 5.1.4 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiii\n \n 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n@@ -1422,15 +1422,15 @@\n \n 5.4.2.2 Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214\n 5.4.2.3 The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214\n 5.4.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214\n 5.4.3.1 Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214\n 5.4.3.2 Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xiv\n \n 5.4.3.3 Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.4 Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217\n@@ -1478,15 +1478,15 @@\n 5.6.2 Broche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246\n 5.6.2.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246\n 5.6.3 Axis and Joint Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248\n 5.6.4 iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248\n 5.6.4.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248\n 5.6.5 INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xv\n \n 5.6.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249\n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.7.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.7.1.1 User Interfaces (Userspace)\n@@ -1530,15 +1530,15 @@\n 5.8.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273\n 5.8.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273\n 5.8.5.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273\n 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274\n 5.8.6.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvi\n \n 5.8.6.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274\n 5.8.7 Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n 5.8.7.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n 5.8.7.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n@@ -1586,15 +1586,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288\n \n 5.9.16Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289\n 5.10HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289\n 5.10.1Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289\n 5.10.2Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xvii\n \n 5.10.3Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290\n 5.10.4Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291\n 5.10.5Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291\n 5.10.6Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n@@ -1653,15 +1653,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n \n 5.11.6.22\n stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.11.6.23\n stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xviii\n \n 5.11.6.24\n set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.11.7Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298\n 5.11.8System Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299\n@@ -1700,15 +1700,15 @@\n 5.13.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305\n 5.13.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.5Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.6Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.7HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xix\n \n 6 Hardware Drivers\n \n 312\n \n@@ -1750,15 +1750,15 @@\n 6.3.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 6.3.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 6.3.6 Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332\n 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xx\n \n 6.3.6.4 Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n 6.3.6.5 Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n 6.3.7 RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333\n 6.3.7.1 Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334\n@@ -1797,15 +1797,15 @@\n 6.5.13.3Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347\n 6.5.14PWMGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348\n 6.5.14.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348\n 6.5.14.2Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348\n 6.5.14.3Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348\n 6.5.15Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxi\n \n 6.5.15.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349\n 6.5.15.2Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349\n 6.5.165I25 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350\n 6.5.16.1Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350\n@@ -1847,15 +1847,15 @@\n 6.8.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363\n 6.8.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364\n 6.8.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364\n 6.9 Opto22 Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364\n 6.9.1 The Adapter Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364\n 6.9.2 The Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxii\n \n 6.9.3 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365\n 6.9.4 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365\n 6.9.5 FUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365\n 6.9.6 Configuring I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366\n@@ -1897,15 +1897,15 @@\n 6.12.3Reference: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377\n 6.13Servo To Go Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n 6.13.1Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n 6.13.2Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378\n 6.13.3Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379\n 6.13.4Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiii\n \n 6.14Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379\n 6.14.1Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379\n 6.14.2Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380\n 6.14.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380\n@@ -1945,15 +1945,15 @@\n 8.1 ClassicLadder Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394\n 8.1.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394\n 8.1.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394\n 8.1.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n 8.1.4 Basic Latching On-Off Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395\n 8.2 ClassicLadder Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxiv\n \n 8.2.1 Ladder Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396\n 8.2.2 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397\n 8.2.3 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397\n 8.2.3.1 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397\n@@ -2004,15 +2004,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430\n \n 8.3.2 Reject Extra Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431\n 8.3.3 External E-Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432\n 8.3.4 Timer/Operate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxv\n \n 9 Sujets avanc\u00e9s\n \n 437\n \n@@ -2054,15 +2054,15 @@\n 9.3.8 Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479\n 9.3.9 REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481\n 9.4 Switchable Kinematics (switchkins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481\n 9.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481\n 9.4.2 Switchable Kinematic Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482\n 9.4.2.1 Identity letter assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvi\n \n 9.4.2.2 Backwards compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483\n 9.4.3 HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483\n 9.4.3.1 HAL Pin Summary\n \n@@ -2121,15 +2121,15 @@\n . 499\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 500\n \n 9.6.5.4 Configuring iocontrol with a remapped M6 . . . . . . . . . . . . . . . . . . 502\n 9.6.5.5 Writing the change and prepare O-word procedures . . . . . . . . . . . . . . 502\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxvii\n \n 9.6.5.6 Making minimal changes to the built in codes, including M6 . . . . . . . . . 503\n 9.6.5.7 Specifying the T (prepare) replacement . . . . . . . . . . . . . . . . . . . . . 503\n 9.6.5.8 Error handling: dealing with abort . . . . . . . . . . . . . . . . . . . . . . . . . 504\n 9.6.5.9 Error handling: failing a remapped code NGC procedure . . . . . . . . . . . 506\n@@ -2171,15 +2171,15 @@\n 9.6.14Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520\n 9.6.14.1Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 520\n 9.6.14.2Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 520\n 9.6.14.3Currently unallocated M-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . 523\n 9.6.14.4readahead time and execution time . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.6.14.5plugin/pickle hack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxviii\n \n 9.6.14.6Module, methods, classes, etc reference . . . . . . . . . . . . . . . . . . . . . 524\n 9.6.15Introduction: Extending Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.6.15.1Why would you want to change Task Execution? . . . . . . . . . . . . . . . . 524\n 9.6.15.2A diagram: task, interp, iocontrol, UI (??) . . . . . . . . . . . . . . . . . . 524\n@@ -2225,15 +2225,15 @@\n 9.9.2.1 Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536\n 9.9.2.2 Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536\n 9.9.3 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536\n 9.9.3.1 Offset Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536\n 9.9.3.2 Machine-off/Machine-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536\n 9.9.3.3 Soft Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxix\n \n 9.9.3.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537\n 9.9.3.5 Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537\n 9.9.4 Related HAL Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538\n 9.9.4.1 eoffset_per_angle.comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538\n@@ -2287,15 +2287,15 @@\n 10.1.3.6MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555\n 10.1.3.7Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556\n 10.1.3.8Spindle Speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556\n 10.1.3.9Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556\n 10.1.3.10\n Max Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxx\n \n 10.1.4Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557\n 10.1.4.1Feed Override Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557\n 10.1.5Show LinuxCNC Status (linuxcnctop) . . . . . . . . . . . . . . . . . . . . . . . . . . . 558\n 10.1.6MDI interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559\n@@ -2369,15 +2369,15 @@\n 10.1.14.15\n Change a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573\n 10.1.14.16\n Redirect an existing command . . . . . . . . . . . . . . . . . . . . . . . . . . . 574\n 10.1.14.17\n Change the DRO color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxi\n \n 10.1.14.18\n Change the Toolbar Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574\n 10.1.14.19\n Change Plotter Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575\n@@ -2417,15 +2417,15 @@\n 10.2.7.1Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599\n 10.2.7.2Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603\n 10.2.7.3Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606\n 10.2.8Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607\n 10.2.8.1Custom Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608\n 10.2.8.2Symbolic Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxii\n \n 10.2.9Lathe Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n 10.2.10\n Plasma Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612\n 10.2.11\n@@ -2481,15 +2481,15 @@\n 10.4.6INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630\n 10.4.7User Dialog Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631\n 10.4.7.1Copy the Stock Handler/Glade File For Modification . . . . . . . . . . . . . . 632\n 10.5QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632\n 10.5.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632\n 10.5.1.1QtDragon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiii\n \n 10.5.1.2QtDragon_hd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634\n 10.5.2Getting Started - The INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634\n 10.5.2.1Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634\n 10.5.2.2Preferences\n@@ -2549,15 +2549,15 @@\n 10.5.14.5\n Needed HAL Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651\n 10.5.15\n Run from Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652\n 10.5.16\n Laser buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxiv\n \n 10.5.17\n Tabs Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652\n 10.5.17.1\n Main tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652\n@@ -2613,15 +2613,15 @@\n 10.6.6.2Gcode-meta-compiler (.gcmc) file requirements . . . . . . . . . . . . . . . . . 671\n 10.6.7DB25 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672\n 10.6.8Creating a subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674\n 10.7TkLinuxCNC GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675\n 10.7.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675\n 10.7.2Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxv\n \n 10.7.2.1A typical session with TkLinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . 675\n 10.7.3Elements of the TkLinuxCNC window . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676\n 10.7.3.1Main buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676\n 10.7.3.2Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676\n@@ -2660,15 +2660,15 @@\n 10.8.7.3Contact Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699\n 10.8.7.4Desktop Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700\n 10.8.7.5QtPlasmaC Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701\n 10.8.7.6INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701\n 10.8.8QtPlasmaC GUI Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703\n 10.8.8.1Exiting QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvi\n \n 10.8.8.2MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703\n 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710\n 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710\n 10.8.8.5PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711\n@@ -2730,15 +2730,15 @@\n 10.8.9.30\n Ignore Arc OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742\n 10.8.9.31\n Cut Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743\n 10.8.9.32\n Run From Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxvii\n \n 10.8.9.33\n Scribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745\n 10.8.9.34\n Spotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n@@ -2816,15 +2816,15 @@\n 10.8.15.10\n Max Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773\n 10.8.15.11\n Enable Tabs During Automated Motion . . . . . . . . . . . . . . . . . . . . . . 773\n 10.8.15.12\n Override Jog Inhibit Via Z+ Jog . . . . . . . . . . . . . . . . . . . . . . . . . . . 773\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxviii\n \n 10.8.15.13\n QtPlasmaC State Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773\n 10.8.15.14\n QtPlasmaC Debug Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774\n@@ -2890,15 +2890,15 @@\n \n 11.1.4Local and Global Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794\n 11.1.4.1The G52 command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794\n 11.1.5G92 Axes Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795\n 11.1.5.1The G92 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795\n 11.1.5.2Setting G92 Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xxxix\n \n 11.1.5.3G92 Persistence Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796\n 11.1.5.4G92 and G52 Interaction Cautions . . . . . . . . . . . . . . . . . . . . . . . . . 797\n 11.1.6Sample Programs Using Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797\n 11.1.6.1Sample Program Using Workpiece Coordinate Offsets . . . . . . . . . . . . . 797\n@@ -2943,15 +2943,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821\n \n 11.4.6Binary Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821\n 11.4.7Equality and floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n 11.4.8Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xl\n \n 11.4.9Repeated Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823\n 11.4.10\n Item order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823\n 11.4.11\n@@ -3019,15 +3019,15 @@\n 11.5.14\n G10 L2 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843\n 11.5.15\n G10 L10 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845\n 11.5.16\n G10 L11 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xli\n \n 11.5.17\n G10 L20 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846\n 11.5.18\n G17 - G19.1 Plane Select\n@@ -3117,15 +3117,15 @@\n 11.5.46\n G82 Drilling Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n 11.5.47\n G83 Peck Drilling Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n 11.5.48\n G84 Right-hand Tapping Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11.5.49\n G85 Boring Cycle, Feed Out\n \n xlii\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871\n@@ -3206,15 +3206,15 @@\n 11.6.21\n M72 Restore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884\n 11.6.22\n M73 Save and Autorestore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . 884\n 11.6.23\n M98 and M99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliii\n \n 11.6.23.1\n Selectively Restoring Modal State . . . . . . . . . . . . . . . . . . . . . . . . . 885\n 11.6.24\n M100-M199 User Defined Commands\n@@ -3277,15 +3277,15 @@\n 11.10.4.2\n Invert Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900\n 11.10.4.3\n Normalize Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900\n 11.10.4.4\n Expand Image Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xliv\n \n 11.10.4.5\n Tolerance (units)\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900\n@@ -3356,15 +3356,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921\n \n 12.1.6.10\n Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923\n 12.2PyVCP Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlv\n \n 12.2.1AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928\n 12.2.2Floating Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928\n 12.2.3Jog Buttons Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929\n 12.2.3.1Create the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930\n@@ -3416,15 +3416,15 @@\n 12.3.6.10\n Speed Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955\n 12.3.6.11\n Label\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvi\n \n 12.3.6.12\n Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958\n 12.3.6.13\n LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959\n@@ -3488,15 +3488,15 @@\n 12.3.8.9Persistent variables in GladeVCP\n \n . . . . . . . . . . . . . . . . . . . . . . . . . 989\n \n 12.3.8.10\n Using persistent variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlvii\n \n 12.3.8.11\n Saving the state on GladeVCP shutdown . . . . . . . . . . . . . . . . . . . . . 990\n 12.3.8.12\n Saving state when Ctrl-C is pressed . . . . . . . . . . . . . . . . . . . . . . . . 990\n@@ -3557,15 +3557,15 @@\n 12.5.5Handler File In Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019\n 12.5.5.1Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020\n 12.5.5.2IMPORT Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023\n 12.5.5.3INSTANTIATE LIBRARIES Section\n \n . . . . . . . . . . . . . . . . . . . . . . . . 1023\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlviii\n \n 12.5.5.4HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023\n 12.5.5.5INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023\n 12.5.5.6SPECIAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024\n 12.5.5.7STATUS CALLBACKS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024\n@@ -3606,15 +3606,15 @@\n 12.7.1.2Slider - HAL Pin Value Adjusting Widget . . . . . . . . . . . . . . . . . . . . 1041\n 12.7.1.3LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042\n 12.7.1.4CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042\n 12.7.1.5RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042\n 12.7.1.6Gauge - Round Dial Gauge Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1043\n 12.7.1.7HALPad - HAL Buttons Joypad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xlix\n \n 12.7.1.8PushButton - HAL Pin Toggle Widget . . . . . . . . . . . . . . . . . . . . . . . 1046\n 12.7.1.9focusOverlay - Focus Overlay Widget . . . . . . . . . . . . . . . . . . . . . . 1046\n 12.7.1.10\n gridLayout - Grid Layout Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1047\n@@ -3683,15 +3683,15 @@\n 12.7.2.27\n JointEnableWidget - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076\n 12.7.2.28\n StatusImageSwitcher - Controller Status Image Switching Widget . . . . 1077\n 12.7.2.29\n FileManager - File Loading Selector Widget . . . . . . . . . . . . . . . . . . . 1077\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n l\n \n 12.7.2.30\n RadioAxisSelector - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078\n 12.7.2.31\n ToolOffsetView - Tools Offsets View And Edit Widget\n@@ -3737,15 +3737,15 @@\n 12.8.1.2Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098\n 12.8.2Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098\n 12.8.2.1Available data and defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098\n 12.8.2.2User message dialog info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099\n 12.8.2.3Embedded program info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099\n 12.8.2.4Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n li\n \n 12.8.2.5Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100\n 12.8.3Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100\n 12.8.3.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100\n 12.8.3.2Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100\n@@ -3808,15 +3808,15 @@\n Primitives Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113\n 12.8.15.3\n Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.8.15.4\n More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.9QtVismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lii\n \n 12.9.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.9.2Hierarchy of Machine Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.9.3Start the script\n \n@@ -3883,15 +3883,15 @@\n 12.10.7.2\n SystemToolbutton Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135\n 12.10.7.3\n Making a plugin with a MenuEntry dialog box . . . . . . . . . . . . . . . . . 1136\n 12.11\n QtVCP Handler File Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liii\n \n 12.11.1\n Preference File Loading/Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138\n 12.11.2\n Use QSettings To Read/Save Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139\n@@ -3967,15 +3967,15 @@\n \n 13.1Panelui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157\n 13.1.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157\n 13.1.2Loading Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157\n 13.1.3panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158\n 13.1.4Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n liv\n \n 13.1.5ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162\n 13.1.6Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162\n 13.2Filter Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163\n 13.2.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163\n@@ -4041,15 +4041,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175\n \n 13.5.1The linuxcnc Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175\n 13.5.2Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1175\n 13.5.3Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175\n 13.5.3.1linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n lv\n \n 13.5.3.2The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180\n 13.5.3.3The joint dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181\n 13.5.4The spindle dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182\n 13.5.5Preparing to send commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182\n@@ -4102,15 +4102,15 @@\n \n 1211\n \n 16.1Legal Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211\n 16.1.1Copyright Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211\n 16.1.2GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 Histoire de LinuxCNC\n \n lvi\n \n 1216\n \n@@ -4118,23 +4118,23 @@\n 17.1.1Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217\n 17.1.2Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217\n \n 18 Index\n \n 1218\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 1224\n \n Premi\u00e8re partie\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 1224\n \n Chapitre 1\n \n Getting Started with LinuxCNC\n 1.1 About LinuxCNC\n@@ -4166,15 +4166,15 @@\n a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed\n override, and constant velocity control.\n \u2014 Support for non-Cartesian motion systems is provided via custom kinematics modules. Available\n architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary\n joints to provide motion such as PUMA or SCARA robots.\n \u2014 LinuxCNC runs on Linux using real time extensions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 1224\n \n 1.1.2 The Operating System\n LinuxCNC is available as ready-to-use packages for the Ubuntu and Debian distributions.\n \n 1.1.3 Getting Help\n@@ -4210,15 +4210,15 @@\n This is quite active but the demographic is more user-biased than the mailing list. If you want to be\n sure that your message is seen by the developers then the mailing list is to be preferred.\n 1.1.3.4 LinuxCNC Wiki\n A Wiki site is a user maintained web site that anyone can add to or edit.\n \n The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 1224\n \n 1.1.3.5 Bug Reports\n Report bugs to the LinuxCNC github bug tracker.\n \n 1.2 System Requirements\n@@ -4252,15 +4252,15 @@\n uname -a\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC\n version to install.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 1224\n \n 1.2.2.1 Preempt-RT with linuxcnc-uspace package\n Preempt-RT is the newest of the realtime systems, and is also the version that is closest to a mainline\n kernel. Preempt-RT kernels are available as precompiled packages from the main repositories. The\n search term \u201dPREEMPT_RT\u201d will find them, and one can be downloaded and installed just like any\n@@ -4294,15 +4294,15 @@\n There are also Alternate Install Methods for the adventurous. If you have an existing install that you\n want to upgrade, go to the Updating LinuxCNC section instead.\n Note\n LinuxCNC requires a special kernel with real-time extensions. There are three possibilities here:\n preempt-rt, RTAI or Xenomai. In addition there are two versions of LinuxCNC which work with these\n kernels. See the table below for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 1224\n \n Fresh installs of LinuxCNC are most easily created using the Live/Install Image. This is a hybrid ISO\n filesystem image that can be written to a USB storage device or a DVD and used to boot a computer. At\n boot time you will be given a choice of booting the \u201dLive\u201d system (to run LinuxCNC without making any\n permanent changes to your computer) or booting the Installer (to install LinuxCNC and its operating\n@@ -4340,15 +4340,15 @@\n ou\n zsync https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip.zsync\n \n zsync in Windows There is a Windows port of zsync. It works as a console application. It can be\n downloaded from:\n https://www.assembla.com/spaces/zsync-windows/documents\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 1224\n \n 1.3.1.3 Verify the image\n (This step is unnecessary if you used zsync)\n 1. After downloading, verify the checksum of the image to ensure integrity.\n md5sum linuxcnc-2.8.4-buster.iso\n@@ -4391,15 +4391,15 @@\n \n 5. Note that this may take a long time to complete and there will be no feedback during the process.\n Writing the image to a DVD in Linux\n 1. Insert a blank DVD into your burner. A CD/DVD Creator or Choose Disc Type window will pop\n up. Close this, as we will not be using it.\n 2. Browse to the downloaded image in the file browser.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 1224\n \n 3. Right click on the ISO image file and choose Write to Disc.\n 4. Select the write speed. It is recommended that you write at the lowest possible speed.\n 5. Start the burning process.\n 6. If a choose a file name for the disc image window pops up, just pick OK.\n@@ -4438,15 +4438,15 @@\n With the normal install the Update Manager will notify you of updates to LinuxCNC when you go on\n line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything\n except the operating system when asked to.\n AVERTISSEMENT\n Do not upgrade the operating system if prompted to do so. You should accept OS updates\n however, especially security updates.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 1224\n \n 1.3.6 Install Problems\n In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot\n recognize the hard drive during the boot up.\n \n@@ -4549,15 +4549,15 @@\n \u2014 Debian Wheezy: deb https://linuxcnc.org wheezy base\n \u2014 Ubuntu Precise: deb https://linuxcnc.org precise base\n Note\n Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is\n strongly advised not to use either for a new install, and to seriously consider upgrading an existing\n installation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 1224\n \n The Buster / RTAI package is only available on amd64, but there are very few surviving systems that\n can not run a 64-bit OS.\n AVERTISSEMENT\n There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The\n@@ -4597,15 +4597,15 @@\n system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels\n need not be deleted, but grub boot configuration changes will be needed beyond the scope of\n this document.\n 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n Alternate keyserver: keyserver.ubuntu.com\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 1224\n \n 6. Add the apt repository:\n echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee -a /etc/apt/sources \u2190.list.d/linuxcnc.list\n echo deb-src https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee -a /etc/apt/ \u2190sources.list.d/linuxcnc.list\n \n@@ -4644,15 +4644,15 @@\n sudo apt-get install rtai-modules-4.19.195\n \n 7. Install LinuxCNC (may be necessary to reboot before installing)\n sudo apt-get install linuxcnc\n \n Reboot the machine, ensuring that the system boots from the new 4.19.195-rtai kernel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 1224\n \n 1.3.7.3 Installing on Raspbian 10\n 1. Download a stock Raspbian image to an SD card and install in the usual way.\n 2. Boot the Pi and open a terminal.\n 3. Add the LinuxCNC Archive Signing Key to your apt keyring.\n@@ -4699,15 +4699,15 @@\n 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name\n is 3.4-9-rtai-686-pae.\n uname -r\n \n 9. Run\n sudo apt-get install linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 1224\n \n 1.4 Running LinuxCNC\n 1.4.1 Invoking LinuxCNC\n After installation, LinuxCNC starts just like any other Linux program: run it from the terminal by\n issuing the command linuxcnc, or select it in the Applications -> CNC menu.\n@@ -4747,15 +4747,15 @@\n The by_interface configurations are organized around common, supported interfaces like:\n \u2014 general mechatronics\n \u2014 mesa\n \u2014 parport\n \u2014 pico\n \u2014 pluto\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 1224\n \n \u2014 servotogo\n \u2014 vigilant\n \u2014 vitalsystems\n Related hardware may be required to use these configurations as starting points for a system.\n@@ -4780,15 +4780,15 @@\n \u2014 parport - Applications to test parport.\n \u2014 pyvcp - Example pyvcp applications.\n \u2014 xhc-hb04 - Applications to test an xhc-hb04 USB wireless MPG\n Note\n Under the Apps directory, only applications that are usefully modified by the user are offered for\n copying to the user\u2019s directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 1224\n \n Figure 1.1 \u2013 LinuxCNC Configuration Selector\n Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration.\n Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly\n launch this configuration without showing the Configuration Selector screen.\n@@ -4804,15 +4804,15 @@\n All configurations listed under Sample Configurations/sim are intended to run on any computer. No\n specific hardware is required and real-time support is not needed.\n These configurations are useful for studying individual capabilities or options. The sim configurations\n are organized according to the graphical user interface used in the demonstration. The directory for\n axis contains the most choices and subdirectories because it is the most tested GUI. The capabilities\n demonstrated with any specific GUI may be available in other GUIs as well.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 1224\n \n 1.4.5 Configuration Resources\n 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\n at least one INI file (iniflename.ini) that is used to describe a specific configuration.\n File resources within the copied directory will typically include one or more INI file (filename.ini)\n@@ -4854,15 +4854,15 @@\n The details will depend on which platform you\u2019re running on. Open a terminal then type lsb_release\n -ic to find this information out:\n lsb_release -ic\n Distributor ID: Debian\n Codename:\n wheezy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 1224\n \n You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also\n available for Debian Jessie or Debian Buster if you happen to already be running one of those.\n You will also need to check which realtime kernel is being used:\n uname -r\n@@ -4909,15 +4909,15 @@\n deb https://linuxcnc.org jessie base\n 2.8-rtpreempt\n deb https://linuxcnc.org jessie base\n 2.8-rt\n deb https://linuxcnc.org buster base\n 2.8-rtpreempt\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Platform\n Debian Buster - RTAI\n \n 18 / 1224\n \n apt source line\n@@ -4940,15 +4940,15 @@\n will be automatically upgraded to the new one.\n 1.5.1.3 Ubuntu Precise\n \u2014 Click on the Dash Home icon in the top left.\n \u2014 In the Search field, type \u201dupdate\u201d, then click on the Update Manager icon.\n \u2014 Click the Check button to fetch the list of packages available.\n \u2014 Click the Install Updates button to install the new versions of all packages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 1224\n \n 1.5.2 Updating without Network\n To update without a network connection you need to download the .deb then install it with dpkg. The\n .debs can be found in https://linuxcnc.org/dists/ .\n You have to drill down from the above link to find the correct deb for your installation. Open a terminal\n@@ -4988,15 +4988,15 @@\n The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your\n machine configuration.\n The main difference is that LinuxCNC no longer makes any assumptions about which joint controls\n which axis. This change is generally termed \u201djoints-axes\u201d after the name of the development branch\n where the changes started. This change has been in development since at least 2010, and has finally\n been merged.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 1224\n \n 1.5.4.1 Distribution Configurations (updates for joints_axes)\n The LinuxCNC distribution includes many example configurations organized in directory hierarchies\n named: by_machine, by_interface, and sim (simulated machines). These configurations are often used\n as starting points for making a new configuration, as examples for study, or as complete simulated\n@@ -5034,15 +5034,15 @@\n motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will\n take care of these changes. To control extra spindles the G and M-codes which control spindle speed\n now accept an additional \u201d$\u201d argument, for example M3 $2 to start the third spindle. \u201d$\u201d was chosen\n to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match\n any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man\n motion for the HAL pin changes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 1224\n \n 1.5.4.4 TRAJ velocities, accelerations names\n With incorporation of joints_axes functionality, some names were changed to clarify available functionality.\n was: [TRAJ]MAX_VELOCITY\n was: [TRAJ]DEFAULT_VELOCITY\n@@ -5090,15 +5090,15 @@\n \n 1.5.4.6 Lathe Configurations\n 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\n configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for\n homing the unused Y coordinate. These arrangements are no longer required or recommended.\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 1224\n \n of joints accordingly to 2. There is no need for an INI file [AXIS_Y] section and only two [JOINT_N]\n sections need be defined.\n Example INI file items for a lathe (only sections relevant to kinematics are shown):\n [KINS]\n@@ -5142,15 +5142,15 @@\n [KINS]JOINTS\n = 4\n [TRAJ]COORDINATES = XYYZ\n \n Gantry using trivkins (KINEMATICS_BOTH) with duplicated axis letters and a rotary axis with skipped\n axis letters (A,B skipped):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 1224\n \n [KINS]KINEMATICS = trivkins coordinates=XYYZC kinstype=BOTH\n [KINS]JOINTS\n = 5\n [TRAJ]COORDINATES = XYYZC\n@@ -5194,15 +5194,15 @@\n HAL)\n \n To create these HAL pins for locking joints, specify all joints that are used as locking indexers with the\n unlock_joints_mask parameter for the motmod module. (bit0(LSB)==>joint0, bit1==>joint1, etc.)\n [EMCMOT]\n EMCMOT = motmod unlock_joints_mask=BITMASK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 1224\n \n As an example, consider a machine using trivkins kinematics with coordinates XYZB where B is a\n 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,\n Z==>joint2, B==>joint3. The mask to specify joint 3 is 000001000 (binary) == 0x08 (hexadecimal)\n The required INI file entries for this trivkins XYZB example are:\n@@ -5241,15 +5241,15 @@\n In 2.7.x versions, trajectory planning ([TRAJ]) settings included:\n [TRAJ]\n DEFAULT_ACCELERATION\n MAX_ACCELERATION\n \n Interim work prepared for distinct linear and angular items by renaming these items as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 1224\n \n [TRAJ]\n DEFAULT_LINEAR_ACCEL\n MAX_LINEAR_ACCEL\n \n@@ -5322,15 +5322,15 @@\n net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode\n \n (The signal names jora_1_y_* are examples, names prior to conversion for joints_axes will depend\n upon the specific configuration details.)\n Configurations with non-identity kinematics and configurations that use duplicated axis letters (for\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 1224\n \n 1.5.5.2 INI HAL pins\n HAL pins are created for INI file items for both joints ([JOINT_N]) and axes ([AXIS_L]):\n For N = 0 \u2026 [KINS](JOINTS-1):\n INI file item\n@@ -5387,15 +5387,15 @@\n (servo last period in clks)\n motion.servo.last-period_ns (kernel-dependent availability)\n \n 1.5.7 Interface changes for joints_axes 2.8.x\n 1.5.7.1 Python LinuxCNC module\n The jog() interface includes a joint-flag to specify joint (True) or teleop (False) jogging:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 1224\n \n jog(command, joint-flag, axis-or-joint-number, velocity[, distance])\n jog(linuxcnc.JOG_STOP, joint-flag, axis-or-joint-number)\n jog(linuxcnc.JOG_CONTINUOUS, joint-flag, joint-flag, velocity)\n jog(linuxcnc.JOG_INCREMENT, joint-flag, axis-or-joint-number, velocity, distance)\n@@ -5433,15 +5433,15 @@\n By default, the trivkins module declares itself as having IDENTITY kinematics. The distinctions of\n 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\n and inverse kinematics functions are available and GUI provisions that hide the distinctions of joints\n and axis letters should not be employed. For example, for an xyz configuration, specify:\n [KINS]\n KINEMATICS = trivkins coordinates=xyz kinstype=both\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 1224\n \n With this setting, identity kinematics will be used but the AXIS GUI will:\n 1. show joint numbers prior to homing\n 2. show axis letters after successful homing\n 3. support toggling between joint and teleop modes with the $ key\n@@ -5490,15 +5490,15 @@\n [KINS]\n KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH\n ...\n [TRAJ]\n COORDINATES = XYYZ\n ...\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 1224\n \n This machine, after homing, has a one-to-one correspondence between a single axis letter (Y) and a\n pair of joints (1,2). Using kinematics=BOTH allows control of individual joints in joint mode if/when\n required.\n The AXIS GUI supports configurations using non-identity kinematics with:\n@@ -5542,15 +5542,15 @@\n 2. emc_abs_cmd_pos\n 3. emc_abs_act_pos\n 4. emc_rel_cmd_pos\n 5. emc_rel_act_pos\n 6. emc_tool_offset\n 7. emc_probed_pos\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 1224\n \n 1.5.8.5 Touchy\n The Touchy GUI continues to support the identity kinematics configurations that it supported prior to\n joints_axes incorporation. Jogging is done in teleop mode.\n 1.5.8.6 Gscreen\n@@ -5587,15 +5587,15 @@\n \n Note\n Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234\n in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided\n the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding\n command is: set jog x 1.234.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 1224\n \n 1.5.9 Tools\n 1.5.9.1 Calibration (emccalib.tcl)\n The calibration/tuning tool now supports stanzas:\n [JOINT_N], [AXIS_L], [SPINDLE_S], [TUNE]\n@@ -5628,15 +5628,15 @@\n HALFILE = axis_manualtoolchange.hal\n HALFILE = simulated_home.hal\n \n Lathe configs often shared the same HAL files and used the expedient method of specifying 3 axes with\n Y unused. More complex sim configs provided specific sets of HAL files according to the configuration\n purpose.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 1224\n \n 1.5.12.2 Post-joints_axes\n With the incorporation of joints_axes functionality, many sims provided in the distribution now take\n advantage of a general purpose HAL file that supports numerous configurations automatically. A typical sim config HALFILE specification is:\n [HAL]\n@@ -5680,15 +5680,15 @@\n 2. To use this new equivalent HAL file in the original simulator configuration INI file (or a copy of\n it), edit to change:\n [HAL]\n HALFILE = LIB:basic_sim.tcl other_parameters\n \n to:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 1224\n \n [HAL]\n HALFILE = ./example_cmds.hal\n \n All components and connections made by LIB:basic_sim.tcl can be viewed using halcmd. The entire\n@@ -5722,15 +5722,15 @@\n the pins: is-manual and amux-enable. These two pins are typically connected to halui.mode.is-manual\n and halui.mode.is-teleop respectively.\n Remove signal pendant:jogenable-off for removed pin pendant_util.jogenable-off.\n Support new motion pins for reduced accelerations (axis.L.jog-accel-fraction, joint.N.jog-accel-fraction)\n for wheel jogging. The use of [APPLICATIONS]APP=xhc-hb04-accels is no longer supported. Reduced\n accels are applied for wheel jogging only (not for nml commands issued by GUIs).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 1224\n \n 1.5.13.5 XHC-WHB04B-6 pendant support\n See the documentation for the xhc-whb04b-6 component.\n 1.5.13.6 bldc3_hall\n The bldc_hall3 component has been removed. The bldc component is more flexible and better tested.\n@@ -5757,15 +5757,15 @@\n 4. Make sure the interpreter in the first line of the script is Python 3, not Python 2.\n 5. Open the ui file in glade, and save it. It should convert everything that can be converted automatically, and give you warnings.\n 1.5.14.2 LinuxCNC Startup\n The main script, linuxcnc, supports a new option (-H dirname) to specify an additional user-specified\n directory for HAL files. This directory is searched before the usual search of 1) the INI directory and\n 2)the system HAL file library directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 1224\n \n 1.5.14.3 G-code changes\n G43.2 (additional offsets) now accepts transient offsets to be added by axis words as well as from the\n tool table.\n 1.5.14.4 Configuration Updates\n@@ -5803,15 +5803,15 @@\n identity kinematics mode.\n Kinematic modules supporting switchkins:\n 1. xyzac-trt-kins table-rotary-tilting (supersedes xyzac-trt-kins)\n 2. xyzbc-trt-kins table-rotary-tilting (supersedes xyzbc-trt-kins)\n 3. genserkins generalized serial-link kinematics\n 4. genhexkins generalized hexapod parallel kinematics\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 1224\n \n 5. scarakins scara robot\n 6. pumakins puma robot\n 7. 5axiskins bridgemill (xyzbcw 6axes)\n 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\n@@ -5839,15 +5839,15 @@\n 1.5.15 Changes after 2.8.x\n Future versions of this document will take into account changes made to the development branch\n after the latest 2.8.x release.\n \n 1.6 Linux FAQ\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 1224\n \n 1.6.1 Automatic Login\n 1.6.1.1 Debian\n Debian Stretch uses the Xfce desktop environment by default, with the lightDM display manager\n lightDM. To get automatic login with Stretch:\n@@ -5881,15 +5881,15 @@\n 1.6.3 Terminal\n Many things need to be done from the terminal like checking the kernel message buffer with dmesg.\n Ubuntu and Linux Mint have a keyboard shortcut Ctrl + Alt + t. Debian Stretch does not have any\n keyboard shortcuts defined. It can be easily created with the Configuration Manager. Most modern\n file managers support the right key to open a terminal just make sure your right clicking on a blank\n area or a directory not a file name. Most OS\u2019s have the terminal as a menu item, usually in Accessories.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 1224\n \n 1.6.4 Man Pages\n A man page (short for manual page) is a form of software documentation usually found on a Unix or\n Unix-like operating system like Linux.\n To view a man page open up a terminal to find out something about the find command in the terminal\n@@ -5924,15 +5924,15 @@\n Open the file with File > Open > Edit\n 1.6.6.2 The GUI Way\n 1. Right click on the desktop and select Create Launcher\n 2. Type a name in like sudo edit\n 3. Type gksudo \u201dgnome-open %u\u201d as the command and save the launcher to your desktop\n 4. Drag a file onto your launcher to open and edit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 1224\n \n 1.6.6.3 Root Access\n In Ubuntu you can become root by typing in \u201dsudo -i\u201d in a terminal window then typing in your password. Be careful, because you can really foul things up as root if you don\u2019t know what you\u2019re doing.\n \n 1.6.7 Terminal Commands\n@@ -5965,15 +5965,15 @@\n The find command can be a bit confusing to a new Linux user. The basic syntax is:\n find starting-directory parameters actions\n \n For example to find all the .ini files in your linuxcnc directory you first need to use the pwd command\n to find out the directory.\n Open a new terminal window and type:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 1224\n \n pwd\n \n And pwd might return the following result:\n /home/joe\n@@ -6008,15 +6008,15 @@\n \n 1.6.8 Convenience Items\n 1.6.8.1 Terminal Launcher\n If you want to add a terminal launcher to the panel bar on top of the screen you typically can right click\n on the panel at the top of the screen and select \u201dAdd to Panel\u201d. Select Custom Application Launcher\n and Add. Give it a name and put gnome-terminal in the command box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 1224\n \n 1.6.9 Hardware Problems\n 1.6.9.1 Hardware Info\n To find out what hardware is connected to your motherboard in a terminal window type:\n lspci -v\n@@ -6034,15 +6034,15 @@\n is the same as f0, e.g., a file named f0 in the startup directory\n ../f1\n refers to a file f1 in the parent directory\n ../../f2\n refers to a file f2 in the parent of the parent directory\n ../../../f3 etc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 1224\n \n Chapitre 2\n \n General User Information\n 2.1 User Foreword\n@@ -6073,15 +6073,15 @@\n The Separation rule requires that we make distinct parts that do little things. By separating functions\n debugging is much easier and replacement modules can be dropped into the system and comparisons\n easily made.\n What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make\n choices about how you will use the system. Many of these choices are a part of machine integration,\n 1. Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 1224\n \n but many also affect the way you will use your machine. As you read you will find many places where\n you will need to make comparisons. Eventually you will make choices, \u201dI\u2019ll use this interface rather\n than that\u201d or, \u201cI\u2019ll write part offsets this way rather than that way.\u201d Throughout these handbooks we\n describe the range of abilities currently available.\n@@ -6113,15 +6113,15 @@\n \u2014 the high level controllers that coordinate the generation and execution of motion control of the CNC\n machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO)\n and the task executor (EMCTASK).\n The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper\n motors might look like:\n 2. Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 1224\n \n Figure 2.1 \u2013 Simple LinuxCNC Controlled Machine\n A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives,\n each of which has one stepper motor connected to it. Each drive receives two independent signals;\n one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise\n@@ -6144,15 +6144,15 @@\n mill, such as the number of steps each stepper motor must turn to complete one full revolution,\n the maximum rate at which each stepper may operate at, the limits of travel of each axis or the\n configuration and behaviour of limit switches on each axis.\n \u2014 My_CNC.hal\n This HAL file contains information that tells LinuxCNC how to link the internal virtual signals\n to physical connections beyond the computer. For example, specifying pin 4 on the parallel port\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 1224\n \n to send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis\n motor when a limit switch is triggered on parallel port pin 13.\n \u2014 custom.HAL\n Customisations to the mill configuration beyond the scope of the wizard may be performed by\n@@ -6178,77 +6178,77 @@\n 2.2.3 Graphical User Interfaces\n A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with.\n LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain\n fields contained in the INI file:\n AXIS\n AXIS, the standard keyboard GUI interface. This is also the default GUI launched when a Configuration Wizard is used to create a desktop icon launcher:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 2.2 \u2013 AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 46 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 2.3 \u2013 Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n 47 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 1224\n \n Figure 2.4 \u2013 Gscreen, a configurable base touch screen GUI\n \n GMOCCAPY\n GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally\n well in applications where a keyboard and mouse are the preferred methods of controlling the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 1224\n \n Figure 2.5 \u2013 GMOCCAPY, a touch screen GUI based on Gscreen\n \n NGCGUI\n NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be\n run as a standalone program or embedded into another GUI as a series of tabs. The following\n screenshot shows NGCGUI embedded into AXIS:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 1224\n \n Figure 2.6 \u2013 NGCGUI, a graphical interface integrated into AXIS\n \n TkLinuxCNC\n TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 2.7 \u2013 TkLinuxCNC graphical interface\n \n Xemc\n an X-Window program\n halui\n A HAL based user interface allowing to control LinuxCNC using buttons and switches\n linuxcncrsh\n A telnet based user interface allowing to send commands from remote computers.\n \n 51 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 1224\n \n 2.2.4 Virtual Control Panels\n As mentioned above, many of LinuxCNC\u2019s GUIs may be customized by the user. This may be done to\n add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased\n flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC:\n@@ -6262,15 +6262,15 @@\n GladeVCP\n GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs.\n GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL\n virtual signals, but can include other external interfaces outside LinuxCNC such as window or\n network events. GladeVCP is also more flexible in how it may be configured to appear on the\n GUI:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 1224\n \n Figure 2.9 \u2013 GladeVCP Example Embedded Into AXIS GUI\n \n 2.2.5 Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -6292,15 +6292,15 @@\n \n 2.2.7 Modes of Operation\n When LinuxCNC is running, there are three different major modes used for inputting commands.\n These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes\n a big difference in the way that the LinuxCNC control behaves. There are specific things that can be\n done in one mode that cannot be done in another. An operator can home an axis in manual mode but\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 1224\n \n not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes\n in the auto mode but not in manual or MDI.\n In manual mode, each command is entered separately. In human terms a manual command might be\n \u201dturn on coolant\u201d or \u201djog X at 25 inches per minute\u201d. These are roughly equivalent to flipping a switch\n@@ -6340,15 +6340,15 @@\n chapter.\n 2.3.1.2 Path Following\n A less straightforward problem is that of path following. When you program a corner in G-code, the\n trajectory planner can do several things, all of which are right in some cases:\n \u2014 It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new\n direction.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 55 / 1224\n \n \u2014 It can also do what is called blending, which is to keep the feed rate up while going through the\n corner, making it necessary to round the corner off in order to obey machine constraints.\n You can see that there is a trade off here: you can slow down to get better path following, or keep the\n speed up and have worse path following. Depending on the particular cut, the material, the tooling,\n@@ -6394,15 +6394,15 @@\n controlled point will touch at least one point on each movement. The machine will never move at\n such a speed that it cannot come to an exact stop at the end of the current movement (or next\n movement, if you pause when blending has already started). On G2/3 moves in the G17 (XY) plane,\n when the maximum deviation of an arc from a straight line is less than the G64 Q- tolerance, the\n arc is broken into two lines (from start of arc to midpoint, and from midpoint to end). Those lines\n are then subject to the naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 56 / 1224\n \n as well as line-line benefit from the naive cam detector. This improves contouring performance\n by simplifying the path.\n In the following figure the blue line represents the actual machine velocity. The red lines are the\n acceleration capability of the machine. The horizontal lines below each plot is the planned move.\n@@ -6437,15 +6437,15 @@\n G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each\n one does before running LinuxCNC. The defaults can be changed when running a G-Code file and\n left in a different state than when you started your LinuxCNC session. The best practice is to set the\n defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have\n not changed. Printing out the G-Code Quick Reference page can help you remember what each one\n is.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 57 / 1224\n \n 2.3.2.2 Feed Rate\n How the feed rate is applied depends on if an axis involved with the move is a rotary axis. Read and\n understand the Feed Rate section if you have a rotary axis or a lathe.\n 2.3.2.3 Tool Radius Offset\n@@ -6479,15 +6479,15 @@\n same line as a move. Normally you are in the G54 coordinate system.\n 2.3.5.2 G54-59.3 User Coordinates\n Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate\n system a small blue ball with lines will be at the machine origin when your DRO is displaying Position: Relative Actual in AXIS. If your offsets are temporary use the Zero Coordinate System from the\n Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number\n to suit the coordinate system you wish to clear the offset in.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 58 / 1224\n \n \u2014 Offsets stored in a user coordinate system are retained when LinuxCNC is shut down.\n \u2014 Using the Touch Off button in AXIS sets an offset for the chosen User Coordinate System.\n 2.3.5.3 When You Are Lost\n If you\u2019re having trouble getting 0,0,0 on the DRO when you think you should, you may have some\n@@ -6509,22 +6509,22 @@\n in relation to the material.\n Note also the position of the limit switches and the direction of activation of their cams. Several\n combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed\n limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will\n be reversed, +X will be on the right of the table and -X on the left. This inversion does not change\n anything from the point of view of the direction of movement of the tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 59 / 1224\n \n Figure 2.11 \u2013 Typical Mill Configuration\n The following diagram shows a typical lathe showing direction of travel of the tool and limit switches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 2.12 \u2013 Typical Lathe Configuration\n \n 2.4 Starting LinuxCNC\n 2.4.1 Running LinuxCNC\n LinuxCNC is started with the script file linuxcnc.\n linuxcnc [options] []\n@@ -6539,15 +6539,15 @@\n $ linuxcnc [Options] path/to/your_ini_file\n Name the configuration INI file using its path\n $ linuxcnc [Options] -l\n Use the previously used configuration inifile\n \n 60 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 61 / 1224\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -k: Continue in the presence of errors in HAL files\n@@ -6569,15 +6569,15 @@\n or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to\n those pins. See the [HAL] section of the INI configuration for more information.\n 2.4.1.1 Configuration Selector\n If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and\n save a sample configuration. Once a sample configuration has been saved it can be modified to suit\n your application. The configuration files are saved in linuxcnc/configs directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 62 / 1224\n \n 2.5 CNC Machine Overview\n This section gives a brief description of how a CNC machine is viewed from the input and output ends\n of the Interpreter.\n \n@@ -6614,15 +6614,15 @@\n of a lathe. The spindle may or may not be controlled by the CNC software. LinuxCNC offers support for\n up to 8 spindles, which can be individually controlled and can run simultaneously at different speeds\n and in different directions.\n 2.5.1.3 Coolant\n Flood coolant and mist coolant may each be turned on independently. The RS274/NGC language turns\n them off together see section M7 M8 M9.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 63 / 1224\n \n 2.5.1.4 Feed and Speed Override\n A CNC machine can have separate feed and speed override controls, which let the operator specify\n that the actual feed rate or spindle speed used in machining at some percentage of the programmed\n rate.\n@@ -6654,15 +6654,15 @@\n the spindle. The location of the controlled point can be moved out along the spindle axis by specifying\n some positive amount for the tool length offset. This amount is normally the length of the cutting tool\n in use, so that the controlled point is at the end of the cutting tool. On a lathe, tool length offsets can\n be specified for X and Z axes, and the controlled point is either at the tool tip or slightly outside it\n (where the perpendicular, axis-aligned lines touched by the front and side of the tool intersect).\n 3. If the parallelism requirement is violated, the system builder will have to say how to distinguish clockwise from counterclockwise.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 64 / 1224\n \n 2.5.2.4 Coordinated Linear Motion\n To drive a tool along a specified path, a machining center must often coordinate the motion of several\n axes. We use the term coordinated linear motion to describe the situation in which, nominally, each\n axis moves at constant speed and all axes move from their starting positions to their end positions at\n@@ -6695,15 +6695,15 @@\n 2.5.2.8 Units\n Units used for distances along the X, Y, and Z axes may be measured in millimeters or inches. Units for\n all other quantities involved in machine control cannot be changed. Different quantities use different\n specific units. Spindle speed is measured in revolutions per minute. The positions of rotational axes\n are measured in degrees. Feed rates are expressed in current length units per minute, or degrees per\n minute, or length units per spindle revolution, as described in section G93 G94 G95.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 65 / 1224\n \n 2.5.2.9 Current Position\n The controlled point is always at some location called the current position, and the controller always\n knows where that is. The numbers representing the current position must be adjusted in the absence\n of any axis motion if any of several events take place:\n@@ -6733,15 +6733,15 @@\n In exact path mode, the machine follows the programmed path as exactly as possible, slowing or\n stopping if necessary at sharp corners of the path.\n continuous mode\n In continuous mode, sharp corners of the path may be rounded slightly so that the feed rate may\n be kept up (but by no more than the tolerance, if specified).\n See sections G61 and G64.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 66 / 1224\n \n 2.5.3 Interpreter Interaction with Switches\n The Interpreter interacts with several switches. This section describes the interactions in more detail.\n In no case does the Interpreter know what the setting of any of these switches is.\n 2.5.3.1 Feed and Speed Override Switches\n@@ -6775,15 +6775,15 @@\n \n 2.5.5 Parameters\n In the RS274/NGC language view, a machining center maintains an array of numerical parameters\n defined by a system definition (RS274NGC_MAX_PARAMETERS). Many of them have specific uses\n 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\n machining center is powered down. LinuxCNC uses a parameter file to ensure persistence and gives\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 67 / 1224\n \n the Interpreter the responsibility for maintaining the file. The Interpreter reads the file when it starts\n up, and writes the file when it exits.\n All parameters are available for use in G-code programs.\n The format of a parameter file is shown in the following table. The file consists of any number of\n@@ -6829,15 +6829,15 @@\n [DISPLAY]\n # Tell the AXIS GUI our machine is a lathe.\n LATHE = TRUE\n \n Lathe Mode in AXIS does not set your default plane to G18 (XZ). You must program that in the preamble\n of each G-code file or (better) add it to your INI file, like this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 68 / 1224\n \n [RS274NGC]\n # G-code modal codes (modes) that the interpreter is initialized with\n # on startup\n RS274NGC_STARTUP_CODE = G18 G20 G90\n@@ -6858,15 +6858,15 @@\n 2.6.3 Lathe Tool Orientation\n The following figure shows the lathe tool orientations with the center line angle of each orientation\n and info on FRONTANGLE and BACKANGLE.\n The FRONTANGLE and BACKANGLE are clockwise starting at a line parallel to Z+.\n \n Figure 2.13 \u2013 Lathe Tool Orientations\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 69 / 1224\n \n In AXIS the following figures show what the Tool Positions look like, as entered in the tool table.\n Tool Positions 1, 2, 3 & 4Tool Positions 123 & 4 23 & 4 3 & 4\n \n Tool Positions 5, 6, 7 & 8Tool Positions 567 & 8 67 & 8 7 & 8\n@@ -6890,15 +6890,15 @@\n 2. Set the current tool with Tn M6 G43 where n is the tool number.\n 3. Select the X axis in the Manual Control window.\n 4. Move the X to a known position or take a test cut and measure the diameter.\n 5. Select Touch Off and pick Tool Table then enter the position or the diameter.\n 6. Follow the same sequence to correct the Z axis.\n Note: if you are in Radius Mode you must enter the radius, not the diameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 70 / 1224\n \n 2.6.4.2 Z Touch Off\n The Z axis offsets can be a bit confusing at first because there are two elements to the Z offset. There\n is the tool table offset, and the machine coordinate offset. First we will look at the tool table offsets.\n One method is to use a fixed point on your lathe and set the Z offset for all tools from this point. Some\n@@ -6938,15 +6938,15 @@\n Constant Surface Speed CSS or Constant Surface Speed uses the machine X origin modified by\n the tool X offset to compute the spindle speed in RPM. CSS will track changes in tool offsets. The X\n machine origin should be when the reference tool (the one with zero offset) is at the center of rotation.\n For more information see the G96 Section.\n Feed per Revolution Feed per revolution will move the Z axis by the F amount per revolution. This\n is not for threading, use G76 for threading. For more information see the G95 Section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 71 / 1224\n \n 2.6.6 Arcs\n Calculating arcs can be mind challenging enough without considering radius and diameter mode on\n lathes as well as machine coordinate system orientation. The following applies to center format arcs.\n On a lathe you should include G18 in your preamble as the default is G17 even if you\u2019re in lathe mode,\n@@ -6974,15 +6974,15 @@\n The control point for the tool follows the programmed path. The control point is the intersection of a\n line parallel to the X and Z axis and tangent to the tool tip diameter, as defined when you touch off the\n X and Z axes for that tool. When turning or facing straight sided parts the cutting path and the tool\n edge follow the same path. When turning radius and angles the edge of the tool tip will not follow the\n programmed path unless cutter comp is in effect. In the following figures you can see how the control\n point does not follow the tool edge as you might assume.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 72 / 1224\n \n Figure 2.14 \u2013 Control point\n \n 2.6.7.2 Cutting Angles without Cutter Comp\n Now imagine we program a ramp without cutter comp. The programmed path is shown in the following\n@@ -6990,28 +6990,28 @@\n same as long as we are moving in an X or Z direction only.\n \n Figure 2.15 \u2013 Ramp Entry\n Now as the control point progresses along the programmed path the actual cutter edge does not follow\n the programmed path as shown in the following figure. There are two ways to solve this, cutter comp\n and adjusting your programmed path to compensate for tip radius.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 73 / 1224\n \n Figure 2.16 \u2013 Ramp Path\n In the above example it is a simple exercise to adjust the programmed path to give the desired actual\n path by moving the programmed path for the ramp to the left the radius of the tool tip.\n 2.6.7.3 Cutting a Radius\n In this example we will examine what happens during a radius cut without cutter comp. In the next\n 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.\n \n Figure 2.17 \u2013 Turning Cut\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 74 / 1224\n \n In this next figure you can see as the tool approaches the end of the part the control point still follows\n the path but the tool tip has left the part and is cutting air. You can also see that even though a radius\n has been programmed the part will actually end up with a square corner.\n \n@@ -7019,15 +7019,15 @@\n Now you can see as the control point follows the radius programmed the tool tip has left the part and\n is now cutting air.\n \n Figure 2.19 \u2013 Radius Cut\n In the final figure we can see the tool tip will finish cutting the face but leave a square corner instead\n of a nice radius. Notice also that if you program the cut to end at the center of the part a small amount\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 75 / 1224\n \n of material will be left from the radius of the tool. To finish a face cut to the center of a part you have\n to program the tool to go past center at least the nose radius of the tool.\n \n Figure 2.20 \u2013 Face Cut\n@@ -7050,15 +7050,15 @@\n sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap between the\n negatively charged electrode and the positively charged tip. Once the pilot arc has ionised the plasma\n gas, the superheated column of gas flows through the small orifice in the torch tip, which is focused\n on the metal to be cut.\n In a Plasma Cutting Torch a cool gas enters Zone B, where a pilot arc between the electrode and the\n torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 76 / 1224\n \n column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the\n torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown\n in Zone C. Direct current (DC) straight polarity is used for plasma cutting, as shown in the illustration.\n Zone A channels a secondary gas that cools the torch. This gas also assists the high velocity plasma\n@@ -7072,15 +7072,15 @@\n works well, and starts quickly. But, because of the high frequency high voltage power that is required\n generated to ionise the air, it has some drawbacks. It often interferes with surrounding electronic\n circuitry, and can even damage components. Also a special circuit is needed to create a Pilot arc.\n Inexpensive models will not have a pilot arc, and require touching the consumable to the work to\n start. Employing a HF circuit also can increase maintenance issues, as there are usually adjustable\n points that must be cleaned and readjusted from time to time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 77 / 1224\n \n 2.7.2.2 Blowback Start\n This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the\n torch head back to create a small spark between the inside surface of the consumable, ionising the\n air, and creating a small plasma flame. This also creates a \u201dpilot arc\u201d that provides a plasma flame\n@@ -7105,15 +7105,15 @@\n If the torch is too high or too low then the edges can become excessively bevelled. It is also critical\n that the torch is held perpendicular to the surface.\n \u2014 Torch to work distance can impact edge bevel\n \n \u2014 Negative cut angle: torch too low, increase torch to work distance.\n \u2014 Positive cut angle: torch too high, decrease torch to work distance.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 78 / 1224\n \n Note\n A slight variation in cut angles may be normal, as long as it is within tolerance.\n \n The ability to precisely control the cutting height in such a hostile and ever changing environment is\n@@ -7140,15 +7140,15 @@\n \u2014 A Machine torch is preferred but many have used hand torches.\n \u2014 A fully shielded torch tip to allow ohmic sensing\n If you have the budget, a higher end machines will supply:\n \u2014 Manufacturer provided cut charts which will save many hours and material waste calibrating cut\n parameters\n \u2014 Dry Contacts for ArcOK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 79 / 1224\n \n \u2014 Terminals for Arc On switch\n \u2014 Raw arc voltage or divided arc voltage output\n \u2014 Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the\n LinuxCNC console.\n@@ -7194,15 +7194,15 @@\n such as a Mesa card. If the dry contacts are a simple relay, there is a high probability that the current\n passing through the relay is less than the minimum current specification. Under these conditions, the\n relay contacts can suffer from a buildup of oxide which over time can result in intermittent contact\n operation. To prevent this from happening, a pull down resistor should be installed on the controller\n input pin. Care should be taken to ensure that this resistor is selected to ensure the minimum current\n passes through the relay and is of sufficient wattage to handle the power in the circuit. Finally, the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 80 / 1224\n \n resistor should be mounted in such a way that the generated heat does not damage anything whilst\n in operation.\n If you have an ArcOK signal, it is recommended it is used over and above any synthesised signal to\n eliminate potential build issues. A synthesised signal available from an external THC or QtPlasmaC\u2019s\n@@ -7243,15 +7243,15 @@\n 1. Ohmic sensing only be implemented where the torch has a shield that is isolated from the torch\n tip that conveys the cutting arc.\n 2. The ohmic circuit uses a totally separate isolated power supply that activates an opto-isolated\n relay to enable the probing signal to be transmitted to the CNC controller.\n 3. The positive side of the circuit should be at the torch\n 4. Both sides of the circuit needs to be isolated by opto-isolated relays until probing is being undertaken\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 81 / 1224\n \n 5. Blocking diodes be used to prevent arc voltage entering the ohmic sensing circuit.\n The following is an example circuit that has been proven to work and is compatible with the LinuxCNC\n QtPlasmaC configuration.\n \n@@ -7269,15 +7269,15 @@\n threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower \u201cbreak circuit\u201d threshold can be set to build in strong switch hysteresis. This minimises\n false triggering. In our testing, we found the material sensing using this method was more sensitive\n and robust as well as being simpler to implement the wiring. One further advantage is using software\n outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage\n is helpful to get the most out of the Mesa 7I96 which has limited I/O pins.\n The following circuit diagram shows how to implement a hypersensing circuit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 82 / 1224\n \n We used a 15 W Mean Well HDR-15 Ultra Slim DIN Rail Supply 24 V DIN rail based isolated power\n supply. This is a double insulated Isolation Class II device that will withstand any arc voltage that\n might be applied to the terminals.\n 2.7.7.4 Example HAL Code for Hypersensing\n@@ -7294,15 +7294,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 83 / 1224\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -7335,15 +7335,15 @@\n \n 2.7.10 Torch Breakaway\n It is recommended that a mechanism is provided to allow the torch to \u201cbreak away\u201d or fall off in the\n case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow\n the CNC controller to detect if this has occurred and pause the running program. Usually a break\n away is implemented using magnets to secure the torch to the Z axis stage.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 84 / 1224\n \n 2.7.11 Corner Lock / Velocity Anti-Dive\n The LinuxCNC trajectory planner is responsible for translating velocity and acceleration commands\n into motion that obey the laws of physics. For example, motion will slow when negotiating a corner.\n Whilst this is not a problem with milling machines or routers, this poses a particular problem for\n@@ -7375,15 +7375,15 @@\n his work using simple air plasma.\n The generally accepted method to get good holes from 37mm dia. and down to material thickness with\n minimal taper using an air plasma is:\n 1. Use recommended cutting current for consumables.\n 2. Use fixed (no THC) recommended cutting height for consumables.\n 3. Cut from 60% to 70% of the recommended feed rate of consumables and materials.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 85 / 1224\n \n 4. Start lead in at or near center of hole.\n 5. Use perpendicular lead in.\n 6. No lead out, either a slight over burn or early torch off depending on what works best for you.\n You will need to experiment to get exact hole size because the kerf with this method will be wider\n@@ -7423,15 +7423,15 @@\n \u2014 Usually connected to one of the \u0300 \u0300motion.digital- \u0300 <\n \u0300 nn> pins for use from G-code with M66\n 2.7.14.2 Torch On (output)\n \u2014 Triggers a relay to close the torch on switch in the inverter.\n \u2014 Connect the torch on terminals on the inverter to the relay output terminals.\n \u2014 Connect one side of the coil to the output pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 86 / 1224\n \n \u2014 Connect the other side of the coil to Field Power ground.\n \u2014 If a mechanical relay is used, connect a flyback diode (e.g., IN400x series) across the coil terminals\n with the band on the diode pointing towards the output pin.\n \u2014 If a Solid State Relay is used, polarity may need to be observed on the outputs.\n@@ -7468,15 +7468,15 @@\n use of their THCAD board to read arc voltage.\n 2.7.14.6 Torch Breakaway Sensor\n \u2014 As mentioned earlier, a breakaway sensor should be installed that is triggered if the torch crashes\n and falls off.\n \u2014 Usually, this would be connected to halui.program-pause so the fault can be rectified and the\n program resumed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 87 / 1224\n \n 2.7.15 G-code For Plasma Controllers\n Most plasma controllers offer a method to change settings from G-code. LinuxCNC support this via\n M67/M68 for analog commands and M62-M65 for digital (on/off commands). How this is implemented is\n totally arbitrary. Lets look at how the LinuxCNC QtPlasmaC configuration does this:\n@@ -7519,15 +7519,15 @@\n to a fixed diameter and the external offset moves the tool in and out to machine the cam lobe via an\n applied external offset. To configure our lathe to machine this cam, we need to allocate some portion\n of the axis velocity and acceleration to external offsets or the tool can\u2019t move. This is where the INI\n variable OFFSET_AV_RATIO comes in. Say we decide we need to allocate 20% of the velocity and\n acceleration to the external offset to the Z axis. We set this equal to 0.2. The consequence of this is\n that your maximum velocity and acceleration for the Lathe\u2019s Z axis is only 80% of what it could be.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 88 / 1224\n \n External offsets are a very powerful method to make torch height adjustments to the Z axis via a\n THC. But plasma is all about high velocities and rapid acceleration so it makes no sense to limit these\n parameters. Fortunately in a plasma machine, the Z axis is either 100% controlled by the THC or it\n isn\u2019t. During the development of LinuxCNC\u2019s external offsets it was recognised that Z axis motion\n@@ -7574,15 +7574,15 @@\n Because the full scale is 10 Volts, then the frequency per Volt is:\n (29000 Hz - 3800 Hz) / 10 V = 2520 Hz per Volt\n So assuming we have a 5 Volt input, the calculated frequency would be:\n (2520 Hz/V * 5 V) + 3800 Hz = 16400 Hz\n So now it should be fairly clear how to convert the frequency to its voltage equivalent:\n Volts = (frequency [Hz] - 3800 Hz) / 2520 Hz/V\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 89 / 1224\n \n 2.7.17.1 THCAD Connections\n On the high voltage side:\n \u2014 Connect the divided or raw arc voltage to IN + and IN \u2014 Connect the interconnect cable shield to the Shield connection.\n \u2014 Connect the other Shield terminal to frame ground.\n@@ -7618,15 +7618,15 @@\n this configuration with a 120 A Thermal Dynamics plasma cutter.\n HF Start Install the THCAD at the inverter as the frequency signal is far more immune to EMI noise.\n \u2014 If you do not have a voltage divider and you have room inside the plasma cutter, install a THCAD300 inside the plasma cutter.\n \u2014 If you do not have a voltage divider and you do not have room inside the plasma cutter, install a\n THCAD-10 in a metal case outside the plasma cutter and install 50% of the scaling resistance on\n each of the IN + and IN - inside the plasma cutter case so no lethal voltages come out of the case.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 90 / 1224\n \n \u2014 If you have a voltage divider, install a THCAD-10 in a metal case outside the plasma cutter\n Raw Arc voltage presented on a connector In this case, regardless of the arc starting method,\n there are probably already resistors included in the circuitry to avoid lethal shocks so a THCAD-10 is\n advised so this resistance (typically 200 k\u2126) can be accounted for when choosing a scaling resistor as\n@@ -7670,15 +7670,15 @@\n grounding point on the machine. Connect the plasma ground lead to this point and optionally an earth\n rod driven into the ground as close as possible to the machine (particularly if its a HF start plasma\n machine).\n External wiring to motors should be shielded and appropriately sized to handle the current passing\n through the circuit. The shield should be left unconnected at the motor end and earthed at the control\n box end. Consider using an additional pin on any connectors into the control box so the earth can\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 91 / 1224\n \n be extended through into the control box and earthed to the chassis right at the stepper/servo motor\n controller itself.\n We are aware of at least one commercial system builder who has had problems with induced electrical\n noise on the ohmic sensing circuit. Whilst this can be mitigated by using ferrite beads and coiling the\n@@ -7720,15 +7720,15 @@\n per motor revolution is considered ideal but even around 30 mm per revolutions is still acceptable. A\n 5 mm pitch ball screw with a 3:1 or 5:1 reduction drive is ideal for the Z axis.\n \n 2.7.24 QtPlasmaC LinuxCNC Plasma Configuration\n The QtPlasmaC which is comprised of a HAL component (plasmac.hal) plus a complete configurations\n for the QtPlasmaC GUI has received considerable input from many in the LinuxCNC Open Source movement that have advanced the understanding of plasma controllers since about 2015. There has been\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 92 / 1224\n \n much testing and development work in getting QtPlasmaC to its current working state. Everything\n from circuit design to G-code control and configuration has been included. Additionally, QtPlasmaC\n supports external THC\u2019s such as the Proma 150 but really comes into its own when paired with a\n Mesa controller as this allows the integrator to include the Mesa THCAD voltage to frequency converter which is purpose built to deal with the hostile plasma environment.\n@@ -7764,15 +7764,15 @@\n and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors\n are text files written in the Lua programming language and are generally easy to modify to suit your\n exact requirements. For further information, consult the SheetCam web site and their support forum.\n Another popular post-processor is included with the popular Fusion360 package but the included\n post-processors will need some customisation.\n LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 93 / 1224\n \n Chapitre 3\n \n Configuration Wizards\n 3.1 Stepper Configuration Wizard\n@@ -7783,15 +7783,15 @@\n & direction.\n StepConf is installed when you install LinuxCNC and is in the CNC menu.\n StepConf places a file in the linuxcnc/config directory to store the choices for each configuration you\n create. When you change something, you need to pick the file that matches your configuration name.\n The file extension is .stepconf.\n The StepConf Wizard works best with at least 800 x 600 screen resolution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 94 / 1224\n \n 3.1.2 Start Page\n \n Figure 3.1 \u2013 StepConf Entry Page\n The three first radio buttons are self-explanatory:\n@@ -7805,15 +7805,15 @@\n mach XML file will not be changed.\n These next options will be recorded in a preference file for the next run of StepConf.\n \u2014 Create Desktop Shortcut - This will place a link on your desktop to the files.\n \u2014 Create Desktop Launcher - This will place a launcher on your desktop to start your application.\n \u2014 Create Simulated Hardware - This allows you to build a config for testing, even if you don\u2019t have\n the actual hardware.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 95 / 1224\n \n 3.1.3 Basic Information\n \n Figure 3.2 \u2013 Basic Information Page\n \u2014 Create Simulated Hardware - This allows you to build a config for testing, even if you don\u2019t have\n@@ -7827,15 +7827,15 @@\n \u2014 Driver Type - If you have one of the stepper drivers listed in the pull down box, choose it. Otherwise,\n select Other and find the timing values in your driver\u2019s data sheet and enter them as nano seconds\n in the Driver Timing Settings. If the data sheet gives a value in microseconds, multiply by 1000.\n For example, enter 4.5 \u00b5s as 4500 ns.\n A list of some popular drives, along with their timing values, is on the LinuxCNC.org Wiki under\n Stepper Drive Timing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 96 / 1224\n \n Additional signal conditioning or isolation such as optocouplers and RC filters on break out boards\n 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.\n The LinuxCNC Configuration Selector has configs for Sherline already configured. * Step Time How long the step pulse is on in nano seconds. If your not sure about this setting a value of 20,000\n will work with most drives. * Step Space - Minimum time between step pulses in nano seconds. If\n@@ -7858,15 +7858,15 @@\n only, so no hardware needs to be connected to run the test.\n \n AVERTISSEMENT\n Do not attempt run LinuxCNC while the latency test is running.\n \n Figure 3.3 \u2013 Latency Test\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 97 / 1224\n \n Latency is how long it takes the PC to stop what it is doing and respond to an external request. In our\n case, the request is the periodic heartbeat that serves as a timing reference for the step pulses. The\n lower the latency, the faster you can run the heartbeat, and the faster and smoother the step pulses\n will be.\n@@ -7881,15 +7881,15 @@\n If your Max Jitter number is less than about 15-20 \u00b5s (15000-20000 ns), the computer should give very\n nice results with software stepping. If the max latency is more like 30-50 \u00b5s, you can still get good\n results, but your maximum step rate might be a little disappointing, especially if you use microstepping\n or have very fine pitch leadscrews. If the numbers are 100 \u00b5s or more (100,000 ns), then the PC is not\n a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is\n not a good candidate for LinuxCNC, regardless of whether you use software stepping or not.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 98 / 1224\n \n 3.1.5 Parallel Port Setup\n \n Figure 3.4 \u2013 Parallel Port Setup Page\n You may specify the address as a hexadecimal (often 0x378) or as linux\u2019s default port number (probably\n@@ -7903,15 +7903,15 @@\n uses all normally closed contacts.\n \u2014 Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations.\n \u2014 Charge Pump - If your driver board requires a charge pump signal select Charge Pump from the\n drop down list for the output pin you wish to connect to your charge pump input. The charge pump\n output is connected to the base thread by StepConf. The charge pump output will be about 1/2 of\n the maximum step rate shown on the Basic Machine Configuration page.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 99 / 1224\n \n \u2014 Plasma Arc Voltage - If you require a Mesa THCAD to input a plasma arc voltage then select Plasma\n Arc Voltage from the list of output pins. This will enable a THCAD page during the setup procedure\n for the entry of the card parameters.\n \n@@ -7919,15 +7919,15 @@\n \n Figure 3.5 \u2013 Parallel Port 2 Setup Page\n The second Parallel port (if selected) can be configured and It\u2019s pins assigned on this page. No step and\n direction signals can be selected. You may select in or out to maximizes the number of input/output\n pins that are available. You may specify the address as a hexadecimal (often 0x378) or as linux\u2019s\n default port number (probably 1).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 100 / 1224\n \n 3.1.7 Axis Configuration\n \n Figure 3.6 \u2013 Axis Configuration Screen\n \u2014 Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many\n@@ -7940,15 +7940,15 @@\n of threads per inch. If you chose mm units, enter the number of millimeters per revolution (e.g.,\n enter 2 for 2mm/rev). If the machine travels in the wrong direction, enter a negative number here\n instead of a positive number, or invert the direction pin for the axis.\n \u2014 Maximum Velocity - Enter the maximum velocity for the axis in units per second.\n \u2014 Maximum Acceleration - The correct values for these items can only be determined through experimentation. See Finding Maximum Velocity to set the speed and Finding Maximum Acceleration\n to set the acceleration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 101 / 1224\n \n \u2014 Home Location - The position the machine moves to after completing the homing procedure for\n this axis. For machines without home switches, this is the location the operator manually moves\n the machine to before pressing the Home button. If you combine the home and limit switches you\n must move off of the switch to the home position or you will get a joint limit error.\n@@ -7977,15 +7977,15 @@\n \u2014 Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps\n per user unit.\n \u2014 Test this axis - This will open a window to allow testing for each axis. This can be used after filling\n out all the information for this axis.\n \n Figure 3.7 \u2013 Axis Test\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 102 / 1224\n \n Test this axis is a basic tester that only outputs step and direction signals to try different values for\n acceleration and velocity.\n Important\n In order to use test this axis you have to manually enable the axis if this is required. If your\n@@ -8018,15 +8018,15 @@\n 3.1.7.2 Finding Maximum Acceleration\n With the Maximum Velocity you found in the previous step, enter the acceleration value to test. Using\n the same procedure as above, adjust the Acceleration value up or down as necessary. In this test, it is\n important that the combination of Acceleration and Test Area allow the machine to reach the selected\n Velocity. Once you have found a value at which the axis does not stall or lose steps during this testing\n procedure, reduce it by 10% and use that as the axis Maximum Acceleration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 103 / 1224\n \n 3.1.8 Spindle Configuration\n \n Figure 3.8 \u2013 Spindle Configuration Page\n This page only appears when Spindle PWM is chosen in the Parallel Port Pinout page for one of the\n@@ -8036,15 +8036,15 @@\n \u2014 PWM Rate - The carrier frequency of the PWM signal to the spindle. Enter 0 for PDM mode, which\n is useful for generating an analog control voltage. Refer to the documentation for your spindle\n controller for the appropriate value.\n \u2014 Speed 1 and 2, PWM 1 and 2 - The generated configuration file uses a simple linear relationship\n to determine the PWM value for a given RPM value. If the values are not known, they can be\n determined. For more information see Determining Spindle Calibration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 104 / 1224\n \n 3.1.8.2 Spindle-synchronized motion\n When the appropriate signals from a spindle encoder are connected to LinuxCNC via HAL, LinuxCNC\n supports lathe threading. These signals are:\n \u2014 Spindle Index - Is a pulse that occurs once per revolution of the spindle.\n@@ -8085,15 +8085,15 @@\n Because most spindle drivers are somewhat nonlinear in their response curves, it is best to:\n \u2014 Make sure the two calibration speeds are not too close together in RPM.\n \u2014 Make sure the two calibration speeds are in the range of speeds you will typically use while milling.\n For instance, if your spindle will go from 0 RPM to 8000 RPM, but you generally use speeds from 400\n RPM (10%) to 4000 RPM (100%), then find the PWM values that give 1600 RPM (40%) and 2800 RPM\n (70%).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 105 / 1224\n \n 3.1.9 Options\n \n Figure 3.9 \u2013 Advanced Options Configuration\n \u2014 Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more\n@@ -8101,15 +8101,15 @@\n \u2014 Include PyVCP - This option adds the PyVCP panel base file or a sample file to work on. See the\n PyVCP Chapter for more information.\n \u2014 Include ClassicLadder PLC - This option will add the ClassicLadder PLC (Programmable Logic\n Controller). See the ClassicLadder Chapter for more information.\n \u2014 Onscreen Prompt For Tool Change - If this box is checked, LinuxCNC will pause and prompt you to\n change the tool when M6 is encountered. This feature is usually only useful if you have presettable\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 106 / 1224\n \n tools.\n \n 3.1.10 Complete Machine Configuration\n Click Apply to write the configuration files. Later, you can re-run this program and tweak the settings\n@@ -8136,15 +8136,15 @@\n The zero position is the location on the axis that is 0 in the machine coordinate system. Usually the zero\n position will be within the soft limits. On lathes, constant surface speed mode requires that machine\n X=0 correspond to the center of spindle rotation when no tool offset is in effect.\n The home position is the location within travel that the axis will be moved to at the end of the homing\n sequence. This value must be within the soft limits. In particular, the home position should never be\n exactly equal to a soft limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 107 / 1224\n \n 3.1.11.1 Operating without Limit Switches\n A machine can be operated without limit switches. In this case, only the soft limits stop the machine\n from reaching the hard stop. Soft limits only operate after the machine has been homed.\n 3.1.11.2 Operating without Home Switches\n@@ -8162,15 +8162,15 @@\n LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be\n checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input\n high until the connection to ground is made and then the input goes low. Otherwise the input might\n float between on and off when the circuit is open. Typically for a parallel port you might use 47 k\u03a9;.\n \n Figure 3.11 \u2013 Normally Closed Switches (N/C) wiring in series (simplified diagram)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 108 / 1224\n \n Figure 3.12 \u2013 Normally Open Switches (N/O) wiring in parallel (simplified diagram)\n The following combinations of switches are permitted in StepConf:\n \u2014 Combine home switches for all axes\n \u2014 Combine limit switches for all axes\n@@ -8192,15 +8192,15 @@\n 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\n PnCconf\u2019s scope or just want to tinker with / learn about LinuxCNC.\n You navigate the wizard pages with the forward, back, and cancel buttons there is also a help button\n that gives some help information about the pages, diagrams and an output page.\n ASTUCE\n PnCconf\u2019s help page should have the most up to date info and has additional details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 109 / 1224\n \n 3.2.1 Step by Step Instructions\n \n Figure 3.13 \u2013 PnCconf Splash\n \n@@ -8212,15 +8212,15 @@\n places a note in those files. It also allows you to select desktop shortcut / launcher options. A desktop\n shortcut will place a folder icon on the desktop that points to your new configuration files. Otherwise\n you would have to look in your home folder under linuxcnc/configs.\n A Desktop launcher will add an icon to the desktop for starting your config directly. You can also\n launch it from the main menu by using the Configuration Selector LinuxCNC found in CNC menu and\n selecting your config name.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 110 / 1224\n \n 3.2.3 Basic Machine Information\n \n Figure 3.14 \u2013 PnCconf Basic\n Machine Basics\n@@ -8233,15 +8233,15 @@\n \n Computer Response Time\n The servo period sets the heart beat of the system. Latency refers to the amount of time the\n computer can be longer then that period. Just like a railroad, LinuxCNC requires everything\n on a very tight and consistent time line or bad things happen. LinuxCNC requires and uses a\n real time operating system, which just means it has a low latency ( lateness ) response time\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 111 / 1224\n \n when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be\n interrupted by lower priority requests (such as user input to screen buttons or drawing etc).\n Testing the latency is very important and a key thing to check early. Luckily by using the Mesa card\n to do the work that requires the fastest response time (encoder counting and PWM generation) we\n@@ -8291,15 +8291,15 @@\n displayed for a few seconds during start up. For PCI parallel port cards the address can be found\n by pressing the parport address search button. This pops up the help output page with a list of\n all the PCI devices that can be found. In there should be a reference to a parallel port device with\n a list of addresses. One of those addresses should work. Not all PCI parallel ports work properly.\n Either type can be selected as in (maximum amount of input pins) or out (maximum amount of\n output pins).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 112 / 1224\n \n GUI Front-end list\n This specifies the graphical display screens LinuxCNC will use. Each one has different option.\n AXIS\n \u2014 fully supports lathes.\n@@ -8325,15 +8325,15 @@\n \u2014 fully featured plasmac configuration based on the QtVCP infrastructure.\n \u2014 mouse/keyboard operation or touchscreen operation\n \u2014 no VCP integration\n \n 3.2.4 External Configuration\n This page allows you to select external controls such as for jogging or overrides.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 113 / 1224\n \n Figure 3.15 \u2013 External Controls\n If you select a Joystick for jogging, You will need it always connected for LinuxCNC to load. To use\n the analog sticks for useful jogging you probably need to add some custom HAL code. MPG jogging\n requires a pulse generator connected to a MESA encoder counter. Override controls can either use\n@@ -8344,15 +8344,15 @@\n connect to Linux\u2019s device list. PnCconf will help to prepare this file.\n \u2014 Search for device rule will search the system for rules, you can use this to find the name of\n devices you have already built with PnCconf.\n \u2014 Add a device rule will allow you to configure a new device by following the prompts. You will\n need your device available.\n \u2014 test device allows you to load a device, see its pin names and check its functions with halmeter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 114 / 1224\n \n joystick jogging uses HALUI and hal_input components.\n External buttons\n allows jogging the axis with simple buttons at a specified jog rate. Probably best for rapid jogging.\n MPG Jogging\n@@ -8366,15 +8366,15 @@\n PnCconf allows overrides of feed rates and/or spindle speed using a pulse generator (MPG) or\n switches (eg. rotary).\n \n 3.2.5 GUI Configuration\n Here you can set defaults for the display screens, add virtual control panels (VCP), and set some\n LinuxCNC options..\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 115 / 1224\n \n Figure 3.16 \u2013 GUI Configuration\n Front-end GUI Options\n The default options allows general defaults to be chosen for any display screen.\n AXIS defaults are options specific to AXIS. If you choose size , position or force maximize options then\n@@ -8386,15 +8386,15 @@\n Themes controls the basic look and feel of a program. You can download themes from the net or edit\n them yourself. There are a list of the current themes on the computer that you can pick from. To help\n some of the text to stand out PnCconf allows you to override the Themes\u2019s defaults. The position and\n force max options can be used to move Touchy to a second monitor if the system is capable.\n 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\n specific to QtPlasmaC and VCP options will not be available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 116 / 1224\n \n VCP options\n Virtual Control Panels allow one to add custom controls and displays to the screen. AXIS and\n Touchy can integrate these controls inside the screen in designated positions. There are two\n kinds of VCPs - PyVCP which uses Tkinter to draw the screen and GladeVCP that uses GTK to\n@@ -8438,15 +8438,15 @@\n \u2014 Require homing before MDI / Running\n \u2014 If you want to be able to move the machine before homing uncheck this checkbox.\n \u2014 Popup Tool Prompt\n \u2014 Choose between an on screen prompt for tool changes or export standard signal names for\n a User supplied custom tool changer HAL file\n \u2014 Leave spindle on during tool change:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 117 / 1224\n \n \u2014 Used for lathes\n \u2014 Force individual manual homing\n \u2014 Move spindle up before tool change\n \u2014 Restore joint position after shutdown\n@@ -8458,15 +8458,15 @@\n 3.2.6 Mesa Configuration\n The Mesa configuration pages allow one to utilize different firmwares. On the basic page you selected\n a Mesa card here you pick the available firmware and select what and how many components are\n available.\n \n Figure 3.17 \u2013 Mesa Board Configuration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 118 / 1224\n \n Parport address is used only with Mesa parport card, the 7i43. An on board parallel port usually uses\n 0x278 or 0x378 though you should be able to find the address from the BIOS page. The 7i43 requires\n the parallel port to use the EPP mode, again set in the BIOS page. If using a PCI parallel port the\n address can be searched for by using the search button on the basic page.\n@@ -8502,49 +8502,49 @@\n the I/O setup pages. Only I/O tabs will be shown for available connectors, depending on the Mesa\n board.\n \n 3.2.7 Mesa I/O Setup\n The tabs are used to configure the input and output pins of the Mesa boards. PnCconf allows one to\n create custom signal names for use in custom HAL files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 119 / 1224\n \n Figure 3.18 \u2013 Mesa I/O C2 Setup\n On this tab with this firmware the components are setup for a 7i33 daughter board, usually used with\n closed loop servos. Note the component numbers of the encoder counters and PWM drivers are not\n in numerical order. This follows the daughter board requirements.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 120 / 1224\n \n Figure 3.19 \u2013 Mesa I/O C3 Setup\n On this tab all the pins are GPIO. Note the 3 digit numbers - they will match the HAL pin number.\n GPIO pins can be selected as input or output and can be inverted.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 121 / 1224\n \n Figure 3.20 \u2013 Mesa I/O C4 Setup\n On this tab there are a mix of step generators and GPIO. Step generators output and direction pins\n can be inverted. Note that inverting a Step Gen-A pin (the step output pin) changes the step timing.\n It should match what your controller expects.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3.2.8 Parallel port configuration\n \n The parallel port can be used for simple I/O similar to Mesa\u2019s GPIO pins.\n \n 122 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 123 / 1224\n \n 3.2.9 Axis Configuration\n \n Figure 3.21 \u2013 Axis Drive Configuration\n This page allows configuring and testing of the motor and/or encoder combination. If using a servo\n@@ -8556,15 +8556,15 @@\n Handbook 1 standards or AXIS graphical display will not make much sense. Hopefully the help\n 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\n lower DAC numbers. By moving the axis a known distance one can confirm the encoder scaling.\n The encoder should count even without the amp enabled depending on how power is supplied to\n the encoder.\n 1. \u201daxis nomenclature\u201d in the chapter \u201dNumerical Control\u201d in the \u201dMachinery\u2019s Handbook\u201d published by Industrial Press.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 124 / 1224\n \n AVERTISSEMENT\n If the motor and encoder do not agree on counting direction then the servo will run away when\n using PID control.\n \n@@ -8614,15 +8614,15 @@\n \u2014 As a result, the a and b coefficients from the linear fit can be used as the scale and offset for the\n controller directly.\n MAX OUTPUT\n 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\n scaling to raw output units. The value is applied symmetrically to both the plus and the minus\n side.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 125 / 1224\n \n Tuning Test\n 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\n acceleration or max speed is too high you will lose steps. While jogging, Keep in mind it can\n take a while for an axis with low acceleration to stop. Limit switches are not functional during\n@@ -8634,25 +8634,25 @@\n ones you have figured out). If in doubt use large numbers such as 5000 this will only limit max\n speed.\n Brushless Motor Control\n These options are used to allow low level control of brushless motors using special firmware\n 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\n the mail-list or forum for more help.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 126 / 1224\n \n Figure 3.22 \u2013 Axis Scale Calculation\n The scale settings can be directly entered or one can use the calculate scale button to assist. Use the\n check boxes to select appropriate calculations. Note that pulley teeth requires the number of teeth\n not the gear ratio. Worm turn ratio is just the opposite it requires the gear ratio. If your happy with\n the scale press apply otherwise push cancel and enter the scale directly.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 127 / 1224\n \n Figure 3.23 \u2013 Axis Configuration\n Also refer to the diagram tab for two examples of home and limit switches. These are two examples\n of many different ways to set homing and limits.\n \n@@ -8664,15 +8664,15 @@\n handbook.\n On a typical knee or bed mill\n \u2014 when the TABLE moves out that is the positive Y direction\n \u2014 when the TABLE moves left that is the positive X direction\n \u2014 when the TABLE moves down that is the positive Z direction\n \u2014 when the HEAD moves up that is the positive Z direction\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 128 / 1224\n \n On a typical lathe\n \u2014 when the TOOL moves right, away from the chuck\n \u2014 that is the positive Z direction\n \u2014 when the TOOL moves toward the operator\n@@ -8719,15 +8719,15 @@\n limits. LinuxCNC uses the home switch location to calculate the origin position (when using\n home switches or must be manually set if not using home switches.\n Travel distance\n This is the maximum distance the axis can travel in each direction. This may or may not be able\n to be measured directly from origin to limit switch. The positive and negative travel distances\n should add up to the total travel distance.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 129 / 1224\n \n POSITIVE TRAVEL DISTANCE\n This is the distance the Axis travels from the Origin to the positive travel distance or the total\n travel minus the negative travel distance. You would set this to zero if the origin is positioned at\n the positive limit. The will always be zero or a positive number.\n@@ -8762,30 +8762,30 @@\n LinuxCNC will search for an encoder index pulse while in the latch stage of homing.\n Use Compensation File\n Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS Section of the INI chapter.\n Use Backlash Compensation\n Allows setting of simple backlash compensation. Can not be used with Compensation File. See\n AXIS Section of the INI chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 130 / 1224\n \n Figure 3.24 \u2013 AXIS Help Diagram\n The diagram should help to demonstrate an example of limit switches and standard axis movement\n directions. In this example the Z axis was two limit switches, the positive switch is shared as a home\n switch. The MACHINE ORIGIN (zero point) is located at the negative limit. The left edge of the carriage\n is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION to be\n 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive limit\n we would measure 10 inches between the negative limit and the negative trip pin.\n \n 3.2.10 Spindle Configuration\n If you select spindle signals then this page is available to configure spindle control.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 131 / 1224\n \n ASTUCE\n Many of the option on this page will not show unless the proper option was selected on previous\n pages!\n \n@@ -8797,15 +8797,15 @@\n \u2014 If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be\n shown.\n \u2014 Spindle-at-speed allows LinuxCNC to wait till the spindle is at the requested speed before moving\n the axis. This is particularly handy on lathes with constant surface feed and large speed diameter\n changes. It requires either encoder feedback or a digital spindle-at-speed signal typically connected\n to a VFD drive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 132 / 1224\n \n \u2014 If using encoder feedback, you may select a spindle-at-speed scale setting that specifies how close\n the actual speed must be to the requested speed to be considered at-speed.\n \u2014 If using encoder feedback, the VCP speed display can be erratic - the filter setting can be used to\n smooth out the display. The encoder scale must be set for the encoder count / gearing used.\n@@ -8821,15 +8821,15 @@\n has a timed lube pump signal. The Z auto touch-off is with a touch-off plate, the GladeVCP touch-off\n button and special HALUI commands to set the current user origin to zero and rapid clear. The serial\n modbus program is basically a blank template program that sets up ClassicLadder for serial modbus.\n See the ClassicLadder Chapter in the manual.\n \n Figure 3.26 \u2013 PnCconf, advanced options\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 133 / 1224\n \n 3.2.12 HAL Components\n On this page you can add additional HAL components you might need for custom HAL files. In this\n way one should not have to hand edit the main HAL file, while still allowing user needed components.\n \n@@ -8840,15 +8840,15 @@\n Meaning if you need 2 and PnCconf needs 1 PnCconf will load 3 instances and use the last one.\n Custom Component Commands\n This selection will allow you to load HAL components that PnCconf does not use. Add the loadrt\n or loadusr command, under the heading loading command Add the addf command under the\n heading Thread command. The components will be added to the thread between reading of inputs\n and writing of outputs, in the order you write them in the thread command.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 134 / 1224\n \n 3.2.13 Advanced Usage Of PnCconf\n PnCconf does its best to allow flexible customization by the user. PnCconf has support for custom\n signal names, custom loading of components, custom HAL files and custom firmware.\n There are also signal names that PnCconf always provides regardless of options selected, for user\u2019s\n@@ -8891,26 +8891,26 @@\n with the -a option. The contents of this file can be seen when you first load PnCconf - press the help\n button and look at the output page.\n Ask on the LinuxCNC mail-list or forum for info about converting custom firmware. Not all firmware\n can be utilized with PnCconf.\n Custom HAL Files\n There are four custom files that you can use to add HAL commands to:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 135 / 1224\n \n \u2014 custom.hal is for HAL commands that don\u2019t have to be run after the GUI frontend loads. It is\n run after the configuration-named HAL file.\n \u2014 custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP\n display loads.\n \u2014 custom_gvcp.hal is for commands that must be run after GladeVCP is loaded.\n \u2014 shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 136 / 1224\n \n Chapitre 4\n \n Configuration\n 4.1 Integrator Concepts\n@@ -8938,15 +8938,15 @@\n locations can be in a different place. To view the options for running LinuxCNC from the command\n line run linuxcnc -h.\n Note\n Optional locations for some files can be configured in the INI file. See the\n <> section and the <>\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 137 / 1224\n \n 4.1.2 Files\n Each configuration directory requires at least the following files:\n \u2014 An INI file .ini\n \u2014 A HAL file .hal or HALTCL file .tcl specified in the HAL section of the INI file.\n@@ -8987,15 +8987,15 @@\n high time. Add the 11 \u00b5s latency to the 4.5 \u00b5s high time, and you get a minimum period of 15.5 \u00b5s\n 1. This section refers to using stepgen, LinuxCNC\u2019s built-in step generator. Some hardware devices have their own step\n generator and do not use LinuxCNC\u2019s built-in one. In that case, refer to your hardware manual.\n 2. steplen refers to a parameter that adjusts the performance of LinuxCNC\u2019s built-in step generator, stepgen, which is a HAL\n component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually.\n 3. dirhold refers to a parameter that adjusts the length of the direction hold time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 138 / 1224\n \n . When you try 15.5 \u00b5s , you find that the computer is sluggish, so you settle on 16 \u00b5s . If we leave\n dirhold at 1 (the default), then the minimum time between step and direction is the 16 \u00b5s period minus\n the 11 \u00b5s latency = 5 \u00b5s , which is not enough. We need another 15 \u00b5s . Since the period is 16 \u00b5s , we\n need one more period. So we change dirhold from 1 to 2. Now the minimum time from the end of the\n@@ -9014,15 +9014,15 @@\n how a servomotor system is connected.\n \n Figure 4.1 \u2013 Servo Loop\n This diagram shows that the input signal (and the feedback signal) drive the summing amplifier, the\n summing amplifier drives the power amplifier, the power amplifier drives the motor, the motor drives\n the load (and the feedback device), and the feedback device (and the input signal) drive the motor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 139 / 1224\n \n This looks very much like a circle (a closed loop) where A controls B, B controls C, C controls D, and\n D controls A.\n If you have not worked with servo systems before, this will no doubt seem a very strange idea at first,\n especially as compared to more normal electronic circuits, where the inputs proceed smoothly to the\n@@ -9052,15 +9052,15 @@\n retain a steady state error that is a function of the proportional gain and the process gain. Despite the\n steady-state offset, both tuning theory and industrial practice indicate that it is the proportional term\n that should contribute the bulk of the output change.\n 4. If it helps, the closest equivalent to this in the digital world are state machines, sequential machines and so forth, where\n what the outputs are doing now depends on what the inputs (and the outputs) were doing before. If it doesn\u2019t help, then\n nevermind.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 140 / 1224\n \n 4.1.4.3 Integral term\n The contribution from the integral term (sometimes called reset) is proportional to both the magnitude\n of the error and the duration of the error. Summing the instantaneous error over time (integrating\n the error) gives the accumulated offset that should have been corrected previously. The accumulated\n@@ -9097,15 +9097,15 @@\n The Real Time Application Interface (RTAI) is used to provide the best Real Time (RT) performance.\n The RTAI patched kernel lets you write applications with strict timing constraints. RTAI gives you the\n ability to have things like software step generation which require precise timing.\n 4.1.5.1 ACPI\n The Advanced Configuration and Power Interface (ACPI) has a lot of different functions, most of which\n interfere with RT performance (for example: power management, CPU power down, CPU frequency\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 141 / 1224\n \n scaling, etc). The LinuxCNC kernel (and probably all RTAI-patched kernels) has ACPI disabled. ACPI\n also takes care of powering down the system after a shutdown has been started, and that\u2019s why you\n might need to push the power button to completely turn off your computer. The RTAI group has been\n improving this in recent releases, so your LinuxCNC system may shut off by itself after all.\n@@ -9142,15 +9142,15 @@\n This will start the latency test with a base-thread period of 25uS and a servo-thread period of 1mS.\n The period times may be specified on the command line:\n latency-test 50000 1000000\n \n This will start the latency test with a base-thread period of 50uS and a servo-thread period of 1mS.\n For available options, on the command line enter:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 142 / 1224\n \n latency-test -h\n \n After starting a latency test you should see something like this:\n \n@@ -9172,15 +9172,15 @@\n software stepping. Numbers over 1 millisecond (1,000,000 nanoseconds) mean the PC is not a good\n candidate for LinuxCNC, regardless of whether you use software stepping or not.\n Note\n If you get high numbers, there may be ways to improve them. Another PC had very bad latency\n (several milliseconds) when using the onboard video. But a $5 used video card solved the problem.\n LinuxCNC does not require bleeding edge hardware.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 143 / 1224\n \n For more information on stepper tuning see the Stepper Tuning Chapter.\n Additional command line tools are available for examining latency when LinuxCNC is not\n running.\n 4.2.2.2 Latency Plot\n@@ -9204,15 +9204,15 @@\n 4.2.2.3 Latency Histogram\n latency-histogram displays a histogram of latency (jitter) for a base and servo thread.\n Usage:\n latency-histogram --help | -?\n latency-histogram [Options]\n Options:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n --base\n --servo\n --bbinsize\n --sbinsize\n --bbins\n --sbins\n@@ -9257,15 +9257,15 @@\n \n 4.2.3 Latency tuning\n LinuxCNC can run on many different hardware platforms and with many different realtime kernels,\n and they all may benefit from tuning for optimal latency.\n A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive\n use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 145 / 1224\n \n interfere with LinuxCNC\u2019s access to those CPUs.\n When specific tuning options are believed to be universally helpful LinuxCNC does this tuning automatically at startup, but many tuning options are machine-specific and cannot be done automatically.\n The person installing LinuxCNC will need to experimentally determine the optimal tuning for their\n system.\n@@ -9301,15 +9301,15 @@\n \n 4.3 Stepper Tuning\n 4.3.1 Getting the most out of Software Stepping\n Generating step pulses in software has one very big advantage - it\u2019s free. Just about every PC has a\n parallel port that is capable of outputting step pulses that are generated by the software. However,\n software step pulses also have some disadvantages:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 146 / 1224\n \n \u2014 limited maximum step rate\n \u2014 jitter in the generated pulses\n \u2014 loads the CPU\n This chapter has some steps that can help you get the best results from software generated steps.\n@@ -9349,15 +9349,15 @@\n Direction Setup: 1 \u00b5s min (20 \u00b5s min hold time after Step edge)\n From the Gecko G203V manual:\n Step Frequency: 0 to 333 kHz\n Step Pulse \u201d0\u201d Time: 2.0 \u00b5s min (Step on rising edge)\n Step Pulse \u201d1\u201d Time: 1.0 \u00b5s min\n Direction Setup:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 147 / 1224\n \n 200 ns (0.2 \u00b5s) before step pulse rising edge\n 200 ns (0.2 \u00b5s) hold after step pulse rising edge\n From the Xylotex datasheet:\n Minimum DIR setup time before rising edge of STEP Pulse 200 ns Minimum\n@@ -9401,15 +9401,15 @@\n 2 \u00b5s high time. If you have 11 \u00b5s latency, then you can set the BASE_PERIOD as low as 11+2=13 \u00b5s.\n Getting rid of the long 20 \u00b5s hold time really helps! With a period of 13 \u00b5s, a complete step takes 2x13\n = 26 \u00b5s, and the maximum step rate is 38,461 steps per second!\n But you can\u2019t start celebrating yet. Note that 13 \u00b5s is a very short period. If you try to run the step\n generator every 13 \u00b5s, there might not be enough time left to run anything else, and your computer\n will lock up. If you are aiming for periods of less than 25 \u00b5s, you should start at 25 \u00b5s or more, run\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 148 / 1224\n \n LinuxCNC, and see how things respond. If all is well, you can gradually decrease the period. If the\n mouse pointer starts getting sluggish, and everything else on the PC slows down, your period is a\n little too short. Go back to the previous value that let the computer run smoothly.\n In this case, suppose you started at 25 \u00b5s, trying to get to 13 \u00b5s, but you find that around 16 \u00b5s is the\n@@ -9452,15 +9452,15 @@\n your latency test result and your stepper drive timing requirements and the spreadsheet calculates\n the optimum BASE_PERIOD. Next, you test the period to make sure it won\u2019t slow down or lock up\n your PC. Finally, you enter the actual period, and the spreadsheet will tell you the stepgen parameter\n settings that are needed to meet your drive\u2019s timing requirements. It also calculates the maximum\n step rate that you will be able to generate.\n I\u2019ve added a few things to the spreadsheet to calculate max speed and stepper electrical calculations.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 149 / 1224\n \n 4.4 INI Configuration\n 4.4.1 The INI File Components\n A typical INI file follows a rather simple layout that includes;\n \u2014 comments\n@@ -9501,15 +9501,15 @@\n \u2014 [FILTER] settings input filter programs\n \u2014 [RS274NGC] settings used by the G-code interpreter\n \u2014 [EMCMOT] settings used by the real time motion controller\n \u2014 [TASK] settings used by the task controller\n \u2014 [HAL] specifies .hal files\n \u2014 [HALUI] MDI commands used by HALUI\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 150 / 1224\n \n \u2014 [APPLICATIONS] Other applications to be started by LinuxCNC\n \u2014 [TRAJ] additional settings used by the real time motion controller\n \u2014 [JOINT_n] individual joint variables\n \u2014 [AXIS_l] individual axis variables\n@@ -9548,15 +9548,15 @@\n TYPE = LINEAR\n ...\n SCALE = 16000\n \n To introduce a custom section with its own variables, add the section and variables to the INI file.\n Custom Section Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 151 / 1224\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -9596,15 +9596,15 @@\n #INCLUDE /home/myusername/myincludes/display.inc\n #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc\n \n The #INCLUDE directives are supported for one level of expansion only \u2014 an included file may not\n include additional files. The recommended file extension is .inc. Do not use a file extension of .ini for\n included files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 152 / 1224\n \n 4.4.2 INI File Sections\n 4.4.2.1 [EMC] Section\n \u2014 VERSION = 1.1 - The version number for the configuration. Any value other than 1.1 will cause the\n configuration checker to run and try to update the configuration to the new style joint axes type of\n@@ -9643,15 +9643,15 @@\n \u2014 MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means\n 50% of the programmed spindle speed. (This is used to set the minimum spindle speed).\n \u2014 MIN_SPINDLE_0_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means\n 50% of the programmed spindle speed. (This is used to set the minimum spindle speed). On multi\n spindle machine there will be entries for each spindle number. Only used by the QtVCP based user\n interfaces.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 153 / 1224\n \n \u2014 MAX_SPINDLE_OVERRIDE = 1.0 - The maximum spindle override the user may select. 1.0 means\n 100% of the programmed spindle speed.\n \u2014 MAX_SPINDLE_0_OVERRIDE = 1.0 - The maximum feed override the user may select. 1.2 means\n 120% of the programmed feed rate. On multi spindle machine there will be entries for each spindle\n@@ -9692,15 +9692,15 @@\n \u2014 EMBED_TAB_NAME = GladeVCP demo\n \u2014 EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui\n Note\n Different user interface programs use different options, and not every option is supported by every\n user interface. See AXIS GUI document for AXIS details. See gmoccapy document for Gmoccapy\n details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 154 / 1224\n \n \u2014 DEFAULT_LINEAR_VELOCITY = .25 - The default velocity for linear jogs, in machine units per\n second.\n \u2014 MIN_VELOCITY = .01 - The approximate lowest value the jog slider.\n \u2014 MAX_LINEAR_VELOCITY = 1.0 - The maximum velocity for linear jogs, in machine units per second.\n@@ -9745,15 +9745,15 @@\n 6. The translation and rotation operations are evaluated right-to-left. So using GEOMETRY=XYZBC\n specifies a C rotation followed by a B rotation followed by Z, Y, X translations. (The ordering\n of consecutive translation letters is immaterial.)\n 7. The proper GEOMETRY string depends on the machine configuration and the kinematics used\n to control it. The order of the letters is important. For example, rotating around C then B is\n different than rotating around B then C.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 155 / 1224\n \n 8. Rotations are by default applied with respect to the machine origin. Example: GEOMETRY=CXYZ\n first translates the control point to X, Y, Z and then performs a C rotation about the Z axis centered at the machine origin.\n 9. 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.\n 10. Foam-cutting machines (FOAM = 1) should specify \u201dXY;UV\u201d or leave the value blank even\n@@ -9789,15 +9789,15 @@\n \n \u2014 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.\n Note\n The following [DISPLAY] item is used by the TKLinuxCNC interface only.\n \n \u2014 HELP_FILE = tklinucnc.txt - Path to help file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 156 / 1224\n \n 4.4.2.3 [FILTER] Section\n AXIS and gmoccapy have the ability to send loaded files through a filter program. This filter can\n do any desired task: Something as simple as making sure the file ends with M2, or something as\n complicated as detecting whether the input is a depth image, and generating G-code to mill the shape\n@@ -9840,15 +9840,15 @@\n def main(argv):\n openfile = open(argv[0], \u2019r\u2019)\n file_in = openfile.readlines()\n openfile.close()\n file_out = []\n for line in file_in:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 157 / 1224\n \n # print(line)\n if line.find(\u2019Z\u2019) != -1:\n words = line.rstrip(\u2019\\n\u2019)\n words = words.split(\u2019 \u2019)\n@@ -9893,15 +9893,15 @@\n A search is made for each possible user defined function, typically (M100-M199). The search order\n is:\n 1. [DISPLAY]PROGRAM_PREFIX (if specified)\n 2. If [DISPLAY]PROGRAM_PREFIX is not specified, search the default location: nc_files\n 3. Then search each directory in the list [RS274NGC]USER_M_PATH\n The first executable M1xx found in the search is used for each M1xx.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 158 / 1224\n \n Note\n The maximum number of USER_M_PATH directories is defined at compile time (typ:\n USER_DEFINED_FUNCTION_MAX_DIRS == 5).\n \n@@ -9942,15 +9942,15 @@\n the results of using it are unpredictable.\n \n \u2014 LOG_LEVEL = 0 Default 0 Specify the log_level (default: -1)\n \u2014 LOG_FILE = file-name.log For specify the file used for log the data.\n \u2014 REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure See Remap Extending G-code chapter for details.\n \u2014 ON_ABORT_COMMAND=O call See Remap Extending G-code chapter for details.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 159 / 1224\n \n 4.4.2.5 [EMCMOT] Section\n This section is a custom section and is not used by LinuxCNC directly. Most configurations use values\n from this section to load the motion controller. For more information on the motion controller see the\n Motion section.\n@@ -9988,15 +9988,15 @@\n arg2, etc as argv list. Files with a .tcl suffix are processed as above but use haltcl for processing\n See the HALTCL Chapter for more information.\n \u2014 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\n file directory.\n \u2014 HALFILE = LIB:sys_texample.tcl [arg1 [arg2 \u2026]] - Execute the system library file sys_texample.tcl\n at start up. Explicit use of the LIB: prefix causes use of the system library HALFILE without searching the INI file directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 160 / 1224\n \n 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\u2019s\n function(s) to a thread, 2) incomplete signal (net) specifiers. Omission of required addf statements is\n almost always an error. Signals usually include one or more input connections and a single output (but\n both are not strictly required). A system library file is provided to make checks for these conditions\n@@ -10035,15 +10035,15 @@\n 4.4.2.8 [HALUI] section\n \u2014 MDI_COMMAND = G53 G0 X0 Y0 Z0 - An MDI command can be executed by using halui.mdicommand-00. Increment the number for each command listed in the [HALUI] section.\n 4.4.2.9 [APPLICATIONS] Section\n LinuxCNC can start other applications before the specified GUI is started. The applications can be\n started after a specified delay to allow for GUI-dependent actions (like creating GUI-specific HAL\n pins).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 161 / 1224\n \n \u2014 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\n DELAY=0).\n \u2014 APP = appname [arg1 [arg2 \u2026]] - Application to be started. This specification can be included\n multiple times. The appname can be explicitly named as an absolute or tilde specified filename\n@@ -10086,15 +10086,15 @@\n # n = v_max / (2.0 * a_max * t_c)\n # where:\n # n = optimization depth\n # v_max = max axis velocity (UU / sec)\n # a_max = max axis acceleration (UU / sec)\n # t_c = servo period (seconds)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 162 / 1224\n \n So, a machine with a maximum axis velocity of 10 IPS, a max acceleration of 100 IPS2 , and a servo\n period of 0.001 s would need:\n 10 / (2.0 * 100 * 0.001) = 50 segments to always reach maximum velocity along the fastest axis.\n In practice, this number isn\u2019t that important to tune, since the look ahead rarely needs the full\n@@ -10145,15 +10145,15 @@\n motion profile is limited by other factors, such as normal acceleration or requested velocity, and so\n the actual performance loss should be much smaller. Increasing the cutoff frequency can squeeze\n out more performance, but make the motion rougher due to acceleration discontinuities. A value\n in the range 20 Hz to 200 Hz should be reasonable to start.\n Finally, no amount of tweaking will speed up a tool path with lots of small, tight corners, since you\u2019re\n limited by cornering acceleration.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 163 / 1224\n \n \u2014 SPINDLES = 3 - The number of spindles to support. It is imperative that this number matches the\n \u201dnum_spindles\u201d parameter passed to the motion module.\n \u2014 COORDINATES = X Y Z - The names of the axes being controlled. Only X, Y, Z, A, B, C, U, V, W are\n valid. Only axes named in COORDINATES are accepted in G-code. It is permitted to write an axis\n@@ -10198,15 +10198,15 @@\n \u2014 TPMOD = alternate_trajectory_planning module [tp_parms=value]\n The TPMOD variable is optional. If specified, use a specified (user-built) module instead of the\n default (tpmod). Module parameters (tp_parms) may be included if supported by the named module.\n The setting may be overridden from the command line using the -t option ($ linuxcnc -h).\n \u2014 NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.\n \u2014 NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 164 / 1224\n \n 4.4.2.11 [KINS] Section\n \u2014 JOINTS = 3 - Specifies the number of joints (motors) in the system. For example, a trivkins XYZ\n machine with a single motor for each axis has 3 joints. A gantry machine with one motor on each\n of two of the axes, and two motors on the third axis, has 4 joints. (This config variable may be used\n@@ -10250,15 +10250,15 @@\n See the chapter: External Axis Offsets for usage information.\n 4.4.2.13 [JOINT_] Sections\n The specifies the joint number 0 \u2026 (num_joints-1) The value of num_joints is set by [KINS]JOINTS=\n The [JOINT_0], [JOINT_1], etc. sections contains general parameters for the individual components in\n the joint control module. The joint section names begin numbering at 0, and run through the number\n of joints specified in the [KINS]JOINTS entry minus 1.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 165 / 1224\n \n Typically (for systems using trivkins kinematics, there is a 1:1 correspondence between a joint and an\n axis coordinate letter):\n \u2014 JOINT_0 = X\n \u2014 JOINT_1 = Y\n@@ -10306,15 +10306,15 @@\n 1.000 1.003 0.998\n \n \u2014 Type 1: The second value specifies positive offset from nominal while traveling in the positive\n direction. The third value specifies the negative offset from nominal while traveling in a negative\n direction.\n Type 1 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 166 / 1224\n \n -1.000 0.005 -0.005\n 0.000 0.002 -0.003\n 1.000 0.003 -0.004\n \n@@ -10351,15 +10351,15 @@\n \u2014 HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence.\n \u2014 HOME_OFFSET = 0.0 - The joint position of the home switch or index pulse, in machine units.\n When the home point is found during the homing process, this is the position that is assigned to\n that point. When sharing home and limit switches and using a home sequence that will leave the\n home/limit switch in the toggled state the home offset can be used define the home switch position\n to be other than 0 if your HOME position is desired to be 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 167 / 1224\n \n \u2014 HOME_SEARCH_VEL = 0.0 - Initial homing velocity in machine units per second. Sign denotes\n direction of travel. A value of zero means assume that the current location is the home position for\n the machine. If your machine has no home switches you will want to leave this value at zero.\n \u2014 HOME_LATCH_VEL = 0.0 - Homing velocity in machine units per second to the home switch latch\n@@ -10405,15 +10405,15 @@\n units.\n This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict\n rules. Looser (larger) settings allow less servo hunting at the expense of lower accuracy. Tighter\n (smaller) settings attempt higher accuracy at the expense of more servo hunting. Is it really more\n accurate if it\u2019s also more uncertain? As a general rule, it\u2019s good to avoid, or at least limit, servo\n hunting if you can.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 168 / 1224\n \n Be careful about going below 1 encoder count, since you may create a condition where there is no\n place that your servo is happy. This can go beyond hunting (slow) to nervous (rapid), and even to\n squealing which is easy to confuse with oscillation caused by improper tuning. Better to be a count\n or two loose here at first, until you\u2019ve been through gross tuning at least.\n@@ -10445,15 +10445,15 @@\n These two values are the scale and offset factors for the joint output to the motor amplifiers.\n The second value (offset) is subtracted from the computed output (in volts), and divided by the first\n value (scale factor), before being written to the D/A converters. The units on the scale value are\n in true volts per DAC output volts. The units on the offset value are in volts. These can be used to\n linearize a DAC. Specifically, when writing outputs, the LinuxCNC first converts the desired output\n in quasi-SI units to raw actuator values, e.g., volts for an amplifier DAC. This scaling looks like:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 169 / 1224\n \n The value for scale can be obtained analytically by doing a unit analysis, i.e., units are [output SI\n units]/[actuator units]. For example, on a machine with a velocity mode amplifier such that 1 V\n results in 250 mm/s velocity.\n \n@@ -10498,15 +10498,15 @@\n \u2014 ENCODER_SCALE = 20000 - in PnCconf built configs\n Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ]\n section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an\n angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is\n ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units\n of inch, we have:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 170 / 1224\n \n These parameters are relevant to joints controlled by steppers.\n AVERTISSEMENT\n The following are custom INI file entries that you may find in a sample INI file or a wizard\n generated file. These are not used by the LinuxCNC software. They are only there to put all the\n@@ -10541,15 +10541,15 @@\n 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\u2019s position\n loop.\n 4.4.2.14 [SPINDLE_] Section(s)\n The specifies the spindle number 0 \u2026 (num_spindles-1) The value of num_spindles is set by\n [TRAJ]SPINDLES=\n \u2014 MAX_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle. Optional.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 171 / 1224\n \n \u2014 MIN_VELOCITY = 3000 The minimum spindle speed (in rpm) for the specified spindle. Optional.\n Many spindles have a minimum speed below which they should not be run. Any spindle speed\n command below this limit will be /increased/ to this limit.\n \u2014 MAX_REVERSE_VELOCITY = 20000 This setting will default to MAX_VELOCITY if omitted. It can\n@@ -10590,15 +10590,15 @@\n tool in the spindle.\n \n 4.5 Homing Configuration\n 4.5.1 Overview\n Homing sets the zero origin of the G53 machine coordinates. Soft limits are defined relative to the\n machine origin. The soft limits automatically decelerate and stop the axes before they hit the limits\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 172 / 1224\n \n switches A properly configured and functioning machine will not move beyond soft(ware) limits and\n will have the machine origin set as repeatable as the home switch/index mechanism is. Linuxcnc can\n be homed by eye (alignment marks), with switches, with switches and an encoder index, or by using\n absolute encoders. Homing seems simple enough - just move each joint to a known location, and set\n@@ -10636,15 +10636,15 @@\n While it is possible to use LinuxCNC with the G53 machine origin outside the soft machine limits, if\n you use G28 or G30 without setting the parameters it goes to the origin by default. This would trip\n the limit switches before getting to position.\n \n 4.5.3 Separate Home Switch Example Layout\n This example shows minimum and maximum limit switches with a separate home switch.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 173 / 1224\n \n Figure 4.6 \u2013 Demonstrative Separate Switch Layout\n \u2014 A is the negative soft limit\n \u2014 B is the G53 machine coordinate Origin\n \u2014 C is the home switch trip point\n@@ -10663,15 +10663,15 @@\n Homing sets the G53 coordinate system, while the machine origin (zero point) can be anywhere,\n setting the zero point at the negative soft limit makes all G53 coordinates positive, which is probably\n easiest to remember. Do this by setting MIN_LIMIT = 0 and make sure MAX_LIMIT is positive.\n \n 4.5.4 Shared Limit/Home Switch Example Layout\n This example shows a maximum limit switch and a combined minimum limit/home switch.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 174 / 1224\n \n Figure 4.7 \u2013 Demonstrative Shared Switch Layout\n \u2014 A is the negative soft limit.\n \u2014 B is the G53 machine coordinate Origin.\n \u2014 C is the home switch trip point shared with (-L) minimum limit trip.\n@@ -10690,21 +10690,21 @@\n 4.5.5 Homing Sequence\n \n There are four possible homing sequences defined by the sign of HOME_SEARCH_VEL and HOME_LATCH_V\n 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\n signs. For a more detailed description of what each configuration parameter does, see the following\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 4.8 \u2013 Homing Sequences\n \n 175 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 176 / 1224\n \n 4.5.6 Configuration\n The following determines exactly how the home sequence behaves. They are defined in an [JOINT_n]\n section of the INI file.\n Homing Type\n@@ -10758,15 +10758,15 @@\n value is zero.\n 4.5.6.3 HOME_FINAL_VEL\n This variable has units of machine-units per second.\n It specifies the speed that LinuxCNC uses when it makes its move from HOME_OFFSET to the HOME\n position. If the HOME_FINAL_VEL is missing from the INI file, then the maximum joint speed is used\n to make this move. The value must be a positive number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 177 / 1224\n \n 4.5.6.4 HOME_IGNORE_LIMITS\n Can hold the values YES / NO. The default value for this parameter is NO. This flag determines whether\n LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore\n limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the\n@@ -10800,15 +10800,15 @@\n switch or home switch then index pulse (depending on configuration), and setting the coordinate of\n that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing\n process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET,\n the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small\n move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped).\n This final move will be made at the joint\u2019s maximum velocity unless HOME_FINAL_VEL has been set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 178 / 1224\n \n Note\n The distinction between HOME_OFFSET and HOME is that HOME_OFFSET first establishes the origin\n location and scale on the machine by applying the HOME_OFFSET value to the location where home\n was found, and then HOME says where the joint should move to on that scale.\n@@ -10844,15 +10844,15 @@\n The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers\n must increment by one \u2014 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.\n Negative HOME_SEQUENCE values indicate that joints in the sequence should synchronize the\n final move to [JOINT_n]HOME by waiting until all joints in the sequence are ready. If any joint has a\n negative HOME_SEQUENCE value, then all joints with the same absolute value (positive or negative)\n of the HOME_SEQUENCE item value will synchronize the final move.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 179 / 1224\n \n A negative HOME_SEQUENCE also applies to commands to home a single joint. If the HOME_SEQUENCE\n 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,\n a command to home the joint will home only the specified joint.\n Joint mode jogging of joints having a negative HOME_SEQUENCE is disallowed. In common gantry\n@@ -10895,15 +10895,15 @@\n 4.5.6.13 LOCKING_INDEXER\n If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward.\n 4.5.6.14 Immediate Homing\n If a joint does not have home switches or does not have a logical home position like a rotary joint and\n you want that joint to home at the current position when the \u201dHome All\u201d button is pressed in the Axis\n gui, then the following INI entries for that joint are needed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 180 / 1224\n \n HOME_SEARCH_VEL = 0\n HOME_LATCH_VEL = 0\n HOME_USE_INDEX = NO\n HOME_OFFSET = 0 (Or the home position offset (HOME))\n@@ -10948,15 +10948,15 @@\n net hsequence_select => motion.homing-inhibit\n \n Note\n INI HAL pins (like ini.N.home_sequence) are not available until milltask starts so execution of the\n above HAL commands should be deferred using a postgui HAL file or a delayed [APPLICATION]APP=\n script.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 181 / 1224\n \n Note\n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for\n the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale, joint.N.counts).\n \n@@ -10992,15 +10992,15 @@\n PROTOCOL_VERSION = 2\n Defaults to 2. Setting to 1 will emulate old iocontrol behaviour.\n EMCIO = iov2 -support-start-change\n 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\n this is better backwards compatibility.\n [TASK] section\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 182 / 1224\n \n IO_ERROR\n Printf-style template for operator error display (negative toolchanger fault codes) . No quoting\n needed. Example: IO_ERROR = Toolchanger fault %d. Default: toolchanger error %d.\n [EMC] section\n@@ -11038,15 +11038,15 @@\n \u2014 start-change-ack: (Bit, In) acknowledgment line for start-change.\n \u2014 toolchanger-fault: (Bit, In) toolchanger signals fault. This line is contionuously monitored. A fault\n toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin.\n \u2014 toolchanger-fault-ack: (Bit, Out) handshake line for above signal. will be set by iov2 after above\n fault line TRUE is recognized and deasserted when toolchanger-fault drops. Toolchanger is free to\n interpret the ack; reading the -ack lines assures fault has been received and acted upon.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 183 / 1224\n \n \u2014 toolchanger-reason: (S32, In) convey reason code for toolchanger-originated fault to iov2. Usage:\n signal whether to continue or abort the program, plus UI informational if negative. Read during\n toolchanger-fault TRUE. Non-zero values will cause an Axis operator operator message or error\n message, see below.\n@@ -11084,15 +11084,15 @@\n The toolchanger-fault triggers the fault condition, which is reflected in the toolchanger-faulted pin.\n This condition can be cleared by asserting the toolchanger-clear-fault pin, provided the toolchangerfault pin is FALSE.\n The value of the toolchanger-reason pin is used as follows:\n \u2014 toolchanger-reason > 0 : The toolchange process is not completed and the program continues,\n however parameter #5060 is set to 1.0 to indicate the fault. Parameter #5601 contains the value\n of the toolchanger-reason pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 184 / 1224\n \n \u2014 toolchanger-reason = 0 : the program is aborted\n \u2014 toolchanger-reason < 0 : the program is aborted and an operator error message is displayed by\n using the IO_ERROR template.\n The usage of the toolchanger-fault-ack pin is optional. It will become TRUE when toolchanger-fault is\n@@ -11132,15 +11132,15 @@\n ...\n [AXIS_Z]\n ...\n \n With joints_axes incorporation, a simpler configuration can be made with just the two required joints\n by specifying trivkins with the coordinates= parameter:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 185 / 1224\n \n [DISPLAY]\n DISPLAY = axis\n LATHE = 1\n ...\n@@ -11178,15 +11178,15 @@\n \n 4.8.4 Machine Information\n Gather the information about each axis of your machine.\n Drive timing is in nano seconds. If you\u2019re unsure about the timing many popular drives are included\n in the stepper configuration wizard. Note some newer Gecko drives have different timing than the\n original one. A list is also on the user maintained LinuxCNC wiki site of more drives.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Axis\n \n Drive Type\n \n Step Time\n (ns)\n@@ -11287,15 +11287,15 @@\n stepper drive hardware.\n \u2014 Motor Teeth and Leadscrew Teeth - is if you have some reduction (gears, chain, timing belt, etc.)\n between the motor and the leadscrew. If not, then set these both to 1.\n \u2014 Leadscrew Pitch - is how much movement occurs (in user units) in one leadscrew turn. If you\u2019re\n setting up in inches then it is inches per turn. If you\u2019re setting up in millimeters then it is millimeters\n per turn.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 187 / 1224\n \n The net result you\u2019re looking for is how many CNC-output-steps it takes to move one user unit (inches\n or mm).\n Exemple 4.1 Units inches\n Stepper\n@@ -11334,15 +11334,15 @@\n This chapter describes some of the more common settings for manually setting up a stepper based\n system. These systems are using stepper motors with drives that accept step & direction signals.\n It is one of the simpler setups, because the motors run open-loop (no feedback comes back from the\n motors), yet the system needs to be configured properly so the motors don\u2019t stall or lose steps.\n Most of this chapter is based on a sample config released along with LinuxCNC. The config is called\n stepper_inch, and can be found by running the Configuration Picker.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 188 / 1224\n \n 4.9.2 Maximum step rate\n With software step generation, the maximum step rate is one step per two BASE_PERIODs for stepand-direction output. The maximum requested step rate is the product of an axis\u2019 MAX_VELOCITY and\n its INPUT_SCALE. If the requested step rate is not attainable, following errors will occur, particularly\n during fast jogs and G0 moves.\n@@ -11383,15 +11383,15 @@\n # read inputs first\n addf parport.0.read base-thread 1\n # write outputs last\n addf parport.0.write base-thread -1\n #\n # finally connect physical pins to the signals\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n net Xstep => parport.0.pin-03-out\n net Xdir => parport.0.pin-02-out\n net Ystep => parport.0.pin-05-out\n net Ydir => parport.0.pin-04-out\n net Zstep => parport.0.pin-07-out\n net Zdir => parport.0.pin-06-out\n@@ -11436,15 +11436,15 @@\n ### limit switches. Beware if you hit one, LinuxCNC will stop but can\u2019t tell\n ### you which switch/axis has faulted. Use caution when recovering from this\n ### extreme position to avoid a hard stop.\n ###\n \n 189 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 190 / 1224\n \n # net Xlimits parport.0.pin-13-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in\n \n The lines starting with # are comments, and their only purpose is to guide the reader through the file.\n 4.9.3.2 Overview\n@@ -11480,15 +11480,15 @@\n addf pwmgen.make-pulses base-thread\n net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value\n net spindle-on spindle.0.on => pwmgen.0.enable\n net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out\n setp pwmgen.0.scale 1800 # Change to your spindle\u2019s top speed in RPM\n 5. the fastest thread in the LinuxCNC setup, usually ther code gets executed every few tens of microseconds\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 191 / 1224\n \n This assumes that the spindle controller\u2019s response to PWM is simple: 0% PWM gives 0 RPM, 10%\n PWM gives 180 RPM, etc. If there is a minimum PWM required to get the spindle to turn, follow the\n example in the nist-lathe sample configuration to use a scale component.\n 4.9.3.6 Adding an enable signal\n@@ -11518,15 +11518,15 @@\n the stepper moves one step each time, and in the same direction, there is your clue.\n 4.10.1.2 No Steppers Move\n Many drives have an enable pin or need a charge pump to enable the output.\n 4.10.1.3 Distance Not Correct\n If you command the axis to move a specific distance and it does not move that distance, then your\n scale setting is wrong.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 192 / 1224\n \n 4.10.2 Error Messages\n 4.10.2.1 Following Error\n The concept of a following error is strange when talking about stepper motors. Since they are an open\n loop system, there is no position feedback to let you know if you actually are out of range. LinuxCNC\n@@ -11564,15 +11564,15 @@\n hundreds of thousands of error messages per second if more than one was displayed.\n \n 4.10.3 Testing\n 4.10.3.1 Step Timing\n If you are seeing an axis ending up in the wrong location over multiple moves, it is likely that you\n do not have the correct direction hold times or step timing for your stepper drivers. Each direction\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 193 / 1224\n \n change may be losing a step or more. If the motors are stalling, it is also possible you have either the\n MAX_ACCELERATION or MAX_VELOCITY set too high for that axis.\n The following program will test the Z axis configuration for proper setup. Copy the program to your\n \\~/emc2/nc_files directory and name it TestZ.ngc or similar. Zero your machine with Z = 0.000 at the\n@@ -11600,15 +11600,15 @@\n G0 Z1.000\n G0 Z0.500\n #1000 = [#1000 - 1]\n o101 endwhile\n ( msg, Done...Z should be exactly .5\u201d above table )\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 194 / 1224\n \n Chapitre 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL Introduction\n@@ -11623,15 +11623,15 @@\n HAL is based on the same principles that are used to design hardware circuits and systems, so it is\n useful to examine those principles first.\n Any system, including a CNC machine, consists of interconnected components. For the CNC machine,\n those components might be the main controller, servo amps or stepper drives, motors, encoders, limit\n switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc.\n The machine builder must select, mount and wire these pieces together to make a complete system.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 195 / 1224\n \n Figure 5.1 \u2013 HAL Concept - Connecting like electrical circuits.\n Figure one would be written in HAL code like this:\n net signal-blue\n net signal-red\n@@ -11651,15 +11651,15 @@\n about which specific components to use is based on what that component does and the specifications\n supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the\n choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed\n by the amp and the velocity or position signals that must be sent to the amp from a control.\n 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\n pulses, PLC functionality, and a wide variety of other tasks.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 196 / 1224\n \n 5.1.1.2 Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a\n servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit\n@@ -11683,15 +11683,15 @@\n HAL provides the software equivalents of a voltmeter, oscilloscope, signal generator, and other tools\n needed for testing and tuning a system. The same commands used to build the system can be used to\n make changes as needed.\n 5.1.1.5 Summary\n 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 Remote Start Example\n section in the HAL UI Examples documentation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 197 / 1224\n \n Figure 5.2 \u2013 Remote Start Example (Schema)\n The traditional hardware design as described above ends at the edge of the main control. Outside the\n control are a bunch of relatively simple boxes, connected together to do whatever is needed. Inside,\n the control is a big mystery \u2014 one huge black box that we hope works.\n@@ -11718,15 +11718,15 @@\n Component\n When we talked about hardware design, we referred to the individual pieces as parts, building\n blocks, black boxes, etc. The HAL equivalent is a component or HAL component. (This document\n uses HAL component when there is likely to be confusion with other kinds of components, but\n normally just uses component.) A HAL component is a piece of software with well-defined inputs,\n outputs, and behavior, that can be installed and interconnected as needed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 198 / 1224\n \n Note\n Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be\n meant to be connected to a physical pin on the device to communicate with it, hence the names. But\n most often this is not the case. Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements\n@@ -11770,15 +11770,15 @@\n \u2014 float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits\n of dynamic range.\n \u2014 u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295\n \u2014 s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647\n Function\n Real hardware components tend to act immediately on their inputs. For example, if the input\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 199 / 1224\n \n 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\n do whatever that component is supposed to do. In some cases, that code simply runs as part of\n the component. However in most cases, especially in realtime components, the code must run in\n 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\n@@ -11822,15 +11822,15 @@\n function at specific time intervals. Just like you can choose to have a PLC evaluate all its rungs every\n 10 ms, or every second, you can define HAL threads with different periods.\n What distinguishes one thread from another is not what the thread does - that is determined by which\n functions are connected to it. The real distinction is simply how often a thread runs.\n In LinuxCNC you might have a 50 \u00b5s thread and a 1 ms thread. These would be created based on\n BASE_PERIOD and SERVO_PERIOD, the actual times depend on the values in your INI file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 200 / 1224\n \n The next step is to decide what each thread needs to do. Some of those decisions are the same in\n (nearly) any LinuxCNC system. For instance, motion-command-handler is always added to servothread.\n Other connections would be made by the integrator. These might include hooking the STG driver\u2019s\n encoder read and DAC write functions to the servo thread, or hooking stepgen\u2019s function to the basethread, along with the parport function(s) to write the steps to the port.\n@@ -11841,15 +11841,15 @@\n 5.2.1 HAL Commands\n More detailed information can be found in the man page for halcmd: run man halcmd in a terminal\n window.\n To see the HAL configuration and check the status of pins and parameters use the HAL Configuration\n window on the Machine menu in AXIS. To watch a pin status open the Watch tab and click on each\n pin you wish to watch and it will be added to the watch window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 201 / 1224\n \n Figure 5.3 \u2013 HAL Configuration Window\n \n 5.2.1.1 loadrt\n The command loadrt loads a real time HAL component. Real time component functions need to be\n@@ -11863,15 +11863,15 @@\n The addf command adds a function to a real-time thread. If the StepConf wizard was used to create\n the configuration, two threads have been created ( \u0300 \u0300base-thread \u0300 \u0300 and \u0300 \u0300servo-thread \u0300 \u0300).\n addf adds function functname to thread threadname. Default is to add the function in the order they\n are in the file. If position is specified, adds the function to that spot in the thread. Negative position\n means position with respect to the end of the thread. For example 1 is start of thread, -1 is the end of\n the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 202 / 1224\n \n For some functions it is important to load them in a certain order, like the parport read and write\n functions. The function name is usually the component name plus a number. In the following example\n the component or2 is loaded and show function shows the name of the or2 function\n $ halrun\n@@ -11934,15 +11934,15 @@\n the same name as the first argument of the command.\n \n -Wn \n \n to wait for the component, which will have the given . This only applies\n if the component has a name option.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n -w\n \n to wait for the program to exit\n \n -i\n \n@@ -11977,15 +11977,15 @@\n A pin can be connected to a signal if it obeys the following rules:\n \u2014 An IN pin can always be connected to a signal.\n \u2014 An IO pin can be connected unless there\u2019s an OUT pin on the signal.\n \u2014 An OUT pin can be connected only if there are no other OUT or IO pins on the signal.\n The same signal-name can be used in multiple net commands to connect additional pins, as long as\n the rules above are obeyed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 204 / 1224\n \n Figure 5.4 \u2013 Signal Direction\n This example shows the signal xStep with the source being stepgen.0.out and with two readers,\n 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.\n #\n@@ -12007,15 +12007,15 @@\n 5.2.1.5 setp\n The command setp sets the value of a pin or parameter. The valid values will depend on the type of\n the pin or parameter. It is an error if the data types do not match.\n Some components have parameters that need to be set before use. Parameters can be set before use\n or while running as needed. You cannot use setp on a pin that is connected to a signal.\n setp Syntax and Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 205 / 1224\n \n setp \n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6 sets\n@@ -12056,15 +12056,15 @@\n Type must be bit, s32, u32 or float. Error if all ready exists.\n newsig Syntax and Example\n newsig \n newsig Xstep bit\n \n More information can be found in the HAL manual or the man pages for halrun.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 206 / 1224\n \n 5.2.2 HAL Data\n 5.2.2.1 Bit\n A bit value is an on or off.\n \u2014 bit values = true or 1 and false or 0 (True, TRUE, true are all valid)\n@@ -12102,15 +12102,15 @@\n .tmax\n \n Tmax is the maximum number of CPU cycles it took to execute the function.\n \n tmax is a read/write parameter so the user can set it to 0 to get rid of the first time initialization on\n the function\u2019s execution time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 207 / 1224\n \n 5.2.5 Basic Logic Components\n HAL contains several real time logic components. Logic components follow a Truth Table that states\n what the output is for any given input. Typically these are bit manipulators and follow electrical logic\n gate truth tables.\n@@ -12157,15 +12157,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 208 / 1224\n \n Table 5.2: not Truth Table\n in\n True\n False\n@@ -12215,15 +12215,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 209 / 1224\n \n Table 5.4: xor2 Truth Table\n in0\n True\n True\n@@ -12296,15 +12296,15 @@\n Name\n wsum.0.bit.0.in\n wsum.0.bit.0.weight\n wsum.0.bit.1.in\n wsum.0.bit.1.weight\n wsum.0.bit.2.in\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10\n 10\n 10\n 10\n 10\n 10\n@@ -12375,15 +12375,15 @@\n appearance in the INI file, in multiple HALFILE assignments.\n The TWOPASS option can be specified with options to add output for debugging (verbose) and to\n prevent deletion of temporary files (nodelete). The options are separated with commas.\n Example\n [HAL]\n TWOPASS = on,verbose,nodelete\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 211 / 1224\n \n With TWOPASS processing, all [HAL]HALFILES are first read and multiple appearances of loadrt\n directives for each module are accumulated. User components (loadusr) are loaded in order but no\n other LinuxCNC commands are executed in the initial pass.\n Note\n@@ -12421,15 +12421,15 @@\n HALFILE = sim_spindle_encoder.hal\n HALFILE = axis_manualtoolchange.hal\n HALFILE = simulated_home.hal\n HALFILE = load_for_postgui.hal <- loadrt lines for components in postgui.hal\n POSTGUI_HALFILE = postgui.hal\n HALUI = halui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 212 / 1224\n \n 5.3.2 Post GUI\n Some GUIs support HAL files that are processed after the GUI is started in order to connect LinuxCNC\n pins that are created by the GUI. When using a postgui HAL file with TWOPASS processing, include\n all loadrt items for components added by postgui HAL files in a separate HAL file that is processed\n@@ -12469,15 +12469,15 @@\n # debugging component with complex options:\n loadrt mycomponent parm1=\u201dabc def\u201d parm2=ghi\n show pin mycomponent\n # ordering special components\n loadrt component_1\n loadrt component_2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 213 / 1224\n \n Note\n Case and whitespace within the magic comment are ignored. The loading of components that use\n names= or count= parameters (typically built by halcompile) should not be used in excluded files\n as that would eliminate the benefits of TWOPASS processing. The LinuxCNC commands that create\n@@ -12512,15 +12512,15 @@\n me@computer:~linuxcnc$ halrun\n (will be shown like the following line)\n halrun\n (the halcmd: prompt will be shown when running HAL)\n halcmd: loadrt counter\n halcmd: show pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 214 / 1224\n \n 5.4.2.2 Tab-completion\n Your version of halcmd may include tab-completion. Instead of completing file names as a shell does,\n it completes commands with HAL identifiers. You will have to type enough letters for a unique match.\n Try pressing tab after starting a HAL command:\n@@ -12561,15 +12561,15 @@\n It is a realtime component, implemented as a Linux kernel module. To load the \u201dsiggen\u201d component,\n use the HAL command loadrt.\n Loading siggen\n halcmd: loadrt siggen\n 1. Run In Place, when the source files have been downloaded to a user directory and are compiled and executed directly\n from there.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 215 / 1224\n \n 5.4.3.2 Examining the HAL\n Now that the module is loaded, it is time to introduce halcmd, the command line tool used to configure\n the HAL. This tutorial will introduce only a selection of halcmd features. For a more complete description try man halcmd, or see the reference in HAL Commands section of this document. The first\n halcmd feature is the show command. This command displays information about the current state of\n@@ -12664,15 +12664,15 @@\n siggen.0.update.time\n siggen.0.update.tmax\n \n The show param command shows all the parameters in the HAL. Right now, each parameter has\n the default value it was given when the component was loaded. Note the column labeled Dir. The\n parameters labeled -W are writable ones that are never changed by the component itself, instead\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 216 / 1224\n \n they are meant to be changed by the user to control the component. We will see how to do this\n later. Parameters labeled R- are read only parameters. They can be changed only by the component.\n Finally, parameter labeled RW are read-write parameters. That means that they are changed by the\n component, but can also be changed by the user. Note: The parameters siggen.0.update.time and\n@@ -12745,15 +12745,15 @@\n \n Time, Max-Time )\n 0,\n 0 )\n \n 2. CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 217 / 1224\n \n There is one more step needed before the siggen component starts generating signals. When the HAL\n is first started, the thread(s) are not actually running. This is to allow you to completely configure the\n system before the realtime code starts. Once you are happy with the configuration, you can start the\n realtime code like this:\n@@ -12860,15 +12860,15 @@\n 1754\n 16997\n \n Name\n siggen.0.update.time\n siggen.0.update.tmax\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 218 / 1224\n \n halcmd: show pin\n Component Pins:\n Owner\n Type Dir\n@@ -12935,15 +12935,15 @@\n 5.4.3.6 Exiting halrun\n When you\u2019re finished with your HAL session type exit at the \u201dhalcmd:\u201d prompt. This will return you to\n the system prompt and close down the HAL session. Do not simply close the terminal window without\n shutting down the HAL session.\n Exit HAL\n halcmd: exit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 219 / 1224\n \n 5.4.3.7 Restoring the HAL configuration\n To restore the HAL configuration stored in the file \u201dsaved.hal\u201d, we need to execute all of those HAL\n commands. To do that, we use \u201d-f __\u201d which reads commands from a file, and \u201d-I\u201d\n (upper case i) which shows the halcmd prompt after executing the commands:\n@@ -12986,15 +12986,15 @@\n will start. If the indicated item does not exist, it will start normally.\n Finally, if an item is specified for display, it is possible add -s in front of pin|sig|param to tell halmeter\n to use an even smaller window. The item name will be displayed in the title bar instead of below the\n value and there will be no button. This is useful for displaying a lot of halmeters in a small space.\n We will use the siggen component again to check out halmeter. If you just finished the previous\n example, then you can load siggen using the saved file. If not, we can load it just like we did before:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 220 / 1224\n \n halrun\n halcmd: loadrt siggen\n halcmd: loadrt threads name1=test-thread period1=1000000\n halcmd: addf siggen.0.update test-thread\n@@ -13007,15 +13007,15 @@\n \n The first window you will see is the \u201dSelect Item to Probe\u201d window.\n \n Figure 5.5 \u2013 Halmeter Select Window\n This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one\n displays all the signals, and the third displays all the parameters. We would like to look at the pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 221 / 1224\n \n siggen.0.cosine first, so click on it then click the \u201dClose\u201d button. The probe selection dialog will\n close, and the meter looks something like the following figure.\n \n Figure 5.6 \u2013 Halmeter Window\n@@ -13047,15 +13047,15 @@\n halcmd: loadrt threads name1=fast fp1=0 period1=50000 name2=slow period2=1000000\n \n The first command loads two step generators, both configured to generate stepping type 0. The second\n command loads our old friend siggen, and the third one creates two threads, a fast one with a period\n of 50 microseconds (\u00b5s) and a slow one with a period of 1 millisecond (ms). The fast thread doesn\u2019t\n support floating point functions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 222 / 1224\n \n As before, we can use halcmd show to take a look at the HAL. This time we have a lot more pins and\n parameters than before:\n halcmd: show pin\n Component Pins:\n@@ -13239,15 +13239,15 @@\n stepgen.capture-position.time\n stepgen.capture-position.tmax\n stepgen.make-pulses.time\n stepgen.make-pulses.tmax\n stepgen.update-freq.time\n stepgen.update-freq.tmax\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 223 / 1224\n \n 5.4.5.2 Connecting pins with signals\n What we have is two step pulse generators, and a signal generator. Now it is time to create some HAL\n signals to connect the two components. We are going to pretend that the two step pulse generators\n are driving the X and Y axis of a machine. We want to move the table in circles. To do this, we will send\n@@ -13305,15 +13305,15 @@\n signal comes from pin siggen.0.cosine, and goes to pin stepgen.0.velocity-cmd.\n 5.4.5.3 Setting up realtime execution - threads and functions\n Thinking about data flowing through \u201dwires\u201d makes pins and signals fairly easy to understand. Threads\n and functions are a little more difficult. Functions contain the computer instructions that actually get\n things done. Thread are the method used to make those instructions run when they are needed. First\n let\u2019s look at the functions available to us.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 224 / 1224\n \n halcmd: show funct\n Exported Functions:\n Owner\n CodeAddr Arg\n@@ -13399,15 +13399,15 @@\n slow (\n 1 siggen.0.update\n \n Time, Max-Time )\n 0,\n 0 )\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49849\n \n NO\n \n 2 stepgen.update-freq\n fast (\n@@ -13457,38 +13457,38 @@\n \n 5.4.6 Halscope\n The previous example generates some very interesting signals. But much of what happens is far too\n 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.\n Halscope has two parts - a realtime part that is loaded as a kernel module, and a user part that supplies\n the GUI and display. However, you don\u2019t need to worry about this, because the userspace portion will\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 226 / 1224\n \n automatically request that the realtime part be loaded. With LinuxCNC running in a terminal you can\n start halscope with the following command.\n Starting Halscope\n halcmd loadusr halscope\n \n If LinuxCNC is not running or the autosave.halscope file does not match the pins available in the\n current running LinuxCNC the scope GUI window will open, immediately followed by a Realtime\n function not linked dialog that looks like the following figure. To change the sample rate left click on\n the samples box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 227 / 1224\n \n Figure 5.7 \u2013 Realtime function not linked dialog\n This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once\n per millisecond, so click on the 989 \u00b5s thread slow and leave the multiplier at 1. We will also leave the\n record length at 4000 samples, so that we can use up to four channels at one time. When you select\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 228 / 1224\n \n a thread and then click OK, the dialog disappears, and the scope window looks something like the\n following figure.\n \n Figure 5.8 \u2013 Initial scope window\n@@ -13500,33 +13500,33 @@\n length - more channels means shorter records, since the memory available for the record is fixed at\n approximately 16,000 samples.\n The channel buttons run across the bottom of the halscope screen. Click button 1, and you will see the\n Select Channel Source dialog as shown in the following figure. This dialog is very similar to the one\n used by Halmeter. We would like to look at the signals we defined earlier, so we click on the Signals\n tab, and the dialog displays all of the signals in the HAL (only two for this example).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 229 / 1224\n \n Figure 5.9 \u2013 Select Channel Source\n To choose a signal, just click on it. In this case, we want channel 1 to display the signal X-vel. Click on\n the Signals tab then click on X-vel and the dialog closes and the channel is now selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 230 / 1224\n \n Figure 5.10 \u2013 Select Signal\n The channel 1 button is pressed in, and channel number 1 and the name X-vel appear below the row\n of buttons. That display always indicates the selected channel - you can have many channels on the\n screen, but the selected one is highlighted, and the various controls like vertical position and scale\n always work on the selected one.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 231 / 1224\n \n Figure 5.11 \u2013 Halscope\n To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then\n click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals\n connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and\n@@ -13537,15 +13537,15 @@\n a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope about\n 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen will show\n the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven\u2019t configured\n one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger section at the\n top right. You should see the remainder of the buffer fill, then the screen will display the captured\n waveforms. The result will look something like the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 232 / 1224\n \n Figure 5.12 \u2013 Captured Waveforms\n The Selected Channel box at the bottom tells you that the purple trace is the currently selected one,\n channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1\n through 3 to highlight the other three traces.\n@@ -13553,29 +13553,29 @@\n The traces are rather hard to distinguish since all four are on top of each other. To fix this, we use\n the Vertical controls in the box to the right of the screen. These controls act on the currently selected\n channel. When adjusting the gain, notice that it covers a huge range - unlike a real scope, this one\n can display signals ranging from very tiny (pico-units) to very large (Tera-units). The position control\n moves the displayed trace up and down over the height of the screen only. For larger adjustments the\n offset button should be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 233 / 1224\n \n Figure 5.13 \u2013 Vertical Adjustment\n The large Selected Channel button at the bottom indicates that channel 1 is currently selected channel\n and that it matches the X-vel signal. Try clicking on the other channels to put their traces in evidence\n and to be able to move them with the Pos cursor.\n 5.4.6.4 Triggering\n Using the Force button is a rather unsatisfying way to trigger the scope. To set up real triggering, click\n on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is simply a\n list of all the probes that are currently connected. Select a probe to use for triggering by clicking on\n it. For this example we will use channel 3, the triangle wave as shown in the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 234 / 1224\n \n Figure 5.14 \u2013 Trigger Source Dialog\n After setting the trigger source, you can adjust the trigger level and trigger position using the sliders\n in the Trigger box along the right edge. The level can be adjusted from the top to the bottom of the\n screen, and is displayed below the sliders. The position is the location of the trigger point within\n@@ -13585,15 +13585,15 @@\n trigger point is visible as a vertical line in the progress box above the screen. The trigger polarity can\n be changed by clicking the button just below the trigger level display. It will then become descendant.\n Note that changing the trigger position stops the scope once the position has been adjusted, you\n relaunch the scope by clicking on the Normal button of Run mode the group.\n Now that we have adjusted the vertical controls and triggering, the scope display looks something\n like the following figure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 235 / 1224\n \n Figure 5.15 \u2013 Waveforms with Triggering\n \n 5.4.6.5 Horizontal Adjustments\n To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand\n@@ -13602,15 +13602,15 @@\n the sampling rate. For example, we would like to look at the actual step pulses that are being generated\n in our example. Since the step pulses may be only 50 \u00b5s long, sampling at 1 kHz isn\u2019t fast enough. To\n change the sample rate, click on the button that displays the number of samples and sample rate to\n bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 \u00b5s thread,\n fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth\n of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 236 / 1224\n \n Figure 5.16 \u2013 Sample Rate Dialog\n \n 5.4.6.6 More Channels\n Now let\u2019s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at\n@@ -13619,15 +13619,15 @@\n do the same for channel 4. Even though the channels are turned off, they still remember what they are\n connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels,\n select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then\n click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You\n should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the\n direction pin changes state and the step pulses speed up again. You might want toincrease the gain on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 237 / 1224\n \n channel 1 to about 20 milli per division to better see the change in the velocity command. The result\n should look like the following figure.\n \n Figure 5.17 \u2013 Step Pulses\n@@ -13640,15 +13640,15 @@\n samples, so that when sampling 4 channels at a time there will be 20000 samples per channel. (If\n scope_rt was already loaded, the numeric argument to halscope will have no effect).\n \n 5.5 HAL Examples\n All of these examples assume you are starting with a stepconf based configuration and have two\n threads base-thread and servo-thread. The stepconf wizard will create an empty custom.hal and a\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 238 / 1224\n \n custom_postgui.hal file. The custom.hal file will be loaded after the configuration HAL file and the\n custom_postgui.hal file is loaded after the GUI has been loaded.\n \n 5.5.1 Connecting Two Outputs\n@@ -13708,15 +13708,15 @@\n input. The output from or2 goes to the input of the led.\n \n 5.5.2 Manual Toolchange\n In this example it is assumed that you\u2019re 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\n and you store the offsets in the tool table. If you need to touch off for each tool change then it is best\n just to split up your G-code. To use the HAL Manual Toolchange window you basically have to load the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 239 / 1224\n \n hal_manualtoolchange component then send the iocontrol tool change to the hal_manualtoolchange\n 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.\n This is an example of manual toolchange with the HAL Manual Toolchange component:\n loadusr -W hal_manualtoolchange\n@@ -13761,15 +13761,15 @@\n The xpos-cmd sends the commanded position to the ddt.0.in. The ddt computes the derivative of the\n change of the input.\n The ddt2.0.out is multiplied by 60 to give IPM.\n The mult2.0.out is sent to the abs to get the absolute value.\n The following figure shows the result when the X axis is moving at 15 IPM in the minus direction.\n Notice that we can get the absolute value from either the abs.0.out pin or the X-IPM signal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 240 / 1224\n \n Figure 5.18 \u2013 HAL: Velocity Example\n \n 5.5.4 Soft Start Details\n This example shows how the HAL components lowpass, limit2 or limit3 can be used to limit how fast\n@@ -13782,15 +13782,15 @@\n \u2014 limit2 limits the range and first derivative of a signal.\n \u2014 limit3 limits the range, first and second derivatives of a signal.\n \u2014 lowpass uses an exponentially-weighted moving average to track an input signal.\n To find more information on these HAL components check the man pages.\n Place the following in a text file called softstart.hal. If you\u2019re not familiar with Linux place the file in\n your home directory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 241 / 1224\n \n loadrt threads period1=1000000 name1=thread\n loadrt siggen\n loadrt lowpass\n loadrt limit2\n@@ -13820,15 +13820,15 @@\n Next to set up a trigger signal click on the Source None button and select square. The button will\n change to Source Chan 1.\n Next click on Single in the Run Mode radio buttons box. This will start a run and when it finishes you\n will see your traces.\n To separate the signals so you can see them better click on a channel then use the Pos slider in the\n Vertical box to set the positions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 242 / 1224\n \n To see the effect of changing the set point values of any of the components you can change them in\n the terminal window. To see what different gain settings do for lowpass just type the following in the\n terminal window and try different settings.\n setp lowpass.0.gain *.01\n@@ -13842,15 +13842,15 @@\n 5.5.5 Stand Alone HAL\n In some cases you might want to run a GladeVCP screen with just HAL. For example say you had a\n stepper driven device that all you need is to run a stepper motor. A simple Start/Stop interface is all\n you need for your application so no need to load up and configure a full blown CNC application.\n In the following example we have created a simple GladeVCP panel with one stepper.\n Basic Syntax\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 243 / 1224\n \n # load the winder.glade GUI and name it winder\n loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade\n # load realtime components\n loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000\n@@ -13889,15 +13889,15 @@\n default is 4 each. The number of Spindles is set with num_spindles, default is 1.\n Pin and parameter names starting with axis.L and joint.N are read and updated by the motion-controller\n function.\n Motion is loaded with the motmod command. A kins should be loaded before motion.\n loadrt motmod base_period_nsec=[\u2019period\u2019] servo_period_nsec=[\u2019period\u2019]\n traj_period_nsec=[\u2019period\u2019] num_joints=[\u20190-9\u2019]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 244 / 1224\n \n num_dio=[\u20191-64\u2019] num_aio=[\u20191-16\u2019] unlock_joints_mask=[\u20190xNN\u2019]\n num_spindles=[\u20191-8\u2019]\n \n \u2014 base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the\n@@ -13939,15 +13939,15 @@\n \u2014 motion.analog-in-00 - (float, in) These pins (00, 01, 02, 03 or more if configured) are controlled by\n M66.\n \u2014 motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled\n by M67 or M68.\n \u2014 motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a\n soft limit\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 245 / 1224\n \n \u2014 motion.coord-mode - (bit, out) TRUE when motion is in coordinated mode, as opposed to teleop\n mode\n \u2014 motion.current-vel - (float, out) The current tool velocity in user units per second.\n \u2014 motion.digital-in-00 - (bit, in) These pins (00, 01, 02, 03 or more if configured) are controlled by\n@@ -13993,15 +13993,15 @@\n 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\n adjustments.\n \u2014 motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated\n mode\n \u2014 motion.tooloffset.x \u2026 motion.tooloffset.w - (float, out, one per axis) shows the tool offset in effect;\n it could come from the tool table (G43 active), or it could come from the G-code (G43.1 active)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 246 / 1224\n \n 5.6.1.3 Parameters\n Many of these parameters serve as debugging aids, and are subject to change or removal at any time.\n \u2014 motion-command-handler.time - (s32, RO)\n \u2014 motion-command-handler.tmax - (s32, RW)\n@@ -14037,15 +14037,15 @@\n VFDs have an at speed output. Otherwise, it is easy to generate this signal with the HAL near\n component, by comparing requested and actual spindle speeds.\n \u2014 spindle.N.brake - (bit, out) TRUE when the spindle brake should be applied.\n \u2014 spindle.N.forward - (bit, out) TRUE when the spindle should rotate forward.\n \u2014 spindle.N.index-enable - (bit, I/O) For correct operation of spindle synchronized moves, this pin\n must be hooked to the index-enable pin of the spindle encoder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 247 / 1224\n \n \u2014 spindle.N.inhibit - (bit, in) When this bit is TRUE, the spindle speed is set to 0.\n \u2014 spindle.N.on - (bit, out) TRUE when spindle should rotate.\n \u2014 spindle.N.reverse - (bit, out) TRUE when the spindle should rotate backward\n \u2014 spindle.N.revs - (float, in) For correct operation of spindle synchronized moves, this signal must\n@@ -14089,15 +14089,15 @@\n Motion then acknowledges this by deasserting the spindle.__N__.orient pin and asserts the spindle.__N_\n pin to indicate orientation complete mode. It also raises the spindle.__N__.brake pin. The spindle\n now is in orientation complete mode.\n If, during spindle.__N__.orient being true, and spindle.__N__.is-oriented not yet asserted the\n 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\n rotation mode.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 248 / 1224\n \n Also, any of the M3, M4 or M5 commands cancel either searching for desired orientation or orientation\n complete mode. This is indicated by deasserting both the spindle-orient and spindle-locked pins.\n The spindle-orient-mode pin reflects the M19 P word and shall be interpreted as follows:\n \u2014 0: rotate clockwise or counterclockwise for smallest angular movement\n@@ -14130,15 +14130,15 @@\n \u2014 iocontrol.0.tool-prepared - (bit, in) Should be driven TRUE when a tool prepare is completed.\n \u2014 iocontrol.0.user-enable-out - (bit, out) FALSE when an internal E-Stop condition exists.\n \u2014 iocontrol.0.user-request-enable - (bit, out) TRUE when the user has requested that E-Stop be cleared.\n \n 5.6.5 INI settings\n A number of INI settings are made available as HAL input pins.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 249 / 1224\n \n 5.6.5.1 Pins\n N refers to a joint number, L refers to an axis letter.\n \u2014 ini.N.ferror - (float, in) [JOINT_N]FERROR\n \u2014 ini.N.min_ferror - (float, in) [JOINT_N]MIN_FERROR\n@@ -14170,15 +14170,15 @@\n The traj_arc_blend pins are sampled continuously but changing pin values while a program is running\n may not have immediate effect due to queueing of commands.\n \n \u2014 ini.traj_default_acceleration - (float, in) [TRAJ]DEFAULT_ACCELERATION\n \u2014 ini.traj_default_velocity - (float, in) [TRAJ]DEFAULT_VELOCITY\n \u2014 ini.traj_max_acceleration - (float, in) [TRAJ]MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 250 / 1224\n \n 5.7 HAL Component List\n 5.7.1 Components\n Most of the commands in the following list have man pages. Some will have expanded descriptions,\n some will have limited descriptions. From this list you know what components exist, and you can\n@@ -14248,15 +14248,15 @@\n Vismach Virtual Machine GUI\n Vismach Virtual Machine GUI\n Vismach Virtual Machine GUI\n Vismach Virtual Machine GUI\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n xyzbc-trtgui\n \n 251 / 1224\n \n Vismach Virtual Machine GUI\n \n@@ -14332,15 +14332,15 @@\n Pico Systems driver for analog servo, PWM and Stepper controller\n Driver for beaglebone GPIO pins\n Mesa Electronics driver for the 7I43 EPP Anything IO board with\n HostMot2. (See the man page for more information)\n LinuxCNC HAL driver for the Mesa Electronics 7I90 EPP Anything IO\n board with HostMot2 firmware\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 252 / 1224\n \n hm2_eth\n \n LinuxCNC HAL driver for the Mesa Electronics Ethernet Anything IO\n boards, with HostMot2 firmware\n@@ -14418,15 +14418,15 @@\n remote firmware. Smart-serial remote parameters can now be set in the\n HAL file in the normal way.\n sim_pin\n GUI for displaying and setting one or more HAL inputs\n stepconf\n Configuration wizard for parallel-port based machines\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 253 / 1224\n \n 5.7.1.6 Signal processing (Realtime)\n and2\n bitwise\n dbounce\n@@ -14522,15 +14522,15 @@\n limit3\n Limit the output signal to fall between min and max. Limit its slew rate to\n less than maxv per second. Limit its second derivative to less than MaxA\n per second squared 5 .\n lincurve\n One-dimensional lookup table\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 254 / 1224\n \n maj3\n Compute the majority of 3 inputs\n minmax\n Tracks the minimum and maximum values of the input to the outputs.\n@@ -14601,15 +14601,15 @@\n Kinematics definitions for LinuxCNC.\n lineardeltakinsKinematics for a linear delta robot\n \n 3. When the input is a position, this means that the position is limited.\n 4. When the input is a position, this means that position and velocity are limited.\n 5. When the input is a position, this means that the position, velocity, and acceleration are limited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n maxkins\n \n millturn\n pentakins\n pumakins\n rosekins\n@@ -14687,15 +14687,15 @@\n Signal generator, see Description.\n sim_encoder Simulated quadrature encoder, see Description.\n sphereprobe Probe a pretend hemisphere.\n steptest\n Used by Stepconf to allow testing of acceleration and velocity values for an\n axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n streamer\n supply\n threadtest\n time\n watchdog\n \n@@ -14749,15 +14749,15 @@\n intro.3hal\n undocumented.3hal\n \n 5.7.3 RTAPI calls\n \n 256 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EXPORT_FUNCTION.3rtapi\n MODULE_AUTHOR.3rtapi\n MODULE_DESCRIPTION.3rtapi\n MODULE_LICENSE.3rtapi\n RTAPI_MP_ARRAY_INT.3rtapi\n RTAPI_MP_ARRAY_LONG.3rtapi\n@@ -14806,15 +14806,15 @@\n rtapi_task_pause.3rtapi\n rtapi_task_resume.3rtapi\n rtapi_task_start.3rtapi\n rtapi_task_wait.3rtapi\n \n 257 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 258 / 1224\n \n 5.8 HAL Component Descriptions\n 5.8.1 Stepgen\n This component provides software based generation of step pulses in response to position or velocity\n commands. In position mode, it has a built in pre-tuned position loop, so PID tuning is not required.\n@@ -14822,21 +14822,21 @@\n limits. It is a realtime component only, and depending on CPU speed, etc, is capable of maximum step\n 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).\n The second is for step type 1 (up/down, or pseudo-PWM), and the third is for step types 2 through\n 14 (various stepping patterns). The first two diagrams show position mode control, and the third one\n shows velocity mode. Control mode and step type are set independently, and any combination can be\n selected.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 5.19 \u2013 Step Pulse Generator Block Diagram position mode\n \n 259 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 260 / 1224\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type= [ctrl_type=]\n \n \n@@ -14872,15 +14872,15 @@\n \u2014 (bit) stepgen..down - DOWN pseudo-PWM output (step type 1 only).\n \u2014 (bit) stepgen..phase-A - Phase A output (step types 2-14 only).\n \u2014 (bit) stepgen..phase-B - Phase B output (step types 2-14 only).\n \u2014 (bit) stepgen..phase-C - Phase C output (step types 3-14 only).\n \u2014 (bit) stepgen..phase-D - Phase D output (step types 5-14 only).\n \u2014 (bit) stepgen..phase-E - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 261 / 1224\n \n 5.8.1.2 Parameters\n \u2014 (float) stepgen..position-scale - Steps per position unit. This parameter is used for both\n output and feedback.\n \u2014 (float) stepgen..maxvel - Maximum velocity, in position units per second. If 0.0, has no\n@@ -14918,15 +14918,15 @@\n takes effect the first time the code runs. Since one step requires steplen ns high and stepspace ns low,\n the maximum frequency is 1,000,000,000 divided by (steplen+stepspace). If maxfreq is set higher\n than that limit, it will be lowered automatically. If maxfreq is zero, it will remain zero, but the output\n frequency will still be limited.\n When using the parallel port driver the step frequency can be doubled using the parport reset function\n together with stepgen\u2019s doublefreq setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 262 / 1224\n \n Figure 5.20 \u2013 Step and Direction Timing\n Step Type 1 Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending\n on the direction of travel. Each pulse is steplen ns long, and the pulses are separated by at least\n stepspace ns. The maximum frequency is the same as for step type 0. If maxfreq is set higher than\n@@ -14938,33 +14938,33 @@\n \n Step Type 2 - 14 Step types 2 through 14 are state based, and have from two to five outputs. On\n each step, a state counter is incremented or decremented. The Two-and-Three-Phase, Four-Phase,\n and Five-Phase show the output patterns as a function of the state counter. The maximum frequency\n is 1,000,000,000 divided by steplen, and as in the other modes, maxfreq will be lowered if it is above\n the limit.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 5.21 \u2013 Two-and-Three-Phase Step Types\n \n 263 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 5.22 \u2013 Four-Phase Step Types\n \n 264 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 5.23 \u2013 Five-Phase Step Types\n \n 265 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 266 / 1224\n \n 5.8.1.4 Functions\n The component exports three functions. Each function acts on all of the step pulse generators - running\n different generators in different threads is not supported.\n \u2014 (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point).\n@@ -15006,15 +15006,15 @@\n unloadrt pwmgen\n \n 5.8.2.1 Output Types\n The PWM generator supports three different output types.\n \u2014 Output type 0 - PWM output pin only. Only positive commands are accepted, negative values are\n treated as zero (and will be affected by the parameter min-dc if it is non-zero).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 267 / 1224\n \n \u2014 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\n commands. If your control needs positive PWM for both CW and CCW use the abs component to\n convert your PWM signal to positive value when a negative input is input.\n \u2014 Output type 2 - UP and DOWN pins. For positive commands, the PWM signal appears on the up\n@@ -15057,15 +15057,15 @@\n 50% duty cycle and 25 Hz PWM frequency this means that the output changes state every (1 / 25)\n seconds / 50uS * 50% = 400 iterations. This also means that you have a 800 possible duty cycle\n values (without dithering)\n \u2014 (funct) pwmgen.update - Low speed function to scale and limit value and handle other parameters.\n This is the function of the module that does the more complicated mathematics to work out how\n many base-periods the output should be high for, and how many it should be low for.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 268 / 1224\n \n 5.8.3 Encoder\n 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\n maximum count rates of 10 kHz to perhaps up to 50 kHz.\n The base thread should be 1/2 count speed to allow for noise and timing variation. For example if you\n@@ -15079,15 +15079,15 @@\n Loading Encoder\n halcmd: loadrt encoder [num_chan=]\n \n is the number of encoder counters that you want to install. If numchan is not specified,\n three counters will be installed. The maximum number of counters is 8 (as defined by MAX_CHAN\n in encoder.c). Each counter is independent, but all are updated by the same function(s) at the same\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 269 / 1224\n \n time. In the following descriptions, is the number of a specific counter. The first counter is\n number 0.\n Unloading Encoder\n halcmd: unloadrt encoder\n@@ -15129,15 +15129,15 @@\n lathe threading, and may have other uses as well.\n \u2014 encoder..position-latched (float, Out) - Not used at this time.\n \u2014 encoder..position-scale (float, I/O) - Scale factor, in counts per length unit. For example, if\n position-scale is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units.\n \u2014 encoder..rawcounts (s32, In) - The raw count, as determined by update-counters. This value\n is updated more frequently than counts and position. It is also unaffected by reset or the index pulse.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 270 / 1224\n \n \u2014 encoder..reset (bit, In) - When True, force counts and position to zero immediately.\n \u2014 encoder..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\n output. When the magnitude of the true velocity is below min-speed-estimate, the velocity output\n is 0.\n@@ -15158,15 +15158,15 @@\n \n 5.8.4 PID\n This component provides Proportional/Integral/Derivative control loops. It is a realtime component\n only. For simplicity, this discussion assumes that we are talking about position loops, however this\n component can be used to implement other feedback loops such as speed, torch height, temperature,\n etc. The PID Loop Block Diagram is a block diagram of a single PID loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 271 / 1224\n \n Figure 5.25 \u2013 PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=] [debug=1]\n \n@@ -15178,15 +15178,15 @@\n cluttering the pin list.\n Unloading PID\n halcmd: unloadrt pid\n \n 5.8.4.1 Pins\n The three most important pins are\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 272 / 1224\n \n \u2014 (float) pid..command - The desired position, as commanded by another system component.\n \u2014 (float) pid..feedback - The present position, as measured by a feedback device such as\n an encoder.\n \u2014 (float) pid..output - A velocity command that attempts to move from the present position\n@@ -15227,15 +15227,15 @@\n All max* limits are implemented so that if the value of this parameter is zero, there is no limit.\n If debug=1 was specified when the component was installed, four additional pins will be exported:\n \u2014 (float) pid..errorI - Integral of error.\n \u2014 (float) pid..errorD - Derivative of error.\n \u2014 (float) pid..commandD - Derivative of the command.\n \u2014 (float) pid..commandDD - 2nd derivative of the command.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 273 / 1224\n \n 5.8.4.2 Functions\n The component exports one function for each PID loop. This function performs all the calculations\n needed for the loop. Since each loop has its own function, individual loops can be included in different\n threads and execute at different rates.\n@@ -15269,15 +15269,15 @@\n 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.\n 5.8.5.3 Functions\n The component exports two functions. Each function affects all simulated encoders.\n \u2014 (funct) sim-encoder.make-pulses - High speed function to generate quadrature pulses (no floating\n point).\n \u2014 (funct) sim-encoder.update-speed - Low speed function to read speed, do scaling, and set up makepulses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 274 / 1224\n \n 5.8.6 Debounce\n Debounce is a realtime component that can filter the glitches created by mechanical switch contacts.\n It may also be useful in other applications where short pulses are to be rejected.\n Loading debounce\n@@ -15310,15 +15310,15 @@\n 5.8.6.3 Functions\n Each group of filters has one function, which updates all the filters in that group simultaneously.\n Different groups of filters can be updated from different threads at different periods.\n \u2014 (funct) debounce. - Updates all filters in group .\n 6. Each individual filter also has an internal state variable. There is a compile time switch that can export that variable as a\n parameter. This is intended for testing, and simply wastes shared memory under normal circumstances.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 275 / 1224\n \n 5.8.7 Siggen\n Siggen is a realtime component that generates square, triangle, and sine waves. It is primarily used\n for testing.\n Loading siggen\n@@ -15351,15 +15351,15 @@\n 5.8.7.2 Parameters\n None. 7\n 5.8.7.3 Functions\n \u2014 (funct) siggen..update - Calculates new values for all five outputs.\n 7. Prior to version 2.1, frequency, amplitude, and offset were parameters. They were changed to pins to allow control by\n other components.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 276 / 1224\n \n 5.8.8 lut5\n The lut5 component is a 5 input logic component based on a look up table.\n \u2014 lut5 does not require a floating point thread.\n Loading lut5\n@@ -15544,15 +15544,15 @@\n 1\n \n Output\n \n Lut5 Two Inputs Example In the following table we have selected the output state for each line that\n we wish to be true.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 277 / 1224\n \n Table 5.6: Lut5 Two Inputs Example Look Up Table\n Bit 4\n 0\n 0\n@@ -15622,15 +15622,15 @@\n sudo apt install linuxcnc-dev\n # or\n sudo apt install linuxcnc-uspace-dev\n \n Another method is using the Synaptic package manager, from the Applications menu, to install the\n linuxcnc-dev or linuxcnc-uspace-dev packages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 278 / 1224\n \n 5.9.3 Using a Component\n Components need to be loaded and added to a thread before it can be used.\n Example\n loadrt threads name1=servo-thread period1=1000000\n@@ -15668,15 +15668,15 @@\n Declarations include:\n \u2014 component HALNAME (DOC);\n \u2014 pin PINDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (= STARTVALUE) (DOC) ;\n \u2014 param PARAMDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (=\n STARTVALUE) (DOC) ;\n \u2014 function HALNAME (fp | nofp) (DOC);\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 279 / 1224\n \n \u2014 option OPT (VALUE);\n \u2014 variable CTYPE STARREDNAME ([SIZE]);\n \u2014 description DOC;\n \u2014 examples DOC;\n@@ -15732,15 +15732,15 @@\n \u2014 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\n the array is created its size will be CONDSIZE.\n \u2014 DOC - A string that documents the item. String can be a C-style \u201ddouble quoted\u201d string, like:\n \u201dSelects the desired edge: TRUE means falling, FALSE means rising\u201d\n \n or a Python-style \u201dtriple quoted\u201d string, which may include embedded newlines and quote characters, such as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 280 / 1224\n \n \u201d\u201d\u201dThe effect of this parameter, also known as \u201dthe orb of zot\u201d,\n will require at least two paragraphs to explain.\n Hopefully these paragraphs have allowed you to understand \u201dzot\u201d\n better.\u201d\u201d\u201d\n@@ -15780,15 +15780,15 @@\n \u2014 option count_function yes - (default: no) Normally, the number of instances to create is specified in\n the module parameter count; if count_function is specified, the value returned by the function int\n get_count(void) is used instead, and the count module parameter is not defined.\n \u2014 option rtapi_app no - (default: yes) Normally, the functions rtapi_app_main() and rtapi_app_exit()\n are automatically defined. With option rtapi_app no, they are not, and must be provided in the C\n code. Use the following prototypes:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 281 / 1224\n \n \u2018int rtapi_app_main(void);\u2018\n \u2018void rtapi_app_exit(void);\u2018\n \n When implementing your own rtapi_app_main(), call the function int export(char *prefix,\n@@ -15834,15 +15834,15 @@\n The result of assigning an inappropriate value to an option is undefined.\n The result of using any other option is undefined.\n \n 5.9.7.3 License and Authorship\n \u2014 LICENSE - Specify the license of the module for the documentation and for the MODULE_LICENSE()\n module declaration. For example, to specify that the module\u2019s license is GPL v2 or later:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 282 / 1224\n \n license \u201dGPL\u201d; // indicates GPL v2 or later\n For additional information on the meaning of MODULE_LICENSE() and additional license identifiers, see or the manual page rtapi_module_param(3).\n This declaration is required.\n \u2014 AUTHOR - Specify the author of the module for the documentation.\n@@ -15872,15 +15872,15 @@\n \u2014 comp_id\n \u2014 fperiod\n \u2014 rtapi_app_main\n \u2014 rtapi_app_exit\n \u2014 extra_setup\n \u2014 extra_cleanup\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 283 / 1224\n \n 5.9.9 Convenience Macros\n \n Based on the items in the declaration section, halcompile creates a C structure called struct __comp_state.\n 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\n@@ -15921,15 +15921,15 @@\n of any of the basic boolean logic functions and, or, and xor.\n The default number of allowed personality items is a compile-time setting (64). The default applies to\n numerous components included in the distribution that are built using halcompile.\n To alter the allowed number of personality items for user-built components, use the --personality\n option with halcompile. For example, to allow up to 128 personality times:\n [sudo] halcompile --personality=128 --install ...\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 284 / 1224\n \n 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:\n loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805\n \n Note\n@@ -15966,15 +15966,15 @@\n halcompile --document rtexample.comp\n \n The resulting manpage, example.9 can be viewed with\n man ./example.9\n \n or copied to a standard location for manual pages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 285 / 1224\n \n 5.9.14 Compiling userspace components outside the source tree\n halcompile can process, compile, install, and document userspace components:\n halcompile usrexample.comp\n halcompile --compile usrexample.comp\n@@ -16014,15 +16014,15 @@\n pin in float theta;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n #include \n FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 286 / 1224\n \n 5.9.15.3 out8\n This component is a driver for a fictional card called \u201dout8\u201d, which has 8 pins of digital output which\n are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they\n can be at various addresses. The pin is called out_ because out is an identifier used in . It\n@@ -16065,15 +16065,15 @@\n }\n FUNCTION(_) { outb(out_, ioaddr); }\n \n 5.9.15.4 hal_loop\n component hal_loop;\n pin out float example;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 287 / 1224\n \n This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the\n name of a standard Linux kernel module, so a loop component might not successfully load if the Linux\n loop module was also present on the system.\n When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by\n@@ -16117,15 +16117,15 @@\n function _ nofp;\n description \u201d\u201d\u201d\n Experimental general \u2019logic function\u2019 component. Can perform \u2019and\u2019, \u2019or\u2019\n and \u2019xor\u2019 of up to 16 inputs. Determine the proper value for \u2019personality\u2019\n by adding:\n .IP \\\\(bu 4\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 288 / 1224\n \n The number of input pins, usually from 2 to 16\n .IP \\\\(bu\n 256 (0x100) if the \u2019and\u2019 output is desired\n .IP \\\\(bu\n@@ -16172,15 +16172,15 @@\n }\n //main function\n FUNCTION(_) {\n if (in < 0){\n set(&out1);\n unset(&out2);\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 289 / 1224\n \n }else if (in >0){\n unset(&out2);\n set(&out2);\n }else{\n@@ -16218,15 +16218,15 @@\n The halcmd language used in HAL files has a simple syntax that is actually a subset of the more\n powerful general-purpose Tcl scripting language.\n \n 5.10.2 Haltcl Commands\n Haltcl files use the Tcl scripting language augmented with the specific commands of the LinuxCNC\n hardware abstraction layer (HAL). The HAL-specific commands are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 290 / 1224\n \n addf, alias,\n delf, delsig,\n getp, gets\n ptype,\n@@ -16276,15 +16276,15 @@\n without whitespace are in this group), then it is possible to treat $::SECTION(ITEM) as though it is\n not a list.\n When the value could contain special characters\u2014quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl\u2014it is necessary to distinguish\n between the list of values and the initial (and possibly only) value in the list.\n In Tcl, this is written [lindex $::SECTION(ITEM) 0].\n For example: given the following INI values\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 291 / 1224\n \n [HOSTMOT2]\n DRIVER=hm2_eth\n IPADDR=\u201d10.10.10.10\u201d\n BOARD=7i92\n@@ -16322,15 +16322,15 @@\n Whitespace in the bare expression is not allowed, use quotes for that:\n setp scale.0.gain \u201d6.28 / 360.0 * $::JOINT_0(radius) * 60.0\u201d\n \n In other contexts, such as loadrt, you must explicitly use the Tcl expr command ([expr {}]) for computational expressions.\n Example\n loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 292 / 1224\n \n 5.10.6 Haltcl Examples\n Consider the topic of stepgen headroom. Software stepgen runs best with an acceleration constraint\n that is \u201da bit higher\u201d than the one used by the motion planner. So, when using halcmd files, we force\n INI files to have a manually calculated value.\n@@ -16370,15 +16370,15 @@\n $ halrun -T haltclfile.tcl\n \n 5.10.8 Haltcl Distribution Examples (sim)\n The configs/sim/axis/simtcl directory includes an INI file that uses a .tcl file to demonstrate a haltcl\n configuration in conjunction with the usage of twopass processing. The example shows the use of Tcl\n procedures, looping, the use of comments and output to the terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 293 / 1224\n \n 5.11 Creating Userspace Python Components\n 5.11.1 Basic usage\n A userspace component begins by creating its pins and parameters, then enters a loop which will\n periodically drive all the outputs from the inputs. The following component copies the value seen on\n@@ -16440,15 +16440,15 @@\n much longer if the memory used by the passthrough component is swapped to disk, the assignment\n could be delayed until that memory is swapped back in.\n Thus, userspace components are suitable for user-interactive elements such as control panels (delays\n in the range of milliseconds are not noticed, and longer delays are acceptable), but not for sending\n step pulses to a stepper driver board (delays must always be in the range of microseconds, no matter\n what).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 294 / 1224\n \n 5.11.3 Create pins and parameters\n h = hal.component(\u201dpassthrough\u201d)\n \n The component itself is created by a call to the constructor hal.component. The arguments are the\n@@ -16500,15 +16500,15 @@\n \n 5.11.4.1 Driving output (HAL_OUT) pins\n Periodically, usually in response to a timer, all HAL_OUT pins should be \u201ddriven\u201d by assigning them a\n new value. This should be done whether or not the value is different than the last one assigned. When\n a pin is connected to a signal, its old output value is not copied into the signal, so the proper value\n will only appear on the signal once the component assigns a new value.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 295 / 1224\n \n 5.11.4.2 Driving bidirectional (HAL_IO) pins\n The above rule does not apply to bidirectional pins. Instead, a bidirectional pin should only be driven\n by the component when the component wishes to change the value. For instance, in the canonical\n encoder interface, the encoder component only sets the index-enable pin to FALSE (when an index\n@@ -16538,15 +16538,15 @@\n hal.component_is_ready(\u201dtestpanel\u201d)\n \n 5.11.6.5 get_msg_level\n Get the current Realtime msg level.\n 5.11.6.6 set_msg_level\n Set the current Realtime msg level. used for debugging information.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.7 connect\n Connect a pin to a signal.\n Example\n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n 5.11.6.8 disconnect\n@@ -16579,15 +16579,15 @@\n listOfDicts = hal.get_info_params()\n paramName1 = listOfDicts[0].get(\u2019NAME\u2019)\n paramValue1 = listOfDicts[0].get(\u2019VALUE\u2019)\n paramDirection1 = listOfDicts[0].get(\u2019DIRECTION\u2019)\n \n 296 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.13 new_sig\n Create a new signal of the type specified.\n Example\n hal.new_sig(\u201dsignalname\u201d,hal.HAL_BIT)\n \n 5.11.6.14 pin_has_writer\n@@ -16616,15 +16616,15 @@\n \n 5.11.6.19 set\n Set the HAL object value.\n h.out.set(10)\n \n 297 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5.11.6.20 is_pin\n Is the object a pin or parameter?\n Returns True or False.\n h.in.is_pin()\n \n 5.11.6.21 sampler_base\n@@ -16653,15 +16653,15 @@\n \u2014 MSG_DBG\n \u2014 MSG_ERR\n \u2014 MSG_INFO\n \u2014 MSG_WARN\n \n 298 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 299 / 1224\n \n 5.11.8 System Information\n Read these to acquire information about the realtime system.\n \u2014 is_kernelspace\n \u2014 is_rt\n@@ -16703,15 +16703,15 @@\n # widgets allows access to widgets from the qtvcp files\n # at this point the widgets and HAL pins are not instantiated\n def __init__(self, halcomp,widgets,paths):\n self.hal = halcomp\n self.testPin = self.hal.newpin(\u2019test-pin\u2019, hal.HAL_BIT, hal.HAL_IN)\n self.testPin.value_changed.connect(lambda s: self.setTestPin(s))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 300 / 1224\n \n And have a function to be called. This shows ways to get the pin value and information.\n #####################\n # general functions #\n #####################\n@@ -16747,15 +16747,15 @@\n (bit) in\n State of the hardware input.\n (bit) in-not\n Inverted state of the input.\n 5.12.2.2 Parameters\n None\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 301 / 1224\n \n 5.12.2.3 Functions\n (funct) read\n Read hardware and set in and in-not HAL pins.\n \n@@ -16784,15 +16784,15 @@\n This will be subtracted from the hardware input voltage (or current) after the scale multiplier\n has been applied.\n (float) bit_weight\n The value of one least significant bit (LSB). This is effectively the granularity of the input reading.\n (float) hw_offset\n The value present on the input when 0 volts is applied to the input pin(s).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 302 / 1224\n \n 5.12.4.3 Functions\n (funct) read\n Read the values of this analog input channel. This may be used for individual channel reads, or\n it may cause all channels to be read\n@@ -16826,15 +16826,15 @@\n 5.12.5.3 Functions\n (funct) write\n This causes the calculated value to be output to the hardware. If enable is false, then the output\n will be 0, regardless of value, scale, and offset. The meaning of \u201d0\u201d 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\n volts from the hardware pin. If enable is true, read scale, offset and value and output to the adc\n (scale * value) + offset. If enable is false, then output 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 303 / 1224\n \n 5.13 HAL Tools\n 5.13.1 Halcmd\n Halcmd is a command line tool for manipulating the HAL. There is a rather complete man page for\n halcmd, which will be installed if you have installed LinuxCNC from either source or a package. The\n@@ -16874,23 +16874,23 @@\n displays the value. Multiple Halmeters can be open at the same time. If you use a script to open\n multiple Halmeters you can set the position of each one with the argument -g X Y relative to the\n upper left corner of your screen. For example:\n loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500\n \n See the man page for more options and the section Halmeter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 5.26 \u2013 Halmeter selection window\n \n Figure 5.27 \u2013 Halmeter watch window\n \n 304 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 305 / 1224\n \n 5.13.3 Halshow\n 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\n provides a continuous display of selected pin, parameters, and signal items. The File menu provides\n buttons to save the watch items to a watch list and to load an existing watch list. The watch list items\n@@ -16906,15 +16906,15 @@\n Notes:\n Create watchfile in halshow using: \u2019File/Save Watch List\u2019.\n LinuxCNC must be running for standalone usage.\n \n Figure 5.28 \u2013 Halshow Watch Tab\n A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 306 / 1224\n \n \u201dpin+\u201d, \u201dparam+\u201d, \u201dsig=+\u201d followed by the appropriate pin, param, or signal name. The token-name\n pairs are separated by a space character.\n Single Line Watchfile Example\n pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop\n@@ -16960,15 +16960,15 @@\n pin:\n IN or I/O (and not connected to a signal with a writer)\n param: RW\n signal: connected to a writable pin\n HAL item types bit, s32, u32, float are supported\n When a bit item is specified, a pushbutton is created\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 307 / 1224\n \n to manage the item in one of three manners specified\n by radio buttons:\n toggle: Toggle value when button pressed\n pulse: Pulse item to 1 once when button pressed\n@@ -16989,15 +16989,15 @@\n \n Figure 5.29 \u2013 sim_pin Window\n \n 5.13.6 Simulate Probe\n simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage:\n simulate_probe &\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 308 / 1224\n \n Figure 5.30 \u2013 simulate_probe Window\n \n 5.13.7 HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n@@ -17042,15 +17042,15 @@\n 1. LinuxCNC (or another HAL application) must be running.\n 2. If no pinname is specified, default is: motion-command-handler.time.\n 3. This app may be opened for 5 pins.\n 4. Pintypes float, s32, u32, bit are supported.\n 5. The pin must be associated with a thread supporting floating point For a base thread, this may\n require using loadrt motmod ... base_thread_fp=1 .\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 309 / 1224\n \n Figure 5.31 \u2013 hal-histogram Window\n \n 5.13.8 Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -17063,15 +17063,15 @@\n 5. Identification of unknown functions for unhandled components.\n 6. Signals with no output.\n 7. Signals with no inputs.\n 8. Functions with no addf.\n 9. Warning tags for components marked as deprecated/obsolete in docs.\n 10. Real names for pins that use alias names.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 310 / 1224\n \n The report can be generated from the command line and directed to an output file (or stdout if no\n outfilename is specified):\n halreport Usage\n Usage:\n@@ -17147,15 +17147,15 @@\n servo-thread 004\n servo-thread 008\n \n In the example above, the HALFILE uses halcmd aliases to simplify pin names for an hostmot2 FPGA\n board with commands like:\n alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 311 / 1224\n \n Note\n Questionable component function detection may occur for\n 1. unsupported (deprecated) components,\n 2. user-created components that use multiple functions or unconventional function naming, or\n@@ -17166,15 +17166,15 @@\n Component pins that cannot be associated with a known thread function report the function as \u201dUnknown\u201d.\n \n halreport generates a connections report (without pin types, and current values) for a running HAL\n application to aid in designing and verifying connections. This helps with the understanding what the\n source of a pin value is. Use this information with applications like halshow, halmeter, halscope or\n the halcmd show command in a terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 312 / 1224\n \n Chapitre 6\n \n Hardware Drivers\n 6.1 Parallel Port Driver\n@@ -17207,15 +17207,15 @@\n The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c). The ports are\n numbered starting at zero.\n \n 6.1.1 Loading\n The hal_parport driver is a real time component so it must be loaded into the real time thread with\n loadrt. The configuration string describes the parallel ports to be used, and (optionally) their types. If\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 313 / 1224\n \n the configuration string does not describe at least one port, it is an error.\n loadrt hal_parport cfg=\u201dport [type] [port [type] ...]\u201d\n \n Specifying the Port Numbers below 16 refer to parallel ports detected by the system. This is the\n@@ -17237,15 +17237,15 @@\n 2 to 9 explicitly specified as outputs. Note that you must know the base address of the parallel ports\n to configure the drivers correctly. For ISA bus ports, this is usually not a problem, since the ports\n are almost always at a well-known address, such as 0x278 or 0x378 which are typically configured\n in the BIOS. The addresses of PCI bus cards are usually found with lspci -v in an I/O ports line, or\n in a kernel message after running sudo modprobe -a parport_pc. There is no default address, so if\n does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 314 / 1224\n \n Figure 6.1 \u2013 Parport block diagram\n Type For each parallel port handled by the hal_parport driver, a type can optionally be specified. The\n type is one of in, out, epp, or x.\n Table 6.1: Parallel Port Direction\n@@ -17305,15 +17305,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 315 / 1224\n \n Table 6.1: (continued)\n Pin\n 14\n 15\n@@ -17376,15 +17376,15 @@\n direction.\n loadrt hal_parport cfg=\u201d0x378 0xc000\u201d\n \n Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their\n settings depending on which slot you put them into, so if you like to \u2019get under the hood\u2019 and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 316 / 1224\n \n 6.1.3 Pins\n \u2014 parport.

.pin--out (bit) Drives a physical output pin.\n \u2014 parport.

.pin--in (bit) Tracks a physical input pin.\n \u2014 parport.

.pin--in-not (bit) Tracks a physical input pin, but inverted.\n@@ -17422,15 +17422,15 @@\n idea to use both an -all function and an individual function at the same time.\n \n 6.1.6 Common problems\n If loading the module reports\n insmod: error inserting \u2019/home/jepler/emc2/rtlib/hal_parport.ko\u2019:\n -1 Device or resource busy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 317 / 1224\n \n then ensure that the standard kernel module parport_pc is not loaded 1 and that no other device in\n the system has claimed the I/O ports.\n If the module loads but does not appear to function, then the port address is incorrect.\n \n@@ -17466,15 +17466,15 @@\n \n Then use of this module will probably be necessary.\n Finally, HAL parport components should be loaded:\n loadrt probe_parport\n loadrt hal_parport ...\n 1. In the LinuxCNC packages for Ubuntu, the file /etc/modprobe.d/emc2 generally prevents parport_pc from being automatically loaded.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 318 / 1224\n \n 6.2 AX5214H Driver\n The Axiom Measurement & Control AX5214H is a 48 channel digital I/O board. It plugs into an ISA\n bus, and resembles a pair of 8255 chips. In fact it may be a pair of 8255 chips, but I\u2019m not sure. If/when\n someone starts a driver for an 8255 they should look at the ax5214 code, much of the work is already\n@@ -17513,15 +17513,15 @@\n module, and FALSE drives it high, turning OFF the OPTO-22 module. If -invert is TRUE, then setting\n the HAL out- pin TRUE will drive the physical pin high and turn the module OFF.\n \n 6.2.4 Functions\n \u2014 (funct) ax5214..read \u2014 Reads all digital inputs on one board.\n \u2014 (funct) ax5214..write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 319 / 1224\n \n 6.3 General Mechatronics Driver\n General Mechatronics GM6-PCI card based motion control system\n For detailed description, please refer to the System integration manual.\n The GM6-PCI motion control card is based on an FPGA and a PCI bridge interface ASIC. A small\n@@ -17539,15 +17539,15 @@\n loadrt hal_gm\n \n During loading (or attempted loading) the driver prints some useful debugging messages to the kernel\n log, which can be viewed with dmesg.\n Up to 3 boards may be used in one system.\n The following connectors can be found on the GM6-PCI card:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 320 / 1224\n \n Figure 6.2 \u2013 GM6-PCI card connectors and LEDs\n \n 6.3.1 I/O connectors\n \n@@ -17583,15 +17583,15 @@\n 2\n IOx/0\n \n Each pin can be configured as digital input or output. GM6-PCI motion control card has 4 general\n purpose I/O (GPIO) connectors, with eight configurable I/O on each. Every GPIO pin and parameter\n name begins as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n gm..gpio.\n \n where is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n gm.0.gpio.0.in-0\n \n@@ -17639,15 +17639,15 @@\n \n 6.3.2 Axis connectors\n \n Figure 6.4 \u2013 Pin numbering of axis connectors\n \n 321 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 322 / 1224\n \n Table 6.5: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17675,15 +17675,15 @@\n modules to the axis connectors. Seven different system configurations are presented in the System integration manual for evaluating typical applications. Also the detailed description of the Axis modules\n can be found in the System integration manual.\n For evaluating the appropriate servo-drive structure the modules have to be connected as the following\n block diagram shows:\n \n Figure 6.5 \u2013 Servo axis interfaces\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 323 / 1224\n \n 6.3.2.2 Encoder\n The GM6-PCI motion control card has six encoder modules. Each encoder module has three channels:\n \u2014 Channel-A\n \u2014 Channel-B\n@@ -17747,15 +17747,15 @@\n calculate velocity. It greatly reduces\n quantization noise as compared to\n simply differentiating the position\n output. When the measured velocity is\n below min-speed-estimate, the\n velocity output is 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 324 / 1224\n \n Table 6.7: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17830,15 +17830,15 @@\n example, if position-scale is 2000, then\n 1000 counts of the encoder will\n produce a position of 0.5 units.\n \n Setting encoder module of axis 0 to receive 500 CPR quadrature encoder signal and use\n reset to round position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 325 / 1224\n \n setp gm.0.encoder.0.counter-mode 0\n # 0: quad, 1: stepDir\n setp gm.0.encoder.0.index-mode 1\n # 0: reset pos at index, 1:round pos at index\n@@ -17909,15 +17909,15 @@\n \n Parameter description\n When 0, module produces Step/Dir signal.\n When 1, it produces Up/Down step signals.\n And when it is 2, it produces quadrature\n output signals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 326 / 1224\n \n Table 6.9: (continued)\n Parameters\n .control-type\n \n@@ -17974,15 +17974,15 @@\n Minimum time between two step pulses in\n nano-seconds.\n Minimum time between step pulse and\n direction change in nanoseconds.\n \n For evaluating the appropriate values see the timing diagrams below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 327 / 1224\n \n Figure 6.6 \u2013 Reference signal timing diagrams\n Setting StepGen module of axis 0 to generate 1000 step pulse per position unit\n setp gm.0.stepgen.0.step-type 0\n setp gm.0.stepgen.0.control-type 0\n@@ -18000,15 +18000,15 @@\n # step generator, let interpolator control it.\n setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit\n setp gm.0.stepgen.0.steplen 1000\n # 1000 ns = 1 \u00b5s\n setp gm.0.stepgen.0.stepspace1000\n # 1000 ns = 1 \u00b5s\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n 328 / 1224\n \n # 2000 ns = 2 \u00b5s\n \n@@ -18061,15 +18061,15 @@\n direction\n (bit, In)\n \n Pin description\n Enable DAC output. When enable is\n false, DAC output is 0.0 V.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 329 / 1224\n \n Table 6.11: (continued)\n Pins\n \n Type and\n@@ -18132,15 +18132,15 @@\n gm..can-gm.\n \n where is from 0 to 5. For example, gm.0.can-gm.0.position refers to the output position\n of axis 0 in position units.\n HAL pins are updated by function:\n gm..write\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 330 / 1224\n \n 6.3.3.1 Pins\n Table 6.13: CAN module pins\n Pins\n \n@@ -18186,15 +18186,15 @@\n \n Pin description\n Indicates that watchdog timer is expired.\n \n Watchdog timer overrun causes the set of power-enable to low in hardware.\n 6.3.4.2 Parameters\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 331 / 1224\n \n Table 6.16: Watchdog parameters\n Parameters\n \n Type and\n@@ -18299,15 +18299,15 @@\n 2\n V+\n (Ext.)\n \n The GM6-PCI motion control card has two limit- and one homing switch input for each joint. All the\n names of these pins begin as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 332 / 1224\n \n gm..joint.\n \n where is from 0 to 5. For example, gm.0.joint.0.home-sw-in indicates the state of the\n axis 0 home switch.\n@@ -18363,15 +18363,15 @@\n 6.3.6 Status LEDs\n 6.3.6.1 CAN\n Color: Orange\n \u2014 Blink, during data communication.\n \u2014 On, when any of the buffers are full - communication error.\n \u2014 Off, when no data communication.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 333 / 1224\n \n 6.3.6.2 RS485\n Color: Orange\n \u2014 Blink, during initialization of modules on the bus\n \u2014 On, when the data communication is up between all initialized modules.\n@@ -18402,15 +18402,15 @@\n Automatic node recognizing Each node connected to the bus was recognized by the GM6-PCI card\n automatically. During starting LinuxCNC, the driver export pins and parameters of all available modules automatically.\n Fault handling If a module does not answer regularly the GM6-PCI card drops down the module. If\n a module with output do not gets data with correct CRC regularly, the module switch to error state\n (green LED blinking), and turns all outputs to error state.\n Connecting the nodes 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 334 / 1224\n \n Figure 6.8 \u2013 Connecting the RS485 nodes to the GM6-PCI card\n Addressing Each node on the bus has a 4 bit unique address that can be set with a red DIP switch.\n Status LED A green LED indicates the status of the module:\n \u2014 Blink, when the module is only powered, but not jet identified, or when module is dropped down.\n@@ -18459,15 +18459,15 @@\n # First relay of the node.\n # Identifies the first GM6-PCI motion control card (PCI card\n # Selects node with address 0 on the RS485 bus\n # Selects the first relay\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 335 / 1224\n \n 6.3.7.2 Digital input module\n For pinout, connection and electrical charasteristics of the module, please refer to the System integration manual.\n All the pins and parameters are updated by the following function:\n gm..rs485\n@@ -18530,15 +18530,15 @@\n (bit, In)\n \n Pin description\n Value of ADC input in Volts.\n Enable DAC output. When enable is false then\n DAC output is set to 0.0 V.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 336 / 1224\n \n Table 6.23: (continued)\n Pins\n \n Type and\n@@ -18605,15 +18605,15 @@\n RS485 module pin and parameter name begins as follows:\n gm..rs485.\n \n where is from 00 to 15. Note that on the Teach Pendant module it cannot be changed, and\n pre-programmed as zero. Upon request it can be delivered with firmware pre-programmed different\n ID.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 337 / 1224\n \n Table 6.25: Teach Pendant module pins\n Pins\n .adc-<0-5>\n .enc-reset\n@@ -18695,15 +18695,15 @@\n Rev. 1.2\n \u2014 Error: The PCI card do not boot, when Axis 1. END B switch is active (low). Found on November\n 16, 2013.\n \u2014 Reason: This switch is connected to a boot setting pin of FPGA\n \u2014 Problem fix/workaround: Use other switch pin, or connect only normally open switch to this switch\n input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 338 / 1224\n \n 6.4 GS2 VFD Driver\n This is a userspace HAL program for the GS2 series of VFD\u2019s at Automation Direct. 2\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn spindle-vfd gs2_vfd -n spindle-vfd\n@@ -18740,15 +18740,15 @@\n With being \u201dgs2_vfd\u201d or the name given during loading with the -n option:\n \u2014 .DC-bus-volts (float, out) DC bus voltage of the VFD\n \u2014 .at-speed (bit, out) when drive is at commanded speed\n \u2014 .err-reset (bit, in) reset errors sent to VFD\n \u2014 .firmware-revision (s32, out) from the VFD\n 2. In Europe the equivalent can be found under the brand name Omron.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 339 / 1224\n \n \u2014 .frequency-command (float, out) from the VFD\n \u2014 .frequency-out (float, out) from the VFD\n \u2014 .is-stopped (bit, out) when the VFD reports 0 Hz output\n \u2014 .load-percentage (float, out) from the VFD\n@@ -18783,15 +18783,15 @@\n 6.5.1 Introduction\n HostMot2 is an FPGA configuration developed by Mesa Electronics for their line of Anything I/O motion\n control cards. The firmware is open source, portable and flexible. It can be configured (at compiletime) with zero or more instances (an object created at runtime) of each of several Modules: encoders\n (quadrature counters), PWM generators, and step/dir generators. The firmware can be configured\n (at run-time) to connect each of these instances to pins on the I/O headers. I/O pins not driven by a\n Module instance revert to general-purpose bi-directional digital I/O.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 340 / 1224\n \n 6.5.2 Firmware Binaries\n 50 Pin Header FPGA cards Several pre-compiled HostMot2 firmware binaries are available for the\n different Anything I/O boards. This list is incomplete, check the hostmot2-firmware distribution for\n up-to-date firmware lists.\n@@ -18828,15 +18828,15 @@\n firmware. The low-level I/O drivers provide this access. The low-level I/O drivers are loaded with\n commands like this:\n loadrt hm2_pci config=\u201dfirmware=hm2/5i20/SVST8_4.BIT\n num_encoders=3 num_pwmgens=3 num_stepgens=1\u201d\n \n The config parameters are described in the hostmot2 man page.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 341 / 1224\n \n 6.5.5 Watchdog\n The HostMot2 firmware may include a watchdog Module; if it does, the hostmot2 driver will use it.\n The watchdog must be petted by LinuxCNC periodically or it will bite. The hm2 write function (see\n below) pets the watchdog.\n@@ -18872,15 +18872,15 @@\n \n 6.5.7 Pinouts\n The hostmot2 driver does not have a particular pinout. The pinout comes from the firmware that the\n hostmot2 driver sends to the Anything I/O board. Each firmware has different pinout, and the pinout\n depends on how many of the available encoders, pwmgens, and stepgens are used. To get a pinout\n list for your configuration after loading LinuxCNC in the terminal window type:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 342 / 1224\n \n dmesg > hm2.txt\n \n The resulting text file will contain lots of information as well as the pinout for the HostMot2 and any\n error and warning messages.\n@@ -18929,15 +18929,15 @@\n [ 1141.053811] hm2/hm2_5i20.0: registered\n [ 1141.053815] hm2_5i20.0: initialized AnyIO board at 0000:02:02.0\n \n Note\n That the I/O Pin nnn will correspond to the pin number shown on the HAL Configuration screen for\n GPIOs. Some of the StepGen, Encoder and PWMGen will also show up as GPIOs in the HAL Configuration screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 343 / 1224\n \n 6.5.8 PIN Files\n The default pinout is described in a .PIN file (human-readable text). When you install a firmware\n package the .PIN files are installed in\n /usr/share/doc/hostmot2-firmware-/\n@@ -18949,15 +18949,15 @@\n 6.5.10 HAL Pins\n The HAL pins for each configuration can be seen by opening up Show HAL Configuration from the\n Machine menu. All the HAL pins and parameters can be found there. The following figure is of the\n 5I20 configuration used above.\n \n Figure 6.9 \u2013 5i20 HAL Pins\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 344 / 1224\n \n 6.5.11 Configurations\n 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\u2019s look\n at a couple of examples.\n In the 7I43 (two ports), SV8 (Servo 8) would be for having 8 servos or fewer, using the classic 7I33\n@@ -19102,15 +19102,15 @@\n 0\n 8 (tbl5)\n \n GPIO\n 0\n 12\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Firmware\n Encoder\n SVST2_4_7I47\n 4\n SV12_2X7I48_72 12\n SV12IM_2X7I48_72\n@@ -19281,15 +19281,15 @@\n that card. Different cards have different clock frequencies so make sure you load the proper .BIT file\n for your card. Custom hm2 firmwares can be created for special applications and you may see some\n custom hm2 firmwares in the directories with the default ones.\n When you load the board-driver (hm2_pci or hm2_7i43), you can tell it to disable instances of the three\n primary modules (pwmgen, stepgen, and encoder) by setting the count lower. Any I/O pins belonging\n to disabled module instances become GPIOs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 346 / 1224\n \n 6.5.12 GPIO\n General Purpose I/O pins on the board which are not used by a module instance are exported to HAL as\n full GPIO pins. Full GPIO pins can be configured at run-time to be inputs, outputs, or open drains, and\n have a HAL interface that exposes this flexibility. I/O pins that are owned by an active module instance\n@@ -19329,15 +19329,15 @@\n 6.5.13 StepGen\n StepGens have names like hm2_..stepgen.. Instance is a twodigit number that corresponds to the HostMot2 stepgen instance number. There are num_stepgens\n instances, starting with 00.\n Each stepgen allocates 2-6 I/O pins (selected at firmware compile time), but currently only uses two:\n Step and Direction outputs. 3\n 3. At present, the firmware supports multi-phase stepper outputs, but the driver doesn\u2019t. Interested volunteers are solicited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 347 / 1224\n \n The StepGen representation is modeled on the stepgen software component. StepGen default is active\n high step output (high during step time low during step space). To invert a StepGen output pin you\n invert the corresponding GPIO pin that is being used by StepGen. To find the GPIO pin being used for\n the StepGen output run dmesg as shown above.\n@@ -19372,15 +19372,15 @@\n I/O pin on the connector is driven to the value specified by the out HAL pin (possibly inverted). If\n this parameter is true, the GPIO behaves as an open-drain pin. Writing 0 to the out HAL pin drives\n the I/O pin low, writing 1 to the out HAL pin puts the I/O pin in a high-impedance state. In this\n high-impedance state the I/O pin floats (weakly pulled high), and other devices can drive the value;\n the resulting value on the I/O pin is available on the in and in_not pins. Only full GPIO pins and I/O\n pins used as outputs by active module instances have this parameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 348 / 1224\n \n 6.5.14 PWMGen\n PWMgens have names like hm2_..pwmgen.. Instance is a twodigit number that corresponds to the HostMot2 pwmgen instance number. There are num_pwmgens\n instances, starting with 00.\n In HM2, each pwmgen uses three output I/O pins: Not-Enable, Out0, and Out1. To invert a PWMGen\n@@ -19420,15 +19420,15 @@\n different max PWM frequencies. If the user attempts to set the frequency too high, then it will be\n clipped to the max supported frequency of the board. Frequencies below about 5 Hz are not terribly\n accurate, but above 5 Hz they are pretty close.\n 6.5.14.3 Output Parameters\n The output pins of each PWMGen have two additional parameters. To find which I/O pin belongs to\n which output run dmesg as described above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 349 / 1224\n \n \u2014 invert_output - (Bit, RW) This parameter only has an effect if the is_output parameter is true.\n If this parameter is true, the output value of the GPIO will be the inverse of the value on the out\n HAL pin.\n \u2014 is_opendrain - (Bit, RW) If this parameter is false, the GPIO behaves as a normal output pin: The\n@@ -19468,15 +19468,15 @@\n False, the quadrature counter needs only 3 clocks to register a change. The encoder sample clock\n runs at 33 MHz on the PCI Anything I/O cards and 50 MHz on the 7I43.\n \u2014 index-invert - (Bit, RW) If set to True, the rising edge of the Index input pin triggers the Index\n event (if index-enable is True). If set to False, the falling edge triggers.\n \u2014 index-mask - (Bit, RW) If set to True, the Index input pin only has an effect if the Index-Mask input\n pin is True (or False, depending on the index-mask-invert pin below).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 350 / 1224\n \n \u2014 index-mask-invert - (Bit, RW) If set to True, Index-Mask must be False for Index to have an effect.\n If set to False, the Index-Mask pin must be True.\n \u2014 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\n .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.\n@@ -19509,15 +19509,15 @@\n \n 6.5.16.3 SSERIAL Configuration\n The sserial_port_0=0XXX configuration string sets some options for the smart serial daughter card.\n These options are specific for each daughter card. See the Mesa manual for more information on the\n exact usage (typically in the section called SOFTWARE PROCESS DATA MODES) or see the manual\n page of SSERIAL(9).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 351 / 1224\n \n 6.5.16.4 7I77 Limits\n The minlimit and maxlimit are bounds on the pin value (in this case the analog out value) fullscalemax\n is the scale factor.\n These are by default set to the analog in or analog range (most likely in Volts).\n@@ -19556,15 +19556,15 @@\n MB2HAL.\n Why MB2HAL? Consider using MB2HAL if:\n \u2014 You have to write a new driver and you don\u2019t know anything about programming.\n \u2014 You need to use Classic Ladder \u201donly\u201d to manage the Modbus connections.\n \u2014 You have to discover and configure first time the Modbus transactions. MB2HAL have debug levels\n to facilitate the low level protocol debug.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 352 / 1224\n \n \u2014 You have more than one device to connect. MB2HAL is very efficiently managing multiple devices,\n transactions and links. Currently I am monitoring two axis drivers using a Rs232 port, a VFD driver\n using another Rs232 port, and a remote I/O using TCP/IP.\n \u2014 You want a protocol to connect your Arduino to HAL. Look the included sample configuration file,\n@@ -19633,15 +19633,15 @@\n Yes\n \n Description\n You must specify either a \u201dserial\u201d or \u201dtcp\u201d link for the first\n transaction. Later transactions will use the previous\n transaction link if not specified.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Value\n TCP_IP\n TCP_PORT\n \n Type\n IP address\n@@ -19766,15 +19766,15 @@\n the actual rate may be lower. If you want to calculate it in\n ms use (1000 / required_ms). Example: 100 ms =\n MAX_UPDATE_RATE=10.0, because 1000.0 ms / 100.0 ms =\n 10.0 Hz.\n Debug level for this transaction only. See INIT_DEBUG\n parameter above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 354 / 1224\n \n 6.6.3.3 Error codes\n While debugging transactions, note the returned \u201dret[]\u201d value correspond to:\n Modbus protocol exceptions:\n \u2014 0x01 - ILLEGAL_FUNCTION - the FUNCTION code received in the query is not allowed or invalid.\n@@ -19814,15 +19814,15 @@\n # ++++++++++++++++++++++++\n [MB2HAL_INIT]\n #OPTIONAL: Debug level of init and INI file parsing.\n # 0 = silent.\n # 1 = error messages (default).\n # 2 = OK confirmation messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 355 / 1224\n \n # 3 = debugging messages.\n # 4 = maximum debugging messages (only in transactions).\n INIT_DEBUG=3\n #OPTIONAL: Set to 1.1 to enable the new functions:\n@@ -19867,15 +19867,15 @@\n SERIAL_BAUD=115200\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n #if LINK_TYPE=tcp then IGNORED\n #Data bits. One of 5,6,7,8.\n SERIAL_BITS=8\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 356 / 1224\n \n #if LINK_TYPE=tcp then IGNORED\n #Data parity. One of: even, odd, none.\n SERIAL_PARITY=none\n #if LINK_TYPE=serial then REQUIRED (only 1st time).\n@@ -19959,15 +19959,15 @@\n #\n Both pin values are added and limited to 65535 (UINT16_MAX). Normally use one and let \u2190the other open (read as 0).\n # fnct_15_write_multiple_coils:\n #\n mb2hal.m.n.bit\n (input)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 357 / 1224\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20030,15 +20030,15 @@\n -0x07 Unsuccessful programming request using function code 13 or \u219014.\n #MEMORY_PARITY_ERROR\n -0x08 SLAVE parity error in MEMORY.\n #GATEWAY_PROBLEM_PATH\n -0x0A (-10) Gateway path(s) not available.\n #GATEWAY_PROBLEM_TARGET -0x0B (-11) The target device failed to repond (generated by \u2190master, not slave).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20095,15 +20095,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 358 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 359 / 1224\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20136,15 +20136,15 @@\n 6.6.5.3 fnct_03_read_holding_registers\n \u2014 mb2hal.m.n.float float out\n \u2014 mb2hal.m.n.int s32 out\n 6.6.5.4 fnct_04_read_input_registers\n \u2014 mb2hal.m.n.float float out\n \u2014 mb2hal.m.n.int s32 out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 360 / 1224\n \n 6.6.5.5 fnct_05_write_single_coil\n \u2014 mb2hal.m.n.bit bit in\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.\n 6.6.5.6 fnct_06_write_single_register\n@@ -20175,15 +20175,15 @@\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01\n \n The above command says:\n loadusr, wait for coolant pins to be ready, component mitsub_vfd, with 2 slaves named spindle (slave\n #2) and coolant (slave #1)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 361 / 1224\n \n 6.7.1 Command Line Options\n The command line options are:\n \u2014 -b or --baud : set the baud rate - all networked VFDs must be the same\n \u2014 -p or --port : sets the port to use such as /dev/ttyUSB0\n@@ -20228,15 +20228,15 @@\n net spindle-at-speed\n spindle.up-to-speed\n net estop-out\n spindle.estop\n #\n cmd scaled to RPM\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n setp spindle.scale-cmd .135\n #\n feedback is in rpm\n setp spindle.scale-fb 7.411\n #\n allows us to see status\n@@ -20284,15 +20284,15 @@\n \u2014 PR 121 set to 1-10 -if 10 (maximuim) COM errors then VFD faults.\n \u2014 PR 122 tested with 9999 -if communication is lost VFD will not error.\n \u2014 PR 123 set to 9999 -no wait time is added to the serial data frame.\n \u2014 PR 124 set to 0 -no carriage return at end of line.\n \n 362 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 363 / 1224\n \n 6.8 Motenc Driver\n Vital Systems Motenc-100 and Motenc-LITE\n The Vital Systems Motenc-100 and Motenc-LITE are 8- and 4-channel servo control boards. The\n Motenc-100 provides 8 quadrature encoder counters, 8 analog inputs, 8 analog outputs, 64 (68?)\n@@ -20327,15 +20327,15 @@\n input.\n \u2014 (bit) motenc..out- - Value to be written to digital output, seen canonical digital\n output.\n \u2014 (bit) motenc..estop-in - Dedicated estop input, more details needed.\n \u2014 (bit) motenc..estop-in-not - Inverted state of dedicated estop input.\n \u2014 (bit) motenc..watchdog-reset - Bidirectional, - Set TRUE to reset watchdog once, is automatically cleared.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 364 / 1224\n \n 6.8.2 Parameters\n \u2014 (float) motenc..enc--scale - The number of counts / user unit (to convert from\n counts to units).\n \u2014 (float) motenc..dac--offset - Sets the DAC offset.\n@@ -20385,15 +20385,15 @@\n 50 pin connectors the same as Mesa boards. Any relay racks/breakout boards that work with Mesa\n Cards should work with this card with the understanding any encoder counters, PWM, etc., would\n have to be done in software. The AC5 does not have any smart logic on board, it is just an adapter.\n See the manufacturer\u2019s website for more info:\n http://www.opto22.com/site/pr_details.aspx?cid=4&item=PCI-AC5\n I would like to thank Opto22 for releasing info in their manual, easing the writing of this driver!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 365 / 1224\n \n 6.9.2 The Driver\n This driver is for the PCI AC5 card and will not work with the ISA AC5 card. The HAL driver is a\n realtime module. It will support 4 cards as is (more cards are possible with a change in the source\n code). Load the basic driver like so:\n@@ -20430,15 +20430,15 @@\n opto_ac5.0.port0.in-00\n \n They would be numbered from 00 to 11\n opto_ac5.0.port0.out-12\n \n They would be numbered 12 to 23 port 1 would be the same.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 366 / 1224\n \n 6.9.6 Configuring I/O Ports\n To change the default setting load the driver something like so:\n loadrt opto_ac5 portconfig0=0xffff portconfig1=0xff0000\n \n@@ -20482,15 +20482,15 @@\n single parport. One driver serves all types of boards. The final mix of I/O depends on the connected\n board(s). The driver doesn\u2019t distinguish between boards, it simply numbers I/O channels (encoders,\n etc) starting from 0 on the first board. The driver is named hal_ppmc.ko The analog servo interface is\n also called the PPMC for Parallel Port Motion Control. There is also the Universal Stepper Controller,\n abbreviated the USC. And the Universal PWM Controller, or UPC.\n Installing:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 367 / 1224\n \n loadrt hal_ppmc port_addr=[,[,...]]\n \n The port_addr parameter tells the driver what parallel port(s) to check. By default, is 0x0378,\n and and following are not used. The driver searches the entire address space of the enhanced\n@@ -20535,15 +20535,15 @@\n the command line. All parallel ports I have here work with the new default behavior. As on the other\n parameters, it is possible to give a list, like epp_dir=1,0,1 to set different settings for each of up to 3\n parallel ports.\n \n 6.10.2 Pins\n In the following pins, parameters, and functions, 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 368 / 1224\n \n setting the address on the EPP bus. USC and UPC have simple provisions for only two addresses, but\n jumper foil cuts allow up to 4 boards to be addressed. The PPMC boards have 16 possible addresses.\n In all cases, the driver enumerates the boards by type and exports the appropriate HAL pins. For\n instance, the encoders will be enumerated from zero up, in the same order as the address switches on\n@@ -20587,15 +20587,15 @@\n PPMC driver to enable this function on the first USC ur UPC board.\n \u2014 (Option bit input) ppmc..dout..out - Value to be written to one of the 8 extra\n digital output pins on J8. You must specify extradout = 0x00 on the HAL command line that loads\n the ppmc driver to enable this function on the first USC or UPC board. extradac and extradout are\n mutually exclusive features as they use the same signal lines for different purposes. These output\n pins will be enumerated after the standard digital outputs of the board.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 369 / 1224\n \n 6.10.3 Parameters\n \u2014 (All float) ppmc..encoder..scale - The number of counts / user unit (to convert\n from counts to units).\n \u2014 (UPC float) ppmc..pwm..freq - The PWM carrier frequency, in Hz. Applies\n@@ -20636,15 +20636,15 @@\n digital output.\n \n 6.10.4 Functions\n \u2014 (All funct) ppmc..read - Reads all inputs (digital inputs and encoder counters) on one port.\n These reads are organized into blocks of contiguous registers to be read in a block to minimize\n CPU overhead.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 370 / 1224\n \n \u2014 (All funct) ppmc..write - Writes all outputs (digital outputs, stepgens, PWMs) on one port.\n These writes are organized into blocks of contiguous registers to be written in a block to minimize\n CPU overhead.\n \n@@ -20680,15 +20680,15 @@\n select HIGH for positive values and LOW for negative values, set the corresponding dout-NN-invert\n parameter TRUE to invert the signal.\n \u2014 The index input is triggered on the rising edge. Initial testing has shown that the QZx inputs are\n particularly noise sensitive, due to being polled every 25 ns. Digital filtering has been added to filter\n pulses shorter than 175 ns (seven polling times). Additional external filtering on all input pins, such\n as a Schmitt buffer or inverter, RC filter, or differential receiver (if applicable) is recommended.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 371 / 1224\n \n \u2014 The IN1\u2026IN7 pins have 22 \u03a9 series resistors to their associated FPGA pins. No other pins have any\n sort of protection for out-of-spec voltages or currents. It is up to the integrator to add appropriate\n isolation and protection. Traditional parallel port optoisolator boards do not work with pluto_servo\n due to the bidirectional nature of the EPP protocol.\n@@ -20721,15 +20721,15 @@\n with PWM spindle control, a lathe with spindle encoder, etc. The large number of inputs allows a full\n set of limit switches.\n This driver features:\n \u2014 4 quadrature channels with 40 MHz sample rate. The counters operate in 4x mode. The maximum\n useful quadrature rate is 8191 counts per LinuxCNC servo cycle, or about 8 MHz for LinuxCNC\u2019s\n default 1 ms servo rate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 372 / 1224\n \n \u2014 4 PWM channels, up/down or pwm+dir style. 4095 duty cycles from -100% to +100%, including\n 0%. The PWM period is approximately 19.5 kHz (40 MHz / 2047). A PDM-like mode is also available.\n \u2014 18 digital outputs: 10 dedicated, 8 shared with PWM functions. (Example: A lathe with unidirectional PWM spindle control may use 13 total digital outputs)\n \u2014 20 digital inputs: 8 dedicated, 12 shared with Quadrature functions. (Example: A lathe with index\n@@ -20751,15 +20751,15 @@\n \u2014 INx - Dedicated digital input #x\n \u2014 OUTx - Dedicated digital output #x\n \u2014 GND - Ground\n \u2014 VCC - +3.3V regulated DC\n \n Figure 6.10 \u2013 Pluto-Servo Pinout\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 373 / 1224\n \n Table 6.27: Pluto-Servo Alternate Pin Functions\n Primary function\n \n Alternate Function\n@@ -20878,15 +20878,15 @@\n Read same value\n \n 6.11.2.2 Input latching and output updating\n \u2014 PWM duty cycles for each channel are updated at different times.\n \u2014 Digital outputs OUT0 through OUT9 are all updated at the same time. Digital outputs OUT10\n through OUT17 are updated at the same time as the pwm function they are shared with.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 374 / 1224\n \n \u2014 Digital inputs IN0 through IN19 are all latched at the same time.\n \u2014 Quadrature positions for each channel are latched at different times.\n 6.11.2.3 HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n@@ -20914,15 +20914,15 @@\n \u2014 OUTx - Dedicated digital output #x\n \u2014 GND - Ground\n \u2014 VCC - +3.3V regulated DC\n While the extended main connector has a superset of signals usually found on a Step & Direction DB25\n connector\u20144 step generators, 9 inputs, and 6 general-purpose outputs\u2014the layout on this header is\n different than the layout of a standard 26-pin ribbon cable to DB25 connector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 375 / 1224\n \n Figure 6.11 \u2013 Pluto-Step Pinout\n \n 6.11.3.2 Input latching and output updating\n \u2014 Step frequencies for each channel are updated at different times.\n@@ -20931,15 +20931,15 @@\n \u2014 Feedback positions for each channel are latched at different times.\n 6.11.3.3 Step Waveform Timings\n The firmware and driver enforce step length, space, and direction change times. Timings are rounded\n up to the next multiple of 1.6\u03bcs, with a maximum of 49.6\u03bcs. The timings are the same as for the software stepgen component, except that dirhold and dirsetup have been merged into a single parameter\n dirtime which should be the maximum of the two, and that the same step timings are always applied\n to all channels.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 376 / 1224\n \n Figure 6.12 \u2013 Pluto-Step Timings\n \n 6.11.3.4 HAL Functions, Pins and Parameters\n A list of all loadrt arguments, HAL function names, pin names and parameter names is in the manual\n@@ -20956,15 +20956,15 @@\n \n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn pmx485 pmx485 /dev/ttyUSB0\n \n This will load the pmx485 component using the /dev/ttyUSB0 port and wait for it to become ready.\n It is necessary to name the port to use for communications.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 377 / 1224\n \n 6.12.1 Pins\n \u2014 pmx485.mode-set (bit, in) # set cutting mode\n \u2014 pmx485.current-set (bit, in) # set cutting current\n \u2014 pmx485.pressure-set (bit, in) # set gas pressure\n@@ -20995,15 +20995,15 @@\n \u2014 Disconnect the Powermax power supply from its power source for approximately 30 seconds. When\n you power the system back ON, it will no longer be in remote mode.\n \n 6.12.3 Reference:\n \u2014 Hypertherm Application Note #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serial Communication Protocol\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 378 / 1224\n \n 6.13 Servo To Go Driver\n The Servo-To-Go (STG) is one of the first PC motion control cards supported by LinuxCNC. It is an\n ISA card and it exists in different flavors (all supported by this driver). The board includes up to 8\n channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, an\n@@ -21044,15 +21044,15 @@\n \u2014 stg..counts - (s32) Tracks the counted encoder ticks.\n \u2014 stg..position - (float) Outputs a converted position.\n \u2014 stg..dac-value - (float) Drives the voltage for the corresponding DAC.\n \u2014 stg..adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n \u2014 stg.in- - (bit) Tracks a physical input pin.\n \u2014 stg.in--not - (bit) Tracks a physical input pin, but inverted.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 379 / 1224\n \n \u2014 stg.out- - (bit) Drives a physical output pin\n For each pin, is the axis number, and is the logic pin number of the STG if\n IIOO is defined, there are 16 input pins (in-00 .. in-15) and 16 output pins (out-00 .. out-15), and they\n correspond to PORTs ABCD (in-00 is PORTA.0, out-15 is PORTD.7).\n@@ -21089,15 +21089,15 @@\n The ShuttleXpress has five momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n The ShuttlePRO has 13 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n The ShuttlePRO2 has 15 momentary buttons, a 10 counts/revolution jog wheel with detents, and a\n 15-position spring-loaded outer wheel that returns to center when released.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 380 / 1224\n \n AVERTISSEMENT\n 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\n event comes into the driver, the driver uses the device\u2019s reported jog-wheel position to initialize counts to 0.\n This means that if the first event is generated by a jog-wheel move, that first move will be lost.\n@@ -21135,15 +21135,15 @@\n \n 6.15 VFS11 VFD Driver\n This is a userspace HAL program to control the S11 series of VFD\u2019s from Toshiba.\n vfs11_vfd supports serial and TCP connections. Serial connections may be RS232 or RS485. RS485 is\n 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\n a terminal server.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 381 / 1224\n \n Regardless of the connection type, vfs11_vfd operates as a Modbus master.\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd\n \n@@ -21182,15 +21182,15 @@\n \u2014 .estop (bit, in) put the VFD into emergency-stopped status. No operation possible until cleared\n with err-reset or powercycling.\n \u2014 .frequency-command (float, out) current target frequency in Hz as set through speed-command\n (which is in RPM), from the VFD\n \u2014 .frequency-out (float, out) current output frequency of the VFD\n \u2014 .inverter-load-percentage (float, out) current load report from VFD\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 382 / 1224\n \n \u2014 .is-e-stopped (bit, out) the VFD is in emergency stop status (blinking \u201dE\u201d on panel). Use errreset to reboot the VFD and clear the e- stop status.\n \u2014 .is-stopped (bit, out) true when the VFD reports 0 Hz output\n \u2014 .max-rpm (float, R) actual RPM limit based on maximum frequency the VFD may generate, and\n the motors nameplate values. For instance, if nameplate-HZ is 50, and nameplate-RPM_ is 1410,\n@@ -21226,15 +21226,15 @@\n \u2014 .loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n \u2014 .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.\n \u2014 .nameplate-RPM (float, RW) Nameplate RPM of motor (default 1410)\n \u2014 .rpm-limit (float, RW) do-not-exceed soft limit for motor RPM (defaults to nameplate-RPM ).\n \u2014 .tolerance (float, RW) speed tolerance (default 0.01) for determining whether spindle is at\n speed (0.01 meaning: output frequency is within 1% of target frequency)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 383 / 1224\n \n 6.15.4 INI file configuration\n This lists all options understood by vfs11_vfd. Typical setups for RS-232, RS-485 and TCP can be found\n in src/hal/user_comps/vfs11_vfd/*.ini.\n [VFS11]\n@@ -21274,15 +21274,15 @@\n # target modbus ID\n TARGET=1\n # on I/O failure, try to reconnect after sleeping\n # for RECONNECT_DELAY seconds\n RECONNECT_DELAY=1\n # misc. parameters\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 384 / 1224\n \n DEBUG=10\n MODBUS_DEBUG=0\n POLLCYCLES=10\n \n@@ -21322,15 +21322,15 @@\n number E6581158).\n \n 6.15.7 Error Recovery\n vfs11_vfd recovers from I/O errors as follows: First, all HAL pins are set to default values, and the\n driver will sleep for RECONNECT_DELAY seconds (default 1 second).\n \u2014 Serial (TYPE=rtu) mode: on error, close and reopen the serial port.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 385 / 1224\n \n \u2014 TCP server (TYPE=tcpserver) mode: on losing the TCP connection, the driver will go back to listen\n for incoming connections.\n \u2014 TCP client (TYPE=tcpclient) mode: on losing the TCP connection, the driver will reconnect to\n TCPDEST:PORTNO.\n@@ -21361,15 +21361,15 @@\n (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\n the INI file.\n To use the full functionality on lucid and precise:\n \u2014 remove the libmodbus packages: sudo apt-get remove libmodbus5 libmodbus-dev\n \u2014 build and install libmodbus version 3 from source as outlined here.\n Libmodbus does not build on Ubuntu Hardy, hence vfs11_vfd is not available on Hardy.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 386 / 1224\n \n Chapitre 7\n \n Hardware Examples\n 7.1 PCI Parallel Port\n@@ -21400,15 +21400,15 @@\n and then added the following lines so the parport will be read and written:\n addf parport.1.read base-thread\n addf parport.1.write base-thread\n \n After doing the above then run your config and verify that the parallel port got loaded in Machine/Show\n HAL Configuration window.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 387 / 1224\n \n 7.2 Spindle Control\n LinuxCNC can control up to 8 spindles. The number is set in the INI file. The examples below all refer\n to a single-spindle config with spindle control pins with names like spindle.0... In the case of a multiple\n spindle machine all that changes is that additional pins exist with names such as spindle.6...\n@@ -21444,15 +21444,15 @@\n \n 7.2.3 Spindle Enable\n If you need a spindle enable signal, link your output pin to spindle.0.on. To link these pins to a parallel\n port pin put something like the following in your .hal file, making sure you pick the pin that is connected\n to your control device.\n net spindle-enable spindle.0.on => parport.0.pin-14-out\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 388 / 1224\n \n 7.2.4 Spindle Direction\n If you have direction control of your spindle, then the HAL pins spindle.N.forward and spindle.N.reverse\n are controlled by the G-codes M3 and M4. Spindle speed Sn must be set to a positive non-zero value\n for M3/M4 to turn on spindle motion.\n@@ -21495,15 +21495,15 @@\n net spindle-ramped <= spindle-ramp.out => scale.0.in\n # to know when to start the motion we send the near component\n # (named spindle-at-speed) to the spindle commanded speed from\n # the signal spindle-cmd and the actual spindle speed\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 389 / 1224\n \n # provided your spindle can accelerate at the maxv setting.\n net spindle-cmd => spindle-at-speed.in1\n net spindle-ramped => spindle-at-speed.in2\n # the output from spindle-at-speed is sent to spindle.0.at-speed\n@@ -21542,15 +21542,15 @@\n 1. In this example, we will assume that some encoders have already been issued to axes/joints 0, 1, and 2. So the next encoder\n available for us to attach to the spindle would be number 3. Your situation may differ.\n 2. The HAL encoder index-enable is an exception to the rule in that it behaves as both an input and an output, see the\n Encoder Section for details\n 3. It is because we selected non-quadrature simple counting\u2026 above that we can get away with quadrature counting without\n having any B quadrature input.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 390 / 1224\n \n 7.2.6.2 Spindle At Speed\n To enable LinuxCNC to wait for the spindle to be at speed before executing a series of moves, the\n spindle.N.at-speed needs to turn true at the moment the spindle is at the commanded speed. To\n achieve this you need spindle feedback from an encoder. Since the feedback and the commanded\n@@ -21590,15 +21590,15 @@\n loadrt encoder num_chan=1\n loadrt mux4 count=1\n addf encoder.capture-position servo-thread\n addf encoder.update-counters base-thread\n addf mux4.0 servo-thread\n # If your MPG outputs a quadrature signal per click set x4 to 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 391 / 1224\n \n # If your MPG puts out 1 pulse per click set x4 to 0\n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n@@ -21645,15 +21645,15 @@\n loadrt ilowpass\n addf ilowpass.0 servo-thread\n setp ilowpass.0.scale 1000\n setp ilowpass.0.gain 0.01\n # If your MPG outputs a quadrature signal per click set x4 to 1\n # If your MPG puts out 1 pulse per click set x4 to 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 392 / 1224\n \n setp encoder.0.x4-mode 0\n # For velocity mode, set to 1\n # In velocity mode the axis stops when the dial is stopped\n # even if that means the commanded motion is not completed,\n@@ -21696,15 +21696,15 @@\n 7.4.1 Example\n This example shows the connections needed to use an Automation Direct GS2 VFD to drive a spindle.\n The spindle speed and direction is controlled by LinuxCNC.\n Using the GS2 component involves very little to set up. We start with a StepConf Wizard generated\n config. Make sure the pins with \u201dSpindle CW\u201d and \u201dSpindle PWM\u201d are set to unused in the parallel\n port setup screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 393 / 1224\n \n In the custom.hal file we place the following to connect LinuxCNC to the GS2 and have LinuxCNC\n control the drive.\n GS2 Example\n # load the user space component for the Automation Direct GS2 VFD\u2019s\n@@ -21733,15 +21733,15 @@\n \u2014 P4.00 (Source of Frequency Command) must be set to Frequency determined by RS232C/RS485\n communication interface, 05.\n \u2014 P9.01 (Transmission Speed) must be set to 9600 baud, 01.\n \u2014 P9.02 (Communication Protocol) must be set to \u201dModbus RTU mode, 8 data bits, no parity, 2 stop\n bits\u201d, 03.\n A PyVCP panel based on this example is here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 394 / 1224\n \n Chapitre 8\n \n ClassicLadder\n 8.1 ClassicLadder Introduction\n@@ -21773,15 +21773,15 @@\n circuits. Ladder logic is useful because a wide variety of engineers and technicians can understand\n and use it without much additional training because of the resemblance.\n Ladder logic is widely used to program PLCs, where sequential control of a process or manufacturing\n operation is required. Ladder logic is useful for simple but critical control systems, or for reworking\n old hardwired relay circuits. As programmable logic controllers became more sophisticated it has also\n been used in very complex automation systems.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 395 / 1224\n \n Ladder logic can be thought of as a rule-based language, rather than a procedural language. A rung in\n the ladder represents a rule. When implemented with relays and other electromechanical devices, the\n various rules execute simultaneously and immediately. When implemented in a programmable logic\n controller, the rules are typically executed sequentially by software, in a loop. By executing the loop\n@@ -21820,15 +21820,15 @@\n are the primary feature of the contactor.\n Since this auxiliary switch is driven from coil Q0 in our earlier example, we will give it the same\n number as the coil that drives it. This is the standard practice followed in all ladder programming,\n although it may seem strange at first to see a switch labeled the same as a coil. So let\u2019s call this\n auxiliary contact Q0 and connect it across the B0 pushbutton contact from our earlier example.\n Let\u2019s take a look at it:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 396 / 1224\n \n As before, when the user presses pushbutton B0, coil Q0 comes on. And when coil Q0 comes on, switch\n Q0 comes on. Now the interesting part happens. When the user releases pushbutton B0, coil Q0 does\n not stop as it did before. This is because switch Q0 of this circuit is effectively holding the user\u2019s\n pushbutton pressed. So we see that switch Q0 is still holding coil Q0 on after the start pushbutton has\n@@ -21855,15 +21855,15 @@\n \n 8.2 ClassicLadder Programming\n 8.2.1 Ladder Concepts\n ClassicLadder is a type of programming language originally implemented on industrial PLCs (it\u2019s\n called Ladder Programming). It is based on the concept of relay contacts and coils, and can be used to\n construct logic checks and functions in a manner that is familiar to many systems integrators. Ladder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 397 / 1224\n \n consists of rungs that may have branches and resembles an electrical circuit. It is important to know\n how ladder programs are evaluated when running.\n It seems natural that each line would be evaluated left to right, then the next line down, etc., but it\n doesn\u2019t work this way in ladder logic. Ladder logic scans the ladder rungs 3 times to change the state\n@@ -21903,15 +21903,15 @@\n and outputs. If you can turn a switch on and off faster than ClassicLadder can notice it then you may\n need to speed up the thread. The fastest that ClassicLadder can update the rungs is one millisecond.\n You can put it in a faster thread but it will not update any faster. If you put it in a slower than one\n millisecond thread then ClassicLadder will update the rungs slower. The current scan time will be\n displayed on the section display, it is rounded to microseconds. If the scan time is longer than one\n millisecond you may want to shorten the ladder or put it in a slower thread.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 398 / 1224\n \n 8.2.3.3 Variables\n It is possible to configure the number of each type of ladder object while loading the ClassicLadder\n real time module. If you do not configure the number of ladder objects ClassicLadder will use the\n default values.\n@@ -21988,15 +21988,15 @@\n 8.2.4 Loading the ClassicLadder user module\n ClassicLadder HAL commands must executed before the GUI loads or the menu item Ladder Editor\n will not function. If you used the Stepper Config Wizard place any ClassicLadder HAL commands in\n the custom.hal file.\n To load the user module:\n loadusr classicladder\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 399 / 1224\n \n Note\n Only one .clp file can be loaded. If you need to divide your ladder then use sections.\n \n To load a ladder file:\n@@ -22021,15 +22021,15 @@\n 8.2.5.1 Sections Manager\n When you first start up ClassicLadder you get an empty Sections Manager window.\n \n Figure 8.1 \u2013 Sections Manager Default Window\n This window allows you to name, create or delete sections and choose what language that section\n uses. This is also how you name a subroutine for call coils.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 400 / 1224\n \n 8.2.5.2 Section Display\n When you first start up ClassicLadder you get an empty Section Display window. Displayed is one\n empty rung.\n \n@@ -22045,15 +22045,15 @@\n ladder program will still run in the background.\n The check box at the top right allows you to select whether variable names or symbol names are\n displayed\n You might notice that there is a line under the ladder program display that reads \u201dProject failed to\n load\u2026\u201d That is the status bar that gives you info about elements of the ladder program that you click\n on in the display window. This status line will now display HAL signal names for variables %I, %Q\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 401 / 1224\n \n and the first %W (in an equation) You might see some funny labels, such as (103) in the rungs. This is\n displayed (on purpose) because of an old bug- when erasing elements older versions sometimes didn\u2019t\n erase the object with the right code. You might have noticed that the long horizontal connection button\n sometimes didn\u2019t work in the older versions. This was because it looked for the free code but found\n@@ -22067,15 +22067,15 @@\n The Bit Status Window displays some of the boolean (on/off) variable data. Notice all variables start\n with the % sign. The %I variables represent HAL input bit pins. The %Q represents the relay coil\n and HAL output bit pins. The %B represents an internal relay coil or internal contact. The three edit\n areas at the top allow you to select what 15 variables will be displayed in each column. For instance,\n if the %B Variable column were 15 entries high, and you entered 5 at the top of the column, variables\n %B5 to %B19 would be displayed. The check boxes allow you to set and unset %B variables manually\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 402 / 1224\n \n as long as the ladder program isn\u2019t setting them as outputs. Any Bits that are set as outputs by the\n program when ClassicLadder is running can not be changed and will be displayed as checked if on\n and unchecked if off.\n \n@@ -22083,15 +22083,15 @@\n The Watch Window displays variable status. The edit box beside it is the number stored in the variable\n and the drop-down box beside that allow you to choose whether the number to be displayed in hex,\n decimal or binary. If there are symbol names defined in the symbols window for the word variables\n showing and the display symbols checkbox is checked in the section display window, symbol names\n 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\n checked) over an existing variable number/name and press the Enter Key.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 403 / 1224\n \n 8.2.5.4 Symbol Window\n \n Figure 8.5 \u2013 Symbol Names window\n This is a list of symbol names to use instead of variable names to be displayed in the section window\n@@ -22099,15 +22099,15 @@\n and capital letters), symbol name . If the variable can have a HAL signal connected to it (%I, %Q, and\n %W-if you have loaded s32 pin with the real time module) then the comment section will show the\n current HAL signal name or lack thereof. Symbol names should be kept short to display better. Keep\n in mind that you can display the longer HAL signal names of %I, %Q and %W variable by clicking on\n them in the section window. Between the two, one should be able to keep track of what the ladder\n program is connected to!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8.2.5.5 The Editor window\n \n Figure 8.6 \u2013 Editor Window\n \u2014 Add - adds a rung after the selected rung\n \u2014 Insert - inserts a rung before the selected rung\n \u2014 Delete - deletes the selected rung\n@@ -22116,15 +22116,15 @@\n \u2014 Object Selector, Eraser\n \u2014 N.O. Input, N.C. Input, Rising Edge Input , Falling Edge Input\n \u2014 Horizontal Connection, Vertical Connection , Long Horizontal Connection\n \u2014 Timer IEC Block, Counter Block, Compare Variable\n \n 404 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 405 / 1224\n \n \u2014 Old Timer Block, Old Monostable Block (These have been replaced by the IEC Timer)\n \u2014 COILS - N.O. Output, N.C. Output, Set Output, Reset Output\n \u2014 Jump Coil, Call Coil, Variable Assignment\n A short description of each of the buttons:\n@@ -22152,21 +22152,21 @@\n or %W1=%W2) Compare cannot be placed in the right most side of the section display.\n \u2014 Variable Assignment - creates an assignment block so you to assign values to variables. (eg %W2=7\n or %W1=%W2) ASSIGNMENT functions can only be placed at the right most side of the section\n display.\n 8.2.5.6 Config Window\n The config window shows the current project status and has the Modbus setup tabs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.7 \u2013 Config Window\n \n 406 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 407 / 1224\n \n 8.2.6 Ladder objects\n 8.2.6.1 CONTACTS\n Represent switches or relay contacts. They are controlled by the variable letter and number assigned\n to them.\n@@ -22207,15 +22207,15 @@\n \u2014 %TMxxx.P - timer preset (read write)\n \u2014 %TMxxx.V - timer value (read write)\n 8.2.6.3 TIMERS\n Represent count down timers. This is deprecated and replaced by IEC Timers.\n Timers have 4 contacts.\n \u2014 E - enable (input) starts timer when true, resets when goes false\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 408 / 1224\n \n \u2014 C - control (input) must be on for the timer to run (usually connect to E)\n \u2014 D - done (output) true when timer times out and as long as E remains true\n \u2014 R - running (output) true when timer is running\n The timer base can be multiples of milliseconds, seconds, or minutes.\n@@ -22254,15 +22254,15 @@\n There are also Variables for counters that can be read and/or written to in compare or operate blocks.\n \u2014 %Cxx.D - Counter xx done (Boolean, read only)\n \u2014 %Cxx.E - Counter xx empty overflow (Boolean, read only)\n \u2014 %Cxx.F - Counter xx full overflow (Boolean, read only)\n \u2014 %Cxx.V - Counter xx current value (integer, read or write)\n \u2014 %Cxx.P - Counter xx preset (integer, read or write)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 409 / 1224\n \n 8.2.6.6 COMPARE\n For arithmetic comparison. Is variable %XXX = to this number (or evaluated number)\n The compare block will be true when comparison is true. you can use most math symbols:\n \u2014 +, - ,* , /, = (standard math symbols)\n@@ -22298,27 +22298,27 @@\n %QW3=12\n \n Note\n When you assign a value to a variable with the variable assignment block the value is retained until\n you assign a new value using the variable assignment block. The last value assigned will be restored\n when LinuxCNC is started.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 410 / 1224\n \n The following figure shows an Assignment and a Comparison Example. %QW0 is a S32out bit and\n %IW0 is a S32in bit. In this case the HAL pin classicladder.0.s32out-00 will be set to a value of 5 and\n when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will be set to True.\n \n Figure 8.8 \u2013 Assign/Compare Ladder Example\n \n Figure 8.9 \u2013 Assignment Expression Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 411 / 1224\n \n Figure 8.10 \u2013 Comparison Expression Example\n \n 8.2.6.8 COILS\n Coils represent relay coils. They are controlled by the variable letter and number assigned to them.\n@@ -22346,15 +22346,15 @@\n \n A JUMP COIL is used to JUMP to another section, like a goto in BASIC programming language.\n If you look at the top left of the sections display window you will see a small label box and a longer\n comment box beside it. Now go to Editor\u2192Modify then go back to the little box, type in a name.\n Go ahead and add a comment in the comment section. This label name is the name of this rung only\n and is used by the JUMP COIL to identify where to go.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 412 / 1224\n \n When placing a JUMP COIL, add it in the rightmost position and change the label to the rung you want\n to JUMP to.\n A CALL COIL is used to go to a subroutine section then return, like a gosub in BASIC programming\n language.\n@@ -22397,15 +22397,15 @@\n \u2014 %Qxxx - Physical output xxx (Boolean) (HAL output bit)\n \u2014 %Xxxx - Activity of step xxx (sequential language)\n \u2014 %Xxxx.V - Time of activity in seconds of step xxx (sequential language)\n \u2014 %Exx - Errors (Boolean, read write(will be overwritten))\n \u2014 Indexed or vectored variables - These are variables indexed by another variable. Some might call\n this vectored variables. Example: %W0[%W4] => if %W4 equals 23 it corresponds to %W23\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 413 / 1224\n \n 8.2.8 GRAFCET (State Machine) Programming\n AVERTISSEMENT\n This is probably the least used and most poorly understood feature of ClassicLadder. Sequential\n programming is used to make sure a series of ladder events always happen in a prescribed\n@@ -22429,15 +22429,15 @@\n Selector arrow , Eraser\n Ordinary step , Initial (Starting) step\n Transition , Step and Transition\n Transition Link-Downside , Transition Link-Upside\n Pass-through Link-Downside , Pass-through Link-Upside Jump\n Link, Comment Box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 414 / 1224\n \n Figure 8.11 \u2013 Sequence Editor Window\n \u2014 ORDINARY STEP - has a unique number for each one\n \u2014 STARTING STEP - a sequential program must have one. This is where the program will start.\n \u2014 TRANSITION - This shows the variable that must be true for control to pass through to the next\n@@ -22451,15 +22451,15 @@\n \u2014 PASS-THROUGH LINK-UPSIDE - combines two concurrent (AND logic) logic lines back together\n \u2014 JUMP LINK - connects steps that are not underneath each other such as connecting the last step\n to the first\n \u2014 COMMENT BOX - used to add comments\n To use links, you must have steps already placed. Select the type of link, then select the two steps or\n transactions one at a time. It takes practice!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 415 / 1224\n \n With sequential programming: The variable %Xxxx (eg. %X5) is used to see if a step is active. The\n variable %Xxxx.V (eg. %X5.V) is used to see how long the step has been active. The %X and %X.v\n variables are use in LADDER logic. The variables assigned to the transitions (eg. %B) control whether\n the logic will pass to the next step. After a step has become active the transition variable that caused\n@@ -22488,21 +22488,21 @@\n \u2014 6 - write single register\n \u2014 8 - echo test\n \u2014 15 - write multiple coils\n \u2014 16 - write multiple registers\n If you do not specify a -- modmaster when loading the ClassicLadder user program this page will not\n be displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.12 \u2013 Modbus I/O Config\n \n 416 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 417 / 1224\n \n Figure 8.13 \u2013 Modbus Communication Config\n \u2014 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).\n \u2014 SERIAL SPEED - Should be set to speed the slave is set for - 300, 600, 1200, 2400, 4800, 9600,\n 19200, 38400, 57600, 115200 are supported.\n@@ -22518,15 +22518,15 @@\n \u2014 WRITE COILS MAP TO - Select what variables that write coils will updated from (B,Q,or I).\n \u2014 READ REGISTERS/HOLDING - Select what variables that read registers will update (W or QW).\n \u2014 WRITE REGISTERS MAP TO - Select what variables that read registers will updated from (W, QW,\n or IW).\n \u2014 SLAVE ADDRESS - For serial the slaves ID number usually settable on the slave device (usually\n 1-256) For IP the slave IP address plus optionally the port number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 418 / 1224\n \n \u2014 TYPE ACCESS - This selects the MODBUS function code to send to the slave (eg what type of\n request).\n \u2014 COILS / INPUTS - Inputs and Coils (bits) are read from/written to I, B, or Q variables (user selects).\n \u2014 REGISTERS (WORDS) - Registers (Words/Numbers) map to IW, W, or QW variables (user selects).\n@@ -22563,15 +22563,15 @@\n \u2014 ClassicLadder uses RTU protocol (not ASCII).\n \u2014 8 data bits, No parity is used, and 1 stop bit is also known as 8-N-1.\n \u2014 Baud rate must be the same for slave and master. ClassicLadder can only have one baud rate so\n all the slaves must be set to the same rate.\n \u2014 Pause inter frame is the time to pause after receiving an answer.\n \u2014 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).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 419 / 1224\n \n 8.2.10.1 MODBUS Info\n \u2014 ClassicLadder can use distributed inputs/outputs on modules using the modbus protocol (\u201dmaster\u201d:\n polling slaves).\n \u2014 The slaves and theirs I/O can be configured in the config window.\n@@ -22601,24 +22601,24 @@\n 8.2.11 Debugging modbus problems\n A good reference for the protocol: https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf.\n If you run linuxcnc/classicladder from a terminal, it will print the Modbus commands and slave responses.\n Here we set ClassicLadder to request slave 1, to read holding registers (function code 3) starting\n at address 8448 (0x2100). We ask for 1 (2 byte wide) data element to be returned. We map it to a\n ClassicLadder variable starting at 2.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 420 / 1224\n \n Figure 8.14 \u2013 Modbus I/O Register Setup\n Note in this image we have set the debug level to 1 so modbus messages are printed to the terminal. We\n have mapped our read and written holding registers to ClassicLadder\u2019s %W variables so our returned\n data will be in %W2 as in the other image we mapped the data starting at the 2nd element.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 8.15 \u2013 Modbus Communication Setup\n \n 8.2.11.1 Request\n Lets look at an example of reading one hold register at 8448 Decimal (0x2100 Hex).\n Looking in the Modbus protocol reference:\n Table 8.2: Read holding register request\n@@ -22646,15 +22646,15 @@\n Bytes)\n (2\n Calculated\n bytes) automatically\n \n 421 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 422 / 1224\n \n Here is an example sent command as printed in the terminal (all Hex):\n INFO CLASSICLADDERModbus I/O module to send: Lgt=8 \u201dpy-reset\u201d\n \u201dReset\u201d\n \n \n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 435 / 1224\n \n Figure 8.26 \u2013 AXIS E-Stop\n Note that in this example like in real life you must clear the remote E-Stop (simulated by the checkbox)\n before the AXIS E-Stop or the external Reset will put you in OFF mode. If the E-Stop in the AXIS screen\n was pressed, you must press it again to clear it. You cannot reset from the external after you do an\n E-Stop in AXIS.\n \n 8.3.4 Timer/Operate Example\n In this example we are using the Operate block to assign a value to the timer preset based on if an\n input is on or off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 436 / 1224\n \n Figure 8.27 \u2013 Timer/Operate Example\n In this case %I0 is true so the timer preset value is 10. If %I0 was false the timer preset would be 5.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 437 / 1224\n \n Chapitre 9\n \n Sujets avanc\u00e9s\n 9.1 Kinematics\n@@ -23023,15 +23023,15 @@\n Cartesian coordinates. The A B C axes refer to rotational coordinates about the X Y Z axes respectively.\n The U V W axes refer to additional coordinates that are commonly made colinear to the X Y Z axes\n respectively.\n 1. The word \u201daxes\u201d is also commonly (and wrongly) used when talking about CNC machines, and referring to the moving\n directions of the machine.\n 2. Kinematics: a two way function to transform from Cartesian space to joint space.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 438 / 1224\n \n 9.1.2 Trivial Kinematics\n The simplest machines are those in which which each joint is placed along one of the Cartesian axes.\n On these machines the mapping from Cartesian space (the G-code program) to the joint space (the\n actual actuators of the machine) is trivial. It is a simple 1:1 mapping:\n@@ -23084,15 +23084,15 @@\n joints[1] = pos->tran.z\n 3. 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\n the definition of these 3 joints, then the previous assertion is false. Because we currently have (joint0=X, joint1=Z, joint2=A)\n which assumes that joint1=Y. To make this work in LinuxCNC just define all the axes (XYZA), LinuxCNC will then use a simple\n loop in HAL for unused Y axis.\n 4. Another way to make it work is to change the corresponding code and recompile the software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 439 / 1224\n \n Use of the coordinates= parameter is recommended for configurations that omit axis letters. 5\n The trivkins kinematics module also allows the same coordinate to be specified for more than one\n joint. This feature can be useful on machines like a gantry having two independent motors for the y\n coordinate. Such a machine could use coordinates=xyyz resulting in joint assignments:\n@@ -23113,15 +23113,15 @@\n \n Figure 9.1 \u2013 Bipod setup\n 5. Historically, the trivkins module did not support the coordinates= parameter so lathe configs were often configured as\n XYZ machines. The unused Y axis was configured to 1) home immediately, 2) use a simple loopback to connect its position\n command HAL pin to its position feedback HAL pin, and 3) hidden in gui displays. Numerous sim configs use these methods in\n order to share common HAL files.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 440 / 1224\n \n The Bipod we are talking about is a device that consists of 2 motors placed on a wall, from which a\n device is hung using some wire. The joints in this case are the distances from the motors to the device\n (named AD and BD in the figure).\n The position of the motors is fixed by convention. Motor A is in (0,0), which means that its X coordinate\n@@ -23153,15 +23153,15 @@\n double x = (AD2 - BD2 + Bx * Bx) / (2 * Bx);\n double y2 = AD2 - x * x;\n if(y2 < 0) return -1;\n pos->tran.x = x;\n pos->tran.y = sqrt(y2);\n return 0;\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 441 / 1224\n \n 9.1.3.2 Inverse transformation\n The inverse kinematics is much easier in our example, as we can write it directly:\n \n or translated to actual code:\n@@ -23196,15 +23196,15 @@\n \n int kinematicsSwitchable(void)\n int kinematicsSwitch(int switchkins_type)\n KINS_NOT_SWITCHABLE\n \n The function kinematicsSwitchable() returns 1 if multiple kinematics types are supported. The function kinematicsSwitch() selects the kinematics type. See Switchable Kinematitcs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 442 / 1224\n \n Note\n The majority of provided kinematics modules support a single kinematics type and use the directive\n \u201dKINS_NOT_SWITCHABLE\u201d to supply defaults for the required kinematicsSwitchable() and kinematicsSwitch() functions.\n \n@@ -23237,15 +23237,15 @@\n Note\n This document does not cover the creation of a vismach model which, while certainly very useful,\n requires just as much careful modeling if it is to match the genserkins model derived in this document.\n \n Note\n There may be errors and/or shortcomings \u2014 use at your own risk!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 443 / 1224\n \n 9.2.2 General\n With the proliferation of industrial robots comes an increased interest to control used robots with\n LinuxCNC. A common type of robot used in industry and manufacturing is the \u201dserial manipulator\u201d\n designed as a series of motorized joints connected by rigid links. Serial robots often have six joints\n@@ -23288,15 +23288,15 @@\n \n 9.2.4 Modified DH-Parameters as used in genserkins\n Note that genserkins does not handle offsets to theta-values \u2014 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\n rotation commanded to that joint by LinuxCNC. This makes it impossible to define the 0\u00b0 position of\n our robots joints arbitrarily.\n The three configurable parameters are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 444 / 1224\n \n 1. alpha : positive or negative rotation (in radians) around the X-axis of the \u201dcurrent coordinate\n system\u201d\n 2. a : positive distance, along X, between two joint axes specified in machine units (mm or inch)\n defined in the system\u2019s INI file.\n@@ -23327,87 +23327,87 @@\n but there is no point in setting it other than 0.\n \n 9.2.8 Detailed Example (RV-6SL)\n Described below is a method to derive the required \u201dmodified DH-parameters\u201d for a Mitsubishi RV6SDL and how to set the parameters in the HAL file to be used with the genserkins kinematics in\n LinuxCNC. The necessary dimensions are best taken from a dimensional drawing provided by the\n manufacturer of the robot.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 445 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 446 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 447 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 448 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 449 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 450 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 451 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 452 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 453 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 454 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 455 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 456 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 457 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 458 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 459 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 460 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 461 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 462 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 463 / 1224\n \n 9.2.9 Credits\n Thanks to user Aciera for all text and the graphics for the RV-6SL robot!\n \n 9.3 5-Axis Kinematics\n@@ -23433,27 +23433,27 @@\n of the cutter tip position and the cutter orientation relative to the workpiece coordinate system. Two\n vectors, as generated by most CAM systems and shown in Fig. 1, contain this information:\n \n The K vector is equivalent to the 3rd vector from the pose matrix E6 that was used in the 6-axis robot\n kinematics [3] and the Q vector is equivalent to the 4th vector of E6 . In MASTERCAM for example this\n information is contained in the intermediate output \u201d.nci\u201d file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 464 / 1224\n \n Figure 9.2 \u2013 Cutter location data\n \n 9.3.4 Translation and Rotation Matrices\n 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\n 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\n \n There are four fundamental transformation matrices on which 5-axis kinematics can be based:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 465 / 1224\n \n The matrix T(a,b,c) implies a translation in the X, Y, Z coordinate directions by the amounts a, b, c\n respectively. The R matrices imply rotations of the angle theta about the X, Y and Z coordinate axes\n respectively. The C and S symbols refer to cosine and sine functions respectively.\n \n@@ -23463,15 +23463,15 @@\n \u2014 A rotary table which rotates about the vertical Z-axes (C-rotation, secondary) mounted on a tilting\n table which rotates about the X- or Y-axis (A- or B-rotation, primary). The workpiece is mounted on\n the rotary table.\n \u2014 A tilting table which rotates about the X- or Y-axis (A- or B-rotation, secondary) is mounted on a\n rotary table which rotates about the Z-axis (C-rotation, primary), with the workpiece on the tilting\n table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 466 / 1224\n \n Figure 9.3 \u2013 General configuration and coordinate systems\n 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\n describe the relative position and orientation between these coordinate frames\n 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 At , which can be found by subsequent\n@@ -23479,43 +23479,43 @@\n defined coordinate system. In general such a transformation may look as follows:\n \n where each matrix i-1 Aj is a translation matrix T or a rotation matrix R of the form (2,3).\n Matrix multiplication is a simple process in which the elements of each row of the lefthand matrix\n A is multiplied by the elements of each column of the righthand matrix B and summed to obtain an\n element in the result matrix C, ie.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 467 / 1224\n \n In Fig. 2 a generic configuration with coordinate systems is shown [4]. It includes table rotary/tilting\n axes as well as spindle rotary/tilting axes. Only two of the rotary axes are actually used in a machine\n tool.\n First we will develop the transformations for the first type of configuration mentioned above, ie. a table\n tilting/rotary (trt) type with no rotating axis offsets. We may give it the name xyzac-trt configuration.\n We also develop the transformations for the same type (xyzac-trt), but with rotating axis offsets.\n Then we develop the transformations for a xyzbc-trt configuration with rotating axis offsets.\n 9.3.5.1 Transformations for a xyzac-trt machine tool with work offsets\n \n Figure 9.4 \u2013 vismach model of xyzac-trt with coincident rotation axes\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 468 / 1224\n \n We deal here with a simplified configuration in which the tilting axis and rotary axis intersects at a\n point called the pivot point as shown in Fig. 4. therefore the two coordinate systems Ows and Owp of\n Fig. 2 are coincident.\n \n Figure 9.5 \u2013 Table tilting/rotary configuration\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 469 / 1224\n \n In these equations Lx , Ly , Lz defines the offsets of the pivot point of the two rotary axes A and C\n relative to the workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances\n of the pivot point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot\n point. The pivot point is at the intersection of the two rotary axes. The signs of the SA and SC terms\n@@ -23534,56 +23534,56 @@\n Equating the last column of (8) with the tool position vector Q, we can write:\n \n The vector on the right hand side can also be written as the product of a matrix and a vector resulting\n in:\n \n This can be expanded to give\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 470 / 1224\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (13) as P = (Q AP )-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\n be written as:\n \n where R^T is the transpose of R (rows and columns swappped). We therefore obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 471 / 1224\n \n 9.3.5.2 Transformations for a xyzac-trt machine with rotary axis offsets\n \n Figure 9.6 \u2013 vismach model of xyzac-trt with rotational axis offsets (positive)\n We deal here with a extended configuration in which the tilting axis and rotary axis do not intersect\n at a point but have an offset Dy . Furthermore, there is also an z-offset between the two coordinate\n systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 5 and the offsets are\n shown in Fig. 6 (positive offsets in this example). To simplify the configuration, the offsets Lx , Ly , Lz\n of the previous case are not included. They are probably not necessary if one uses the G54 offsets in\n LinuxCNC by means of the \u201dtouch of\u201d facility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 472 / 1224\n \n Figure 9.7 \u2013 Table tilting/rotary xyzac-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dy , Dz defines the offsets of the pivot point of the rotary axes A relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the A rotary axis.\n When multiplied in accordance with (18), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 473 / 1224\n \n We can now equate the third column of this matrix with our given tool orientation vector K, ie.:\n \n From these equations we can solve for the rotation angles thetaA , thetaC . From the third row we find:\n \n@@ -23597,42 +23597,42 @@\n in:\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (25) as P = (Q AP )-1 * Q using (15) as before. We thereby obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 474 / 1224\n \n 9.3.5.3 Transformations for a xyzbc-trt machine with rotary axis offsets\n \n Figure 9.8 \u2013 vismach model of xyzbc-trt with rotational axis offsets (negative)\n We deal here again with a extended configuration in which the tilting axis (about the y-axis) and rotary\n axis do not intersect at a point but have an offset Dx . Furthermore, there is also an z-offset between the\n two coordinate systems Ows and Owp of Fig. 2, called Dz . A vismach model is shown in Fig. 7 (negative\n offsets in this example) and the positive offsets are shown in Fig. 8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 475 / 1224\n \n Figure 9.9 \u2013 Table tilting/rotary xyzbc-trt configuration, with axis offsets\n The transformation can be defined by the sequential multiplication of the matrices:\n \n with the matrices built up as follows:\n \n In these equations Dx , Dz defines the offsets of the pivot point of the rotary axes B relative to the\n workpiece coordinate system origin. Furthermore, Px , Py , Pz are the relative distances of the pivot\n point to the cutter tip position, which can also be called the \u201djoint coordinates\u201d of the pivot point. The\n pivot point is on the B rotary axis.\n When multiplied in accordance with (29), we obtain:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 476 / 1224\n \n We can now equate the third column of this matrix with our given tool orientation vector K, i.e.:\n \n From these equations we can solve for the rotation angles thetaB , thetaC . From the third row we find:\n \n@@ -23647,15 +23647,15 @@\n \n which is the forward transformation of the kinematics.\n We can solve for P from equation (37) as P = (Q AP )-1 * Q.\n With the same approach as before, we obtain:\n \n The desired equations for the inverse transformation of the kinematics thus can be written as:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 477 / 1224\n \n 9.3.6 Table Rotary/Tilting Examples\n LinuxCNC includes kinematics modules for the xyzac-trt and xyzbc-trt topologies described in the\n mathematics detailed above. For interested users, the source code is available in the git tree in the\n src/emc/kinematics/ directory.\n@@ -23699,15 +23699,15 @@\n \n 9.3.7 Custom Kinematics Components\n LinuxCNC implements kinematics using a HAL component that is loaded at startup of LinuxCNC. The\n most common kinematics module, trivkins, implements identity (trivial) kinematics where there is a\n one-to-one correspondence between an axis coordinate letter and a motor joint. Additional kinematics\n modules for more complex systems (including xyzac-trt and xyzbc-trt described above) are available.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 478 / 1224\n \n See the kins manpage (\\$ man kins) for brief descriptions of the available kinematics modules.\n 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\n source file to a user file with a new name, modifying it, and then installing.\n Installation is done using halcompile:\n@@ -23729,29 +23729,29 @@\n module. These pins can be connected to a signal for dynamic control or set once with HAL connections\n like:\n # set offset parameters\n net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset\n setp xyzac-trt-kins.y-offset 0\n setp xyzac-trt-kins.z-offset 20\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9.3.8 Figures\n \n Figure 9.10 \u2013 Table tilting/rotating configuration\n \n 479 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 9.11 \u2013 Spindle/table tilting configuration\n \n 480 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 481 / 1224\n \n Figure 9.12 \u2013 Spindle tilting/rotary configuration\n \n 9.3.9 REFERENCES\n 1. A Postprocessor Based on the Kinematics Model for General Five-Axis machine Tools: C-H She,\n@@ -23768,15 +23768,15 @@\n support a default kinematics method (type0), a second built-in method (type1), and (optionally) a userprovided kinematics method (type2). Identity kinematics are typically used for the type1 method.\n The switchkins functionality can be used for machines where post-homing joint control is needed\n 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\n individual joints after homing.\n The kinematics type is selected by a motion module HAL pin that can be updated from a G-code\n program or by interactive MDI commands. The halui provisions for activating MDI commands can be\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 482 / 1224\n \n used to allow buttons to select the kinematics type using hardware controls or a virtual panel (PyVCP,\n GladeVCP, etc.).\n When a kinematics type is changed, the G-code must also issue commands to force synchronization\n of the interpreter and motion parts of LinuxCNC. Typically, a HAL pin read command (M66 E0 L0) is\n@@ -23816,15 +23816,15 @@\n identical to those provided for the trivkins module. However, duplication of axis letters to assign\n multiple joints for a coordinate letter is not generally applicable for serial or parallel kinematics (like\n genserkins, pumakins, genhexkins, etc.) where there is no simple relationship between joints and\n coordinates.\n Duplication of axis coordinate letters is supported in the kinematics modules xyzac-trt-kins, xyzbc-trtkins, and 5axiskins (bridgemill). Typical applications for duplicate coordinates are gantry machines\n where two motors (joints) are used for the transverse axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 483 / 1224\n \n 9.4.2.2 Backwards compatibility\n Switchable kinematics initialize with motion.switchkins-type==0 implementing their eponymous kinematics method. If the the motion.switchkins-type pin is not connected \u2014 as in legacy configurations \u2014\n only the default kinematics type is available.\n \n@@ -23862,15 +23862,15 @@\n ...\n ;user G-code\n ...\n M68 E3 Q0 ;update analog-out-03 to select kinstype 0\n M66 E0 L0 ;sync interp-motion\n ...\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 484 / 1224\n \n Note\n An M66 wait-on-input command updates the #5399 variable. If the current value of this variable is\n needed for subsequent purposes, it should be copied to an additional variable before invoking M66.\n \n@@ -23908,15 +23908,15 @@\n \n The relevant INI-HAL pins for a joint number (N) are:\n ini.N.min_limit\n ini.N.max_limit\n ini.N.max_acceleration\n ini.N.max_velocity\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 485 / 1224\n \n The relevant INI-HAL pins for an axis coordinate (L) are:\n ini.L.min_limit\n ini.L.max_limit\n ini.L.max_velocity\n@@ -23970,15 +23970,15 @@\n \n demonstrate\n \n M-code\n \n scripts\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 486 / 1224\n \n 9.4.4.4 Offset considerations\n Like INI file limit settings, coordinate system offsets (G92, G10L2, G10L20, G43, etc) are generally\n applicable only for the type 0 default startup kinematics type. When switching kinematics types, it may\n be important to either reset all offsets prior to switching or update offsets based on system-specific\n@@ -24013,15 +24013,15 @@\n When using jogging facilities or MDI commands interactively, operator caution is required. Guis should\n include indicators to display the current kinematics type.\n Note\n Switching kinematics can cause substantial operational changes requiring careful design, testing,\n and training for deployment. The management of coordinate offsets, tool compensation, and INI file\n limits may require complicated and non-standard operating protocols.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 487 / 1224\n \n 9.4.8 Code Notes\n 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\n program reads (optional) module command-line parameters (coordinates, sparm) and passes them to\n the module-provided function switchkinsSetup().\n@@ -24058,15 +24058,15 @@\n error. It then uses the error to calculate a correction to the process\u2019s input variable (the action) so\n that this correction will remove the error from the process\u2019s output measurement.\n In a PID loop, correction is calculated from the error in three ways: cancel out the current error directly\n (Proportional), the amount of time the error has continued uncorrected (Integral), and anticipate the\n future error from the rate of change of the error over time (Derivative).\n 6. This Subsection is taken from an much more extensive article found at https://en.wikipedia.org/wiki/PID_controller\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 488 / 1224\n \n A PID controller can be used to control any measurable variable which can be affected by manipulating\n some other process variable. For example, it can be used to control temperature, pressure, flow rate,\n chemical composition, speed, or other variables. Automobile cruise control is an example of a process\n outside of industry which utilizes crude PID control.\n@@ -24109,15 +24109,15 @@\n hours for a set point change to produce a stable effect. Some processes have a degree of non-linearity\n and so parameters that work well at full-load conditions don\u2019t work when the process is starting up\n from no-load. This section describes some traditional manual methods for loop tuning.\n There are several methods for tuning a PID loop. The choice of method will depend largely on whether\n or not the loop can be taken offline for tuning, and the response speed of the system. If the system\n can be taken offline, the best tuning method often involves subjecting the system to a step change in\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 489 / 1224\n \n input, measuring the output as a function of time, and using this response to determine the control\n parameters.\n Simple method If the system must remain on line, one tuning method is to first set the I and D values\n to zero. Increase the P until the output of the loop oscillates. Then increase I until oscillation stops.\n@@ -24193,15 +24193,15 @@\n The set of codes (M,G,T,S,F) currently understood by the RS274NGC interpreter is fixed and cannot\n be extended by configuration options.\n In particular, some of these codes implement a fixed sequence of steps to be executed. While some of\n these, like M6, can be moderately configured by activating or skipping some of these steps through\n 7. Introduced in the 1942 paper Optimum Settings for Automatic Controllers, DOI 10.1115/1.2899060 also available from\n The Internet Archive.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 490 / 1224\n \n INI file options, overall the behavior is fairly rigid. So - if your are happy with this situation, then this\n manual section is not for you.\n 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\n 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\n@@ -24240,15 +24240,15 @@\n \u2014 For remapping T,M6,M61,S,F there is some standard Python glue which should cover most situations, see Standard Glue.\n \u2014 For more complex situations, one can write your own Python glue to implement new behavior.\n Embedded Python functions in the Interpreter started out as glue code, but turned out very useful\n well beyond that. Users familiar with Python will likely find it easier to write remapped codes, glue,\n O-word procedures, etc. in pure Python, without resorting to the somewhat cumbersome RS274NGC\n language at all.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 491 / 1224\n \n A Word on Embedded Python Many people are familiar with extending the Python interpreter by\n C/C++ modules, and this is heavily used in LinuxCNC to access Task, HAL and Interpreter internals\n from Python scripts. Extending Python basically means: Your Python script executes as it is in the\n driver seat, and may access non-Python code by importing and using extension modules written in\n@@ -24288,15 +24288,15 @@\n # where to find the Python code:\n # code specific for this configuration\n PATH_PREPEND=./\n # generic support code - make sure this actually points to Python-stdglue\n PATH_APPEND=../../nc_files/remap_lib/python-stdglue/\n # import the following Python module\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 492 / 1224\n \n TOPLEVEL=toplevel.py\n # the higher the more verbose tracing of the Python plugin\n LOG_LEVEL = 0\n \n@@ -24330,15 +24330,15 @@\n back to the second and third methods if many parameters are needed.\n 9.6.2.4 Handling results\n Your new code might succeed or fail, for instance if passed an invalid parameter combination. Or you\n might choose to just execute the procedure and disregard results, in which case there isn\u2019t much work\n to do.\n Epilog handlers help in processing results of remap procedures - see the reference section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 493 / 1224\n \n 9.6.2.5 Execution sequencing\n Executable G-code words are classified into modal groups, which also defines their relative execution\n behavior.\n If a G-code block contains several executable words on a line, these words are executed in a predefined\n@@ -24379,15 +24379,15 @@\n The options of the REMAP statement are separated by whitespace. The options are keyword-value\n pairs and currently are:\n modalgroup=\n Les G-codes\n the only currently supported modal group is 1, which is also the default value if no group is\n given. Group 1 means execute alongside other G-codes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 494 / 1224\n \n Les M-codes\n Currently supported modal groups are: 5,6,7,8,9,10. If no modalgroup is give, it defaults to\n 10 (execute after all other words in the block).\n T,S,F\n@@ -24430,15 +24430,15 @@\n or NGC is just getting in your way.\n argspec= python= modalgroup=\n Convert the argspec words and pass them to a Python function as keyword argument dictionary.\n Use it when you\u2019re too lazy to investigate words passed on the block yourself.\n Note that if all you want to achieve is to call some Python code from G-code, there is the somewhat\n easier way of calling Python functions like O-word procedures.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 495 / 1224\n \n 9.6.3.3 The argspec parameter\n The argument specification (keyword argspec) describes required and optional words to be passed\n to an ngc procedure, as well as optional preconditions for that code to execute.\n An argspec consists of 0 or more characters of the class [@A-KMNP-Za-kmnp-z^>]. It can by empty\n@@ -24479,15 +24479,15 @@\n n\n The n (greater-than) character specifies to pass the current line number in the \u0300n \u0300local named\n parameter.\n By default, parameters are passed as local named parameter to an NGC procedure. These local parameters appear as already set when the procedure starts executing, which is different from existing\n semantics (local variables start out with value 0.0 and need to be explicitly assigned a value).\n Optional word parameters may be tested for presence by the EXISTS(#) idiom.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 496 / 1224\n \n Example for named parameter passing to NGC procedures Assume the code is defined as\n REMAP=M400 modalgroup=10 argspec=Pq ngc=m400\n and m400.ngc looks as follows:\n o sub\n@@ -24530,15 +24530,15 @@\n for key in words:\n MESSAGE(\u201dword \u2019%s\u2019 = %f\u201d % (key, words[key]))\n if words.has_key(\u2019p\u2019):\n MESSAGE(\u201dthe P word was present\u201d)\n MESSAGE(\u201dcomment on this line: \u2019%s\u2019\u201d % (self.blocks[self.remap_level].comment))\n return INTERP_OK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 497 / 1224\n \n Try this with out with: g88.6 x1 y2 z3 g88.6 x1 y2 z3 p33 (a comment here)\n You\u2019ll notice the gradual introduction of the embedded Python environment - see here for details. Note\n that with Python remapping functions, it make no sense to have Python prolog or epilog functions since\n it\u2019s executing a Python function in the first place.\n@@ -24582,15 +24582,15 @@\n self.execute(\u201dG21\u201d,lineno())\n self.execute(\u201dG64 P0.001\u201d,lineno())\n self.execute(\u201dG0 X%f Y%f\u201d % (x0,y0),lineno())\n if c.z_flag:\n feed = self.feed_rate\n self.execute(\u201dF%f G1 Z%f\u201d % (feed * plunge, c.z_number),lineno())\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 498 / 1224\n \n self.execute(\u201dF%f\u201d % (feed),lineno())\n for i in range(100):\n t = i/10.\n x = x0 + a * (cos(t) + t * sin(t))\n@@ -24633,15 +24633,15 @@\n TOPLEVEL=/home/user/xxx/python/toplevel.py\n PATH_APPEND=/home/user/xxx/python\n \n Now verify that LinuxCNC comes up with no error messages - from a terminal window execute:\n $ cd /home/user/xxx\n $ linuxcnc xxx.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 499 / 1224\n \n 9.6.5 Remapping tool change-related codes: T, M6, M61\n 9.6.5.1 Overview\n If you are unfamiliar with LinuxCNC internals, first read the How tool change currently works section\n (dire but necessary).\n@@ -24681,15 +24681,15 @@\n \u2014 When the NML message queued by a SELECT_TOOL() canon command is executed, this triggers\n the \u201draise tool-prepare and wait for tool-prepared to become high\u201d HAL sequence in iocontrol,\n besides setting the XXXX pins\n \u2014 When the NML message queued by the CHANGE_TOOL() canon command is executed, this triggers\n the \u201draise tool-change and wait for tool-changed to become high\u201d HAL sequence in iocontrol,\n besides setting the XXXX pins\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 500 / 1224\n \n What you need to decide is whether the existing iocontrol HAL sequences are sufficient to drive your\n changer. Maybe you need a different interaction sequence - for instance more HAL pins, or maybe a\n more complex interaction. Depending on the answer, we might continue to use the existing iocontrol\n HAL sequences, or define our own ones.\n@@ -24744,15 +24744,15 @@\n follows:\n REMAP=M6\n \n modalgroup=6\n \n prolog=change_prolog ngc=change epilog=change_epilog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 501 / 1224\n \n So the prolog covering steps 1 and 2 would look like so - we decide to pass a few variables to\n the remap procedure which can be inspected and changed there, or used in a message. Those are:\n tool_in_spindle, selected_tool (tool numbers) and their respective tooldata indices current_pocket\n and selected_pocket:\n@@ -24800,15 +24800,15 @@\n self.selected_pocket = int(self.params[\u201dselected_pocket\u201d])\n emccanon.CHANGE_TOOL(self.selected_pocket)\n # cause a sync()\n self.tool_change_flag = True\n self.set_tool_parameters()\n return INTERP_OK\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 502 / 1224\n \n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n except Exception, e:\n return \u201dM6/change_epilog: %s\u201d % (e)\n@@ -24844,15 +24844,15 @@\n \u2014 M6 (change_prolog): #, #, #, # , #\n \u2014 S (setspeed_prolog): #\n \u2014 F (setfeed_prolog): #\n If you have specific needs for extra parameters to be made visible, that can simply be added to the\n prolog - practically all of the interpreter internals are visible to Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 503 / 1224\n \n 9.6.5.6 Making minimal changes to the built in codes, including M6\n Remember that normally remapping a code completely disables all internal processing for that code.\n However, in some situations it might be sufficient to add a few codes around the existing M6 built in\n implementation, like a tool length probe, but other than that retain the behavior of the built in M6.\n@@ -24901,15 +24901,15 @@\n cblock = self.blocks[self.remap_level]\n if not cblock.t_flag:\n return \u201dT requires a tool number\u201d\n tool\n \n = cblock.t_number\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 504 / 1224\n \n if tool:\n (status, pocket) = self.find_tool_pocket(tool)\n if status != INTERP_OK:\n return \u201dT%d: pocket not found\u201d % (tool)\n@@ -24957,15 +24957,15 @@\n remap is aborted.\n The way to do this is by using the [RS274NGC]ON_ABORT_COMMAND feature. This INI option specifies a\n O-word procedure call which is executed if task for some reason aborts program execution. on_abort\n receives a single parameter indicating the cause for calling the abort procedure, which might be used\n for conditional cleanup.\n The reasons are defined in nml_intf/emc.hh\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 505 / 1224\n \n EMC_ABORT_TASK_EXEC_ERROR = 1,\n EMC_ABORT_AUX_ESTOP = 2,\n EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n EMC_ABORT_TASK_STATE_OFF = 4,\n@@ -25014,15 +25014,15 @@\n Make sure on_abort.ngc is along the interpreter search path (recommended location: SUBROUTINE_PATH\n so as not to clutter your NC_FILES directory with internal procedures).\n Statements in that procedure typically would assure that post-abort any state has been cleaned up,\n like HAL pins properly reset. For an example, see configs/sim/axis/remap/rack-toolchange.\n Note that terminating a remapped code by returning INTERP_ERROR from the epilog (see previous\n section) will also cause the on_abort procedure to be called.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 506 / 1224\n \n 9.6.5.9 Error handling: failing a remapped code NGC procedure\n If you determine in your handler procedure that some error condition occurred, do not use M2 to end\n your handler - see above:\n If displaying an operator error message and stopping the current program is good enough, use the\n@@ -25057,15 +25057,15 @@\n 9.6.6.2 Adjusting the behavior of M0, M1, M60\n A use case for remapping M0/M1 would be to customize the behavior of the existing code. For instance,\n it could be desirable to turn off the spindle, mist and flood during an M0 or M1 program pause, and\n turn these settings back on when the program is resumed.\n For a complete example doing just that, see configs/sim/axis/remap/extend-builtins/, which\n adapts M1 as laid out above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 507 / 1224\n \n 9.6.7 Creating new G-code cycles\n A G-code cycle as used here is meant to behave as follows:\n \u2014 On first invocation, the associated words are collected and the G-code cycle is executed.\n \u2014 If subsequent lines just continue parameter words applicable to this code, but no new G-code, the\n@@ -25112,15 +25112,15 @@\n PATH_PREPEND = \n Prepend this directory to PYTHON_PATH. A repeating group.\n PATH_APPEND = \n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = \n Log level of plugin-related actions. Increase this if you suspect problems. Can be very verbose.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 508 / 1224\n \n RELOAD_ON_CHANGE = [0|1]\n Reload the TOPLEVEL script if the file was changed. Handy for debugging but currently\n incurs some runtime overhead. Turn this off for production configurations.\n PYTHON_TASK = [0|1]\n@@ -25154,15 +25154,15 @@\n Task-related callables are expected here.\n 9.6.9.2 The Interpreter as seen from Python\n \n The interpreter is an existing C++ class (Interp) defined in src/emc/rs274ngc. Conceptually all oword. Python calls are methods of this Interp class, although there is no explicit Python definition of this class (it\u2019s a Boost.Python wrapper instance) and hence receive the as the first\n parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 509 / 1224\n \n 9.6.9.3 The Interpreter __init__ and __delete__ functions\n If the TOPLEVEL module defines a function __init__, it will be called once the interpreter is fully\n configured (INI file read, and state synchronized with the world model).\n If the TOPLEVEL module defines a function __delete__, it will be called once before the interpreter is\n@@ -25204,15 +25204,15 @@\n Arguments:\n self\n The interpreter instance\n *args\n The list of actual positional parameters. Since the number of actual parameters may vary, it is\n best to use this style of declaration:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 510 / 1224\n \n # this would be defined in the oword module\n def mysub(self, *args):\n print(\u201dnumber of parameters passed:\u201d, len(args))\n for a in args:\n@@ -25255,15 +25255,15 @@\n \u201da message text\u201d\n Returning a string from a handler means this is an error message, abort the program. Works like\n (abort, ).\n Calling conventions for python= subroutines Arguments are:\n self\n The interpreter instance\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 511 / 1224\n \n words\n Keyword parameter dictionary. the same kwargs dictionary as prologs and epilogs (see above).\n The minimum python= function example:\n def useless(self, **words): # in remap module\n@@ -25300,15 +25300,15 @@\n Yield does not work in a Python oword procedure.\n \u2014 A Python remap subroutine containing yield INTERP_EXECUTE_FINISH statement may not return\n a value, as with normal Python yield statements.\n \u2014 Code following a yield may not recursively call the interpreter, like with self.execute(\u201d\u201d). This is an architectural restriction of the interpreter and is not fixable without a major\n redesign.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 512 / 1224\n \n 9.6.9.5 Calling conventions: Python to NGC\n NGC code is executed from Python when\n \u2014 the method self.execute([,]) is executed, or\n \u2014 during execution of a remapped code, if a prolog= function is defined, the NGC procedure given\n@@ -25355,15 +25355,15 @@\n away after the epilog finishes.\n Calling the interpreter from Python You can recursively call the interpreter from Python code as\n follows:\n self.execute([,])\n \n Examples:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 513 / 1224\n \n self.execute(\u201dG1 X%f Y%f\u201d % (x,y))\n self.execute(\u201dO call\u201d, currentline)\n \n You might want to test for the return value being < INTERP_MIN_ERROR. If you are using lots of execute() statements, it is probably easier to trap InterpreterException as shown below.\n@@ -25409,15 +25409,15 @@\n 9.6.9.6 Built in modules\n The following modules are built in:\n \n interpreter\n Exposes internals of the Interp class. See src/emc/rs274ngc/interpmodule.cc, and the tests/remap/i\n regression test.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 514 / 1224\n \n emccanon\n Exposes most calls of src/emc/task/emccanon.cc.\n emctask\n Exposes the emcStatus class instance. See src/emc/task/taskmodule.cc. Not present when\n@@ -25456,15 +25456,15 @@\n 9.6.11 Standard Glue routines\n Since many remapping tasks are very similar, I\u2019ve started collecting working prolog and epilog routines in a single Python module. These can currently be found in ncfiles/remap_lib/python-stdglue/stdglue.py\n and provide the following routines:\n 9.6.11.1 T: prepare_prolog and prepare_epilog\n These wrap a NGC procedure for Tx Tool Prepare.\n Actions of prepare_prolog The following parameters are made visible to the NGC procedure:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 515 / 1224\n \n \u2014 # - the parameter of the T word\n \u2014 # - the corresponding pocket\n If tool number zero is requested (meaning Tool unload), the corresponding pocket is passed as -1.\n It is an error if:\n@@ -25503,15 +25503,15 @@\n \u2014 The NGC procedure is expected to return a positive value, otherwise an error message containing\n the return value is given and the interpreter aborts.\n \u2014 If parameter 5600 (fault indicator) is greater than zero, this indicates a Toolchanger fault, which\n is handled as follows (iocontrol-v2-only):\n \u2014 If parameter 5601 (error code) is negative, this indicates a hard fault and the epilog aborts with\n an error message.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 516 / 1224\n \n \u2014 If parameter 5601 (error code) is greater equal zero, this indicates a soft fault. An informational\n message is displayed and the epilog continues.\n \u2014 In case the NGC procedure executed the M6 command (which then refers to the built in M6 behavior), no further action is taken. This can be used for instance to minimally adjust the built in\n behavior be preceding or following it with some other statements.\n@@ -25549,15 +25549,15 @@\n \u2014 merge the words passed in into the existing set of sticky parameters.\n \u2014 Export the set of sticky parameters to the NGC procedure.\n Actions of cycle_epilog\n \u2014 Determine if the current code was in fact a cycle, if so, then\n \u2014 retain the current motion mode so a continuation line without a motion code will execute the\n same motion code.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 517 / 1224\n \n 9.6.11.4 S (Set Speed) : setspeed_prolog and setspeed_epilog\n TBD\n 9.6.11.5 F (Set Feed) : setfeed_prolog and setfeed_epilog\n TBD\n@@ -25607,15 +25607,15 @@\n calls to the Python plug in\n trace named parameter\n access\n trace the task Python plug in\n user-defined - not interpreted\n by LinuxCNC\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n EMC_DEBUG_USER2\n \n 0x20000000\n \n 518 / 1224\n \n@@ -25643,15 +25643,15 @@\n pydevd.settrace() will block execution if Eclipse and the Pydev debug server have not been\n started.\n \n To cover the last two steps: the o procedure helps to get into the debugger from MDI mode.\n See also the call_pydevd function in util.py and its usage in remap.involute to set a breakpoint.\n Here\u2019s a screen-shot of Eclipse/PyDevd debugging the involute procedure from above:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 519 / 1224\n \n See the Python code in configs/sim/axis/remap/getting-started/python for details.\n \n 9.6.13 Axis Preview and Remapped code execution\n For complete preview of a remapped code\u2019s tool path some precautions need to be taken. To understand what is going on, let\u2019s review the preview and execution process (this covers the AXIS case, but\n@@ -25668,15 +25668,15 @@\n probe succeeds or fails - but you would likely want to see what the maximum depth of the probe is,\n and assume it succeeds and continues execution to preview further movements. Also, there is no point\n in displaying a probe failed message and aborting during preview.\n The way to address this issue is to test in your procedure whether it executes in preview or execution\n mode. This can be checked for by testing the #<_task> predefined named parameter - it will be 1\n during actual execution and 0 during preview. See configs/sim/axis/remap/manual-toolchange-withtool-length-switch/nc_subroutines/manual_change.ngc for a complete usage example.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 520 / 1224\n \n Within Embedded Python, the task instance can be checked for by testing self.task - this will be 1 in\n the milltask instance, and 0 in the preview instance(s).\n \n 9.6.14 Remappable Codes\n@@ -25734,15 +25734,15 @@\n 15\n \n Gxx\n G10\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 521 / 1224\n \n Table 9.2: (continued)\n #\n 16\n 17\n@@ -25826,15 +25826,15 @@\n G43\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G41.1\n G42.1\n G43.1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 522 / 1224\n \n Table 9.5: (continued)\n #\n 49\n \n@@ -25912,15 +25912,15 @@\n \n G76\n \n Gxx.1 Gxx.2 Gxx.3 Gxx.4 Gxx.5 Gxx.6 Gxx.7 Gxx.8 Gxx.9\n G71.1 G71.2\n G72.1 G72.2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 523 / 1224\n \n Table 9.9: Table of Allocated G-codes 80-89\n #\n 80\n 81\n@@ -26104,15 +26104,15 @@\n \n M83\n M93\n \n All M-codes from M100 to M199 are user-defined M-codes already, and should not be remapped.\n All M-codes from M200 to M999 are available for remapping.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 524 / 1224\n \n 9.6.14.4 readahead time and execution time\n FIXME Write missing information\n 9.6.14.5 plugin/pickle hack\n FIXME Write missing information\n@@ -26135,15 +26135,15 @@\n 9.6.16.3 Execution-time Python procedures\n FIXME Write missing information\n \n 9.6.17 A short survey of LinuxCNC program execution\n To understand remapping of codes it might be helpful to survey the execution of task and interpreter\n as far as it relates to remapping.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 525 / 1224\n \n 9.6.17.1 Interpreter state\n Conceptually, the interpreter\u2019s state consist of variables which fall into the following categories:\n 1. Configuration information (typically from INI file)\n 2. The \u2019World model\u2019 - a representation of actual machine state\n@@ -26181,15 +26181,15 @@\n Here the interpreter can clearly predict machine positions for each line:\n After N20: x=10 y=-5 z=20; after N30: x=10 y=15 z=15; after N40: x=10 y=15 z=45 and so can\n parse the whole program and generate canonical operations well in advance.\n 9.6.17.4 Queue-busters break position prediction\n However, complete read ahead is only possible when the interpreter can predict the position impact\n for every line in the program in advance. Let\u2019s look at a modified example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 526 / 1224\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G38.3 Z-10\n N40 O100 if [#5070 EQ 0]\n@@ -26228,15 +26228,15 @@\n 9.6.17.7 Parsing\n Once a line is read (in either MDI mode, or from the current NGC file), it is parsed and flags and\n parameters are set in a struct block (struct _setup, member block1). This struct holds all information\n about the current source line, but independent of different ordering of codes on the current line: As\n long as several codes are compatible, any source ordering will result in the same variables set in the\n struct block. Right after parsing, all codes on a block are checked for compatibility.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 527 / 1224\n \n 9.6.17.8 Execution\n After successful parsing the block is executed by execute_block(), and here the different items are\n handled according to execution order.\n If a \u201dqueue buster\u201d is found, a corresponding flag is set in the interpreter state (toolchange_flag,\n@@ -26273,15 +26273,15 @@\n ;py,from emctask import *\n ;py,print(emcstat.io.tool.pocketPrepped)\n ;py,print(emcstat.io.tool.toolInSpindle)\n ;py,print(emcstat.io.tool.toolTable[0])\n \n You need to have LinuxCNC started from a terminal window to see the results.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 528 / 1224\n \n 9.6.17.11 How Tx (Prepare Tool) works\n Interpreter action on a Tx command\n All the interpreter does is evaluate the toolnumber parameter, looks up its corresponding tooldata\n 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.\n@@ -26318,15 +26318,15 @@\n will:\n a. generate a rapid move to TOOL_CHANGE_POSITION if so set in INI\n b. enqueue an EMC_TOOL_LOAD NML message to task.\n 7. set the numberer parameters 5400-5413 according to the new tool\n 8. signal to task to stop calling the interpreter for readahead by returning INTERP_EXECUTE_FINISH\n since M6 is a queue buster.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 529 / 1224\n \n What task does when it sees a CHANGE_TOOL command Again, not much more than passing\n the buck to iocontrol by sending it an EMC_TOOL_LOAD message, and waiting until iocontrol has\n done its thing.\n Iocontrol action on EMC_TOOL_LOAD\n@@ -26360,15 +26360,15 @@\n \n 9.6.19 Changes\n \u2014 The method to return error messages and fail used to be self.set_errormsg(text) followed by return\n INTERP_ERROR. This has been replaced by merely returning a string from a Python handler or\n oword subroutine. This sets the error message and aborts the program. Previously there was no\n clean way to abort a Python O-word subroutine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 530 / 1224\n \n 9.6.20 Debugging\n In the [EMC] section of the INI file the DEBUG parameter can be changed to get various levels of\n debug messages when LinuxCNC is started from a terminal.\n Debug level, 0 means no messages. See src/emc/nml_intf/debugflags.h for others\n@@ -26414,15 +26414,15 @@\n Backtracking through waypoints results in slower movement rates as the moves are point-to-point\n respecting velocity and acceleration settings. The velocity and acceleration limit pins can be managed\n dynamically to control offsets at all times.\n When backtrack-enable is FALSE, the auto-return move is NOT coordinated, each axis returns to zero\n at its own rate. If a controlled path is wanted in this condition, each axis should be manually returned\n to zero before deasserting an enabling pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 531 / 1224\n \n The waypoint-sample-secs, waypoint-threshold, and epsilon pins are evaluated only when the component is idle.\n The offsets-applied output pin is provided to indicate the current state to a GUI so that program\n resumption can be managed. If the offset(s) are non-zero when the apply-offsets pin is deasserted\n (for example when resuming a program when offsetting during a pause), offsets are returned to zero\n@@ -26465,15 +26465,15 @@\n 5. Set the moveoff component operating parameters and limits for each axis in accordance with\n additional INI file settings\n Note: The moveoff_gui application supports configurations that use known kinematics modules with\n KINEMATICS_TYPE=KINEMATICS_IDENTITY. Supported modules include: trivkins. With identity kins,\n moveoff_gui assigns each axis name specified with the command line parameter -axes axisnames to\n the corresponding joint.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 532 / 1224\n \n Modify an existing configuration as follows:\n Make sure there is an INI file entry for [HAL]HALUI and create a new [HAL]HALFILE entry for\n LIB:hookup_moveoff.tcl. The entry for LIB:hookup_moveoff.tcl should follow all HALFILE= entries for\n HAL files that connect the pins for joint.N.motor-pos-cmd, joint.N.motor-pos-fb, and any components\n@@ -26519,15 +26519,15 @@\n The moveoff_gui makes the required connections for the moveoff component pins: mv.power_on and\n mv.apply-offsets. The mv.power_on pin is connected to the motion.motion-enabled pin (a new signal\n is automatically created if necessary). The mv.apply-offsets is connected to halui.program.is-paused\n or set to 1 depending upon the command line option -mode [ onpause | always ]. A new signal is\n automatically created if necessary.\n To use the moveoff_gui, add an entry in the INI file [APPLICATIONS] section as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 533 / 1224\n \n [APPLICATIONS]\n # Note: a delay (specified in seconds) may be required if connections\n # are made using postgui HAL files ([HAL]POSTGUI_HALFILE=)\n DELAY = 0\n@@ -26579,15 +26579,15 @@\n \n (default: xyz (no spaces))\n (letters from set of: x y z a b c u v w)\n (example: -axes z)\n (example: -axes xz)\n (example: -axes xyz)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n [-inc incrementvalue]\n \n [-size integer]\n [-loc center|+x+y]\n [-autoresume]\n [-delay delay_secs]\n@@ -26647,15 +26647,15 @@\n -T: call task_init()\n -l: specify the log_level (default: -1)\n \n 9.8.2 Example\n To see the output of a loop for example we can run rs274 on the following file and see that the loop\n never ends. To break out of the loop use Ctrl Z. The following two files are needed to run the example.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 535 / 1224\n \n test.ngc\n # = 123.352\n o101 while [[# MOD 60 ] NE 0]\n (debug,#)\n@@ -26692,15 +26692,15 @@\n = (1-r) * MAX_VELOCITY\n = ( r) * MAX_VELOCITY\n \n planning max acceleration\n = (1-r) * MAX_ACCELERATIOIN\n external offset acceleration = ( r) * MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 536 / 1224\n \n 9.9.2 HAL Pins\n 9.9.2.1 Per-Axis Motion HAL Pins\n For each axis letter (L in xyzabcuvw)\n 1. axis.L.eoffset-enable Input(bit): enable\n@@ -26729,15 +26729,15 @@\n When the machine is turned off, the current position with external offsets is maintained so that\n there is no unexpected motion at turn off or turn on.\n At each startup (machine-on), the internal counts register for each HAL pin axis.L.eoffset-counts is\n zeroed and the corresponding HAL output pin axis.L.eoffset is reset to zero.\n In other words, external offsets are defined as ZERO at each startup (machine-on) regardless of the\n value of the axis.L.eoffset-counts pins. To avoid confusion, it is recommended that all axis.L.eoffsetcounts pins are set to zero when the machine is off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 537 / 1224\n \n 9.9.3.3 Soft Limits\n External axis offset movements are independently planned with velocity and acceleration settings\n specified by the [AXIS_L]OFFSET_AV_RATIO. The offsetting motion is not coordinated with teleop\n jogs nor with coordinated (G-code) motion. During teleop jogging and coordinated (G-code) motion,\n@@ -26776,15 +26776,15 @@\n 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\n made in the offending external offset.\n 9.9.3.5 Warning\n The use of external offsets can alter machine motion in a significant manner. The control of external\n offsets with HAL components and connections and any associated user interfaces should be carefully\n designed and tested before deployment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 538 / 1224\n \n 9.9.4 Related HAL Components\n 9.9.4.1 eoffset_per_angle.comp\n 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).\n \n@@ -26826,15 +26826,15 @@\n The sim configurations utilize the INI setting [HAL]HALFILE = LIB:basic_sim.tcl to configure all\n routine HAL connections for the axes specified in the INI file [TRAJ]COORDINATES= setting. The\n HAL logic needed to demonstrate external offset functionality and the GUI HAL pin connections for\n a PyVCP panel are made in separate HAL files. A non-simulation configuration should replace the\n LIB:basic_sim.tcl item HALFILEs appropriate to the machine. The provided PyVCP files (.hal and .xml)\n could be a starting point for application-specific GUI interfaces.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 539 / 1224\n \n 9.9.6.1 eoffsets.ini\n The sim config sim/configs/axis/external_offsets/eoffsets.ini demonstrates a cartesian XYZ machine\n with controls to enable external offsets on any axis.\n Displays are provided to show all important position and offset values.\n@@ -26865,15 +26865,15 @@\n typically set by a program (or MDI) M68 command to control a motion.analog-out-NN pin.\n Panel LEDs are provided to show important status items.\n Functions are provided for inside and outside polygons (nsides >= 3), sine waves and square waves.\n The functions can be multiplied in frequency using the fmul pin and modified in amplitude using the\n rfrac pin (fraction of reference radius).\n Controls are provided to start/stop offset waveforms and to set the function type and its parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 540 / 1224\n \n 9.10 Tool Database Interface\n \n Tool data is conventionally described by a tool table file specified by an inifile setting: [EMCIO]TOOL_TABLE=\n A tool table file consists of a text line for each available tool describing the tool\u2019s parameters, see Tool\n@@ -26910,15 +26910,15 @@\n response of \u201dFINI\u201d terminates the reply.\n 4. The db_program then enters an event wait loop to receive commands that indicate that tool data\n has been changed by LinuxCNC. Tool data changes include:\n \u2014 a) spindle loading(Tn M6)/unloading(T0 M6)\n \u2014 b) tool parameter changes (G10L1Pn for example)\n \u2014 c) tool substitutions (M61Qn).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 541 / 1224\n \n When a tool data change occurs, LinuxCNC sends a command to the db_program consisting of an\n identifying command letter followed by a full or abbreviated tool data line. The db_program must\n respond with a reply to confirm receipt. If the reply includes the text \u201dNAK\u201d, a message is printed to\n stdout but execution continues. The \u201dNAK\u201d message signifies a lack of synchronization between the\n@@ -26959,15 +26959,15 @@\n command().load_tool_table()\n \n Alternatively, a db_program may push its local data changes to synchronize its data with LinuxCNC by\n using the load_tool_table() interface command. Commands which push changes to LinuxCNC may be\n rejected if the interpreter is running. The interpreter state can be checked before issuing a load_tool_table()\n command. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 542 / 1224\n \n #! /usr/bin/env python3\n import linuxcnc\n s = linuxcnc.stat()\n s.poll()\n@@ -27012,15 +27012,15 @@\n # function to respond to \u2019p\u2019 (put) commands\n ...\n def user_load_spindle(toolno,params):\n # function to respond to \u2019l\u2019 (put) commands\n ...\n def user_unload_spindle(toolno,params):\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 543 / 1224\n \n # function to respond to \u2019u\u2019 (put) commands\n ...\n #-----------------------------------------------------------# Begin:\n from tooldb import tooldb_tools\n@@ -27060,50 +27060,50 @@\n LinuxCNC tooldata updates and the database application updates.\n 9.10.2.1 Notes\n \n When a db_program is used in conjunction with a random tool changer ([EMCIO]RANDOM_TOOLCHANGER\n LinuxCNC maintains a file (db_spindle.tbl in the configuration directory) that consists of a single tool\n table line identifying the current tool in the spindle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Deuxi\u00e8me partie\n \n Usage\n \n 544 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 545 / 1224\n \n Chapitre 10\n \n Interfaces utilisateur\n 10.1 AXIS GUI\n 10.1.1 Introduction\n AXIS is a graphical front-end for LinuxCNC which features a live preview and backplot. It is written\n in Python and uses Tk and OpenGL to display its user interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 546 / 1224\n \n Figure 10.1 \u2013 The AXIS Window\n \n 10.1.2 Getting Started\n If your configuration is not currently set up to use AXIS, you can change it by editing the .ini file (INI\n file). In the section [DISPLAY] change the [DISPLAY] line to read DISPLAY = axis.\n The sample configuration sim/axis.ini is already configured to use AXIS as its front-end.\n When AXIS starts, a window like the one in the figure Figure 10.1 above opens.\n 10.1.2.1 INI settings\n For more information on INI file settings that can change how AXIS works see the Display Section of\n the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 547 / 1224\n \n \u2014 CYCLE_TIME - Adjust the response rate of the GUI in milliseconds. Typical 100, useable range 50\n - 200\n (will accept time in seconds (.05 -.2) for legacy reasons - milliseconds preferred to match other\n screens).\n@@ -27142,15 +27142,15 @@\n \u2014 A large readout showing the current position and all offsets.\n \u2014 A menu bar and toolbar that allow you to perform various actions\n \u2014 Manual Control Tab - which allows you to make the machine move, turn the spindle on or off, and\n turn the coolant on or off if included in the INI file.\n \u2014 MDI Tab - where G-code programs can be entered manually, one line at a time. This also shows the\n Active G-codes which shows which modal G-codes are in effect.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 548 / 1224\n \n \u2014 Feed Override - which allows you to scale the speed of programmed motions. The default maximum\n is 120% and can be set to a different value in the INI file. See the Display Section of the INI file for\n more information.\n \u2014 Spindle Override - which allows you to scale the spindle speed up or down.\n@@ -27191,15 +27191,15 @@\n move the tool to the expected position before the line first then it will execute the rest of the code.\n \n AVERTISSEMENT\n Do not use Run From Selected Line if your G-code program contains subroutines.\n \n \u2014 Step - Single step through a program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 549 / 1224\n \n \u2014 Pause - Pause a program.\n \u2014 Resume - Resume running from a pause.\n \u2014 Stop - Stop a running program. When run is selected after a stop the program will start from the\n beginning.\n@@ -27242,15 +27242,15 @@\n \u2014 Perspective View - The Perspective View (or P view) displays the G-code looking at the part from an\n adjustable point of view, defaulting to X+, Y-, Z+. The position is adjustable using the mouse and\n the drag/rotate selector. This view is a compromise view, and while it does do a good job of trying\n to show three (to nine!) axes on a two-dimensional display, there will often be some feature that is\n hard to see, requiring a change in viewpoint. This view is best when you would like to see all three\n (to nine) axes at once.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 550 / 1224\n \n Point of View\n The AXIS display pick menu View refers to Top, Front, and Side views. These terms are correct if\n the CNC machine has its Z axis vertical, with positive Z up. This is true for vertical mills, which\n is probably the most popular application, and also true for almost all EDM machines, and even\n@@ -27294,15 +27294,15 @@\n \u2014 Show Commanded Position - This is the position that LinuxCNC will try to go to. Once motion has\n stopped, this is the position LinuxCNC will try to hold.\n \u2014 Show Actual Position - Actual Position is the measured position as read back from the system\u2019s\n encoders or simulated by step generators. This may differ slightly from the Commanded Position\n for many reasons including PID tuning, physical constraints, or position quantization.\n \u2014 Show Machine Position - This is the position in unoffset coordinates, as established by Homing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 551 / 1224\n \n \u2014 Show Relative Position - This is the Machine Position modified by G5x, G92, and G43 offsets.\n \u2014 About AXIS - We all know what this is.\n \u2014 Quick Reference - Shows the keyboard shortcut keys.\n 10.1.3.2 Toolbar buttons\n@@ -27380,15 +27380,15 @@\n \n Toggle between Drag and Rotate Mode [D]\n \n \u2014\n \n Clear live backplot [Ctrl-K]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 552 / 1224\n \n 10.1.3.3 Graphical Display Area\n Coordinate Display In the upper-left corner of the program display is the coordinate position display\n for each axis. To the right of the number an origin symbol\n \n@@ -27426,15 +27426,15 @@\n \n Figure 10.2 \u2013 Soft Limits\n Tool Cone When no tool is loaded, the location of the tip of the tool is indicated by the tool cone. The\n tool cone does not provide guidance on the form, length, or radius of the tool.\n When a tool is loaded (for instance, with the MDI command T1 M6 ), the cone changes to a cylinder\n which shows the diameter of the tool given in the tool table file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 553 / 1224\n \n Backplot When the machine moves, it leaves a trail called the backplot. The color of the line indicates\n the type of motion: Yellow for jogs, faint green for rapid movements, red for straight moves at a feed\n rate, and magenta for circular moves at a feed rate.\n Grid AXIS can optionally display a grid when in orthogonal views. Enable or disable the grid using\n@@ -27454,15 +27454,15 @@\n 10.1.3.4 Text Display Area\n By left-clicking a line of the program, the line will be highlighted in both the graphical and text displays.\n When the program is running, the line currently being executed is highlighted in red. If no line has\n been selected by the user, the text display will automatically scroll to show the current line.\n \n Figure 10.3 \u2013 Current and Selected Lines\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 554 / 1224\n \n 10.1.3.5 Manual Control\n While the machine is turned on but not running a program, the items in the Manual Control tab can\n be used to move the machine or control its spindle and coolant.\n When the machine is not turned on, or when a program is running, the manual controls are unavailable.\n@@ -27499,15 +27499,15 @@\n will show Home Joint.\n See the Homing Configuration Chapter for more information.\n Touch Off\n By pressing Touch Off or the END key, the G5x offset for the current axis is changed so that the\n current axis value will be the specified value. Expressions may be entered using the rules for rs274ngc\n programs, except that variables may not be referred to. The resulting value is shown as a number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 555 / 1224\n \n Figure 10.4 \u2013 Touch Off Window\n See also the Machine menu options: Touch part and Touch part holder.\n Tool Touch Off By pressing the Tool Touch Off button the tool length and offsets of the currently\n loaded tool will be changed so that the current tool tip position matches the entered coordinate.\n@@ -27526,15 +27526,15 @@\n Pressing the spindle start button sets the S speed to 1.\n The Coolant group The two buttons allow the Mist and Flood coolants to be turned on and off.\n Depending on your machine configuration, not all the items in this group may appear.\n 10.1.3.6 MDI\n MDI allows G-code commands to be entered manually. When the machine is not turned on, or when a\n program is running, the MDI controls are unavailable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 556 / 1224\n \n Figure 10.6 \u2013 The MDI tab\n \u2014 History - This shows MDI commands that have been typed earlier in this session.\n \u2014 MDI Command - This allows you to enter a G-code command to be executed. Execute the command\n by pressing Enter or by clicking Go.\n@@ -27550,15 +27550,15 @@\n only appears when the HAL pin spindle.0.speed-out is connected.\n 10.1.3.9 Jog Speed\n By moving this slider, the speed of jogs can be modified. For instance, if the slider is set to 1 in/min,\n then a .01 inch jog will complete in about .6 seconds, or 1/100 of a minute. Near the left side (slow\n jogs) the values are spaced closely together, while near the right side (fast jogs) they are spaced much\n further apart, allowing a wide range of jog speeds with fine control when it is most important.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 557 / 1224\n \n On machines with a rotary axis, a second jog speed slider is shown. This slider sets the jog rate for\n the rotary axes (A, B and C).\n 10.1.3.10 Max Velocity\n By moving this slider, the maximum velocity can be set. This caps the maximum velocity for all programmed moves except spindle-synchronized moves.\n@@ -27639,15 +27639,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Auto\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 558 / 1224\n \n Table 10.1: (continued)\n Keystroke\n S\n ESC\n@@ -27686,15 +27686,15 @@\n \n 10.1.5 Show LinuxCNC Status (linuxcnctop)\n AXIS includes a program called linuxcnctop which shows some of the details of LinuxCNC\u2019s state. You\n can run this program by invoking Machine > Show LinuxCNC Status\n \n Figure 10.7 \u2013 LinuxCNC Status Window\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 559 / 1224\n \n The name of each item is shown in the left column. The current value is shown in the right column. If\n the value has recently changed, it is shown on a red background.\n \n 10.1.6 MDI interface\n@@ -27731,15 +27731,15 @@\n hal_manualtoolchange can be used even when AXIS is not used as the GUI. This component is most\n useful if you have presettable tools and you use the tool table.\n Note\n Important Note: Rapids will not show on the preview after a T is issued until the next feed move\n after the M6. This can be very confusing to most users. To turn this feature off for the current tool\n change program a G1 with no move after the T.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 560 / 1224\n \n Figure 10.8 \u2013 Manual Toolchange Window\n \n 10.1.9 Python modules\n AXIS includes several Python modules which may be useful to others. For more information on one of\n@@ -27755,44 +27755,44 @@\n \n 10.1.10 Using AXIS in Lathe Mode\n By including the line LATHE = 1 in the [DISPLAY] section of the INI file, AXIS selects lathe mode. The\n Y axis is not shown in coordinate readouts, the view is changed to show the Z axis extending to the\n right and the X axis extending towards the bottom of the screen, and several controls (such as those\n for preset views) are removed. The coordinate readouts for X are replaced with diameter and radius.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.9 \u2013 AXIS Lathe Mode\n Pressing V zooms out to show the entire file, if one is loaded.\n When in lathe mode, the shape of the loaded tool (if any) is shown.\n \n 561 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 562 / 1224\n \n Figure 10.10 \u2013 Lathe Tool Shape\n To change the display to a back tool lathe you need to have both LATHE = 1 and BACK_TOOL_LATHE\n = 1 in the [DISPLAY] section. This will invert the view and put the tool on the back side of the Z axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 563 / 1224\n \n Figure 10.11 \u2013 Lathe Back Tool Shape\n \n 10.1.11 Using AXIS in Foam Cutting mode\n By including the line FOAM = 1 in the [DISPLAY] section of the INI file, AXIS selects foam-cutting\n mode. In the program preview, XY motions are displayed in one plane, and UV motions in another. In\n the live plot, lines are drawn between corresponding points on the XY plane and the UV plane. The\n special comments (XY_Z_POS) and (UV_Z_POS) set the Z coordinates of these planes, which default\n to 0 and 1.5 machine units.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 564 / 1224\n \n Figure 10.12 \u2013 Foam Cutting Mode\n \n 10.1.12 Advanced Configuration\n When AXIS is started it creates the HAL pins for the GUI then it executes the HAL file named in the INI\n@@ -27800,15 +27800,15 @@\n _postgui + .hal eg. lathe_postgui.hal, but can be any legal filename. These commands are executed\n after the screen is built, guaranteeing the widget\u2019s HAL pins are available. You can have multiple line\n of POSTGUI_HALFILE= in the INI. Each will be run one after the other in the order they\n appear.\n For more information on the INI file settings that can change the way AXIS works, see the Display\n Section of the INI configuration chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 565 / 1224\n \n 10.1.12.1 Program Filters\n AXIS has the ability to send loaded files through a filter program. This filter can do any desired task:\n Something as simple as making sure the file ends with M2, or something as complicated as generating\n G-code from an image.\n@@ -27830,15 +27830,15 @@\n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n Figure 10.13 \u2013 Circular Holes\n If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 566 / 1224\n \n FILTER_PROGRESS=%d\n \n will set the AXIS progress bar to the given percentage. This feature should be used by any filter that\n runs for a long time.\n@@ -27874,15 +27874,15 @@\n Example of .axisrc file\n root_window.bind(\u201d\u201d, \u201ddestroy .\u201d)\n help2.append((\u201dControl-Q\u201d, \u201dQuit\u201d))\n \n The following stops the \u201dDo you really want to quit\u201d dialog.\n root_window.tk.call(\u201dwm\u201d,\u201dprotocol\u201d,\u201d.\u201d,\u201dWM_DELETE_WINDOW\u201d,\u201ddestroy .\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 567 / 1224\n \n 10.1.12.5 USER_COMMAND_FILE\n \n A configuration-specific Python file may be specified with an INI file setting [DISPLAY]USER_COMMAND_FIL\n Like a ~/.axisrc file, this file is sourced just before the AXIS GUI is displayed. This file is specific to\n@@ -27918,15 +27918,15 @@\n G-code file, one can disable the preview on certain parts that are already working OK).\n \u2014 (AXIS,hide) Stops the preview (must be first)\n \u2014 (AXIS,show) Resumes the preview (must follow a hide)\n \u2014 (AXIS,stop) Stops the preview from here to the end of the file.\n \u2014 (AXIS,notify,the_text) Displays the_text as an info display\n This display can be useful in the AXIS preview when (debug,message) comments are not displayed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 568 / 1224\n \n 10.1.13 Axisui\n To improve the interaction of AXIS with physical jog wheels, the axis currently selected in the GUI is\n also reported on a pin with a name like axisui.jog.x. One of these pins is TRUE at one time, and the\n rest are FALSE. These are meant to control motion\u2019s jog-enable pins.\n@@ -28009,15 +28009,15 @@\n 10.1.14 AXIS Customization Hints\n AXIS is a fairly large and difficult-to-penetrate code base, this is helpful To keep the code stable but\n makes it difficult to customize.\n Here we will show code snippets to modify behaviours or visuals of the screen. Keep in mind the\n internal code of AXIS can change from time to time.\n these snippets are not guaranteed to continue to work - they may need adjustment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 569 / 1224\n \n 10.1.14.1 The update function\n There is a function in AXIS named user_live_update that is called every time AXIS updates itself. You\n can use this to update your own functions.\n # continuous update function\n@@ -28056,15 +28056,15 @@\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n root_window.bind(\u2019\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019\u2019,lambda event: set_feedrate(50))\n@@ -28103,15 +28103,15 @@\n # connect pins\n hal.new_sig(\u2019idle-led\u2019,hal.HAL_BIT)\n hal.connect(\u2019halui.program.is-idle\u2019,\u2019idle-led\u2019)\n hal.connect(\u2019my_component.idle-led\u2019,\u2019idle-led\u2019)\n \n 570 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 571 / 1224\n \n # set a pin\n hal.set_p(\u2019my_component.pause-led\u2019,\u20191\u2019)\n # get a pin 2,8+ branch\n value = hal.get_value(\u2019halui.program.is-idle\u2019)\n@@ -28152,15 +28152,15 @@\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-text\u2019,\u2019Home Y\u2019,\u2019-command\u2019,\u2019 \u2190goto_home Y\u2019,\u2019-height\u2019,\u20192\u2019)\n # place the button\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.homey\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20197\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n # any function called from Tcl needs to be added to TclCommands\n TclCommands.goto_home = goto_home\n commands = TclCommands(root_window)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 572 / 1224\n \n 10.1.14.12 Add Button to manual frame\n # make a new button and put it in the manual frame\n root_window.tk.call(\u2019button\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-text\u2019,\u2019My Button\u2019,\u2019- \u2190command\u2019,\u2019mybutton_clicked\u2019,\u2019-height\u2019,\u20192\u2019)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mybutton\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20196\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n@@ -28216,15 +28216,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 573 / 1224\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28321,15 +28321,15 @@\n # use \u2019grid\u2019 or \u2019pack\u2019 depending on how it was originally placed\n root_window.tk.call(\u2019grid\u2019,\u2019forget\u2019,\u2019.pane.top.tabs.fmanual.jogf.zerohome.tooltouch\u2019)\n \n 10.1.14.15 Change a label\n # change label of a widget\n root_window.tk.call(\u2019setup_widget_accel\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019Downdraft\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 574 / 1224\n \n # make sure it appears (only needed in this case if the mist button was hidden)\n root_window.tk.call(\u2019grid\u2019,\u2019.pane.top.tabs.fmanual.mist\u2019,\u2019-column\u2019,\u20191\u2019,\u2019-row\u2019,\u20195\u2019,\u2019- \u2190columnspan\u2019,\u20192\u2019,\u2019-padx\u2019,\u20194\u2019,\u2019-sticky\u2019,\u2019w\u2019)\n \n 10.1.14.16 Redirect an existing command\n@@ -28359,15 +28359,15 @@\n root_window.tk.call(\u2019.toolbar.program_run\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019RUN\u2019,\u2019-width\u2019, \u2190buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_step\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STEP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_pause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019PAUSE\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_stop\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019STOP\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_blockdelete\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Skip /\u2019 \u2190,\u2019-width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.program_optpause\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019M1\u2019,\u2019- \u2190width\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 575 / 1224\n \n root_window.tk.call(\u2019.toolbar.view_zoomin\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom+\u2019,\u2019-width\u2019 \u2190,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_zoomout\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Zoom-\u2019,\u2019-width \u2190\u2019,buW,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top X\u2019,\u2019-width\u2019,buW, \u2190\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n root_window.tk.call(\u2019.toolbar.view_z2\u2019,\u2019configure\u2019,\u2019-image\u2019,\u2019\u2019,\u2019-text\u2019,\u2019Top Y\u2019,\u2019-width\u2019,buW \u2190,\u2019-height\u2019,buH,\u2019-borderwidth\u2019,boW)\n@@ -28402,15 +28402,15 @@\n support the joint / axis changes in LinuxCNC it does not work on 2.7 or 2.6 branch!\n It has support for integrated virtual keyboard (onboard or matchbox-keyboard), so there is no need\n for a hardware keyboard or mouse, but it can also be used with that hardware. GMOCCAPY offers a\n separate settings page to configure most settings of the GUI without editing files.\n 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\n gtranslator or poedit. After rebuilding, you\u2019d get the GUI in your preference language. To facilitate\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 576 / 1224\n \n the sharing of the translation, GMOCCAPY is available on the Weblate web interface. GMOCCAPY is\n currently available in English, German, Spanish, Polish, Serbian and Hungarian. Feel free to help me\n to introduce more languages, be it locally or via the web. If you need help, don\u2019t hesitate to contact\n me on nieson@web.de.\n@@ -28425,15 +28425,15 @@\n it should fit to every standard screen. It is recommended to use screens with minimum resolution of\n 1024x748.\n \n 10.2.3 How to Get GMOCCAPY\n GMOCCAPY 3 is included in the standard distribution of LinuxCNC since release 2.7. So the easiest\n way to get GMOCCAPY on your controlling PC is just to download the ISO and install it from the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 577 / 1224\n \n CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n In the release notes aka changelist you can track the latest bugfixes and features.\n You will get a similar screen to the following (the design may vary depending on your config):\n \n@@ -28446,15 +28446,15 @@\n There is really not to much to configure just to run GMOCCAPY, but there are some points you should\n take care off if you want to use all the features of the GUI.\n You will find a lot of simulation configurations (INI files) included, just to show the basics:\n \u2014 gmoccapy.ini\n \u2014 gmoccapy_4_axis.ini\n \u2014 lathe_configs/gmoccapy_lathe.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 578 / 1224\n \n \u2014 lathe_configs/gmoccapy_lathe_imperial.ini\n \u2014 gmoccapy_left_panel.ini\n \u2014 gmoccapy_right_panel.ini\n \u2014 gmoccapy_messages.ini\n@@ -28492,15 +28492,15 @@\n If no path or file is given, GMOCCAPY will use as default .pref, if no machine\n name is given in your INI File it will use gmoccapy.pref. The file will be stored in your config directory, so the settings will not be mixed if you use several configs. If you only want to use one file\n for several machines, you need to include PREFERENCE_FILE_PATH in your INI.\n \n \u2014 MAX_FEED_OVERRIDE = 1.5 - Sets the maximum feed override, in the example given, you will be\n allowed to override the feed by 150%.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 579 / 1224\n \n Note\n If no value is given, it will be set to 1.0.\n \n \u2014 MIN_SPINDLE_OVERRIDE = 0.5 and MAX_SPINDLE_OVERRIDE = 1.2 - Will allow you to change\n@@ -28531,15 +28531,15 @@\n Defaults to 600 if not set.\n \n 10.2.4.3 Macro Buttons\n You can add macros to GMOCCAPY, similar to Touchy\u2019s way. A macro is nothing else than a NGC file.\n You are able to execute complete CNC programs in MDI mode by just pushing one button. To do so,\n you first have to specify the search path for macros:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 580 / 1224\n \n [RS274NGC]\n SUBROUTINE_PATH = macros\n \n This sets the path to search for macros and other subroutines. Several subroutine paths can be separated \u201d:\u201d.\n@@ -28582,15 +28582,15 @@\n ; will jog the machine to a given position\n O sub\n G17\n G21\n G54\n G61\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 581 / 1224\n \n G40\n G49\n G80\n G90\n@@ -28605,15 +28605,15 @@\n After pushing the execute macro button, you will be asked to enter the values for X-pos Y-pos Z-pos\n and the macro will only run if all values have been given.\n Note\n If you would like to use a macro without any movement, see also the notes in known problems.\n \n Macro example using the \u201dgo to position\u201d-macro\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 582 / 1224\n \n 10.2.4.4 Embedded Tabs and Panels\n You can add embedded programs to GMOCCAPY like you can do in AXIS, Touchy and Gscreen. All is\n done by GMOCCAPY automatically if you include a few lines in your INI file in the DISPLAY section.\n If you have never used a Glade panel, I recommend to read the excellent documentation on Glade\n@@ -28654,15 +28654,15 @@\n \n \u2014 EMBED_TAB_COMMAND = The command to execute, i.e.\n gladevcp -x {XID} dro.glade\n \n includes a custom glade file called dro.glade in the mentioned location. The file must be placed in\n the config folder of your machine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 583 / 1224\n \n gladevcp h_buttonlist.glade\n \n will just open a new user window called h_buttonlist.glade note the difference. This one is stand\n alone, and can be moved around independent from GMOCCAPY window.\n@@ -28678,15 +28678,15 @@\n Note\n If you make any HAL connections to your custom glade panel, you need to do that in the HAL file\n specified in the EMBED_TAB_COMMAND line, otherwise you may get an error that the HAL pin does\n not exist \u2014 this is because of race conditions loading the HAL files. Connections to GMOCCAPY HAL\n pins need to be made in the postgui HAL file specified in your INI file, because these pins do not exist\n prior of realizing the GUI.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 584 / 1224\n \n Here are some examples:\n ntb_preview\n \n box_right - and GMOCCAPY in MDI mode\n@@ -28707,15 +28707,15 @@\n \u2014 status - Will just display a message as pop up window, using the messaging system of GMOCCAPY.\n \u2014 okdialog - Will hold focus on the message dialog and will activate a -waiting HAL pin.\n \u2014 yesnodialog - Will hold focus on the message dialog and will activate a -waiting HAL pin and\n provide a -response HAL pin.\n For more detailed information of the pins see User Created Message HAL Pins.\n Example of User Message Configuration\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 585 / 1224\n \n MESSAGE_TEXT = This is a info-message test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n MESSAGE_TEXT = This is a yes no dialog test\n@@ -28759,15 +28759,15 @@\n self.widgets.rbt_auto.set_size_request(*BB_SIZE)\n self.widgets.tbtn_setup.set_size_request(*BB_SIZE)\n self.widgets.tbtn_user_tabs.set_size_request(*BB_SIZE)\n self.widgets.btn_exit.set_size_request(*BB_SIZE)\n self.widgets.vbtb_main.remove(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.remove(self.widgets.lbl_time)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 586 / 1224\n \n self.widgets.vbtb_main.add(self.widgets.tbtn_setup)\n self.widgets.vbtb_main.add(self.widgets.lbl_time)\n \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n@@ -28807,15 +28807,15 @@\n 10.2.5.1 Right and Bottom Button Lists\n The screen has two main button lists, one on the right side an one on the bottom. The right handed\n buttons will not change during operation, but the bottom button list will change very often. The buttons\n are count from up to down and from left to right beginning with 0.\n Note\n The pin names have changed in GMOCCAPY 2 to order them in a better way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 587 / 1224\n \n The pins for the right (vertical) buttons are:\n \u2014 gmoccapy.v-button.button-0 (bit IN)\n \u2014 gmoccapy.v-button.button-1 (bit IN)\n \u2014 gmoccapy.v-button.button-2 (bit IN)\n@@ -28889,15 +28889,15 @@\n enabled in settings,\n otherwise Nothing\n optional blocks\n full-size preview\n \n edit code\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 588 / 1224\n \n Table 10.3: Functional assignment of horizontal buttons\n (2)\n Pin\n Settings Mode\n@@ -28988,15 +28988,15 @@\n \n So we have 67 reactions with only 10 HAL pins!\n These pins are made available to be able to use the screen without an touch panel, or protect it\n from excessive use by placing hardware buttons around the panel. They are available in a sample\n configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 589 / 1224\n \n 10.2.5.2 Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n Note\n For GMOCCAPY 3 some HAL pin names have changed when new controls have been implemented.\n@@ -29010,15 +29010,15 @@\n \u2014 gmoccapy.feed.feed-override.count-enable (bit IN) - Must be True, to enable counts\n \u2014 gmoccapy.feed.reset-feed-override (bit IN) - reset the feed override to *0%\n \u2014 gmoccapy.spindle.spindle-override.counts (s32 IN) - spindle override\n \u2014 gmoccapy.spindle.spindle-override.count-enable (bit IN) - Must be True, to enable counts\n \u2014 gmoccapy.spindle.reset-spindle-override (bit IN) - reset the spindle override to *0%\n \u2014 gmoccapy.rapid.rapid-override.counts (s32 IN) - Maximal Velocity of the *chine\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 590 / 1224\n \n \u2014 gmoccapy.rapid.rapid-override.count-enable (bit IN) - Must be True, to enable counts\n To connect potentiometers, use the following pins:\n \u2014 gmoccapy.jog.jog-velocity.direct-value (float IN) - To adjust the jog velocity slider\n \u2014 gmoccapy.jog.jog-velocity.analog-enable (bit IN) - Must be True, to allow analog inputs\n@@ -29057,15 +29057,15 @@\n The float pins do accept values from 0.0 to 1.0, being the percentage value you want to set the slider\n value.\n AVERTISSEMENT\n If you use both connection types, do not connect the same slider to both pin as the influences\n between the two has not been tested! Different sliders may be connected to the one or other\n HAL connection type.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 591 / 1224\n \n Important\n Please be aware that the jog velocity depends on the turtle button state. It will lead to different\n slider scales depending on the mode (turtle or rabbit). Please take also a look at jog velocities\n and turtle-jog HAL pin for more details.\n@@ -29103,15 +29103,15 @@\n it might have been disabled on the settings page. If the button shows the rabbit-icon, the scale is from\n min to max machine velocity. If it shows the turtle, the scale will reach only 1/20 of max velocity by\n default. The used divider can be set on the settings page.\n So using a touch screen it is much easier to select smaller velocities.\n GMOCCAPY offers this HAL pin to toggle between turtle and rabbit jogging:\n \u2014 gmoccapy.jog.turtle-jog (bit IN)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 592 / 1224\n \n 10.2.5.5 Jog Increment HAL Pins\n The jog increments given in the INI file like\n [DISPLAY]\n INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm\n@@ -29146,15 +29146,15 @@\n 10.2.5.8 User Created Message HAL Pins\n GMOCCAPY may be configured to react to external errors, using 3 different user messages:\n status\n \u2014 gmoccapy.messages.status (bit IN) - Triggers the dialog.\n okdialog\n \u2014 gmoccapy.messages.okdialog (bit IN) - Triggers the dialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 593 / 1224\n \n \u2014 gmoccapy.messages.okdialog-waiting (bit OUT) - Will be 1 as long as the dialog is open. Closing\n the message will reset the this pin.\n yesnodialog\n \u2014 gmoccapy.messages.yesnodialog (bit IN) - Triggers the dialog.\n@@ -29187,15 +29187,15 @@\n There are three pins giving information about the program progress:\n \u2014 gmoccapy.program.length (s32 OUT) - Shows the total number of lines of the program.\n \u2014 gmoccapy.program.current-line (s32 OUT) - Indicates the current working line of the program.\n \u2014 gmoccapy.program.progress (float OUT) - Gives the program progress in percentage.\n The values may not be very accurate if you are working with subroutines or large remap procedures.\n Also loops will cause different values.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 594 / 1224\n \n 10.2.5.11 Tool Related Pins\n Tool Change Pins These pins are provided to use GMOCCAPY\u2019s internal tool change dialog, similar\n to the one known from AXIS, but with several modifications. So you will not only get the message to\n change to tool number 3, but also the description of that tool like 7.5 mm 3 flute cutter. The information\n@@ -29215,15 +29215,15 @@\n Note\n Please take care, that this connections have to be done in the postgui HAL file.\n Tool Offset Pins These pins allow you to show the active tool offset values for X and Z in the tool\n information frame. You should know that they are only active after G43 has been sent.\n \n Figure 10.16 \u2013 Tool information area\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 595 / 1224\n \n \u2014 gmoccapy.tooloffset-x (float IN)\n \u2014 gmoccapy.tooloffset-z (float IN)\n Note\n The tooloffset-x line is not needed on a mill, and will not be displayed on a mill with trivial kinematics.\n@@ -29253,15 +29253,15 @@\n 1. Touch off your workpiece in X and Y.\n 2. Measure the height of your block from the base where your tool switch is located, to the upper\n face of the block (including chuck etc.).\n 3. Push the button block height and enter the measured value.\n 4. Go to auto mode and start your program.\n Here is a small sketch:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 596 / 1224\n \n Figure 10.17 \u2013 Tool measurement data\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of the GMOCCAPY way is, that you do not need a reference tool.\n Note\n@@ -29277,15 +29277,15 @@\n \u2014 gmoccapy.probeheight (float OUT) - The probe switch height\n \u2014 gmoccapy.searchvel (float OUT) - The velocity to search for the tool probe switch\n \u2014 gmoccapy.probevel (float OUT) - The velocity to probe tool length\n 10.2.6.2 Tool Measurement INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 597 / 1224\n \n [RS274NGC]\n # is the sub, with is called when a error during tool change happens, not needed on every\n machine configuration\n ON_ABORT_COMMAND=O call\n@@ -29333,15 +29333,15 @@\n to the directory specified as SUBROUTINE_PATH, see RS274NGC Section.\n Open change.ngc with a editor and uncomment the following lines (49 and 50):\n F #<_hal[gmoccapy.probevel]>\n G38.2 Z-4\n \n You may want to modify this file to fit more your needs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 598 / 1224\n \n 10.2.6.4 Needed HAL Connections\n Connect the tool probe in your HAL file like so:\n net probe\n \n@@ -29371,15 +29371,15 @@\n \n To enter the page you will have to click on\n and give an unlock code, which is 123 by\n default. If you want to change it at this time you will have to edit the hidden preference file, see the\n display section for details.\n The page is separated in three main tabs:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 599 / 1224\n \n 10.2.7.1 Appearance\n \n Figure 10.18 \u2013 GMOCCAPY settings page Appearance\n On this tab you will find the following options:\n@@ -29392,15 +29392,15 @@\n get active. One time set, the GUI will start every time on the place and with the size selected.\n Nevertheless the user can change the size and position using the mouse, but that will not have any\n influence on the settings.\n \u2014 hide the cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n Keyboard The checkboxes allow the user to select if he wants the on board keyboard to be shown\n immediately, when entering the MDI Mode, when entering the offset page, the tooledit widget or when\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 600 / 1224\n \n open a program in the EDIT mode. The keyboard button on the bottom button list will not be affected\n by these settings, so you are able to show or hide the keyboard by pressing the button. The default\n behavior will be set by the checkboxes.\n Default are :\n@@ -29422,15 +29422,15 @@\n The letters \u201dde\u201d are for German, you will have to set them according to your locale settings. Just\n execute this file before starting LinuxCNC, it can be done also adding a starter to your local folder.\n ./config/autostart\n \n So that the layout is set automatically on starting.\n For matchbox-keyboard you will have to make your own layout, for a German layout ask in the forum.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 601 / 1224\n \n GMOCCAPY with Onboard keyboard in edit mode\n On Touch Off This gives the option whether to show the preview tab or the offset page tab when you\n enter the touch off mode by clicking the corresponding bottom button.\n \u2014 show preview\n@@ -29446,15 +29446,15 @@\n \u2014 unhomed color = red\n Note\n You can change through the DRO modes (absolute, relative, distance to go) by clicking the number\n on the DRO! If you click on the left side letter of the DRO a popup window will allow you to set the\n value of the axes, making it easier to set the value, as you will not need to go over the touch off\n bottom button.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 602 / 1224\n \n size\n Allows to set the size of the DRO font, default is 28, if you use a bigger screen you may want to\n increase the size up to 56. If you do use 4 axes, the DRO font size will be 3/4 of the value, because\n of space reason.\n@@ -29491,15 +29491,15 @@\n \u2014 left rotate, middle zoom, right move\n Default is left move, middle zoom, right rotate.\n The mouse wheel will still zoom the preview in every mode.\n ASTUCE\n If you select an element in the preview, the selected element will be taken as rotation center point\n and in auto mode the corresponding code line will be highlighted.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 603 / 1224\n \n File to load on start up Select the file you want to be loaded on start up. If a file is loaded, it can\n be set by pressing the current button. To avoid that any program is loaded at start up, just press the\n None button.\n The file selection screen will use the filters you have set in the INI file, if there aren\u2019t any filters\n@@ -29512,15 +29512,15 @@\n It further allows to change the icon theme. Currently there are three themes available:\n \u2014 classic\n \u2014 material\n \u2014 material light\n To create custom icon themes, see section Icon Theme for details.\n 10.2.7.2 Hardware\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 604 / 1224\n \n Hardware MPG Scale For the different HAL pins to connect MPG wheels to, you may select individual\n scales to be applied. The main reason for this was my own test to solve this through HAL connections,\n resulting in a very complex HAL file. Imagine a user having an MPG Wheel with 100 ipr and he wants\n to slow down the max. vel. from 14000 to 2000 mm/min, that needs 12000 impulses, resulting in 120\n@@ -29560,15 +29560,15 @@\n Message handling (see Message behavior and appearance)\n \u2014 WINDOWS - Delete last message\n \u2014 Control + Space - Delete all messages\n Unlock options There are three options to unlock the settings page:\n \u2014 Use unlock code - The user must give a code to get in.\n \u2014 Do not use unlock code - There will be no security check.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 605 / 1224\n \n \u2014 Use HAL pin to unlock - Hardware pin must be high to unlock the settings, see hardware unlock\n pin.\n Default is use unlock code (default = 123).\n Broche\n@@ -29592,15 +29592,15 @@\n please take care that the \u201drabbit mode\u201d is activated, otherwise you will not be able to jog faster\n than the turtle jog velocity, which is calculated using the turtle jog factor.\n \u2014 Turtle jog factor - Sets the scale to apply for turtle jog mode (button pressed, showing the turtle).\n If you set a factor of 20, the turtle max. jog velocity will be 1/20 of the max. velocity of the machine.\n Note\n This button can be controlled using the Turtle-Jog HAL Pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 606 / 1224\n \n 10.2.7.3 Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n Note\n@@ -29613,15 +29613,15 @@\n \u2014 X Pos. - The X position of the tool switch.\n \u2014 Y Pos. - The Y position of the tool switch.\n \u2014 Z Pos. - The Z position of the tool switch, we will go as rapid move to this coordinate.\n \u2014 Max. Probe The distance to search for contact, an error will be launched, if no contact is\n given in this range. The distance has to be given in relative coordinates, beginning the move\n from Z Pos., so you have to give a negative value to go down!\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 607 / 1224\n \n \u2014 Probe Height - The height of your probe switch, you can measure it. Just touch off the base\n where the probe switch is located and set that to zero. Then make a tool change and watch\n the tool_offset_z value, that is the height you must enter here.\n Probe velocities\n@@ -29663,15 +29663,15 @@\n Icon themes are used to customize the look and feel of GMOCCAPY\u2019s icons.\n GMOCCAPY ships with three different icon themes:\n \u2014 classic - The classic GMOCCAPY icons.\n \u2014 material - A modern icon theme inspired by Google\u2019s Material Icons that automatically adopts its\n coloring from the selected desktop theme.\n \u2014 material-light - Derived from material but optimized for light desktop themes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 608 / 1224\n \n The icon theme used in GMOCCAPY is a regular GTK icon theme that follows the freedestktop icon\n theme specification. Thus every valid GTK icon theme can be used as GMOCCAPY icon theme as long\n as it contains the required icons.\n GMOCCAPY scans the following directories for icon themes:\n@@ -29713,15 +29713,15 @@\n Context=Actions\n \n \u2014 Size: Nominal icon size in this directory\n \u2014 Type: Fixed, Threshold or Scalable\n \u2014 Context: Intended \u201dcategory\u201d of icons\n Basically that\u2019s everything needed to create a custom icon theme.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 609 / 1224\n \n 10.2.8.2 Symbolic Icons\n Symbolic icons are a special type of icon, usually a monochrome image. The special feature of symbolic\n icons is that the icons are automatically colored at runtime to match the desktop theme. That way,\n icon themes can be created that work well with dark and also light desktop themes (in fact, that\u2019s not\n@@ -29761,21 +29761,21 @@\n ASTUCE\n Examples of symbolic icons can be found at linuxcnc/share/gmoccapy/icons/material.\n \n 10.2.9 Lathe Specific Section\n If in the INI file LATHE = 1 is given, the GUI will change its appearance to the special needs for a\n lathe. Mainly the Y axis will be hidden and the jog buttons will be arranged in a different order.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.19 \u2013 Normal Lathe\n \n 610 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 611 / 1224\n \n Figure 10.20 \u2013 Back Tool Lathe\n As you see the R DRO has a black background and the D DRO is gray. This will change according to\n the active G-code G7 or G8. The active mode is visible by the black background, meaning in the shown\n images G8 is active.\n@@ -29788,15 +29788,15 @@\n \u2014 Arrow_Right or NumPad_Right - Jog Z plus\n \u2014 Arrow_up or NumPad_Up - Jog X minus\n \u2014 Arrow_Down or NumPad_Down - Jog X plus\n Back Tool Lathe:\n \u2014 Arrow_Left or NumPad_Left - Jog Z minus\n \u2014 Arrow_Right or NumPad_Right - Jog Z plus\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 612 / 1224\n \n \u2014 Arrow_up or NumPad_Up - Jog X plus\n \u2014 Arrow_Down or NumPad_Down - Jog X minus\n The tool information frame will show not only the Z offset, but also the X offset and the tool table is\n showing all lathe relevant information.\n@@ -29808,15 +29808,15 @@\n 10.2.11 Videos on YouTube\n Below is a series of videos that show GMOCCAPY in action. Unfortunately, these videos don\u2019t show\n the latest version of GMOCCAPY, but the way to use it will still be the same as in the current version.\n I will update the videos as soon as possible.\n 10.2.11.1 Basic Usage\n https://youtu.be/O5B-s3uiI6g\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 613 / 1224\n \n 10.2.11.2 Simulated Jog Wheels\n https://youtu.be/ag34SGxt97o\n 10.2.11.3 Settings Page\n https://youtu.be/AuwhSHRJoiI\n@@ -29833,15 +29833,15 @@\n 10.2.12 Known problems\n 10.2.12.1 Strange numbers in the info area\n If you get strange numbers in the info area of GMOCCAPY like:\n \n 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\n MAX_VELOCITY = xxx.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 614 / 1224\n \n 10.2.12.2 Not ending macro\n If you use a macro without movement, like this one:\n o sub\n G92.1\n@@ -29868,15 +29868,15 @@\n not require keyboard or mouse.\n It is meant to be used with a touch screen, and works in combination with a wheel/MPG and a few\n buttons and switches.\n The Handwheel tab has radio buttons to select between Feed Override, Spindle Override, Maximum\n Velocity and Jogging functions for the wheel/MPG input. Radio buttons for axis selection and increment\n for jogging are also provided.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 615 / 1224\n \n 10.3.1 Panel Configuration\n 10.3.1.1 HAL connections\n Touchy looks in the INI file, under the heading [HAL] for entries of POSTGUI_HALFILE=.\n Typically would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -29889,15 +29889,15 @@\n are preferred.\n \n For more information on HAL files and the net command see the HAL Basics.\n Touchy has several output pins that are meant to be connected to the motion controller to control\n wheel jogging:\n \u2014 touchy.jog.wheel.increment, which is to be connected to the axis.N.jog-scale pin of each axis N.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 616 / 1224\n \n \u2014 touchy.jog.wheel.N, which is to be connected to axis.N.jog-enable for each axis N.\n Note\n N represents the axis number 0-8.\n \n@@ -29929,15 +29929,15 @@\n When you start Touchy the first time, check the Preferences tab. If using a touchscreen, choose the\n option to hide the pointer for best results.\n The Status Window is a fixed height, set by the size of a fixed font. This can be affected by the Gnome\n DPI, configured in System / Preferences / Appearance / Fonts / Details. If the bottom of the screen is\n cut off, reduce the DPI setting.\n All other font sizes can be changed on the Preferences tab.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 617 / 1224\n \n 10.3.2.3 Macros\n Touchy can invoke O-word macros using the MDI interface. To configure this, in the [TOUCHY] section\n of the INI file, add one or more MACRO lines. Each should be of the following format:\n MACRO=increment xinc yinc\n@@ -29968,39 +29968,39 @@\n from GladeVCP. GladeVCP uses the GTK widget editor GLADE to build virtual control panels (VCP) by\n point and click. Gscreen combines this with Python programming to create a GUI screen for running\n a CNC machine.\n Gscreen is customizable if you want different buttons and status LEDs. Gscreen supports GladeVCP\n which is used to add controls and indicators. To customize Gscreen you use the Glade editor. Gscreen\n is not restricted to adding a custom panel on the right or a custom tab it is fully editable.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.21 \u2013 Gscreen Default Screen\n \n 618 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.22 \u2013 Gscreen Silverdragon Screen\n \n 619 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.23 \u2013 Gscreen Spartan Screen\n \n 620 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.24 \u2013 Gscreen Gaxis Screen\n \n 621 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 622 / 1224\n \n Figure 10.25 \u2013 Gscreen Industrial Screen\n Gscreen is based on Glade (the editor), PyGTK (the widget toolkit), and GladeVCP (LinuxCNC\u2019s connection to Glade and PyGTK). GladeVCP has some special widgets and actions added just for LinuxCNC\n A widget is just the generic name used for the buttons, sliders, labels etc of the PyGTK toolkit.\n 10.4.1.1 Glade File\n@@ -30008,15 +30008,15 @@\n the screen. PyGTK uses this file to actually display and react to those widgets. The Glade editor makes\n it relatively easy to build and edit this file You must use the Glade 3.38.2 editor that uses the GTK3\n widgets.\n 10.4.1.2 PyGTK\n PyGTK is the Python binding to GTK. GTK is the toolkit of visual widgets, it\u2019s programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 623 / 1224\n \n 10.4.2 GladeVCP\n 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\n creates the HAL pins for the special widgets described in the Glade file. GladeVCP also allows one\n to add Python commands to interact with the widgets, to make them do things not available in their\n@@ -30062,15 +30062,15 @@\n named widgets. This ties the theme file to the Glade file more tightly. Some of the sample screen skins\n allow the user to select any of the themes on the system. The sample gscreen is an example. Some\n will load the theme that is the same name in the config file. The sample gscreen-gaxis is an example.\n This is done by putting the theme folder in the config folder that has the INI and HAL files and naming\n it: SCREENNAME_theme (SCREENNAME being the base name of the files eg. gaxis_theme). Inside\n this folder is another folder call gtk-2.0, inside that is the theme files. If you add this file, Gscreen\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 624 / 1224\n \n will default to this theme on start up. gscreen-gaxis has a sample custom theme that looks for certain\n named widgets and changes the visual behavior of those specific widgets. The Estop and machine-on\n buttons use different colors then the rest of the buttons so that they stand out. This is done in the\n handler file by giving them specific names an by adding specific commands in the theme\u2019s gtkrc file.\n@@ -30101,15 +30101,15 @@\n about GladeVCP widgets is a prerequisite. If the existing widgets give you the function you want or\n need then no Python code needs be added, just save the Glade file in your configuration folder. If you\n need something more custom then you must do some Python programming. The name of the parent\n window needs to be window1. Gscreen assumes this name.\n Remember, if you use a custom screen option YOU are responsible for fixing it (if required) when\n updating LinuxCNC.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 625 / 1224\n \n 10.4.3 Building a simple clean-sheet custom screen\n \n Lets build a simple usable screen. Build this in the Glade editor (if using a RIP package run it from a\n terminal after using . scripts/rip-environment ).\n@@ -30123,15 +30123,15 @@\n this (This is already been done in the example).\n \u2014 The buttons will expand as the window is made larger which is ugly so we will set the box they are\n in, to not expand (see below).\n \u2014 The button types to use depend on the VCP_action used -eg vcp_toggle_action usually require toggle\n buttons (Follow the example for now).\n \u2014 The buttons in this example are regular buttons not HAL buttons. We don\u2019t need the HAL pins.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 626 / 1224\n \n In this screen we are using VCP_actions to communicate to LinuxCNC the actions we want. This allows\n us standard functions without adding Python code in the handler file. Let\u2019s link the estop toggle button\n to the estop action Select the estop toggle button and under the general tab look for Related Action\n and click the button beside it. Now select the toggle estop action. Now the button will toggle estop on\n@@ -30139,15 +30139,15 @@\n it\u2019s function. Do this for all the buttons.\n Select the gremlin widget click the common tab and set the requested height to 100 and click the\n checkbox beside it.\n Click the horizontal box that holds the buttons. Click the packing tab and click expand to No.\n Save it as tester.glade and save it in sim/gscreen/gscreen_custom/ folder. Now launch LinuxCNC and\n click to sim/gscreen/gscreen_custom/tester and start it. If all goes well our screen will pop up and the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 627 / 1224\n \n buttons will do their job This works because the tester.ini tells gscreen to look for and load tester.glade\n and tester_handler.py. The tester_handler.py file is included in that folder and is coded just show the\n screen and not much else. Since the special widgets directly communicate with LinuxCNC you can\n still do useful things. If your screen needs are covered by the available special widgets then this is\n@@ -30190,15 +30190,15 @@\n to call your function.\n 10.4.4.1 Adding Keybindings Functions\n Our tester example would be more useful if it responded to keyboard commands. There is a function\n called keybindings() that tries to set this up. While you can override it completely, we didn\u2019t - but it\n assumes some things:\n \u2014 It assumes the estop toggle button is call button_estop and that F1 key controls it.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 628 / 1224\n \n \u2014 It assumes the power button is called button_machine_on and the F2 key controls it.\n These are easily fixed by renaming the buttons in the Glade editor to match. But instead we are going\n to override the standard calls and add our own.\n Add these command to the handler file:\n@@ -30245,15 +30245,15 @@\n module and instantiate it: In the import section of the handler file add:\n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n GSTAT.connect(\u2019file-loaded\u2019, self.update_filepath)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 629 / 1224\n \n Then in the HandlerClass, add the function:\n self.update_filepath(self, obj, path):\n self.widgets.my_path_label.set_text(path)\n \n@@ -30296,15 +30296,15 @@\n 6. It reads some of the INI file to initialize the units, and the number/type of axes.\n 7. Initializes Python\u2019s binding to HAL to build a userspace component with the Gscreen name.\n 8. GladeVCP\u2019s makepins is called to parse the XML file to build HAL pins for the HAL widgets and\n register the LinuxCNC connected widgets.\n 9. Checks for a local handler file in the configuration folder or else uses the stock one from the skin\n folder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 630 / 1224\n \n 10. If there is a handler file gscreen parses it, and registers the function calls into Gscreen\u2019s namespace.\n 11. Glade matches/registers all signal calls to functions in gscreen and the handler file.\n 12. Gscreen checks the INI file for an option preference file name otherwise it uses .gscreen_preferences\n =.\n@@ -30346,15 +30346,15 @@\n -v verbose debugging on\n \n The -c switch allows one to select a skin. Gscreen assumes the Glade file and the handler file use this\n same name. The optional second screen will be the same name with a 2 (eg. tester2.glade) There is no\n second handler file allowed. It will only be loaded if it is present. Gscreen will search the LinuxCNC\n configuration file that was launched first for the files, then in the system skin folder.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 631 / 1224\n \n 10.4.7 User Dialog Messages\n This function is used to display pop up dialog messages on the screen. These are defined in the INI\n file and controlled by HAL pins:\n MESSAGE_BOLDTEXT\n@@ -30399,15 +30399,15 @@\n status bar text\n MESSAGE_DETAILS = BOTH DETAILS\n MESSAGE_TYPE = okdialog status\n MESSAGE_PINNAME = bothtest\n \n \u2190-\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 632 / 1224\n \n 10.4.7.1 Copy the Stock Handler/Glade File For Modification\n If you wish to use a stock screen but modify it\u2019s handler file, you need to copy the stock file to your\n config file folder. Gscreen will see this and use the copied file. But where is the original file? If using\n a RIP LinuxCNC the sample skins are in /share/gscreen/skins/SCREENNAME Installed versions of\n@@ -30446,25 +30446,25 @@\n multiple ways to touch off tools and probing work pieces. You can use LinuxCNC\u2019s external offsets\n capability to automatically raise the spindle during a pause. If you the VersaProbe option and remap\n code you can add auto tool length probing at tool changes.\n Note\n 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\n maillist.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 633 / 1224\n \n 10.5.1.1 QtDragon\n \n Figure 10.26 \u2013 QtDragon - 3 or 4 Axes Sample (1440x860) in silver theme\n QtDragon is resizable from a resolution of 1280x768 to 1680x1200. It will work in window mode on\n any monitor with higher resolution but not on monitors with lower resolution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 634 / 1224\n \n 10.5.1.2 QtDragon_hd\n \n Figure 10.27 \u2013 QtDragon_hd - 3 or 4 Axis Sample for larger monitors (1920x1056) in dark theme\n QtDragon_hd is a similar design as QtDragon but modified to utilize the extra space of modern larger\n@@ -30479,15 +30479,15 @@\n In the section [DISPLAY] change the DISPLAY line to read:\n \u2014 qtdragon for a small version\n \u2014 qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for verbose, debug, info or quiet (respectably) output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 635 / 1224\n \n 10.5.2.2 Preferences\n To keep track of preferences, QtDragon looks for a preference text file. add the following entry under\n the [DISPLAY] heading. This example will save the file in the config folder of the launch screen. (other\n options are possible see the QtVCP\u2019s screenoption widget docs.)\n@@ -30523,15 +30523,15 @@\n [DISPLAY]\n INCREMENTS = Continuous, .001 mm, .01 mm, .1 mm, 1 mm, 1.0 inch, 0.1 inch, 0.01 inch\n ANGULAR_INCREMENTS = 1, 5, 10, 30, 45, 90, 180, 360\n \n 10.5.2.7 Jog speed\n Set jog speed controls (in units per second)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 636 / 1224\n \n [DISPLAY]\n MIN_LINEAR_VELOCITY\n = 0\n MAX_LINEAR_VELOCITY\n@@ -30578,15 +30578,15 @@\n On very large programs the preview can take a long time to load. You can control what is shown and\n what is hidden the the graphics screen by adding the appropriate comments from this list into your\n G-code:\n (PREVIEW,stop)\n (PREVIEW,hide)\n (PREVIEW,show)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 637 / 1224\n \n 10.5.2.11 Program Extensions/Filters\n You can control what programs are displayed in the filemanager window with program extensions:\n Create a line with the . endings you wish to use separated by commas, then a space and the description.\n You can add multiple lines for different selections in the combo box.\n@@ -30627,15 +30627,15 @@\n routines if desired. This example shows how to move Z axis up first. The commands are separated by\n the ; The label is set after the comma. The symbols \\n adds a line break.\n [MDI_COMMAND_LIST]\n # for macro buttons\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 638 / 1224\n \n 10.5.2.14 Post GUI HAL File\n These HAL files will be called after QtDragon has loaded everything else.\n You can add multiple line for multiple file. Each one will be called in the order they appear.\n Calling HAL files after QtDragon is already loaded assures that QtDragon\u2019s HAL pins are available.\n@@ -30674,15 +30674,15 @@\n \n 10.5.5 Virtual Keyboard\n QtDragon includes a virtual keyboard for use with touchscreens.\n To enable the keyboard, check the Use Virtual Keyboard checkbox in the Settings page.\n Clicking on any input field, such as probe parameters or tool table entries, will show the keyboard.\n To hide the keyboard, do one of the following:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 639 / 1224\n \n \u2014 click the MAIN page button\n \u2014 The currently selected page button.\n \u2014 go into AUTO mode\n It should be noted that keyboard jogging is disabled when using the virtual keyboard.\n@@ -30736,15 +30736,15 @@\n \n These float output pins reflect the current slider override rates:\n qtdragon.slider-override-feed\n qtdragon.slider-override-maxv\n qtdragon.slider-override-rapid\n qtdragon.slider-override-spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 640 / 1224\n \n These pins are available when setting the Versa Probe INI option. They can be used for auto-toollength-probe at tool change - with added remap code.\n qtdragon.versaprobe-blockheight\n qtdragon.versaprobe-probeheight\n qtdragon.versaprobe-probevel\n@@ -30799,15 +30799,15 @@\n qtdragon.eoffset-value <= axis.z.eoffset\n # uncomment for dragon_hd\n #net limited\n qtdragon.led-limits-tripped <= motion.eoffset-limited\n setp axis.z.eoffset-enable 1\n setp axis.z.eoffset-scale 1.0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 641 / 1224\n \n 10.5.11 Z level compensation\n QtDragon_hd can be set up to probe and compensate for Z level height changes by utilizing the external program G-code Ripper.\n Note\n This is only available in the QtDragon_hd version.\n@@ -30822,15 +30822,15 @@\n The probe data file is generated by a probing program, which itself is generated by an external python\n program called gcode_ripper, which can be launched from the file manager tab using the G-code\n Ripper button.\n 10.5.11.1 Using G-code Ripper for Z level Compensation\n \n Figure 10.28 \u2013 QtDragon_hd showing G-code Ripper\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 642 / 1224\n \n Note\n G-code Ripper offers many functions that we will not go in to here. This is only available in the\n QtDragon_hd version.\n \n@@ -30877,15 +30877,15 @@\n <= qtdragon.eoffset-spindle-count\n # Z level compensation\n ########################################################################\n net xpos-cmd\n z_level_compensation.x-pos\n <= axis.x.pos-cmd\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n net ypos-cmd\n net zpos-cmd\n net z_compensation_on\n net eoffset-zlevel-count\n count\n \n@@ -30919,15 +30919,15 @@\n the DROs and stop the routine at any time.\n Note\n Probing is very unforgiving to mistakes; be sure to check settings before using.\n \n Figure 10.29 \u2013 QtDragon - Versa Probe Option\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 644 / 1224\n \n the probe signal. Z0 is set to probe height - plate thickness.\n The second method uses a tool setter in a fixed position and a known height above the table where\n the probe signal will be triggered. In order to set Z0 to the top of the workpiece, it has to know how\n far above the table the probe trigger point is (tool setter height) and how far above the table the top\n@@ -30945,15 +30945,15 @@\n \u2014 Inside Corners\n \u2014 Edge Angles\n \u2014 Boss and Pockets\n \u2014 Ridge and Valleys\n \u2014 Calibration\n You must carefully set the Probing Parameters:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 645 / 1224\n \n \u2014 Probe Tool: will only allow probing if this tool number is in the spindle\n \u2014 Probe Diameter: the size of the probe tip\n \u2014 Probe Rapid: the speed of rapid moves in machine units\n \u2014 Probe Search: the speed of the first rough search in machine units\n@@ -30974,15 +30974,15 @@\n \u2014 Manually move the probe to the approximate position represented by the green target on the button.\n \u2014 Confirm the parameters are reasonable.\n \u2014 Press the desired probing button.\n The probing routine will start immediately.\n Note\n Pressing the stop button or the keyboard escape key, will abort the probing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 646 / 1224\n \n 10.5.13 Touch plate\n \n Figure 10.31 \u2013 QtDragon - Touch Plate\n You can use a conductive touch plate or equivalent to auto touch off (zero the user coordinate) for the\n@@ -31001,15 +31001,15 @@\n calculation from the touchplate height setting.\n \n 10.5.14 Auto Tool Measurement\n QtDragon can be setup to do integrated auto tool measurement using the Versa Probe widget and\n remap code. To use this feature, you will need to do some additional settings and you may want to use\n the offered HAL pin to get values in your own ngc remap procedure.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 647 / 1224\n \n Important\n Before starting the first test, do not forget to enter the probe height and probe velocities on\n the versa probe settings page.\n \n@@ -31024,15 +31024,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it\u2019s easy to break a tool/probe. Abort will be honoured while the probe is in motion.\n \n Figure 10.32 \u2013 Auto tool measurement\n With the first given tool change the tool will be measured and the offset will be set automatically to\n fit the block height. The advantage of this way is, that you do not need a reference tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 648 / 1224\n \n Note\n Your program must contain a tool change at the beginning. The tool will be measured, even it has\n been used before, so there is no danger if the block height has changed. There are several videos\n on you tube that demonstrate the technique using GMOCCAPY. The GMOCCAPY screen pioneered the\n@@ -31049,15 +31049,15 @@\n \u2014 Wwhen checked, the SET buttons are enabled.\n \u2014 This allows the user to automatically fill in the X, Y and Z parameters with the current position as\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\n \u2014 When checked, the calculated height is automatically transferred to the Workpiece Height field in\n the main screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 649 / 1224\n \n \u2014 Otherwise, the main screen is not affected.\n Workpiece Probe At\n \u2014 the X, Y and Z coordinates specify where the first probing routine should start, in current WCS\n Machine Probe At\n@@ -31091,15 +31091,15 @@\n G-code subroutine, so the code can react to different values.\n \u2014 qtversaprobe.toolmeasurement (HAL_BIT) enable or not tool measurement\n \u2014 qtversaprobe.blockheight (HAL_FLOAT) the measured value of the top face of the workpiece\n \u2014 qtversaprobe.probeheight (HAL_FLOAT) the probe switch height\n \u2014 qtversaprobe.searchvel (HAL_FLOAT) the velocity to search for the tool probe switch\n \u2014 qtversaprobe.probevel (HAL_FLOAT) the velocity to probe tool length\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 650 / 1224\n \n 10.5.14.3 Tool Measurement INI File Modifications\n Modify your INI File to include the following:\n QtDragon allows you to select one of two styles of touch probe routines. Versa probe works with a M6\n remap to add auto tool probing.\n@@ -31144,15 +31144,15 @@\n otherwise. The position to move the machine before giving the change tool command. All values are\n in absolute coordinates. All values are in machine native units.\n [CHANGE_POSITION]\n X = 10\n Y = 10\n Z = -2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 651 / 1224\n \n The Python section sets up what files LinuxCNC\u2019s Python interpreter looks for. I.e., toplevel.py file in\n the python folder in the configuration directory:\n [PYTHON]\n # The path to start a search for user modules\n@@ -31188,15 +31188,15 @@\n 10.5.14.5 Needed HAL Connections\n Make sure to connect the tool probe input in your HAL file: If connected properly, you should be able\n to toggle the probe LED in QtDragon if you press the probe stylus.\n net probe\n \n motion.probe-input <= \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 652 / 1224\n \n 10.5.15 Run from Line\n A G-code program can be started at any line by clicking on the desired line in the G-code display while\n in AUTO mode. It is the operator\u2019s responsibility to ensure the machine is in the desired operational\n mode. A dialog will be shown allowing the spindle direction and speed to be preset. The start line is\n@@ -31232,15 +31232,15 @@\n 10.5.17.2 File Tab\n You can use this tab to load or transfer programs. Editing of G-code programs can be selected from\n this tab. With qtdragon_hd, this is where you can load Gcode Ripper\n 10.5.17.3 Offsets Tab\n You can monitor/modify system offsets from this tab. There are convenience buttons for zeroing the\n rotation.G92 and current G5x user offset.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 653 / 1224\n \n 10.5.17.4 Tool Tab\n You can monitor/modify tool offsets from this tab. Adding and deleting tools from the tool file can also\n be done from this tab.\n When this tab is selected the individual home buttons in the DRO area will change to tool offset setting\n@@ -31268,15 +31268,15 @@\n 10.5.17.9 Setup Tab\n It\u2019s possible to load HTML or PDF file (.html / .pdf ending) with setup notes. HTML/PDF docs will\n be displayed in the setup tab. Some program, such as Fusion 360 and Aspire will create these files\n for you. If you load a G-code program and there is an HTML/PDF file of the same name, it will load\n automatically. You can also write your own HTML docs with the included SetUp Writer button.\n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_setup\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 654 / 1224\n \n Figure 10.34 \u2013 QtDragon - Setup Tab Sample\n \n 10.5.17.10 Settings Tab\n The settings tab is used to set running options, probing/touchplate/laser/camera offsets and load debugging external programs.\n@@ -31289,15 +31289,15 @@\n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_utilities\n 10.5.17.12 User Tab\n \n This tab will only be displayed if an embedded panel has been designated for the location stackedWidget_mai\n If more then one embedded tab has been designated, then pressing the user tab will cycle through\n them.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 655 / 1224\n \n 10.5.18 Styles\n Nearly all aspects of the GUI appearance are configurable via the QtDragon.qss stylesheet file. The\n file can be edited manually or through the stylesheet dialog widget in the GUI. To call up the dialog,\n press F12 on the main window. New styles can be applied temporarily and then saved to a new qss\n@@ -31330,15 +31330,15 @@\n \n To change the text of the mist button to air (add these lines)\n #action_mist{\n qproperty-true_state_string: \u201dAir\\\\nOn\u201d;\n qproperty-false_state_string: \u201dAir\\\\nOff\u201d;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 656 / 1224\n \n To change the Offsets display font and format:\n ToolOffsetView {\n font: 20pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019%9.1f\u2019;\n@@ -31382,21 +31382,21 @@\n \n 10.5.19.2 Qt Designer and Python code\n All aspects of the GUI are fully customization through Qt Designer and/or Python code. This capability\n is included with the QtVCP development environment. The extensive use of QtVCP widgets keeps the\n amount of required Python code to a minimum, allowing relatively easy modifications. The LinuxCNC\n website has extensive documentation on the installation and use of QtVCP libraries. See QtVCP Overview for more information.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.36 \u2013 QtDragon - Customized QtDragon\n \n 657 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 658 / 1224\n \n 10.6 NGCGUI\n \n Figure 10.37 \u2013 NGCGUI embedded into AXIS\n \n@@ -31406,15 +31406,15 @@\n \u2014 NGCGUI can run as a standalone application or can be embedded in multiple tab pages in the AXIS\n GUI.\n \u2014 PyNGCGUI is an alternate, Python implementation of NGCGUI.\n \u2014 PyNGCGUI can run as a standalone application or can be embedded as a tab page (with its own set\n of multiple subroutine tabs) in any GUI that supports embedding of GladeVCP applications AXIS,\n Touchy, Gscreen and GMOCCAPY.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 659 / 1224\n \n Using NGCGUI or PyNGCGUI:\n \u2014 Tab pages are provided for each subroutine specified in the INI file.\n \u2014 New subroutines tab pages can be added on the fly using the custom tab.\n \u2014 Each subroutine tab page provides entry boxes for all subroutine parameters.\n@@ -31449,15 +31449,15 @@\n \u2014 arc1.ngc - basic arc using cutter radius compensation\n \u2014 arc2.ngc - arc speced by center, offset, width, angle (calls arc1)\n \u2014 backlash.ngc - routine to measure an axis backlash with dial indicator\n \u2014 db25.ngc - creates a DB25 plug cutout\n \u2014 gosper.ngc - a recursion demo (flowsnake)\n \u2014 helix.ngc - helix or D-hole cutting\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 660 / 1224\n \n \u2014 helix_rtheta.ngc - helix or D-hole positioned by radius and angle\n \u2014 hole_circle.ngc - equally spaced holes on a circle\n \u2014 ihex.ngc - internal hexagon\n \u2014 iquad.ngc - internal quadrilateral\n@@ -31502,15 +31502,15 @@\n custom tab can open any of the library example subroutines or any user file if it is in the LinuxCNC\n subroutine path.\n To see special key bindings, click inside an NGCGUI tab page to get focus and then press Control-k.\n The demonstration subroutines should run on the simulated machine configurations included in the\n distribution. A user should always understand the behavior and purpose of a program before running\n on a real machine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 661 / 1224\n \n 10.6.3 Library Locations\n In LinuxCNC installations installed from deb packages, the simulation configs for NGCGUI use symbolic links to non-user-writable LinuxCNC libraries for:\n \u2014 nc_files/ngcgui_lib NGCGUI-compatible subfiles\n \u2014 nc_files/ngcgui_lib/lathe NGCGUI-compatible lathe subfiles\n@@ -31552,15 +31552,15 @@\n ...\n \n LinuxCNC (and NGCGUI) use the first file found when searching directories in the search path. With\n this behavior, you can supersede an ngcgui_lib subfile by placing a subfile with an identical name in\n a directory that is found earlier in the path search. More information can be found in the INI chapter\n of the Integrators Manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 662 / 1224\n \n 10.6.4 Standalone Usage\n 10.6.4.1 Standalone NGCGUI\n For usage, type in a terminal:\n ngcgui --help\n@@ -31626,15 +31626,15 @@\n [-n | --noauto]\n (save but do not automatically send result)\n [-k | --keyboard]\n (use default popupkeybaord)\n [-s | --sendtoaxis]\n (send generated NGC file to AXIS GUI)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 663 / 1224\n \n Notes:\n A set of files is comprised of a preamble, subfile, postamble.\n The preamble and postamble are optional.\n One set of files can be specified from cmdline.\n@@ -31670,15 +31670,15 @@\n located in the user PATH.\n \n 10.6.5.2 Embedding PyNGCGUI as a GladeVCP tab page in a GUI\n The following INI file items go in the [DISPLAY] section for use with the AXIS, Gscreen, or Touchy\n GUIs. (See additional sections below for additional items needed)\n EMBED_ Items\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 664 / 1224\n \n \u2014 EMBED_TAB_NAME = PyNGCGUI - name to appear on embedded tab\n \u2014 EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui - invokes GladeVCP\n \u2014 EMBED_TAB_LOCATION = name_of_location - where the embedded page is located\n Note\n@@ -31716,15 +31716,15 @@\n include(\u201dfilename.inc.gcmc\u201d);\n \n By default, gcmc includes the current directory which, for LinuxCNC, will be the directory containing\n the LinuxCNC INI file. Additional directories can be prepended to the gcmc search order with the\n GCMC_INCLUDE_PATH item.\n Sample AXIS-GUI-based INI\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n [RS274NGC]\n ...\n SUBROUTINE_PATH\n USER_M_PATH\n \n 665 / 1224\n@@ -31807,15 +31807,15 @@\n Note:\n Mandatory, specifies loading of ngcgui_ttt in an AXIS tab page named ttt.\n Must follow the TKPKG = Ngcgui item.\n Item:\n [DISPLAY]TTT = path_to_truetype-tracer\n Example: [DISPLAY]TTT = truetype-tracer\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Note:\n \n 666 / 1224\n \n Optional, if not specified, attempt to use /usr/local/bin/truetype-tracer.\n Specify with absolute pathname or as a simple executable name,\n@@ -31858,15 +31858,15 @@\n LinuxCNC (and NGCGUI) must be able to find all subroutines including helper routines that are called\n from within NGCGUI subfiles. It is convenient to place utility subs in a separate directory as indicated\n in the example above.\n The distribution includes the ngcgui_lib directory and demo files for preambles, subfiles, postambles\n and helper files. To modify the behavior of the files, you can copy any file and place it in an earlier\n part of the search path. The first directory searched is [DISPLAY]PROGRAM_PREFIX. You can use this\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 667 / 1224\n \n directory but it is better practice to create dedicated directory(ies) and put them at the beginning of\n the [RS274NGC]SUBROUTINE_PATH.\n \n In the following example, files in /home/myname/linuxcnc/mysubs will be found before files in ../../nc_files/ngc\n@@ -31912,15 +31912,15 @@\n Default is: Helvetica -10 normal.\n Smaller font sizes may be useful for small screens.\n Larger font sizes may be helpful for touch screen applications .\n [DISPLAY]NGCGUI_SUBFILE = subfile_filename\n Example: [DISPLAY]NGCGUI_SUBFILE = simp.ngc\n Example: [DISPLAY]NGCGUI_SUBFILE = square.gcmc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 668 / 1224\n \n Example: [DISPLAY]NGCGUI_SUBFILE = \u201d\u201d\n Note: Use one or more items to specify NGCGUI-compatible subfiles or gcmc programs that\n require a tab page on startup.\n A \u201dCustom\u201d tab will be created when the filename is \u201d\u201d.\n@@ -31965,15 +31965,15 @@\n \n 10.6.6 File Requirements for NGCGUI Compatibility\n 10.6.6.1 Single-File Gcode (.ngc) Subroutine Requirements\n An NGCGUI-compatible subfile contains a single subroutine definition. The name of the subroutine\n 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\n see the O-Codes chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 669 / 1224\n \n The first non-comment line should be a sub statement.\n The last non-comment line should be a endsub statement.\n examp.ngc:\n (info: info_text_to_appear_at_top_of_tab_page)\n@@ -32019,15 +32019,15 @@\n consequences. In LinuxCNC, existing global named parameters will be valid at subroutine execution\n and subroutines can modify or create global named parameters.\n Passing information to subroutines using global named parameters is discourage since such usage\n 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\n wide range of design requirements. NGCGUI supports some input global named parameter but their\n usage is obsolete and not documented here.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 670 / 1224\n \n While input global named parameters are discouraged, LinuxCNC subroutines must use global named\n parameters for returning results. Since NGCGUI-compatible subfiles are aimed at GUI usage, return\n values are not a common requirement. However, NGCGUI is useful as a testing tool for subroutines\n which do return global named parameters and it is common for NGCGUI-compatible subfiles to call\n@@ -32073,15 +32073,15 @@\n maximum width of 320 and maximum height of 240 pixels.\n None of the conventions required for making an NGCGUI-compatible subfile preclude its use as general purpose subroutine file for LinuxCNC.\n The LinuxCNC distribution includes a library (ngcgui_lib directory) that includes both example NGCGUIcompatible subfiles and utility files to illustrate the features of LinuxCNC subroutines and NGCGUI\n usage. Another library (gcmc_lib) provides examples for subroutine files for the G-code meta compiler\n (gcmc).\n Additional user sumitted subroutines can be found on the Forum in the Subroutines Section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 671 / 1224\n \n 10.6.6.2 Gcode-meta-compiler (.gcmc) file requirements\n Files for the Gcode-meta-compiler (gcmc) are read by NGCGUI and it creates entry boxes for variables\n tagged in the file. When a feature for the file is finalized, NGCGUI passes the file as input to the gcmc\n compiler and, if the compile is successful, the resulting G-code file is sent to LinuxCNC for execution.\n@@ -32126,15 +32126,15 @@\n //ngcgui: --imperial\n //ngcgui: --precision 5\n //ngcgui: --precision=6\n \n Options for gcmc are available with the terminal command:\n gcmc --help\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 672 / 1224\n \n A gcmc program by default uses metric mode. The mode can be set to inches with the option setting:\n //ngcgui: --imperial\n \n A preamble file, if used, can set a mode (g20 or g21) that conflicts with the mode used by a gcmc file.\n@@ -32147,22 +32147,22 @@\n \n 10.6.7 DB25 Example\n The following shows the DB25 subroutine. In the first photo you see where you fill in the blanks for\n each variable.\n \n This photo shows the backplot of the DB25 subroutine.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 673 / 1224\n \n This photo shows the use of the new button and the custom tab to create three DB25 cutouts in one\n program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 674 / 1224\n \n 10.6.8 Creating a subroutine\n \u2014 For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the\n same.\n \u2014 The file must be placed in the subdirectory pointed to in the INI file.\n@@ -32180,15 +32180,15 @@\n # = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i# f#\n g3 i[0-#]\n o endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 675 / 1224\n \n 10.7 TkLinuxCNC GUI\n 10.7.1 Introduction\n TkLinuxCNC is one of the first graphical front-ends for LinuxCNC. It is written in Tcl and uses the Tk\n toolkit for the display. Being written in Tcl makes it very portable (it runs on a multitude of platforms).\n@@ -32204,15 +32204,15 @@\n Then, start LinuxCNC and select that INI file. The sample configuration sim/tklinuxcnc/tklinuxcnc.ini\n is already configured to use TkLinuxCNC as its front-end.\n When LinuxCNC is launched the TKLinuxCNC window is opened.\n 10.7.2.1 A typical session with TkLinuxCNC\n 1. Start LinuxCNC and select a configuration file.\n 2. Clear the E-STOP condition and turn the machine on (by pressing F1 then F2).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 676 / 1224\n \n 3. Home each axis.\n 4. Load the file to be milled.\n 5. Put the stock to be milled on the table.\n 6. Set the proper offsets for each axis by jogging and either homing again or right-clicking an axis\n@@ -32247,15 +32247,15 @@\n \u2014 Toggle flood coolant\n \u2014 Toggle spindle brake control\n 10.7.3.2 Offset display status bar\n The Offset display status bar displays the currently selected tool (selected with Txx M6), the tool\n length offset (if active), and the work offsets (set by right-clicking the coordinates).\n 1. For some of these actions it might be necessary to change the mode LinuxCNC is currently running in.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 677 / 1224\n \n 10.7.3.3 Coordinate Display Area\n The main part of the display shows the current position of the tool. The color of the position readout\n depends on the state of the axis. If the axis is unhomed the axis will be displayed in yellow letters.\n Once homed it will be displayed in green letters. If there is an error with the current axis TkLinuxCNC\n@@ -32290,15 +32290,15 @@\n the desired direction of motion. The first four axes can also be moved by the keyboard arrow keys (X\n and Y), the PAGE UP and PAGE DOWN keys (Z) and the [ and ] keys (A/4th).\n + If Continuous is selected, the motion will continue as long as the button or key is pressed. If another\n value is selected, the machine will move exactly the displayed distance each time the button is clicked\n or the key is pressed. The available values are:\n +\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 678 / 1224\n \n 1.0000, 0.1000, 0.0100, 0.0010, 0.0001\n \n + 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\n move to a specific home location through use of home switches. See the Homing Chapter for more\n@@ -32319,15 +32319,15 @@\n a time. When the machine is not turned on, and not set to MDI mode, the code entry controls are\n unavailable.\n \n This allows you to enter a G-code command to be executed. Execute the command by pressing Enter.\n Active G-Codes This shows the modal codes that are active in the interpreter. For instance, G54\n indicates that the G54 offset is applied to all coordinates that are entered.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 679 / 1224\n \n 10.7.3.7 Jog Speed\n By moving this slider, the speed of jogs can be modified. The numbers above refer to axis units /\n second. The text box with the number is clickable. Once clicked a popup window will appear, allowing\n for a number to be entered.\n@@ -32378,15 +32378,15 @@\n Stop execution\n \n 10.8 QtPlasmaC\n 10.8.1 Preamble\n Except where noted, this guide assumes the user is using the latest version of QtPlasmaC.\n Version history can be seen by visiting this link which will show the latest available version.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 680 / 1224\n \n The installed QtPlasmaC version is displayed in the title bar. See Update QtPlasmaC for\n information on updating QtPlasmaC.\n \n 10.8.2 License\n@@ -32402,25 +32402,25 @@\n enough hardware I/O pins to fulfill the requirements of a plasma configuration.\n There are three available formats:\n \u2014 16:9 with a minimum resolution of 1366 x 768\n \u2014 9:16 with a minimum resolution of 768 x 1366\n \u2014 4:3 with a minimum resolution of 1024 x 768\n Screenshot examples of QtPlasmaC are below:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.40 \u2013 16:9\n \n 681 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 682 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 683 / 1224\n \n Figure 10.42 \u2013 4:3\n \n 10.8.4 Installing LinuxCNC\n The preferred method for installing LinuxCNC is via an ISO image as described below.\n@@ -32428,15 +32428,15 @@\n It is possible to install and run LinuxCNC on a variety of Linux distributions however that is beyond\n 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\n v2.9 or later along with any required dependencies.\n \n 10.8.4.1 If The User Does Not Have Linux Installed\n Installation instructions are available at: link:../getting-started/getting-linuxcnc.html\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 684 / 1224\n \n Following these instructions will yield a machine with the current stable branch (v2.8) of LinuxCNC\n on Debian Buster.\n 10.8.4.2 Package Installation (Buildbot) If The User Has Linux with LinuxCNC v2.8\n A package installation (Buildbot) uses prebuilt packages from the LinuxCNC Buildbot, instructions for\n@@ -32477,15 +32477,15 @@\n to use a reed relay as an alternative method to establish an Arc OK signal when the power\n source does not provide one.\n \n Note\n For fine tuning of Mode 0 Ark OK see Tuning Mode 0 Arc OK in the Advanced Topics section of the\n manual.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 685 / 1224\n \n 10.8.5.2 Available I/Os\n Note\n This section only touches on the hardware I/O\u2019s required for QtPlasmaC. Base machine requirements\n such as limit switches, home switches, etc. are in addition to these.\n@@ -32566,15 +32566,15 @@\n This signal senses if the torch has broken away from its cradle.\n Digital output; required.\n HAL pin name plasmac.torch-on\n Connected from a breakout board output to the torch-on input\n of the plasma power supply. This signal is used to control the\n plasma power supply and start the arc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -32642,15 +32642,15 @@\n \u2014 [AXIS_Z] MAX_LIMIT should be the highest the user wants the Z axis to travel (it must not be\n lower than Z HOME_OFFSET).\n \u2014 [AXIS_Z] HOME should be set to be approximately 5 mm-10 mm (0.2\u201d-0.4\u201d) below the maximum\n limit.\n \u2014 Floating Head - it is recommended that a floating head be used and that it has enough movement\n to allow for overrun during probing. Overrun can be calculated using the following formula:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 687 / 1224\n \n o = 0.5 * a * (v / a)^2\n \n where: o = overrun, a = acceleration in units/s2 and v = velocity in units/s.\n Metric example: given a Z axis MAX_ACCELERATION of 600 mm/s2 and MAX_VELOCITY of 60 mm/s,\n@@ -32679,33 +32679,33 @@\n Fill in the required entries to suit the machine wiring/breakout board configuration.\n QtPlasmaC adds two pages to the LinuxCNC configuration wizards for QtPlasmaC specific parameters,\n the two pages are QtPlasmaC options and User Buttons. Complete each of the wizards QtPlasmaC page\n to suit the machine that is being configured and the user button requirements.\n Note that PnCconf options allow user selection of Feed Override, Linear Velocity, and Jog Increments,\n whereas in StepConf these are automatically calculated and set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.43 \u2013 PnCConf QtPlasmaC Options\n \n 688 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.44 \u2013 StepConf QtPlasmaC Options\n \n 689 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 10.45 \u2013 QtPlasmaC User Buttons\n \n 690 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 691 / 1224\n \n Figure 10.46 \u2013 QtPlasmaC THCAD\n The THCAD screen will only appear if a Plasma Encoder is selected in the card screen. The the dedicated section on Mesa THCAD for more information.\n When the configuration is complete, the wizard will save a copy of the configuration that may be\n loaded and edited at a later time, a working QtPlasmaC configuration will be created in the following\n@@ -32714,15 +32714,15 @@\n depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/__/__.ini\n \n For a run in place installation:\n \\~/linuxcnc‑dev/scripts/linuxcnc ~/linuxcnc/configs/__/__material.cfg file to the existing QtPlasmaC configuration.\n To run the cfg2prefs conversion program, use the following instructions:\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 698 / 1224\n \n Figure 10.47 \u2013 qtplasmac-cfg2prefs\n Select the INI file of the old PlasmaC configuration, select the INI file of the new QtPlasmaC configuration, then press CONVERT.\n \n 10.8.7 Other QtPlasmaC Setup Considerations\n@@ -32936,15 +32936,15 @@\n file in the machine\u2019s configuration directory to add the appropriate cutoff frequency as measured in\n Hertz (Hz).\n For example:\n setp plasmac.lowpass-frequency 100\n \n The above example would give a cutoff frequency of 100Hz.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 699 / 1224\n \n 10.8.7.2 Contact Bounce\n Contact bounce from mechanical relays, switches, or external interference may cause some inconsistent behavior of the following switches:\n \u2014 Float Switch\n \u2014 Ohmic Probe\n@@ -32980,15 +32980,15 @@\n Depending on the specified minimum contact current and the current drawn by the input device there\n may be a need to provide a method to increase the current through the contacts.\n Most relays using gold contacts will not require any additional current for reliable operation.\n There are two different methods available to provide this minimum current if it is required:\n 1. A 0.1 \u03bcF film capacitor placed across the contacts.\n 2. A 1200 \u03a9 1 W resistor across the load (see calculations below).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 700 / 1224\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page III of Finder Relays General Technical\n Information\n Calculations:\n@@ -33034,15 +33034,15 @@\n If the user would like a terminal window to open behind the GUI window then change the Terminal\n line to:\n Terminal=true\n \n Displaying a terminal can be handy for error and information messages.\n 2. In the US, the letter V is commonly used as a symbol (Voltage) and as a unit (Volt).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 701 / 1224\n \n 10.8.7.5 QtPlasmaC Files\n After a successful QtPlasmaC installation, the following files are created in the configuration directory:\n Filename\n .ini\n@@ -33094,15 +33094,15 @@\n Note\n The .prefs file is plain text and may be edited with any text editor.\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific .ini file variables as follows:\n [FILTER] Section These variables are mandatory.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 702 / 1224\n \n PROGRAM_EXTENSION = .ngc,.nc,.tap G-code File (*.ngc, *.nc, *.tap)\n ngc\n = qtplasmac_gcode\n nc\n@@ -33152,15 +33152,15 @@\n = qtvcp qtplasmac_9x16 (use 9:16 resolution)\n = qtvcp qtplasmac_4x3 (use 4:3 resolution)\n \n There are multiple QtVCP options that are described here: QtVCP INI Settings\n For example the following would start a 16:9 resolution QtPlasmaC screen in full screen mode:\n DISPLAY = qtvcp -f qtplasmac\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 703 / 1224\n \n [TRAJ] Section\n This variable is mandatory.\n SPINDLES = 3\n \n@@ -33199,15 +33199,15 @@\n 1. Click the window shutdown button on the window title bar\n 2. Long press the POWER button on the MAIN Tab.\n A shutdown warning can be displayed on every shutdown by checking the Exit Warning checkbox on\n the SETTINGS Tab.\n 10.8.8.2 MAIN Tab\n Screenshot example of the QtPlasmaC MAIN Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 704 / 1224\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n required by the chosen QtPlasmaC mode.\n Table 10.7: Features of the PREVIEW WINDOW\n Name\n@@ -33230,15 +33230,15 @@\n If \u201dView Material\u201d is selected on the SETTINGS Tab, this displays the\n currently selected material\u2019s Pierce Height.\n If \u201dView Material\u201d is selected on the SETTINGS Tab, this displays the\n currently selected material\u2019s Pierce Delay.\n If \u201dView Material\u201d is selected on the SETTINGS Tab, this displays the\n currently selected material\u2019s Cut Height.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 705 / 1224\n \n Table 10.7: (continued)\n Name\n CA:\n \n@@ -33311,15 +33311,15 @@\n This slider overrides the feed rate for all feed moves.\n Any value other than 100% will cause the label to flash.\n Clicking the label will return the slider to 100%.\n This slider overrides the rapid rate for all rapid moves.\n Any value other than 100% will cause the label to flash.\n Clicking the label will return the slider to 100%.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 706 / 1224\n \n Table 10.8: (continued)\n Name\n JOG\n \n@@ -33388,15 +33388,15 @@\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Each press of this button will lower the target voltage by\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n Clicking this label will return any voltage override to 0.00.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 707 / 1224\n \n Table 10.10: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -33488,15 +33488,15 @@\n LED will still show the status of the probe input, but the\n Ohmic Probe results will be ignored.\n This box will enable or disable the communications to a\n PowerMax. This button is only visible if a PM_PORT is\n configured in the [POWERMAX] section of the\n .prefs file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 708 / 1224\n \n Table 10.10: (continued)\n Name\n Status\n \n@@ -33564,15 +33564,15 @@\n This button moves the Z axis in the negative direction.\n \n Note\n During Paused Motion, this section will be shown on top of the JOGGING panel. The following section\n will cover each button encountered in this panel. Please see CUT RECOVERY for a detailed description\n of the cut recovery functionality.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -33649,15 +33649,15 @@\n This drop down button will display the following options:\n Zero - zeros the axis.\n Set - launches a dialog box to manually input the axis\u2019 coordinate.\n Divide By 2 - divides the currently displayed coordinate in the DRO by\n two.\n Set To Last - sets the axis to the previously set coordinate.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 710 / 1224\n \n 10.8.8.3 Preview Views\n The QtPlasmaC preview screen has the ability to be switched between different views and displays,\n as well as zooming in and out, and panning horizontally and vertically.\n When QtPlasmaC is first started, the Z (top down) view will be selected as the default view for a loaded\n@@ -33670,30 +33670,30 @@\n orientation, then pressing either Z or P will change the display to the newly selected view. If the user\n then wishes to display the full table while maintaining the currently selected view as the default view\n for a loaded G-code file, then pressing CLEAR will achieve this and allow the selected view orientation\n to prevail the next time a G-code file is loaded.\n 10.8.8.4 CONVERSATIONAL Tab\n Screenshot example of the QtPlasmaC CONVERSATIONAL Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 711 / 1224\n \n The CONVERSATIONAL Tab enables the user to quickly program various simple shapes for quick\n cutting without the need for CAM software.\n See Conversational Shape Library for detailed information on the Conversational feature.\n It is possible to disable this tab so the conversational feature cannot be used by an operator. This may\n be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a HAL\n file using the following command:\n setp qtplasmac.conv_disable 1\n \n 10.8.8.5 PARAMETERS Tab\n Screenshot example of the QtPlasmaC PARAMETERS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 712 / 1224\n \n Some functions/features are only used for particular modes and are not displayed if they are not\n required by the chosen QtPlasmaC mode.\n Due to space constraints, the 4x3 GUI\u2019s PARAMETERS Tab will be spread across two tabs, PARAMETERS and SETTINGS.\n This tab is used to display configuration parameters that are modified infrequently.\n@@ -33710,15 +33710,15 @@\n 0, 1, 2\n \n Description\n This sets the amount of time (in seconds) QtPlasmaC will wait\n between commanding a \u201dTorch On\u201d and receiving an Arc OK\n signal before timing out and displaying an error message.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 713 / 1224\n \n Table 10.15: (continued)\n Name\n Max Starts\n \n@@ -33801,15 +33801,15 @@\n This sets the distance threshold used to determine if an Initial Height\n Sense (probe) can be skipped for the current cut, see IHS Skip.\n \n Note\n If the amount of time between the torch contacting the material and when the torch moves up and\n comes to rest at the Pierce Height seems excessive, see the probing section for a possible solution.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 714 / 1224\n \n Table 10.17: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -33860,15 +33860,15 @@\n \n CONFIGURATION - THC Two methods of THC activation are available and are selected with the\n Auto Activation checkbutton. Both methods begin their calculations when the current velocity of the\n torch matches the cut feed rate specified for the selected material:\n 1. Delay Activation (the default) is selected when Auto Activation is unchecked. This method uses\n a time delay set with the Delay parameter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 715 / 1224\n \n 2. Auto Activation is selected when Auto Activation is checked. This method determines that the\n arc voltage is stable by using the Sample Counts and Sample Threshold parameters.\n Name\n Delay\n@@ -33955,15 +33955,15 @@\n Description\n The top drop down menu is used to manually select the current material\n cut parameters. If there are no materials in the material file then only the\n default material will be displayed.\n This sets the kerf width for the currently selected material. Refer to the\n Heights Diagram diagram for a visual representation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 716 / 1224\n \n Table 10.21: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34025,15 +34025,15 @@\n The Cut Parameters for the new material will then need to be adjusted and saved.\n The DELETE this button is used to delete a material. After pressing it, the user will be prompted for\n a material number to be deleted, and prompted again to ensure the user is sure. After deletion, the\n material file will be reloaded and the drop down list will display the default material.\n 10.8.8.6 SETTINGS Tab\n Screenshot example of the QtPlasmaC SETTINGS Tab in 16:9 aspect ratio:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 717 / 1224\n \n This tab is used to display GUI configuration parameters, button text, and shutdown text that are\n modified infrequently as well as some utility buttons.\n It is possible to disable this tab so machine settings cannot be modified by unauthorized personnel.\n This may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set\n@@ -34049,15 +34049,15 @@\n Foreground\n Highlight\n \n Description\n This button allows the user to change the color of the GUI Foreground.\n This button allows the user to change the color of the GUI Highlight.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 718 / 1224\n \n Table 10.22: (continued)\n Name\n LED\n Background\n@@ -34135,15 +34135,15 @@\n current tool) in the Preview Window on the MAIN Tab.\n This allows a user to change the default zoom level for the top down full\n table view in the Preview Window on the MAIN Tab.\n \n USER BUTTON ENTRIES USERBUTTON\n This section shows the text that appears on the Custom User Buttons as well as the code associated\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 719 / 1224\n \n with the user button. User buttons may be changed and the new settings used without restarting\n LinuxCNC.\n The text and/or code may be edited at any time and will be loaded ready for use if the SAVE button is\n clicked.\n@@ -34182,15 +34182,15 @@\n current QtPlasmaC version the user is on, is the current date (YY-MM-DD), and

refer to\n the same parameter. Named parameters must be enclosed with < > marks.\n # is a local named parameter. By default, a named parameter is local to the scope\n in which it is assigned. You can\u2019t access a local parameter outside of its subroutine. This means that\n two subroutines can use the same parameter names without fear of one subroutine overwriting the\n values in another.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 817 / 1224\n \n #<_global named parameter> is a global named parameter. They are accessible from within called\n subroutines and may set values within subroutines that are accessible to the caller. As far as scope is\n concerned, they act just like regular numeric parameters. They are not stored in files.\n Examples:\n@@ -38621,15 +38621,15 @@\n G80\n 800\n G81\n 810\n G82\n 820\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 818 / 1224\n \n Motion return\n mode\n value\n G83\n@@ -38707,15 +38707,15 @@\n 550\n 560\n 570\n 580\n 590\n 591\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Mode\n G59.2\n G59.3\n \n 819 / 1224\n \n@@ -38759,15 +38759,15 @@\n \u2014 #<_abs_y> - Return current absolute Y coordinate (G53) including no offsets.\n \u2014 #<_abs_z> - Return current absolute Z coordinate (G53) including no offsets.\n \u2014 #<_abs_a> - Return current absolute A coordinate (G53) including no offsets.\n \u2014 #<_abs_b> - Return current absolute B coordinate (G53) including no offsets.\n \u2014 #<_abs_c> - Return current absolute C coordinate (G53) including no offsets.\n \u2014 #<_current_tool> - Return number of the current tool in spindle. Same as #5400.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 820 / 1224\n \n \u2014 #<_current_pocket> - Return the tooldata index for the current tool.\n \u2014 #<_selected_tool> - Return number of the selected tool post a T code. Default -1.\n \u2014 #<_selected_pocket> - Return the tooldata index of the selected pocket post a T code. Default -1\n (no pocket selected).\n@@ -38808,15 +38808,15 @@\n this by forcing a state synch. One way to do this is with a dummy M66 command: M66E0L0\n Example:\n (debug, #<_hal[motion-controller.time]>)\n \n Access of HAL items is read-only. Currently, only all-lowercase HAL names can be accessed this way.\n EXISTS can be used to test for the presence of a given HAL item:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 821 / 1224\n \n o100 if [EXISTS[#<_hal[motion-controller.time]>]]\n (debug, [motion-controller.time] exists: #<_hal[motion-controller.time]>)\n o100 else\n (debug, [motion-controller.time] does not exist)\n@@ -38856,15 +38856,15 @@\n AND OR XOR\n \n Precedence\n highest\n \n lowest\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 822 / 1224\n \n 11.4.7 Equality and floating-point values\n The RS274/NGC language only supports floating-point values of finite precision. Therefore, testing\n for equality or inequality of two floating-point values is inherently problematic. The interpreter solves\n this problem by considering values equal if their absolute difference is less than 0.0001 (this value is\n@@ -38922,15 +38922,15 @@\n o10 endif\n o endsub\n o call\n #<_global> = 4711\n o call\n m2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 823 / 1224\n \n 11.4.9 Repeated Items\n A line may have any number of G words, but two G words from the same modal group may not appear\n on the same line. See the Modal Groups section for more information.\n A line may have zero to four M words. Two M words from the same modal group may not appear on\n@@ -38970,15 +38970,15 @@\n Non-modal codes have effect only on the lines on which they occur. For example, G4 (dwell) is nonmodal.\n \n 11.4.12 Polar Coordinates\n Polar Coordinates can be used to specify the XY coordinate of a move. The @n is the distance and ^n\n is the angle. The advantage of this is for things like bolt hole circles which can be done very simply\n by moving to a point in the center of the circle, setting the offset and then moving out to the first hole\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 824 / 1224\n \n then run the drill cycle. Polar Coordinates always are from the current XY zero position. To shift the\n Polar Coordinates from machine zero use an offset or select a coordinate system.\n In Absolute Mode the distance and angle is from the XY zero position and the angle starts with 0 on\n the X Positive axis and increases in a CCW direction about the Z axis. The code G1 @1^90 is the same\n@@ -38998,15 +38998,15 @@\n \n Figure 11.10 \u2013 Polar Spiral\n The following code will produce our square pattern:\n F100 G1 @.5 ^90\n G91 ^90\n ^90\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 825 / 1224\n \n ^90\n ^90\n G90 G0 X0 Y0 M2\n \n@@ -39028,15 +39028,15 @@\n Modal Group Meaning\n Non-modal codes (Group 0)\n \n Member Words\n G4, G10 G28, G30, G52, G53, G92, G92.1,\n G92.2, G92.3,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 826 / 1224\n \n Table 11.7: (continued)\n Modal Group Meaning\n Motion (Group 1)\n \n@@ -39104,15 +39104,15 @@\n 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\n use axis words. If an axis word-using G-code from group 1 is implicitly in effect on a line (by having\n been activated on an earlier line), and a group 0 G-code that uses axis words appears on the line, the\n activity of the group 1 G-code is suspended for that line. The axis word-using G-codes from group 0\n are G10, G28, G30, G52 and G92.\n It is an error to include any unrelated words on a line with O- flow control.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 827 / 1224\n \n 11.4.14 Comments\n Comments are purely informative and have no influence on machine behaviour.\n Comments can be added to lines of G-code to help clear up the intention of the programmer. Comments\n can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon. The\n@@ -39147,15 +39147,15 @@\n \u2014 (PROBECLOSE) - will close the open probelog file.\n For more information on probing see the G38 section.\n \n 11.4.17 Logging\n \u2014 (LOGOPEN,filename.txt) - opens the named log file. If the file already exists, it is truncated.\n \u2014 (LOGAPPEND,filename) - opens the named log file. If the file already exists, the data is appended.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 828 / 1224\n \n \u2014 (LOGCLOSE) - closes an open log file.\n \u2014 (LOG,) - everything past the , is written to the log file if it is open. Supports expansion of parameters\n as described below.\n Examples of logging are in nc_files/examples/smartprobe.ngc and in nc_files/ngcgui_lib/rectange_probe.ngc\n@@ -39187,15 +39187,15 @@\n \u2014 %f = four decimals\n \u2014 %.xf = x (0-9) number of decimals\n The formatting will be performed on all parameters in the same line unless changed, i.e., multiple\n formatting is allowed in one line.\n The formatting string does not need to be right beside the parameter.\n If the formatting string is created with the wrong pattern it will be printed as characters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 829 / 1224\n \n 11.4.21 File Requirements\n A G-code file must contain one or more lines of G-code and be terminated with a Program End. Any\n G-code past the program end is not evaluated.\n If a program end code is not used a pair of percent signs % with the first percent sign on the first\n@@ -39234,15 +39234,15 @@\n \u2014 Save State (M70, M73), Restore State (M72), Invalidate State (M71).\n \u2014 Coolant on or off (M7, M8, M9).\n \u2014 Enable or disable overrides (M48, M49,M50,M51,M52,M53).\n \u2014 User-defined Commands (M100-M199).\n \u2014 Dwell (G4).\n \u2014 Set active plane (G17, G18, G19).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 830 / 1224\n \n \u2014 Set length units (G20, G21).\n \u2014 Cutter radius compensation on or off (G40, G41, G42)\n \u2014 Cutter length compensation on or off (G43, G49)\n \u2014 Coordinate system selection (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).\n@@ -39280,15 +39280,15 @@\n Don\u2019t use line numbers Line numbers offer no benefits. When line numbers are reported in error\n messages, the numbers refer to the line number in the file, not the N-word value.\n When several coordinate systems are moved Consider using the inverse time speed mode.\n Because the meaning of an F word in meters per minute varies depending on the type of axis to be\n moved and because the amount of removed material does not depend only on the feed rate, it can be\n simpler to use G93, inverse speed of time, to achieve the removal of desired material.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 831 / 1224\n \n 11.4.25 Linear and Rotary Axis\n 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,\n it may be easier to use G93 inverse time feed mode to achieve the desired material removal rate.\n \n@@ -39323,15 +39323,15 @@\n Any items in the G-code prototypes not explicitly described as optional are required.\n The values following letters are often given as explicit numbers. Unless stated otherwise, the explicit\n numbers can be real values. For example, G10 L2 could equally well be written G[2*5] L[1+1]. If the\n value of parameter 100 were 2, G10 L#100 would also mean the same.\n If L- is written in a prototype the - will often be referred to as the L number, and so on for any other\n letter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11.5.2 G-Code Quick Reference Table\n Code\n G0\n G1\n G2 G3\n G4\n@@ -39437,15 +39437,15 @@\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n 832 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -39492,15 +39492,15 @@\n G1 axes\n \n For linear (straight line) motion at programmed feed rate (for cutting or not), program G1 \u2019axes\u2019,\n where all the axis words are optional. The G1 is optional if the current motion mode is G1. This will\n produce coordinated motion to the destination point at the current feed rate (or slower).\n G1 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 834 / 1224\n \n G90 (set absolute distance mode)\n G1 X1.2 Y-3 F10 (linear move at a feed rate of 10 from current position to X1.2 Y-3)\n Z-2.3 (linear move at same feed rate from current position to Z-2.3)\n Z1 F25 (linear move at a feed rate of 25 from current position to Z1)\n@@ -39543,15 +39543,15 @@\n \n If a line of code makes an arc and includes rotary axis motion, the rotary axes turn at a constant rate\n so that the rotary motion starts and finishes when the XYZ motion starts and finishes. Lines of this\n sort are hardly ever programmed.\n If cutter compensation is active, the motion will differ from the above; see the Cutter Compensation\n section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 835 / 1224\n \n The arc center is absolute or relative as set by G90.1 or G91.1 respectively.\n Two formats are allowed for specifying an arc: Center Format and Radius Format.\n It is an error if:\n \u2014 No feed rate has been set.\n@@ -39589,15 +39589,15 @@\n G2 or G3 \n \n \u2014 Y - helix\n \u2014 I - X offset\n \u2014 K - Z offset\n \u2014 P - number of turns\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 836 / 1224\n \n YZ-plane (G19)\n G2 or G3 \n \n \u2014 X - helix\n@@ -39625,28 +39625,28 @@\n In the following figure you can see the start position is X0 Y0, the end position is X1 Y1. The arc center\n 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.\n In this case only an I offset is needed.\n G2 Example Line\n G0 X0 Y0\n G2 X1 Y1 I1 F10 (clockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 837 / 1224\n \n Figure 11.12 \u2013 G2 Example\n In the next example we see the difference between the offsets for Y if we are doing a G2 or a G3 move.\n 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\n for both moves. The G2 move the J offset is 0.5 and the G3 move the J offset is -0.5.\n G2-G3 Example Line\n G0 X0 Y0\n G2 X0 Y1 I1 J0.5 F25 (clockwise arc in the XY plane)\n G3 X0 Y0 I1 J-0.5 F25 (counterclockwise arc in the XY plane)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 838 / 1224\n \n Figure 11.13 \u2013 G2-G3 Example\n In the next example we show how the arc can make a helix in the Z axis by adding the Z word.\n G2 Example Helix\n G0 X0 Y0 Z0\n@@ -39665,15 +39665,15 @@\n \u2014 R - radius from current position\n It is not good practice to program radius format arcs that are nearly full circles or nearly semicircles\n because a small change in the location of the end point will produce a much larger change in the\n location of the center of the circle (and, hence, the middle of the arc). The magnification effect is\n large enough that rounding error in a number can produce out-of-tolerance cuts. For instance, a 1%\n displacement of the endpoint of a 180 degree arc produced a 7% displacement of the point 90 degrees\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 839 / 1224\n \n along the arc. Nearly full circles are even worse. Other size arcs (in the range tiny to 165 degrees or\n 195 to 345 degrees) are OK.\n In the radius format, the coordinates of the end point of the arc in the selected plane are specified\n along with the radius of the arc. Program G2 axes R- (or use G3 instead of G2 ). R is the radius. The\n@@ -39716,15 +39716,15 @@\n For the first G5 command in a series of G5 commands, I and J must both be specified. For subsequent\n G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting\n direction of this cubic will automatically match the ending direction of the previous cubic (as if I and\n J are the negation of the previous P and Q).\n For example, to program a curvy N shape:\n G5 Sample initial cubic spline\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 840 / 1224\n \n G90 G17\n G0 X0 Y0\n G5 I0 J3 P0 Q-3 X1 Y1\n \n@@ -39762,15 +39762,15 @@\n X- Y- \n ...\n G5.3\n \n AVERTISSEMENT\n G5.2, G5.3 is experimental and not fully tested.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 841 / 1224\n \n G5.2 is for opening the data block defining a NURBS and G5.3 for closing the data block. In the lines\n between these two codes the curve control points are defined with both their related weights (P) and\n the parameter (L) which determines the order of the curve.\n The current coordinate, before the first G5.2 command, is always taken as the first NURBS control\n@@ -39788,15 +39788,15 @@\n ; The rapid moves show the same path without the NURBS Block\n G0 X0 Y1\n X2 Y2\n X2 Y0\n X0 Y0\n M2\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 842 / 1224\n \n Sample NURBS Output\n More information on NURBS can be found here:\n https://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS\n \n@@ -39806,15 +39806,15 @@\n Program G7 to enter the diameter mode for axis X on a lathe. When in the diameter mode the X axis\n moves on a lathe will be 1/2 the distance to the center of the lathe. For example X1 would move the\n cutter to 0.500\u201d from the center of the lathe thus giving a 1\u201d diameter part.\n \n 11.5.11 G8 Lathe Radius Mode\n G8\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 843 / 1224\n \n Program G8 to enter the radius mode for axis X on a lathe. When in Radius mode the X axis moves\n on a lathe will be the distance from the center. Thus a cut at X1 would result in a part that is 2\u201d in\n diameter. G8 is default at power up.\n \n@@ -39850,15 +39850,15 @@\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- \n \n \u2014 P - coordinate system (0-9)\n \u2014 R - rotation about the Z axis\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 844 / 1224\n \n G10 L2 offsets the origin of the axes in the coordinate system specified to the value of the axis word.\n The offset is from the machine origin established during homing. The offset value will replace any\n current offsets in effect for the coordinate system specified. Axis words not used will not be changed.\n Program P0 to P9 to specify which coordinate system to change.\n@@ -39925,15 +39925,15 @@\n other coordinates are not changed.\n G10 L2 Example Line\n G10 L2 P1 X0 Y0 Z0 (clear offsets for X,Y & Z axes in coordinate system 1)\n \n The above example sets the XYZ coordinates of the coordinate system 1 to the machine origin.\n The coordinate system is described in the Coordinate System section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 845 / 1224\n \n 11.5.15 G10 L10 Set Tool Table\n G10 L10 P- axes \n \n \u2014 P - tool number\n@@ -39973,15 +39973,15 @@\n then use that fixture to measure tools without regard to other currently-active offsets. It is an error\n if:\n \u2014 Cutter Compensation is on\n \u2014 The P number is unspecified\n \u2014 The P number is not a valid tool number from the tool table\n \u2014 The P number is 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 846 / 1224\n \n 11.5.17 G10 L20 Set Coordinate System\n G10 L20 P- axes\n \n \u2014 P - coordinate system (0-9)\n@@ -40018,15 +40018,15 @@\n position has been stored with G28.1.\n \n G28 uses the values stored in parameters 5161-5169 as the X Y Z A B C U V W final point to move\n to. The parameter values are absolute machine coordinates in the native machine units as specified\n in the INI file. All axes defined in the INI file will be moved when a G28 is issued. If no positions are\n stored with G28.1 then all axes will go to the machine origin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 847 / 1224\n \n \u2014 G28 - makes a rapid move from the current position to the absolute position of the values in parameters 5161-5166.\n \u2014 G28 axes - makes a rapid move to the position specified by axes including any offsets, then will\n make a rapid move to the absolute position of the values in parameters 5161-5166 for all axes\n specified. Any axis not specified will not move.\n@@ -40063,15 +40063,15 @@\n \u2014 Cutter Compensation is turned on\n \n 11.5.22 G33 Spindle Synchronized Motion\n G33 X- Y- Z- K- $-\n \n \u2014 K - distance per revolution\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 848 / 1224\n \n For spindle-synchronized motion in one direction, code G33 X- Y- Z- K- where K gives the distance\n moved in XYZ for each revolution of the spindle. For instance, if starting at Z=0, G33 Z-1 K.0625\n produces a 1 inch motion in Z over 16 revolutions of the spindle. This command might be part of a\n program to produce a 16TPI thread. Another example in metric, G33 Z-15 K1.5 produces a movement\n@@ -40112,15 +40112,15 @@\n \u2014 The requested linear motion exceeds machine velocity limits due to the spindle speed.\n \n 11.5.23 G33.1 Rigid Tapping\n G33.1 X- Y- Z- K- I- $-\n \n \u2014 K - distance per revolution\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 849 / 1224\n \n \u2014 I - optional spindle speed multiplier for faster return move\n \u2014 $ - optional spindle selector\n AVERTISSEMENT\n For Z only tapping preposition the XY location prior to calling G33.1 and only use a Z word in\n@@ -40161,15 +40161,15 @@\n \n 11.5.24 G38.n Straight Probe\n G38.n axes\n \n \u2014 G38.2 - probe toward workpiece, stop on contact, signal error if failure\n \u2014 G38.3 - probe toward workpiece, stop on contact\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 850 / 1224\n \n \u2014 G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure\n \u2014 G38.5 - probe away from workpiece, stop on loss of contact\n Important\n You will not be able to use a probe move until your machine has been set up to provide a probe\n@@ -40226,15 +40226,15 @@\n It is an error if:\n \u2014 the current point is the same as the programmed point.\n \u2014 no axis word is used\n \u2014 cutter compensation is enabled\n \u2014 the feed rate is zero\n \u2014 the probe is already in the target state\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 851 / 1224\n \n 11.5.25 G40 Compensation Off\n \u2014 G40 - turn cutter compensation off. If tool compensation was on the next move must be a linear\n move and longer than the tool diameter. It is OK to turn compensation off when it is already off.\n G40 Example\n@@ -40275,15 +40275,15 @@\n The behavior of the machining center when cutter compensation is on is described in the Cutter\n Compensation section along with code examples.\n It is an error if:\n \u2014 The D number is not a valid tool number or 0.\n \u2014 The YZ plane is active.\n \u2014 Cutter compensation is commanded to turn on when it is already on.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 852 / 1224\n \n 11.5.27 G41.1, G42.1 Dynamic Cutter Compensation\n G41.1 D- (left of programmed path)\n G42.1 D- (right of programmed path)\n \n@@ -40318,15 +40318,15 @@\n \n It is an error if:\n \u2014 the H number is not an integer, or\n \u2014 the H number is negative, or\n \u2014 the H number is not a valid tool number (though note that 0 is a valid tool number on nonrandom\n tool changer machines, it means \u201dthe tool currently in the spindle\u201d)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 853 / 1224\n \n 11.5.29 G43.1 Dynamic Tool Length Offset\n G43.1 axes\n \n \u2014 G43.1 axes - change subsequent motions by replacing the current offset(s) of axes. G43.1 does\n@@ -40363,15 +40363,15 @@\n It is an error if:\n \u2014 H is unspecified and no axis offsets are specified.\n \u2014 H is specified and the given tool number does not exist in the tool table.\n \u2014 H is specified and axes are also specified.\n Note\n G43.2 does not write to the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 854 / 1224\n \n 11.5.31 G49 Cancel Tool Length Compensation\n \u2014 G49 - cancels tool length compensation\n It is OK to program using the same offset already in use. It is also OK to program using no tool length\n offset if none is currently being used.\n@@ -40407,15 +40407,15 @@\n \u2014 G58 - select coordinate system 5\n \u2014 G59 - select coordinate system 6\n \u2014 G59.1 - select coordinate system 7\n \u2014 G59.2 - select coordinate system 8\n \u2014 G59.3 - select coordinate system 9\n The coordinate systems store the axis values and the XY rotation angle around the Z axis in the parameters shown in the following table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 855 / 1224\n \n Table 11.11: Coordinate System Parameters\n Select CS\n G54\n 1\n@@ -40572,15 +40572,15 @@\n lines (from start of arc to midpoint, and from midpoint to end). those lines are then subject to the\n naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases as well as line-line benefit\n from the Naive CAM Detector. This improves contouring performance by simplifying the path. It is\n OK to program for the mode that is already active. See also the Trajectory Control section for more\n information on these modes. If Q is not specified then it will have the same behavior as before and\n use the value of P-. Set Q to zero to disable the Naive CAM Detector.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 856 / 1224\n \n G64 P- Example Line\n G64 P0.015 (set path following to be within 0.015 of the actual path)\n \n It is a good idea to include a path control specification in the preamble of each G-code file.\n@@ -40622,15 +40622,15 @@\n G72\n Q- \n G72.1 Q- \n G72.2 Q- \n \n \u2014 Q - The subroutine number.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 857 / 1224\n \n \u2014 X - The starting X position, defaults to the initial position.\n \u2014 Z - The starting Z position, defaults to the initial position.\n \u2014 D - The remaining distance to the profile, defaults to 0.\n \u2014 I - The cutting increment, defaults to 1.\n@@ -40670,15 +40670,15 @@\n \n \u2014 R - retract position along the Z axis.\n \u2014 Q - delta increment along the Z axis.\n \u2014 L - repeat\n The G73 cycle is drilling or milling with chip breaking. This cycle takes a Q number which represents\n a delta increment along the Z axis.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 858 / 1224\n \n \u2014 Preliminary motion.\n \u2014 If the current Z position is below the R position, The Z axis does a rapid move to the R position.\n \u2014 Move to the X Y coordinates\n \u2014 Move the Z-axis only at the current feed rate downward by delta or to the Z position, whichever is\n@@ -40711,15 +40711,15 @@\n 6. Dwell for the P number of seconds.\n 7. Move the Z-axis at the current feed rate to clear Z\n 8. Restore Feed and Speed override enables to previous state\n The length of the dwell is specified by a P- word in the G74 block. The feed rate F- is spindle speed\n multiplied by distance per revolution (thread pitch). In example S100 with 1.25MM per revolution\n thread pitch gives a feed of F125.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 859 / 1224\n \n 11.5.42 G76 Threading Cycle\n G76 P- Z- I- J- R- K- Q- H- E- L- $-\n \n Figure 11.14 \u2013 G76 Threading\n@@ -40738,15 +40738,15 @@\n \u2014 K- - A positive value specifying the full thread depth. The final threading cut will be K beyond the\n thread peak position.\n Optional settings\n \u2014 $- - The spindle number to which the motion will be synchronised (default 0). For example is $1\n is programmed then the motion will begin on the reset od spindle.1.index-enable and proceed in\n synchrony with the value of spindle.1.revs\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 860 / 1224\n \n \u2014 R- - The depth degression. R1.0 selects constant depth on successive threading passes. R2.0 selects\n constant area. Values between 1.0 and 2.0 select decreasing depth but increasing area. Values\n above 2.0 select decreasing area. Beware that unnecessarily high degression values will cause a\n large number of passes to be used. (degression = a descent by stages or steps.)\n@@ -40792,15 +40792,15 @@\n information.\n Technical Info The G76 canned cycle is based on the G33 Spindle Synchronized Motion. For more\n information see the G33 Technical Info.\n The sample program g76.ngc shows the use of the G76 canned cycle, and can be previewed and\n executed on any machine using the sim/lathe.ini configuration.\n G76 Example Code\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 861 / 1224\n \n G0 Z-0.5 X0.2\n G76 P0.05 Z-1 I-.075 J0.008 K0.045 Q29.5 L2 E0.045\n \n In the figure the tool is in the final position after the G76 cycle is completed. You can see the entry\n@@ -40823,15 +40823,15 @@\n All canned cycles use X, Y, Z, or U, V, W groups depending on the plane selected and R words. The\n R (usually meaning retract) position is along the axis perpendicular to the currently selected plane\n (Z-axis for XY-plane, etc.) Some canned cycles use additional arguments.\n 11.5.43.2 Sticky Words\n For canned cycles, we will call a number sticky if, when the same cycle is used on several lines of\n code in a row, the number must be used the first time, but is optional on the rest of the lines. Sticky\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 862 / 1224\n \n numbers keep their value on the rest of the lines if they are not explicitly programmed to be different.\n The R number is always sticky.\n In incremental distance mode X, Y, and R numbers are treated as increments from the current position\n and Z as an increment from the Z-axis position before the move involving Z takes place. In absolute\n@@ -40869,15 +40869,15 @@\n once, regardless of the value of L.\n In addition, at the beginning of the first cycle and each repeat, the following one or two moves are\n made:\n \u2014 A rapid move parallel to the XY-plane to the given XY-position.\n \u2014 The Z-axis make a rapid move to the R position, if it is not already at the R position.\n If another plane is active, the preliminary and in-between motions are analogous.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 863 / 1224\n \n 11.5.43.7 Why use a canned cycle?\n There are at least two reasons for using canned cycles. The first is the economy of code. A single bore\n would take several lines of code to execute.\n The G81 Example 1 demonstrates how a canned cycle could be used to produce 8 holes with ten lines\n@@ -40901,15 +40901,15 @@\n The G98 on the second line above means that the return move will be to the Z value on the first line\n since it is higher than the specified R value.\n \n Twelve Holes in a Square This example demonstrates the use of the L word to repeat a set of\n incremental drill cycles for successive blocks of code within the same G81 motion mode. Here we\n produce 12 holes using five lines of code in the canned motion mode.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 864 / 1224\n \n N1000 G90 G0 X0 Y0 Z0 (move coordinate home)\n N1010 G1 F50 X0 G4 P0.1\n N1020 G91 G81 X1 Y0 Z-0.5 R1 L4 (canned drill cycle)\n N1030 X0 Y1 R0 L3 (repeat)\n@@ -40933,15 +40933,15 @@\n G90 G81 X1 Y1 Z1.5 R2.8 (absolute distance canned cycle)\n G80 (turn off canned cycle motion)\n G0 X0 Y0 Z0 (rapid move to coordinate home)\n \n The following code produces the same final position and machine state as the previous code.\n G0 Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 865 / 1224\n \n G90 G81 X1 Y1 Z1.5 R2.8 (absolute distance canned cycle)\n G0 X0 Y0 Z0 (rapid move to coordinate home)\n \n The advantage of the first set is that, the G80 line clearly turns off the G81 canned cycle. With the\n@@ -40980,15 +40980,15 @@\n \n The G81 cycle is intended for drilling.\n The cycle functions as follows:\n \u2014 Preliminary motion, as described in the Preliminary and In-Between Motion section.\n \u2014 Move the Z-axis at the current feed rate to the Z position.\n \u2014 The Z-axis does a rapid move to clear Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 866 / 1224\n \n Figure 11.16 \u2013 G81 Cycle\n Example 1 - Absolute Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n@@ -41001,15 +41001,15 @@\n \u2014 The R value and clear Z are 2.8. OLD_Z is 3.\n The following moves take place:\n \u2014 A rapid move parallel to the XY plane to (X4, Y5)\n \u2014 A rapid move move parallel to the Z-axis to (Z2.8).\n \u2014 Move parallel to the Z-axis at the feed rate to (Z1.5)\n \u2014 A rapid move parallel to the Z-axis to (Z3)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 867 / 1224\n \n Example 2 - Relative Position G81\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n Suppose the current position is (X1, Y2, Z3) and the preceding line of NC code is interpreted.\n@@ -41030,27 +41030,27 @@\n \u2014 A rapid move parallel to the Z-axis to (X9, Y12, Z4.8)\n The third repeat consists of 3 moves. The X position is reset to 13 (=9+4) and the Y position to 17\n (=12+5).\n \u2014 A rapid move parallel to the XY-plane to (X13, Y17, Z4.8)\n \u2014 Move parallel to the Z-axis at the feed rate to (X13, Y17, Z4.2)\n \u2014 A rapid move parallel to the Z-axis to (X13, Y17, Z4.8)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 868 / 1224\n \n Example 3 - Relative Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n Now suppose that you execute the first G81 block of code but from (X0, Y0, Z0) rather than from (X1,\n Y2, Z3).\n Since OLD_Z is below the R value, it adds nothing for the motion but since the initial value of Z is less\n than the value specified in R, there will be an initial Z move during the preliminary moves.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 869 / 1224\n \n Example 4 - Absolute G81 R > Z This is a plot of the path of motion for the second g81 block of\n code.\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n@@ -41060,15 +41060,15 @@\n \n Example 5 - Relative position R > Z\n G90 G98 G81 X4 Y5 Z-0.6 R1.8\n \n Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves\n to that location as in Example 4. After that initial Z move, the rapid move to X4 Y5 is done. Then the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 870 / 1224\n \n final Z depth being 0.6 below the R value. The repeat function would make the Z move in the same\n location again.\n \n 11.5.46 G82 Drilling Cycle, Dwell\n@@ -41108,15 +41108,15 @@\n 11.5.48 G84 Right-hand Tapping Cycle, Dwell\n G84 (X- Y- Z-) or (U- V- W-) R- L- P- $- F-\n \n \u2014 R- - Retract position along the Z axis.\n \u2014 L- - Used in incremental mode; number of times to repeat the cycle. See G81 for examples.\n \u2014 P- - Dwell time (seconds).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 871 / 1224\n \n \u2014 $- - Selected spindle.\n \u2014 F- - Feed rate (spindle speed multiplied by distance traveled per revolution (thread pitch)).\n \n AVERTISSEMENT\n@@ -41153,15 +41153,15 @@\n \u2014 Dwell for the P number of seconds.\n \u2014 Stop the selected spindle turning. (Chosen by the $ parameter)\n \u2014 The Z-axis does a rapid move to clear Z.\n \u2014 Restart the spindle in the direction it was going.\n It is an error if:\n \u2014 the spindle is not turning before this cycle is executed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 872 / 1224\n \n 11.5.51 G87 Back Boring Cycle\n This code is currently unimplemented in LinuxCNC. It is accepted, but the behavior is undefined.\n \n 11.5.52 G88 Boring Cycle, Spindle Stop, Manual Out\n@@ -41195,15 +41195,15 @@\n \n 11.5.55 G90.1, G91.1 Arc Distance Mode\n \u2014 G90.1 - absolute distance mode for I, J & K offsets. When G90.1 is in effect I and J both must be\n specified with G2/3 for the XY plane or J and K for the XZ plane or it is an error.\n \u2014 G91.1 - incremental distance mode for I, J & K offsets. G91.1 Returns I, J & K to their default\n behavior.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 873 / 1224\n \n 11.5.56 G92 Coordinate System Offset\n G92 axes\n \n AVERTISSEMENT\n@@ -41238,15 +41238,15 @@\n 11.5.57 G92.1, G92.2 Reset G92 Offsets\n \u2014 G92.1 - turn off G92 offsets and reset parameters 5211 - 5219 to zero.\n \u2014 G92.2 - turn off G92 offsets but keep parameters 5211 - 5219 available.\n Note\n G92.1 only clears G92 offsets, to change G53-G59.3 coordinate system offsets in G-code use either\n G10 L2 or G10 L20.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 874 / 1224\n \n 11.5.58 G92.3 Restore G92 Offsets\n \u2014 G92.3 - set the G92 offset to the values saved in parameters 5211 to 5219\n You can set axis offsets in one program and use the same offsets in another program. Program G92 in\n the first program. This will set parameters 5211 to 5219. Do not use G92.1 in the remainder of the\n@@ -41286,15 +41286,15 @@\n \u2014 or meters per minute if G21 is in effect.\n When using G96, ensure that X0 in the current coordinate system (including offsets and tool lengths)\n is the center of rotation or LinuxCNC will not give the desired surface speed. G96 is not affected by\n radius or diameter mode.\n To achieve CSS mode on selected spindles programme successive G96 commands for each spindle\n prior to issuing M3.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 875 / 1224\n \n \u2014 G97 selects RPM mode.\n G96 Example Line\n G96 D2500 S250 (set CSS with a max rpm of 2500 and a surface speed of 250)\n \n@@ -41352,15 +41352,15 @@\n Feed Override Control\n Spindle Override Control\n Adaptive Feed Control\n Feed Stop Control\n Set Current Tool Number\n Output Control\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Code\n M66\n M67\n M68\n M70\n M71\n@@ -41408,15 +41408,15 @@\n \u2014 The spindle is stopped (like M5).\n \u2014 The current motion mode is set to feed (like G1).\n \u2014 Coolant is turned off (like M9).\n Note\n Lines of code after M2/M30 will not be executed. Pressing Cycle Start will start the program at the\n beginning of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 877 / 1224\n \n AVERTISSEMENT\n Using % to wrap the G-code does not do the same thing as a Program End. See the section on\n File Requirements for more information on what using % does not do.\n \n@@ -41451,15 +41451,15 @@\n \n 11.6.6 M6 Tool Change\n 11.6.6.1 Manual Tool Change\n If the HAL component hal_manualtoolchange is loaded, M6 will stop the spindle and prompt the user to\n change the tool based on the last T- number programmed. For more information on hal_manualtoolchange\n see the Manual Tool Change section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 878 / 1224\n \n 11.6.6.2 Tool Changer\n To change a tool in the spindle from the tool currently in the spindle to the tool most recently selected\n (using a T word - see section Select Tool), program M6. When the tool change is complete:\n \u2014 The spindle will be stopped.\n@@ -41496,15 +41496,15 @@\n M19 R- Q- [P-] [$-]\n \n \u2014 R Position to rotate to from 0, valid range is 0-360 degrees\n \u2014 Q Number of seconds to wait until orient completes. If spindle.N.is-oriented does not become true\n within Q timeout an error occurs.\n \u2014 P Direction to rotate to position.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 879 / 1224\n \n \u2014 0 rotate for smallest angular movement (default)\n \u2014 1 always rotate clockwise (same as M3 direction)\n \u2014 2 always rotate counterclockwise (same as M4 direction)\n \u2014 $ The spindle to orient (actually only determines which HAL pins carry the spindle position commands)\n@@ -41536,15 +41536,15 @@\n They also can be be toggled individually using M50 and M51, see below.\n \n 11.6.10 M50 Feed Override Control\n \u2014 M50 - enable the feed rate override control. The P1 is optional.\n \u2014 M50 P0 - disable the feed rate control.\n 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).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 880 / 1224\n \n 11.6.11 M51 Spindle Speed Override Control\n \u2014 M51 <$->- enable the spindle speed override control for the selected spindle. The P1 is\n optional.\n \u2014 M51 P0 <$-> - disable the spindle speed override control program.\n@@ -41576,15 +41576,15 @@\n AVERTISSEMENT\n The tool length offset is not changed by M61, use G43 after the M61 to change the tool length\n offset.\n \n It is an error if:\n \u2014 Q- is not 0 or greater\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 881 / 1224\n \n 11.6.15 M62 - M65 Digital Output Control\n \u2014 M62 P- - turn on digital output synchronized with motion.\n \u2014 M63 P- - turn off digital output synchronized with motion.\n \u2014 M64 P- - turn on digital output immediately.\n@@ -41618,15 +41618,15 @@\n \u2014 Q- - specifies the timeout in seconds for waiting. If the timeout is exceeded, the wait is interrupt,\n and the variable #5399 will be holding the value -1. The Q value is ignored if the L-word is zero\n (IMMEDIATE). A Q value of zero is an error if the L-word is non-zero.\n \u2014 Mode 0 is the only one permitted for an analog input.\n M66 Example Lines\n M66 P0 L3 Q5 (wait up to 5 seconds for digital input 0 to turn on)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 882 / 1224\n \n M66 wait on an input stops further execution of the program, until the selected event (or the programmed timeout) occurs.\n It is an error to program M66 with both a P-word and an E-word (thus selecting both an analog and a\n digital input). In LinuxCNC these inputs are not monitored in real time and thus should not be used\n for timing-critical applications.\n@@ -41662,15 +41662,15 @@\n 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.\n The number of I/O can be increased by using the num_dio or num_aio parameter when loading the\n motion controller. See the Motion section for more information.\n Note\n M68 will not function unless the appropriate motion.analog-out-nn pins are connected in your HAL\n file to outputs.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 883 / 1224\n \n 11.6.19 M70 Save Modal State\n To explicitly save the modal state at the current call level, program M70. Once modal state has been\n saved with M70, it can be restored to exactly that state by executing an M72.\n A pair of M70 and M72 instructions will typically be used to protect a program against inadvertent\n@@ -41708,15 +41708,15 @@\n Modal state saved with an M70 or by an M73 at the current call level is invalidated (cannot be restored\n from anymore).\n A subsequent M72 at the same call level will fail.\n If executed in a subroutine which protects modal state by an M73, a subsequent return or endsub will\n not restore modal state.\n The usefulness of this feature is dubious. It should not be relied upon as it might go away.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 884 / 1224\n \n 11.6.21 M72 Restore Modal State\n Modal state saved with an M70 code can be restored by executing an M72.\n The handling of G20/G21 is specially treated as feeds are interpreted differently depending on G20/G21:\n if length units (mm/in) are about to be changed by the restore operation, \u2019M72 \u2019will restore the distance mode first, and then all other state including feed to make sure the feed value is interpreted in\n@@ -41758,15 +41758,15 @@\n The suggested use is at the beginning of a O-word subroutine as in the following example. Using M73\n this way enables designing subroutines which need to modify modal state but will protect the calling\n program against inadvertent modal changes. Note the use of predefined named parameters in the\n showstate subroutine.\n O sub\n (DEBUG, imperial=#<_imperial> absolute=#<_absolute> feed=#<_feed> rpm=#<_rpm>)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 885 / 1224\n \n O endsub\n O sub\n M73 (save caller state in current call context, restore on return or endsub)\n g20 (imperial)\n@@ -41813,15 +41813,15 @@\n ;\n O if [#]\n g90 (restore G90 only if it was set on entry:)\n O endif\n ;\n O endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 886 / 1224\n \n 11.6.24 M100-M199 User Defined Commands\n M1-- \n \n \u2014 M1-- - an integer in the range of 100 - 199.\n@@ -41862,15 +41862,15 @@\n \n M102 Example File\n #!/bin/bash\n # file to turn off parport pin 14 to open the collet closer\n halcmd setp parport.0.pin-14-out False\n exit 0\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 887 / 1224\n \n To pass a variable to a M1nn file you use the P and Q option like this:\n M100 P123.456 Q321.654\n \n M100 Example file\n@@ -41912,15 +41912,15 @@\n (some code here)\n (the end of o110)\n o110 endif\n (some more code here)\n (the end of o100)\n o100 endsub\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 888 / 1224\n \n 11.7.3 Comments\n Comments on the same line as the O word should not be used as the behavior can change in the future.\n The behavior is undefined if:\n \u2014 The same number is used for more than one block.\n@@ -41961,15 +41961,15 @@\n #N. Parameters from #N+1 to #30 have the same value as in the calling context. On return from the\n subroutine, the values of parameters #1 through #30 (regardless of the number of arguments) will\n be restored to the values they had before the call. Parameters #1 - #30 are local to the subroutine.\n Because 1 2 3 is parsed as the number 123, the parameters must be enclosed in square brackets. The\n following calls a subroutine with 3 arguments:\n O- Call Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 889 / 1224\n \n o100 sub\n (test if parameter #2 is greater than 5)\n o110 if [#2 GT 5]\n (return to top of subroutine if test is true)\n@@ -42018,15 +42018,15 @@\n call syntax, but may only be used to call a following numbered subprogram defined with o100\u2026M99.\n An optional L-word specifies a loop count.\n M30 The main program must be terminated with M02 or M30 (or M99; see below).\n O- subprogram definition start Marks the start of a numbered subprogram definition. The block\n O100 is similar to o100 sub, except that it must be placed later in the file than the M98 P100 calling\n block.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 890 / 1224\n \n M99 return from numbered subroutine The block M99 is analogous to the traditional o100 endsub\n syntax, but may only terminate a numbered program (o100 in this example), and may not terminate a\n subroutine beginning with the o100 sub syntax.\n The M98 subprogram call differs from rs274ngc O call in the following ways:\n@@ -42087,15 +42087,15 @@\n loop runs the code in the loop then checks the test condition. The while/endwhile loop does the test\n first.\n While Endwhile Example\n (draw a sawtooth shape)\n G0 X1 Y0 (move to start position)\n #1 = 0 (assign parameter #1 the value of 0)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 891 / 1224\n \n F25 (set a feed rate)\n o101 while [#1 LT 10]\n G1 X0\n G1 Y[#1/10] X1\n@@ -42146,15 +42146,15 @@\n (else if parameter #2 is less than 2 set F200)\n F200\n (else if parameter #2 is 2 through 5 set F150)\n o102 else\n F150\n o102 endif\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 892 / 1224\n \n Several conditions may be tested for by elseif statements until the else path is finally executed if all\n preceding conditions are false:\n If Elseif Else Endif Example\n (if parameter #2 is greater than 5 set F100)\n@@ -42193,15 +42193,15 @@\n \n 11.7.9 Calling Files\n To call a separate file with a subroutine name the file the same as your call and include a sub and\n 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.\n Named File Example\n o call\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 893 / 1224\n \n Numbered File Example\n o123 call\n \n In the called file you must include the oxxx sub and endsub and the file must be a valid file.\n@@ -42236,15 +42236,15 @@\n \u2014 a undefined label on else or elseif\n \u2014 a label on else, elseif or endif not pointing to a matching if\n \u2014 a label on break or continue which does not point to a matching while or do\n \u2014 a label on endrepeat or endwhile no referring to a corresponding while or repeat\n To make these errors non-fatal warnings on stderr, set bit 0x20 in the [RS274NGC]FEATURE= mask ini\n option.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 894 / 1224\n \n 11.8 Other Codes\n 11.8.1 F: Set Feed Rate\n Fx - set the feed rate to x. x is usually in machine units (inches or millimeters) per minute.\n The application of the feed rate is as described in the Feed Rate Section, unless inverse time feed rate\n@@ -42281,15 +42281,15 @@\n like a nonrandom toolchanger machine and unloads the spindle.\n \n It is an error if:\n \u2014 a negative T number is used,\n \u2014 T number is used that does not appear in the tool table file (with the exception that T0 on nonrandom\n toolchangers is accepted, as noted above).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 895 / 1224\n \n On some machines, the carousel will move when a T word is programmed, at the same time machining\n is occurring. On such machines, programming the T word several lines before a tool change will save\n time. A common programming practice for such machines is to put the T word for the next tool to be\n used on the line after a tool change. This maximizes the time available for the carousel to move.\n@@ -42305,33 +42305,33 @@\n 11.9.1.1 Helical Hole Milling\n \u2014 File Name: useful-subroutines.ngc\n \u2014 Description: Subroutine for milling a hole using parameters.\n 11.9.1.2 Slotting\n \u2014 File Name: useful-subroutines.ngc\n \u2014 Description: Subroutine for milling a slot using parameters.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 896 / 1224\n \n 11.9.1.3 Grid Probe\n \u2014 File Name: gridprobe.ngc\n \u2014 Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 897 / 1224\n \n 11.9.1.4 Smart Probe\n \u2014 File Name: smartprobe.ngc\n \u2014 Description: Rectangular Probing\n This program repeatedly probes in a regular XY grid and writes the probed location to the file proberesults.txt in the same directory as the .ini file. This is improved from the grid probe file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 898 / 1224\n \n 11.9.1.5 Tool Length Probe\n \u2014 File Name: tool-length-probe.ngc\n \u2014 Description: Tool Length Probing\n This program shows an example of how to measure tool lengths automatically using a switch hooked\n@@ -42344,15 +42344,15 @@\n the results.\n 11.9.1.7 Cutter Compensation\n \u2014 File Name: comp-g1.ngc\n \u2014 Description: Entry and exit movements with compensation of tool radius.\n This program demonstrates the peculiarity of the toolpath without and with tool radius compensation.\n The tool radius is taken from the tool table.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 899 / 1224\n \n 11.9.2 Lathe Examples\n 11.9.2.1 Threading\n \u2014 File Name lathe-g76.ngc\n \u2014 Description: Facing, threading and parting off.\n@@ -42370,15 +42370,15 @@\n PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image\n png = image-to-gcode\n gif = image-to-gcode\n jpg = image-to-gcode\n \n The standard sim/axis.ini configuration file is already prepared this way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 900 / 1224\n \n 11.10.3 Using image-to-gcode\n Start image-to-gcode either by opening an image file in AXIS, or by invoking image-to-gcode from the\n terminal, as follows:\n image-to-gcode torus.png > torus.ngc\n@@ -42408,15 +42408,15 @@\n 11.10.4.6 Pixel Size (units)\n One pixel in the input image will be this many units\u2014usually this number is much smaller than 1.0. For\n instance, to mill a 2.5x2.5-inch object from a 400x400 image file, use a pixel size of .00625, because\n 2.5 / 400 = .00625.\n 11.10.4.7 Plunge Feed Rate (units per minute)\n The feed rate for the initial plunge movement.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 901 / 1224\n \n 11.10.4.8 Feed Rate (units per minute)\n The feed rate for other parts of the path.\n 11.10.4.9 Spindle Speed (RPM)\n The spindle speed S-code that should be put into the G-code file.\n@@ -42442,15 +42442,15 @@\n and the desired step over distance=.015, then use a Step Over of 2 or 3 pixels, because .015/.006=2.5.\n 11.10.4.14 Tool Diameter\n The diameter of the cutting part of the tool.\n 11.10.4.15 Safety Height\n The height to move to for traverse movements. image-to-gcode always assumes the top of material is\n at Z=0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 902 / 1224\n \n 11.10.4.16 Tool Type\n The shape of the cutting part of the tool. Possible tool shapes are:\n \u2014 Ball End\n \u2014 Flat End\n@@ -42471,15 +42471,15 @@\n Image-to-gcode can optionally perform roughing passes. The depth of successive roughing passes is\n given by Roughing depth per pass. For instance, entering 0.2 will perform the first roughing pass with\n 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\n is reached. No part of any roughing pass will cut closer than Roughing Offset to the final part. The\n following figure shows a tall vertical feature being milled. In this image, Roughing depth per pass is\n 0.2 inches and roughing offset is 0.1 inches.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 903 / 1224\n \n Figure 11.17 \u2013 Roughing passes and final pass\n \n 11.11 RS274/NGC Differences\n 11.11.1 Changes from RS274/NGC\n@@ -42503,15 +42503,15 @@\n G84, G87 not implemented\n G84 and G87 are not currently implemented, but may be added to a future release of LinuxCNC.\n G28, G30 with axis words\n When G28 or G30 is programmed with only some axis words present, LinuxCNC only moves the\n named axes. This is common on other machine controls. To move some axes to an intermediate\n point and then move all axes to the predefined point, write two lines of G code:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 904 / 1224\n \n G0 X- Y- (axes to move to intermediate point)\n G28 (move all axes to predefined point)\n \n 11.11.2 Additions to RS274/NGC\n@@ -42546,15 +42546,15 @@\n tool is currently loaded, it is an error. This change was made so the user doesn\u2019t have to specify\n the tool number in two places for each tool change, and because it\u2019s consistent with the way\n G41/G42 work when the D word is not specified.\n U, V, and W axes\n LinuxCNC allows machines with up to 9 axes by defining an additional set of 3 linear axes known\n as U, V and W\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 905 / 1224\n \n Chapitre 12\n \n Virtual Control Panels\n 12.1 PyVCP\n@@ -42564,15 +42564,15 @@\n Hardware machine control panels can use up a lot of I/O pins and can be expensive. That is where\n Virtual Control Panels have the advantage as well as it cost nothing to build a PyVCP.\n Virtual Control Panels can be used for testing or monitoring things to temporarily replace real I/O\n devices while debugging ladder logic, or to simulate a physical panel before you build it and wire it\n to an I/O board.\n The following graphic displays many of the PyVCP widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 906 / 1224\n \n Figure 12.1 \u2013 PyVCP Widgets Showcase\n \n 12.1.2 Panel Construction\n The layout of a PyVCP panel is specified with an XML file that contains widget tags between \n@@ -42580,15 +42580,15 @@\n \n \n \n Figure 12.2 \u2013 Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 907 / 1224\n \n If you place this text in a file called tiny.xml, and run\n halcmd loadusr pyvcp -c mypanel tiny.xml\n \n PyVCP will create the panel for you, which includes two widgets, a Label with the text This is a LED\n@@ -42633,15 +42633,15 @@\n \n \n Here we\u2019ve made a panel with a Label and a Bar widget, specified that the HAL pin connected to\n the Bar should be named spindle-speed, and set the maximum value of the bar to 5000 (see widget\n reference below for all options). To make AXIS aware of this file, and call it at start up, we need to\n specify the following in the [DISPLAY] section of the INI file:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 908 / 1224\n \n PYVCP = spindle.xml\n \n If the panel should appear at the bottom of the AXIS user interface then we need to specify the\n following in the [DISPLAY] section of the INI file:\n@@ -42660,15 +42660,15 @@\n assuming that a signal called spindle-rpm-filtered already exists. Note that when running together\n with AXIS, all PyVCP panel widget HAL pins have names that start with pyvcp., all PyVCP embedded\n tab widget HAL pins start with the name specified as EMBED_TAB_NAME converted to lower case.\n \n This is what the newly created PyVCP panel should look like in AXIS. The sim/lathe configuration is\n already configured this way.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 909 / 1224\n \n 12.1.5 Stand Alone\n This section describes how PyVCP panels can be displayed on their own with or without LinuxCNC\u2019s\n machine controller.\n To load a stand alone PyVCP panel with LinuxCNC use these commands:\n@@ -42713,15 +42713,15 @@\n 12.1.6 Widgets\n HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be float,\n s32 or u32. For more information on HAL data types see the HAL Data section. The PyVCP widget\n can either display the value of the signal with an indicator widget, or modify the signal value with a\n control widget. Thus there are four classes of PyVCP widgets that you can connect to a HAL signal. A\n fifth class of helper widgets allow you to organize and label your panel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 910 / 1224\n \n \u2014 Widgets for indicating bit signals: led, rectled.\n \u2014 Widgets for controlling bit signals: button, checkbutton, radiobutton.\n \u2014 Widgets for indicating number signals: number, s32, u32, bar, meter.\n \u2014 Widgets for controlling number signals: spinbox, scale, jogwheel.\n@@ -42764,15 +42764,15 @@\n \u2014 red and red1 - 4\n \u2014 purple and purple1 - 4\n \u2014 gray and gray0 - 100\n HAL Pins HAL pins provide a means to connect the widget to something. Once you create a HAL pin\n for your widget you can connect it to another HAL pin with a net command in a .hal file. For more\n information on the net command see the HAL Commands section.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 911 / 1224\n \n 12.1.6.3 Label\n A label is a way to add text to your panel.\n \u2014 - creates a label.\n \u2014 \u201dtext\u201d - the text to put in your label, a blank label can be used as a spacer to align\n@@ -42812,15 +42812,15 @@\n pyvcp.multilabel.0.legend2\n pyvcp.multilabel.0.legend3\n pyvcp.multilabel.0.legend4\n pyvcp.multilabel.0.legend5\n \n If you have more than one multilabel the pins created would increment the number like this pyvcp.multilabel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 912 / 1224\n \n 12.1.6.5 LEDs\n A LED is used to indicate the status of a bit halpin. The LED color will be on_color when the halpin is\n true, and off_color otherwise.\n \u2014 - makes a round LED\n@@ -42855,15 +42855,15 @@\n \u201d50\u201d\n \u201d100\u201d\n \u201dgreen\u201d\n \u201dred\u201d\n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 913 / 1224\n \n The above code produced this example. Also showing a vertical box with relief.\n \n Figure 12.5 \u2013 Simple Rectangle LED Example\n \n@@ -42890,15 +42890,15 @@\n \n The above code produced this example:\n \n Figure 12.6 \u2013 Simple Buttons Example\n Checkbutton A checkbutton controls a bit halpin. The halpin will be set True when the button is\n 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\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 914 / 1224\n \n automatically, which can toggle the Checkbutton via HAL, if the value linked is changed, to update\n the display remotely.\n \n Figure 12.7 \u2013 Unchecked button\n@@ -42929,15 +42929,15 @@\n [\u201done\u201d,\u201dtwo\u201d,\u201dthree\u201d]\n \u201dmy-radio\u201d\n 0\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 915 / 1224\n \n Figure 12.10 \u2013 Simple Radiobutton Example\n Note that the HAL pins in the example above will be named my-radio.one, my-radio.two, and myradio.three. In the image above, one is the selected value. Use the tag HORIZONTAL\n to display horizontally.\n 12.1.6.7 Number Displays\n@@ -42962,15 +42962,15 @@\n (\u201dcourier 10 pitch\u201d,100)\n \n \u2014 - is a C-style format specified that determines how the number is displayed.\n s32 Number The s32 number widget displays the value of a s32 number. The syntax is the same as\n number except the name which is . Make sure the width is wide enough to cover the largest\n number you expect to use.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 916 / 1224\n \n \n \u201dmy-number\u201d\n (\u201dHelvetica\u201d,24)\n \u201d6d\u201d\n@@ -43010,15 +43010,15 @@\n 136, 150,\u201dred\u201d\n 200\n 50\n 30\n 150\n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n The above code produced this example:\n \n Figure 12.13 \u2013 Simple Bar Example\n Meter Meter displays the value of a FLOAT signal using a traditional dial indicator.\n \n \u201dmymeter\u201d\n@@ -43036,15 +43036,15 @@\n \n The above code produced this example:\n \n Figure 12.14 \u2013 Simple Meter Example\n \n 917 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 918 / 1224\n \n 12.1.6.8 Number Inputs\n Spinbox A spinbox controls a FLOAT pin. You increase or decrease the value of the pin by either\n pressing on the arrows, or pointing at the spinbox and rolling your mouse-wheel. If the param_pin\n field is set TRUE(1), a pin will be created that can be used to set the spinbox to an initial value and to\n@@ -43087,15 +43087,15 @@\n 1\n VERTICAL\n 100\n 0\n 1\n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 919 / 1224\n \n The above code produced this example:\n \n Figure 12.16 \u2013 Simple Scale Example\n Note\n@@ -43120,15 +43120,15 @@\n \u201dgreen\u201d\n \u201dblack\u201d\n 1\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 920 / 1224\n \n Figure 12.17 \u2013 Simple Dial Example\n Jogwheel Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as\n the wheel is turned, either by dragging in a circular motion, or by rolling the mouse-wheel.\n \n@@ -43140,15 +43140,15 @@\n \u201dmy-wheel\u201d\n 45\n 250\n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 921 / 1224\n \n Figure 12.18 \u2013 Simple Jogwheel Example\n \n 12.1.6.9 Images\n Image displays use only .gif image format. All of the images must be the same size. The images must\n@@ -43162,15 +43162,15 @@\n \n \n This example was produced from the above code. Using the two image files fwd.gif and rev.gif. FWD\n is displayed when selectimage is false and REV is displayed when selectimage is true.\n \n Figure 12.19 \u2013 Selectimage False Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 922 / 1224\n \n Figure 12.20 \u2013 Selectimage True Example\n Image u32 The image_u32 is the same as image_bit, except you have essentially an unlimited number\n of images and you select the image by setting the halpin to a integer value with 0 for the first image\n in the images list and 1 for the second image, etc.\n@@ -43183,15 +43183,15 @@\n \n The above code produced the following example by adding the stb.gif image.\n \n Figure 12.21 \u2013 Simple image_u32 Example with halpin=0\n \n Figure 12.22 \u2013 Simple image_u32 Example withhalpin=1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 923 / 1224\n \n Figure 12.23 \u2013 Simple image_u32 Example withhalpin=2\n Notice that the default is the min even though it is set higher than max unless there is a negative min.\n 12.1.6.10 Containers\n Containers are widgets that contain other widgets. Containers are used to group other widgets.\n@@ -43227,15 +43227,15 @@\n \u201dRIDGE\u201d\n 3\n \n \n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 924 / 1224\n \n Figure 12.24 \u2013 Containers Borders Showcase\n Fill Container fill are specified with the tag. Valid entries are none, x, y and both.\n The x fill is a horizontal fill and the y fill is a vertical fill\n \n@@ -43262,15 +43262,15 @@\n The above code produced this example:\n \n Figure 12.25 \u2013 Simple hbox Example\n Inside an Hbox, you can use the , , and tags to choose how items in the box behave when the window is re-sized. The default is\n fill=\u201dy\u201d, anchor=\u201dcenter\u201d, expand=\u201dyes\u201d for an Hbox.\n Vbox Use a Vbox when you want to stack widgets vertically on top of each other.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 925 / 1224\n \n \n RIDGE\n 6\n \n@@ -43296,15 +43296,15 @@\n \n The above code produced this example:\n \n Figure 12.27 \u2013 Simple labelframe Example\n Table A table is a container that allows layout in a grid of rows and columns. Each row is started by\n a tag. A contained widget may span rows or columns through the use of the tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the tag. A table expands on its flexible rows and columns.\n Table Code Example\n

\n@@ -43348,15 +43348,15 @@\n \n \u201dspindle-speed\u201d\n 5000\n \n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \n \n \n \n \n \n The above code produced this example showing each tab selected.\n \n 927 / 1224\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 928 / 1224\n \n Figure 12.29 \u2013 Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -43400,29 +43400,29 @@\n \n The -Wn makes HAL Wait for name to be loaded before proceeding.\n The pyvcp -c makes PyVCP name the panel.\n The HAL pins from panel1.xml will be named btnpanel.<_pin name_>.\n The HAL pins from panel2.xml will be named sppanel.<_pin name_>.\n Make sure the loadusr line is before any nets that make use of the PyVCP pins.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 929 / 1224\n \n 12.2.3 Jog Buttons Example\n In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be\n built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure\n our machine, then on the Advanced Configuration Options page we make a couple of selections to add\n a blank PyVCP panel as shown in the following figure. For this example we named the configuration\n pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard.\n \n Figure 12.30 \u2013 XYZ Wizard Configuration\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 930 / 1224\n \n 12.2.3.1 Create the Widgets\n Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between\n the tags we will add the widgets for our panel.\n Look in the PyVCP Widgets Reference section of the manual for more detailed information on each\n@@ -43475,15 +43475,15 @@\n \u201dz-plus\u201d\n \u201dZ+\u201d\n \n \n \n@@ -43508,15 +43508,15 @@\n \n \n After adding the above you now will have a PyVCP panel that looks like the following attached to the\n right side of AXIS. It looks nice but it does not do anything until you connect the buttons to halui. If\n you get an error when you try and run scroll down to the bottom of the pop up window and usually\n the error is a spelling or syntax error and it will be there.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 932 / 1224\n \n 12.2.3.2 Make Connections\n To make the connections needed open up your custom_postgui.hal file and add the following.\n # connect the X PyVCP buttons\n net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus\n@@ -43566,15 +43566,15 @@\n \u201dgreen\u201d\n \u201dred\u201d\n \n \n \n RIDGE\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 933 / 1224\n \n 2\n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \n \n RAISED\n 2\n
\n@@ -43464,15 +43464,15 @@\n \n \u201dspindle-speed\u201d\n 5000\n \n \n \n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \n \n \n \n \n \n The above code produced this example showing each tab selected.\n \n 960 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 961 / 1279\n \n Figure 12.29: Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -43510,15 +43510,15 @@\n \u2022 Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to\n LinuxCNC.\n The following is an example of a loadusr command to load two PyVCP panels and name each one so\n the connection names in HAL will be known.\n loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml\n loadusr -Wn sppanel pyvcp -c sppanel panel2.xml\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 962 / 1279\n \n The -Wn makes HAL Wait for name to be loaded before proceeding.\n The pyvcp -c makes PyVCP name the panel.\n The HAL pins from panel1.xml will be named btnpanel.<_pin name_>.\n The HAL pins from panel2.xml will be named sppanel.<_pin name_>.\n@@ -43527,27 +43527,27 @@\n 12.2.3 Jog Buttons Example\n In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be\n built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure\n our machine, then on the Advanced Configuration Options page we make a couple of selections to add\n a blank PyVCP panel as shown in the following figure. For this example we named the configuration\n pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 963 / 1279\n \n Figure 12.30: XYZ Wizard Configuration\n 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.\n 12.2.3.1 Create the Widgets\n Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between\n the tags we will add the widgets for our panel.\n Look in the PyVCP Widgets Reference section of the manual for more detailed information on each\n widget documentation des widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n In your custompanel.xml file we will add the description of the widgets.\n \n \n (\u201dHelvetica\u201d,16)\n \n \n@@ -43601,15 +43601,15 @@\n \n \n \n \n \n 964 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 965 / 1279\n \n RAISED\n 3\n \n \n The above gives us a PyVCP panel that looks like the following.\n \n 970 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 971 / 1279\n \n 12.2.5.2 The Connections\n To make it work we add the following code to the custom_postgui.hal file.\n # display the rpm based on freq * rpm per hz\n loadrt mult2\n@@ -43961,15 +43961,15 @@\n custom.hal file whereas the rev led needs to use the spindle-rev bit. You can\u2019t link the spindle-fwd bit\n twice so you use the signal that it was linked to.\n \n 12.2.6 Rapid to Home Button\n This example creates a button on the PyVCP side panel when pressed will send all the axis back to\n the home position. This example assumes you don\u2019t have a PyVCP panel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 972 / 1279\n \n In your configuration directory create the XML file. In this example it\u2019s named rth.xml. In the rth.xml\n file add the following code to create the button.\n \n \n@@ -43984,15 +43984,15 @@\n PYVCP = rth.xml\n \n If you don\u2019t have a [HALUI] section in the INI file create it and add the following MDI command.\n MDI_COMMAND = G53 G0 X0 Y0 Z0\n \n Information about G53 and G0 G-codes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 973 / 1279\n \n In the [HAL] section if you don\u2019t have a post gui file add the following and create a file called postgui.hal.\n POSTGUI_HALFILE = postgui.hal\n \n In the postgui.hal file add the following code to link the PyVCP button to the MDI command.\n@@ -44022,15 +44022,15 @@\n \u2022 Widget set: uses TkInter widgets.\n \u2022 User interface creation: \u201dedit XML file / run result / evaluate looks\u201d cycle.\n \u2022 No support for embedding user-defined event handling.\n \u2022 No LinuxCNC interaction beyond HAL pin I/O supported.\n GladeVCP:\n \u2022 Widget set: relies on the GTK+ widget set.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 974 / 1279\n \n \u2022 User interface creation: uses the Glade WYSIWYG user interface editor.\n \u2022 Any HAL pin change may be directed to call back into a user-defined Python event handler.\n \u2022 Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python.\n \u2022 Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a\n@@ -44054,31 +44054,31 @@\n make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the\n LinuxCNC wiki page.\n \n Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_panel.ini\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Run the same panel, but as a tab inside AXIS:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_tab.ini\n \n 975 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 976 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 977 / 1279\n \n 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\n names), mixed setups are possible as well - for instance a panel on the right hand side, and one or\n more tabs for less-frequently used parts of the interface.\n 12.3.2.1 Exploring the example panel\n@@ -44093,15 +44093,15 @@\n The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI\n command in the interpreter. The third button Execute Oword subroutine is an advanced example - it\n takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword\n subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body.\n 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\n and configs/sim/axis/gladevcp/gladevcp_panel.ini.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 978 / 1279\n \n 12.3.2.2 Exploring the User Interface description\n The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed.\n To edit the user interface, run the command\n $ glade configs/axis/gladevcp/manual-example.ui\n@@ -44136,15 +44136,15 @@\n Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian\n Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error.\n 12.3.3.2 Running Glade to create a new user interface\n This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on\n Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube.\n Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 979 / 1279\n \n \u2022 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with /scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNC-specific\n widgets.\n \u2022 When asked for unsaved preferences, just accept the defaults and hit Close.\n@@ -44159,15 +44159,15 @@\n File\u2192Save as, give it a name like myui.ui and make sure it\u2019s saved as GtkBuilder file (radio button\n left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but\n there is no point in using it. The convention for GtkBuilder file extension is .ui.\n 12.3.3.3 Testing a panel\n You\u2019re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with:\n gladevcp myui.ui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 980 / 1279\n \n GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n@@ -44205,15 +44205,15 @@\n [DISPLAY]\n # add GladeVCP panel where PyVCP used to live:\n GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui\n \n The command line actually run by AXIS for the above is:\n halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example \u2190.ui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 981 / 1279\n \n The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located\n in the same directory as the INI file. You might have to copy them to you directory (alternatively,\n specify a correct absolute or relative path to the file(s))\n \n@@ -44249,15 +44249,15 @@\n 12.3.3.7 Integrating into Touchy\n To do add a GladeVCP tab to Touchy, edit your INI file as follows:\n [DISPLAY]\n # add GladeVCP panel as a tab\n EMBED_TAB_NAME=GladeVCP demo\n EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal \u2190./manual-example.ui\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 982 / 1279\n \n [RS274NGC]\n # gladevcp Demo specific Oword subs live here\n SUBROUTINE_PATH = ../../nc_files/gladevcp_lib\n \n@@ -44295,15 +44295,15 @@\n Force panel window to maximize. Together with the -g geometry option\n one can move the panel to a second monitor and force it to use all of the screen\n -t THEME::\n Set gtk theme. Default is system theme. Different panels can have different themes.\n An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? \u2190GTK_Themes[EMC Wiki].\n -x XID::\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 983 / 1279\n \n Re-parent GladeVCP into an existing window XID instead of creating a\n new top level window\n -u FILE::\n Use File\u2019s as additional user defined modules with handlers\n@@ -44338,15 +44338,15 @@\n So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded\n fashion):\n \u2022 You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the\n right point in time, so comment that out in the INI file.\n \u2022 Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H\n option (see previous section).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 984 / 1279\n \n 12.3.6 HAL Widget reference\n GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended\n to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used\n with the Glade user interface editor. With proper installation, the HAL Widgets should show up in\n@@ -44377,15 +44377,15 @@\n Exceptions to this rule currently are:\n \n \u2022 HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a \n (s32) pin\n \u2022 HAL_ProgressBar, which has a -value input pin, and a -scale input\n pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 985 / 1279\n \n 12.3.6.2 Python attributes and methods of HAL Widgets\n HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the\n applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties\n and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual.\n@@ -44423,15 +44423,15 @@\n callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin\u2019s\n value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback\n into your Python code when - well, a HAL pin changes its value. This means there\u2019s no more need for\n permanent polling of HAL pin changes in your code, the widgets do that in the background and let\n you know.\n Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 986 / 1279\n \n The example in configs/apps/gladevcp/complex shows how this is handled in Python.\n 12.3.6.5 Buttons\n This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton,\n HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical\n@@ -44442,15 +44442,15 @@\n \u2022 Important common methods: set_active(), get_active()\n \u2022 Important properties: label, image\n \n Figure 12.31: Check button\n \n Figure 12.32: Radio buttons\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 987 / 1279\n \n Figure 12.33: Toggle button\n \n Defining radio button groups in Glade:\n \u2022 Decide on default active button.\n@@ -44473,15 +44473,15 @@\n 12.3.6.7 SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n -f\n out FLOAT pin\n -s\n out s32 pin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 988 / 1279\n \n To be useful, Spinbuttons need an adjustment value like scales, see above.\n \n Figure 12.35: Example SpinButton\n \n@@ -44515,15 +44515,15 @@\n Set the content of the label which may be shown over the counts value.\n If the label given is longer than 15 Characters, it will be cut to 15 Characters.\n default = blank\n center_color\n This allows one to change the color of the wheel. It uses a GDK color string.\n default = #bdefbdefbdef (gray)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 989 / 1279\n \n count_type_shown\n There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts.\n default = 1\n \u2022 count is based on the CPR selected - it will count positive and negative. It is available as a s32\n@@ -44564,15 +44564,15 @@\n There are two GObject signals emitted:\n \u2022 count_changed\n Emitted when the widget\u2019s count changes eg. from being wheel scrolled.\n \u2022 scale_changed\n Emitted when the widget\u2019s scale changes eg. from double clicking.\n Connect to these like so:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 990 / 1279\n \n [widget name].connect(\u2019count_changed\u2019, [count function name])\n [widget name].connect(\u2019scale_changed\u2019, [scale function name])\n \n The callback functions would use this pattern:\n@@ -44594,15 +44594,15 @@\n may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough\n movements the drag and drop way.\n jogwheel exports it\u2019s count value as HAL pin:\n -s\n out s32 pin\n jogwheel has the following properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 991 / 1279\n \n size\n Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40\n@@ -44625,15 +44625,15 @@\n Sets the label content with \u201dstring\u201d\n \n Figure 12.37: Example JogWheel\n \n 12.3.6.10 Speed Control\n 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.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 992 / 1279\n \n The value is controlled with two button to increase or decrease the value. The increment will change\n as long a button is pressed. The value of each increment as well as the time between two changes\n can be set using the widget properties.\n speedcontrol offers some HAL pin:\n@@ -44678,15 +44678,15 @@\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n Default is 100.0.\n If you change this value, the increment will be reset to default, so it might be necessary to set\n afterwards a new increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 993 / 1279\n \n increment\n Float\n Sets the applied increment per mouse click.\n Allowed values are 0.001 to 99999.0 and -1.\n@@ -44732,15 +44732,15 @@\n \u2022 [widget name].get_value()\n Will return the counts value as float\n \u2022 [widget name].set_value(float(value))\n Sets the widget to the commanded value\n \u2022 [widget name].set_digits(int(value))\n Sets the digits of the value to be used\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 994 / 1279\n \n \u2022 [widget name].hide_button(bool(value))\n Hide or show the button\n \n Figure 12.38: Example Speedcontrol\n@@ -44771,15 +44771,15 @@\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n Have one HAL BIT input pin which controls if their child widgets are sensitive or not.\n Pin: , .\n in bit pin\n If the pin is low then child widgets are inactive which is the default state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 995 / 1279\n \n State_Sensitive_Table\n Responds to the state to LinuxCNC\u2019s interpreter.\n Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle.\n You can combine them. It will always be insensitive at Estop.\n@@ -44818,15 +44818,15 @@\n led_blink_rate\n If set and LED is ON then it\u2019s blinking.\n Blink period is equal to \u201dled_blink_rate\u201d specified in milliseconds.\n create_hal_pin\n Select/deselect creation of a HAL pin to control the LED.\n With no HAL pin created LED can be controlled with a Python function.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 996 / 1279\n \n As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification\n in your code when the LED\u2019s HAL pin was changed, then connect this signal to a handler, for example\n on_led_pin_changed and provide the handler as follows:\n def on_led_pin_changed(self,hal_led,data=None):\n@@ -44858,15 +44858,15 @@\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n text_template\n Text template to display the current value of the pin.\n Python formatting may be used for dict {\u201dvalue\u201d:value}.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 997 / 1279\n \n Figure 12.40: Example HAL_ProgressBar\n \n 12.3.6.15 ComboBox\n HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list.\n@@ -44896,15 +44896,15 @@\n invert\n Swap min and max direction.\n An inverted HBar grows from right to left, an inverted VBar from top to bottom.\n min, max\n Minimum and maximum value of desired range. It is not an error condition if the current value\n is outside this range.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 998 / 1279\n \n show limits\n Used to select/deselect the limits text on bar.\n zero\n Zero point of range.\n@@ -44942,15 +44942,15 @@\n to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border\n and zone 2 from last border to 1.\n Borders are set as fractions.\n Valid values range from 0 to 1.\n \n Figure 12.41: Horizontal bar\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 999 / 1279\n \n Figure 12.42: Vertical bar\n \n 12.3.6.17 Meter\n HAL_Meter is a widget similar to PyVCP meter - it represents a float value.\n@@ -44979,15 +44979,15 @@\n z0_border, z1_border\n Define up bounds of color zones.\n By default only one zone is enabled. If you want more then one zone set z0_border and z1_border\n to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second\n border and zone 2 from last border to max.\n Borders are set as values in range min-max.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1000 / 1279\n \n Figure 12.43: Example HAL Meters\n \n 12.3.6.18 HAL_Graph\n This widget is for plotting values over time.\n@@ -45012,15 +45012,15 @@\n show rapids\n This tells the plotter to show the rapid moves.\n Default = true.\n show DTG\n This selects the DRO to display the distance-to-go value.\n Default = true.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1001 / 1279\n \n show relative\n This selects the DRO to show values relative to user system or machine coordinates.\n Default = true.\n show live plot\n@@ -45064,15 +45064,15 @@\n Mouse button handling: leads to different functions of the button:\n \u2022 0 = default: left rotate, middle move, right zoom\n \u2022 1 = left zoom, middle move, right rotate\n \u2022 2 = left move, middle rotate, right zoom\n \u2022 3 = left zoom, middle rotate, right move\n \u2022 4 = left move, middle zoom, right rotate\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1002 / 1279\n \n \u2022 5 = left rotate, middle zoom, right move\n \u2022 6 = left move, middle zoom, right zoom\n Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines.\n There a couple ways to directly control the widget using Python.\n@@ -45110,15 +45110,15 @@\n \u2022 If you set all the plotting options false but show_offsets true you get an offsets page instead of\n a graphics plot.\n \u2022 If you get the zoom distance before changing the view then reset the zoom distance, it\u2019s much\n more user friendly.\n \u2022 if you select an element in the preview, the selected element will be used as rotation center\n point\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.44: Gremlin Example\n \n 12.3.6.20 HAL_Offset\n The HAL_Offset widget is used to display the offset of a single axis.\n HAL_Offset has the following properties:\n Joint Number\n@@ -45136,15 +45136,15 @@\n The DRO widget is used to display the current axis position.\n It has the following properties:\n Actual Position\n select actual (feedback) position or commanded position.\n \n 1003 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1004 / 1279\n \n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n@@ -45182,15 +45182,15 @@\n By clicking on the DRO the Order of the DRO will toggle around.\n In Relative Mode the actual coordinate system will be displayed.\n Combi_DRO has the following properties:\n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis vrs. joint number are:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1005 / 1279\n \n 0:X 1:Y 2:Z etc.\n actual\n Select actual (feedback) or commanded position.\n metric_units\n@@ -45235,15 +45235,15 @@\n cycle_time\n The time the DRO waits between two polls.\n this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis\n config, to avoid, that the DRO slows down the main application too much.\n The value must be an integer in the range of 100 to 1000. FIXME unit=ms ?\n Default is 150.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1006 / 1279\n \n Using GObject to set the above listed properties:\n [widget name].set_property(property, value)\n \n There are several Python methods to control the widget:\n@@ -45283,15 +45283,15 @@\n \u2013 Absolute = the machine coordinates, depends on the actual property will give actual or commanded position.\n \u2013 Relative = will be the coordinates of the actual coordinate system.\n \u2013 DTG = the distance to go.\n Will mostly be 0, as this function should not be used while the machine is moving, because of time\n delays.\n The widget will emit the following signals:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1007 / 1279\n \n \u2022 clicked\n This signal is emitted, when the user has clicked on the Combi_DRO widget.\n It will send the following data:\n \u2013 widget = widget object\n@@ -45321,15 +45321,15 @@\n \u2022 [widget name].system\n The actual system, as mentioned in the system_changed signal.\n \u2022 [widget name].homed\n True if the joint is homed.\n \u2022 [widget name].machine_units\n 0 if Imperial, 1 if Metric.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1008 / 1279\n \n Figure 12.45: Example: Three Combi_DRO in a window\n X = Relative Mode\n Y = Absolute Mode\n Z = DTG Mode\n@@ -45354,15 +45354,15 @@\n Sets the file filter for the objects to be shown.\n Must be a string containing a comma separated list of extensions to be shown.\n Default is \u201dngc,py\u201d.\n sortorder\n Sets the sorting order of the displayed icon.\n Must be an integer value from 0 to 3, where:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1009 / 1279\n \n \u2022 0 = ASCENDING (sorted according to file names)\n \u2022 1 = DESCENDING (sorted according to file names)\n \u2022 2 = FOLDERFIRST (show the folders first, then the files), default\n \u2022 3 = FILEFIRST (show the files first, then the folders)\n@@ -45406,15 +45406,15 @@\n [widget name].btn_sel_next.emit(\u201dclicked\u201d)\n [widget name].btn_get_selected.emit(\u201dclicked\u201d)\n [widget name].btn_dir_up.emit(\u201dclicked\u201d)\n [widget name].btn_exit.emit(\u201dclicked\u201d)\n \n The widget will emit the following signals:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1010 / 1279\n \n \u2022 selected\n This signal is emitted when the user selects an icon.\n It will return a string containing a file path if a file has been selected, or None if a directory has been\n selected.\n@@ -45429,15 +45429,15 @@\n \u2013 state is a boolean and will be True or False.\n \u2022 exit\n This signal is emitted when the exit button has been pressed to close the IconView.\n Mostly needed if the application is started as stand alone.\n \n Figure 12.46: Iconview Example\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1011 / 1279\n \n 12.3.6.24 Calculator widget\n This is a simple calculator widget, that can be used for numerical input.\n You can preset the display and retrieve the result or that preset value.\n calculator has the following properties:\n@@ -45470,15 +45470,15 @@\n \n tooleditor has the following properties:\n Hidden Columns\n This will hide the given columns.\n The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q.\n You can hide any number of columns including the select and comments.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1012 / 1279\n \n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n [widget name].set_properties(\u2019hide_columns\u2019,\u2019uvwijq\u2019)\n \n@@ -45517,15 +45517,15 @@\n Convenience method to hide buttons.\n You must call this after show_all().\n \u2022 [widget name].get_selected_tool()\n Return the user selected (highlighted) tool number.\n \u2022 [widget name].set_selected_tool(toolnumber)\n Selects (highlights) the requested tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1013 / 1279\n \n Figure 12.47: Tooleditor Example\n \n 12.3.6.26 Offsetpage\n The Offsetpage widget is used to display/edit the offsets of all the axes.\n@@ -45550,15 +45550,15 @@\n Text template for metric units\n You can use Python formatting to display the position with different precision.\n Text template for imperial units\n You can use Python formatting to display the position with different precision.\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1014 / 1279\n \n [widget name].set_property(\u201dhighlight_color\u201d,gdk.Color(\u2019blue\u2019))\n [widget name].set_property(\u201dforeground_color\u201d,gdk.Color(\u2019black\u2019))\n [widget name].set_property(\u201dhide_columns\u201d,\u201dxyzabcuvwt\u201d)\n [widget name].set_property(\u201dhide_rows\u201d,\u201d123456789abc\u201d)\n@@ -45584,15 +45584,15 @@\n This is a list of a list of offset-name/user-name pairs.\n The default text is the same as the offset name.\n \u2022 [widget name].get_names()\n This returns a list of a list of row-keyword/user-name pairs.\n The user name column is editable, so saving this list is user friendly.\n See set_names above.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1015 / 1279\n \n Figure 12.48: Offsetpage Example\n \n 12.3.6.27 HAL_sourceview widget\n \n@@ -45613,15 +45613,15 @@\n Sets the line to highlight.\n Uses the sourceview line numbers.\n \u2022 [widget name].get_line_number()\n Returns the currently highlighted line.\n \u2022 [widget name].line_up()\n Moves the highlighted line up one line.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1016 / 1279\n \n \u2022 [widget name].line_down()\n Moves the highlighted line down one line.\n \u2022 [widget name].load_file(\u2019filename\u2019)\n Loads a file.\n@@ -45643,15 +45643,15 @@\n use_double_click\n Boolean, True enables the mouse double click feature and a double click on an entry will submit\n that command.\n It is not recommended to use this feature on real machines, as a double click on a wrong entry\n may cause dangerous situations\n Using goobject to set the above listed properties:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1017 / 1279\n \n [widget name].set_property(\u201dfont_size_tree\u201d,10)\n [widget name].set_property(\u201dfont_size_entry\u201d,20)\n [widget name].set_property(\u201duse_double_click\u201d,False)\n \n@@ -45664,15 +45664,15 @@\n \n Figure 12.50: HAL widgets in a bitmap Example\n \n 12.3.7 Action Widgets Reference\n GladeVCP includes a collection of \u201dcanned actions\u201d called VCP Action Widgets for the Glade user\n interface editor.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1018 / 1279\n \n Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the\n G-code interpreter.\n \n VCP Action Widgets are derived from the Gtk.Action widget.\n@@ -45695,15 +45695,15 @@\n The command string may use special keywords to access important functions.\n \u2022 ACTION for access to the ACTION command library.\n \u2022 GSTAT for access to the Gstat status message library.\n \u2022 INFO for access to collected data from the INI file.\n \u2022 HAL for access to the HAL linuxcnc Python module\n \u2022 STAT for access to LinuxCNC\u2019s raw status via the LinuxCNC Python module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1019 / 1279\n \n \u2022 CMD for access to LinuxCNC\u2019s commands via the LinuxCNC Python module.\n \u2022 EXT for access to the handler file functions if available.\n \u2022 linuxcnc for access to the LinuxCNC Python module.\n \u2022 self for access to the widget instance.\n@@ -45737,15 +45737,15 @@\n that the requested operation is running:\n \u2022 The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is\n idle again.\n \u2022 The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then\n allows user to send AUTO_ABORT command.\n \u2022 The MDI toggle sends given MDI command and waits for its completion in pressed inactive state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1020 / 1279\n \n 12.3.7.4 The Action_MDI Toggle and Action_MDI widgets\n These widgets provide a means to execute arbitrary MDI commands.\n The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which\n remains disabled until command complete.\n@@ -45764,15 +45764,15 @@\n 12.3.7.6 Parameter passing with Action_MDI and ToggleAction_MDI widgets\n 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\n works:\n \u2022 assume you have a HAL SpinBox named speed, and you want to pass it\u2019s current value as a parameter in an MDI command.\n \u2022 The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description).\n \u2022 To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name}\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1021 / 1279\n \n \u2022 for the above HAL SpinBox, we could use (MSG, \u201dThe speed is: ${speed-f}\u201d) just to show what\u2019s\n happening.\n The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here\u2019s what you\n get when running it:\n@@ -45788,15 +45788,15 @@\n Figure 12.54: Action_MDI Advanced Example\n \n 12.3.7.8 Preparing for an MDI Action, and cleaning up afterwards\n 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\n might get changed by the command or subroutine - for example, a probing subroutine will very likely\n set the feed value quite low. With no further precautions, your previous feed setting will be overwritten by the probing subroutine\u2019s value.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1022 / 1279\n \n 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\n any state before executing the MDI Action, and to restore it to previous values afterwards. The signal\n names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade like\n any other handler.\n@@ -45833,15 +45833,15 @@\n \u2022 mode-related:\n \u2013 mode-manual: emitted when LinuxCNC enters manual mode,\n \u2013 mode-mdi: emitted when LinuxCNC enters MDI mode,\n \u2013 mode-auto: emitted when LinuxCNC enters automatic mode,\n \u2022 interpreter-related: emitted when the G-code interpreter changes into that mode\n \u2013 interp-run\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1023 / 1279\n \n \u2013 interp-idle\n \u2013 interp-paused\n \u2013 interp-reading\n \u2013 interp-waiting\n@@ -45880,15 +45880,15 @@\n print(INFO.MACHINE_IS_METRIC)\n ACTION.SET_ERROR_MESSAGE(\u2019Something went wrong\u2019)\n \n More information can be found here: GladeVCP Libraries modules There is a sample configuration\n that demonstrates using the core library with GladeVCP\u2019s action Python widgets and with a Python\n handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1024 / 1279\n \n 12.3.8.3 An example: adding custom user callbacks in Python\n This is just a minimal example to convey the idea - details are laid out in the rest of this section.\n GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in\n Python. This could be used, among others, to execute MDI commands. Here\u2019s how you do it:\n@@ -45923,15 +45923,15 @@\n The overall approach is as follows:\n \u2022 Design your UI with Glade, and set signal handlers where you want actions associated with a widget.\n \u2022 Write a Python module which contains callable objects (see handler models below).\n \u2022 Pass your module\u2019s path name to GladeVCP with the -u option.\n \u2022 GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree.\n \u2022 The main event loop is run.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1025 / 1279\n \n For simple tasks it\u2019s sufficient to define functions named after the Glade signal handlers. These will be\n called when the corresponding event happens in the widget tree. Here\u2019s a trivial example - it assumes\n that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press:\n nhits = 0\n@@ -45977,15 +45977,15 @@\n self.active = False\n # connect to client-events from the host GUI\n def on_map_event(self, widget, data=None):\n top = widget.get_toplevel()\n print(\u201dmap event\u201d)\n top.connect(\u2019client-event\u2019, self.event)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1026 / 1279\n \n If during module inspection GladeVCP finds a function get_handlers, it calls it as follows:\n get_handlers(halcomp,builder,useropts)\n \n The arguments are:\n@@ -46020,15 +46020,15 @@\n screen). And the HAL component isn\u2019t ready as well, so its unsafe to access pins values in your\n __init__() method.\n If you want to have a callback to execute at program start after it is safe to access HAL pins, then a\n connect a handler to the realize signal of the top level window1 (which might be its only real purpose).\n At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about\n to enter the Gtk main loop.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1027 / 1279\n \n 12.3.8.7 Multiple callbacks with the same name\n Within a class, method names must be unique. However, it is OK to have multiple class instances\n passed to GladeVCP by get_handlers() with identically named methods. When the corresponding\n signal occurs, these methods will be called in definition order - module by module, and within a module,\n@@ -46068,15 +46068,15 @@\n are saved and to be restored. In the case of signature mismatch, a new INI file with default settings\n is generated.\n 12.3.8.10 Using persistent variables\n If you want any of Gtk widget state, HAL widgets output pin\u2019s values and/or class attributes of your\n handler class to be retained across invocations, proceed as follows:\n \u2022 Import the gladevcp.persistence module.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1028 / 1279\n \n \u2022 Decide which instance attributes, and their default values you want to have retained, if any.\n \u2022 Decide which widgets should have their state retained.\n \u2022 Describe these decisions in your handler class\u2019 \\__init()__ method through a nested dictionary\n as follows:\n@@ -46117,15 +46117,15 @@\n ini.restore_state(obj)\n Restore HAL out pins and obj\u2019s attributes as saved/initialized to default as above.\n 12.3.8.11 Saving the state on GladeVCP shutdown\n To save the widget and/or variable state on exit, proceed as follows:\n \u2022 Select some interior widget (type is not important, for instance a table).\n \u2022 In the Signals tab, select GtkObject. It should show a destroy signal in the first column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1029 / 1279\n \n \u2022 Add the handler name, e.g. on_destroy to the second column.\n \u2022 Add a Python handler like below:\n import gtk\n ...\n@@ -46164,15 +46164,15 @@\n 12.3.8.14 Adding HAL pins\n If you need HAL pins which are not associated with a specific HAL widget, add them as follows:\n import hal_glib\n ...\n # in your handler class __init__():\n self.example_trigger = hal_glib.GPin(halcomp.newpin(\u2019example-trigger\u2019, hal.HAL_BIT, hal. \u2190HAL_IN))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1030 / 1279\n \n To get a callback when this pin\u2019s value changes, associate a value-change callback with this pin, add:\n self.example_trigger.connect(\u2019value-changed\u2019, self._on_example_trigger_change)\n \n and define a callback method (or function, in this case leave out the self parameter):\n@@ -46214,15 +46214,15 @@\n self.max_value = hal_glib.GPin(halcomp.newpin(\u2019max-value\u2019, hal.HAL_FLOAT, hal. \u2190HAL_IN))\n self.max_value.connect(\u2019value-changed\u2019, self._on_max_value_change)\n inifile = linuxcnc.ini(os.getenv(\u201dINI_FILE_NAME\u201d))\n mmin = float(inifile.find(\u201dMETER\u201d, \u201dMIN\u201d) or 0.0)\n self.meter = self.builder.get_object(\u2019meter\u2019)\n self.meter.min = mmin\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1031 / 1279\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17 Examples, and rolling your own GladeVCP application\n@@ -46258,15 +46258,15 @@\n that works fine. It doesn\u2019t work for window1.\n 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value\n 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\n 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\n but is otherwise invisible - see the coloredlabel.ui file.\n 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero?\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1032 / 1279\n \n This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely\n to be the case for all widgets using adjustment. The workaround mentioned for instance in\n http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin\n value, it is better to set it explicitly in an on_realize signal handler during widget creation. See\n@@ -46307,15 +46307,15 @@\n 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\n items reported by the script linuxcnc_var:\n $ linuxcnc_var LINUXCNC_AUX_GLADEVCP\n /usr/share/linuxcnc/aux_gladevcp\n $ linuxcnc_var LINUXCNC_AUX_EXAMPLES\n /usr/share/linuxcnc/aux_examples\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1033 / 1279\n \n 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\n is imported at GladeVCP startup and made available to subsequent GladeVCP applications including\n embedded usage in supporting GUIs.\n 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\n@@ -46353,15 +46353,15 @@\n MACRO_PATH_LIST = []\n INI_MACROS = self.INI.findall(\u201dDISPLAY\u201d, \u201dMACRO\u201d)\n IMAGE_PATH = IMAGEDIR\n LIB_PATH = os.path.join(HOME, \u201dshare\u201d,\u201dqtvcp\u201d)\n PROGRAM_FILTERS = None\n PARAMETER_FILE = None\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n MACHINE_IS_LATHE = False\n MACHINE_IS_METRIC = False\n MACHINE_UNIT_CONVERSION = 1\n MACHINE_UNIT_CONVERSION_9 = [1]*9\n TRAJ_COORDINATES =\n JOINT_COUNT = int(self.INI.find(\u201dKINS\u201d,\u201dJOINTS\u201d)or 0)\n@@ -46414,15 +46414,15 @@\n (heading: [EMCIO], title:TOOL_TABLE)\n (heading: [HAL], title: POSTGUI_HALFILE)\n \n There are some helper functions - mostly used for widget support\n \n 1034 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1035 / 1279\n \n get_error_safe_setting(self, heading, detail, default=None)\n convert_metric_to_machine(data)\n convert_imperial_to_machine(data)\n convert_9_metric_to_machine(data)\n@@ -46465,15 +46465,15 @@\n ACTION = Action()\n \n To access Action commands use general syntax such as these:\n ACTION.SET_ESTOP_STATE(state)\n ACTION.SET_MACHINE_STATE(state)\n ACTION.SET_MACHINE_HOMING(joint)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SET_MACHINE_UNHOMED(joint)\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.SET_MDI_MODE()\n ACTION.SET_MANUAL_MODE()\n ACTION.SET_AUTO_MODE()\n ACTION.SET_LIMITS_OVERRIDE()\n@@ -46514,15 +46514,15 @@\n ACTION.SET_FLOOD_OFF()\n ACTION.TOGGLE_MIST()\n ACTION.SET_MIST_ON()\n ACTION.SET_MIST_OFF()\n \n 1036 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1037 / 1279\n \n ACTION.RELOAD_TOOLTABLE()\n ACTION.UPDATE_VAR_FILE()\n ACTION.TOGGLE_OPTIONAL_STOP()\n ACTION.SET_OPTIONAL_STOP_ON()\n@@ -46548,60 +46548,60 @@\n to create a GUI screen for running a CNC machine.\n QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python\n code for even finer grain customization.\n \n 12.5.1 Showcase\n Few examples of QtVCP built screens and virtual control panels:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.55: QtDragon - 3/4-Axis Sample\n \n 1038 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.56: QtDefault - 3-Axis Sample\n \n 1039 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1040 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.58: Blender - 4-Axis Sample\n \n 1041 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.59: X1mill - 4-Axis Sample\n \n 1042 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.60: cam_align - Camera Alignment VCP\n \n 1043 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.61: test_panel - Test Panel VCP\n \n 12.5.2 Overview\n Two files are used, individually or in combination, to add customizations:\n \n 1044 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1045 / 1279\n \n \u2022 A UI file that is a XML file made with Qt Designer graphical editor.\n \u2022 A handler file which is a Python code text file.\n Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and\n handler files.\n@@ -46633,15 +46633,15 @@\n \n Options\n \u2022 -d Debugging on.\n \u2022 -i Enable info output.\n \u2022 -v Enable verbose debug output.\n \u2022 -q Enable only error debug output.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1046 / 1279\n \n \u2022 -a Set window always on top.\n \u2022 -c NAME HAL component name. Default is to use the UI file name.\n \u2022 -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\n -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100\n@@ -46677,15 +46677,15 @@\n 12.5.2.4 Handler Files\n A handler file is a file containing Python code, which adds to QtVCP default routines.\n A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify\n QtVCP\u2019s core code. In this way you can have custom behaviors.\n If present a handler file will be loaded.\n Only one file is allowed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1047 / 1279\n \n 12.5.2.5 Libraries Modules\n QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt\n behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install).\n Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what\n@@ -46715,15 +46715,15 @@\n QtVCP will look for a folder named (in the launched configuration folder that holds\n the INI file).\n In that folder, QtVCP will load any of the available following files:\n \u2022 .ui,\n \u2022 _handler.py, and\n \u2022 .qss.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1048 / 1279\n \n 12.5.2.8 Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Minor StyleSheet Changes Stylesheets can be used to set Qt properties.\n If a widget uses properties they usually can be modified by stylesheets.\n@@ -46763,46 +46763,46 @@\n basename in the edit box.\n \u2022 Validate to copy all the files\n \u2022 Delete the files you don\u2019t wish to modifyso that the original files will be used.\n \n 12.5.3 VCP Panels\n QtVCP can be used to create control panels that interface with HAL.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1049 / 1279\n \n 12.5.3.1 Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n Figure 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.63: cam_align - Camera Alignment VCP\n sim_panel\n A small control panel to simulate MPG jogging controls etc.\n For simulated configurations.\n \n 1050 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.64: QtVCP Sim Builtin Panel\n vismach_mill_xyz\n 3D openGL view of a 3-Axis milling machine.\n \n 1051 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1052 / 1279\n \n Figure 12.65: QtVismach - 3-Axis Mill Builtin Panel\n You can load these from the terminal or from a HAL file with this basic command:\n loadusr qtvcp test_panel\n \n@@ -46811,15 +46811,15 @@\n \n In this way HAL will wait till the HAL pins are made before continuing on.\n 12.5.3.2 Custom Panels\n You can of course make your own panel and load it.\n If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load\n this from a terminal with:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1053 / 1279\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -46868,15 +46868,15 @@\n 1\n \n In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing\n to run the next HAL command.\n This is to ensure that the panel created HAL pins are actually done in case they are used in the\n rest of the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1054 / 1279\n \n 12.5.4 Build A Simple Clean-sheet Custom Screen\n \n Figure 12.66: QtVCP Ugly custom screen\n 12.5.4.1 Overview\n@@ -46892,15 +46892,15 @@\n \n Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the\n qtvcp_plugin.py in one of the folders that Qt Designer will search into.\n In a RIP version of LinuxCNC qtvcp_plugin.py will be:\n \u2019~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py\u2019\n For a Package installed version it should be:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1055 / 1279\n \n \u2019usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py\u2019 or\n \u2019usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py\u2019\n Make a symbolic link to the above file and move it to one of the places Qt Designer searches in.\n Qt Designer searches in these two place for links (pick one):\n@@ -46935,15 +46935,15 @@\n \n We are going to make this window a specific non resizeable size:\n Set MainWindow Minimum and Maximum Size\n \u2022 Grab the corner of the window and resize to an appropriate size, say 1000x600.\n \u2022 Right click on the window and click set minimum size.\n \u2022 Do it again and set maximum size.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1056 / 1279\n \n Our sample widget will now not be resizable.\n Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main\n window.\n This widget doesn\u2019t add anything visually but sets up some common options.\n@@ -46977,28 +46977,28 @@\n \u2022 Click the machine_on action checkbox you will see in the list of properties and values.\n The button will now control machine on/off.\n Do the same for all the other button with the addition of:\n \u2022 With the Home button we must also change the joint_number property to -1.\n This tells the controller to home all the axes rather then a specific axis.\n \u2022 With the Pause button:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2013 Under the Indicated_PushButton heading check the indicator_option.\n \u2013 Under the QAbstactButton heading check checkable.\n \n 1057 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1058 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1059 / 1279\n \n Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder.\n We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler\n file to display it.\n 12.5.4.4 Handler file\n@@ -47031,15 +47031,15 @@\n \u2022 after the screen is built,\n \u2022 after all the POSTGUI_HALFILEs are run.\n In our example there are no HAL pins to connect.\n \n 12.5.5 Handler File In Detail\n Handler files are used to create custom controls using Python.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.5.5.1 Overview\n Here is a sample handler file.\n It\u2019s broken up in sections for ease of discussion.\n ############################\n # **** IMPORT SECTION **** #\n ############################\n@@ -47086,15 +47086,15 @@\n def initialized__(self):\n pass\n def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl):\n # when typing in MDI, we don\u2019t want keybinding to call functions\n \n 1060 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1061 / 1279\n \n # so we catch and process the events directly.\n # We do want ESC, F1 and F2 to call keybinding functions though\n if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2,\n QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5):\n@@ -47145,15 +47145,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n # keyboard jogging from key binding calls\n # double the rate if fast is true\n def kb_jog(self, state, joint, direction, fast = False, linear = True):\n if not STATUS.is_man_mode() or not STATUS.machine_is_on():\n return\n if linear:\n@@ -47202,15 +47202,15 @@\n def on_keycall_ZPOS(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, 1, shift)\n def on_keycall_ZNEG(self,event,state,shift,cntrl):\n self.kb_jog(state, 2, -1, shift)\n \n 1062 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1063 / 1279\n \n def on_keycall_APOS(self,event,state,shift,cntrl):\n pass\n #self.kb_jog(state, 3, 1, shift, False)\n def on_keycall_ANEG(self,event,state,shift,cntrl):\n@@ -47245,15 +47245,15 @@\n 12.5.5.5 INITIALIZE Section\n Like all Python libraries the +__init__+ function is called when the library is first instantiated.\n This is where you would set up defaults, as well as reference variables and global variables.\n The widget references are not available at this point.\n The variables halcomp, widgets and paths give access to QtVCP\u2019s HAL component, widgets, and path\n info respectively.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1064 / 1279\n \n 12.5.5.6 SPECIAL FUNCTIONS Section\n There are several special functions that QtVCP looks for in the handler file.\n If QtVCP finds these it will call them, if not it will silently ignore them.\n initialized__(self):\n@@ -47288,15 +47288,15 @@\n The Linux system will not shutdown if using this function, you will have to do that yourself.\n QtVCP/LinuxCNC will terminate without a prompt once this function returns.\n closing_cleanup__(self):\n This function is called just before the screen closes. It can be used to do cleanup before closing.\n 12.5.5.7 STATUS CALLBACKS Section\n By convention this is where you would put functions that are callbacks from STATUS definitions.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1065 / 1279\n \n 12.5.5.8 CALLBACKS FROM FORM Section\n By convention this is where you would put functions that are callbacks from the widgets connected\n to the MainWindow in the Qt Designer editor.\n 12.5.5.9 GENERAL FUNCTIONS Section\n@@ -47326,15 +47326,15 @@\n 12.5.6.1 Overview\n In the Qt Designer editor:\n \u2022 You create user function slots\n \u2022 You connect the slots to widgets using signals.\n In the handler file:\n \u2022 You create the slot\u2019s functions defined in Qt Designer.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1066 / 1279\n \n 12.5.6.2 Using Qt Designer to add Slots\n When you have loaded your screen into Qt Designer, add a plain PushButton to the screen.\n You could change the name of the button to something interesting like test_button.\n There are two ways to edit connections - This is the graphical way.\n@@ -47350,15 +47350,15 @@\n \u2022 You can now edit a new slot name.\n \u2022 Erase the default name slot() and change it to test_button()\n \u2022 Press the OK button.\n \u2022 You\u2019ll be back to the Configure Connections dialog.\n \u2022 Now you can select your new slot in the slot list.\n \u2022 Then press OK and save the file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1067 / 1279\n \n Figure 12.68: Qt Designer Signal/Slot Selection\n \n 12.5.6.3 Python Handler Changes\n Now you must add the function to the handler file.\n@@ -47375,15 +47375,15 @@\n \n In fact it doesn\u2019t matter where in the handler class you put the commands but by convention this is\n where to put it.\n Save the handler file.\n Now when you load your screen and press the button it should print the name of the button in the\n terminal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1068 / 1279\n \n 12.5.7 More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -47400,28 +47400,28 @@\n In a terminal type qtvcp list to see a list.\n 12.6.1.1 copy\n Used for copying QtVCP\u2019s builtin Screens/VCP Panels/QtVismach code to a folder so one can\n customize it.\n In a terminal run:\n qtvcp copy\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1069 / 1279\n \n Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 test_dial\n \u2022 This panel has a dial that adjusts S32 and Float HAL output pins.\n \u2022 The dial\u2019s range can be adjusted from a drop down menu.\n \u2022 The output can be scaled with the spinbox.\n \u2022 A combobox can be used to automatically select and connect to a signal.\n loadusr qtvcp test_dial\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n 12.6.1.3 test_button\n \u2022 This panel has a button that will set a HAL pin.\n \u2022 The button can be selected as a momentary or a toggle button.\n \u2022 The button\u2019s indicator color can be adjusted from a drop down menu.\n@@ -47436,15 +47436,15 @@\n The -o switch sets how many buttons the panel starts with.\n If loading directly from a terminal omit the loadusr.\n \n Figure 12.71: QtVCP test_button - Test Button VCP\n \n 1070 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1071 / 1279\n \n 12.6.1.4 test_led\n \u2022 This panel has an LED that can selected to watch HAL bit pins/signals.\n \u2022 The LED\u2019s color can be adjusted from a drop down menu.\n \u2022 The text box and state can be output as speech if sound is selected.\n@@ -47460,24 +47460,24 @@\n \n Figure 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.5 test_panel\n Collection of useful widgets for testing HAL component, including speech of LED state.\n loadusr qtvcp test_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.6 cam_align\n A camera display widget for rotational alignment.\n \n 1072 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1073 / 1279\n \n Figure 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel\n Usage Add these lines to the INI file:\n [DISPLAY]\n EMBED_TAB_NAME = cam_align\n@@ -47491,15 +47491,15 @@\n You can add window width and height size, rotation increment, and camera number from the INI with\n -o options.\n EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size \u2190=400,400 -o rotincr=.2 -o camnumber=0 cam_align\n \n Mouse controls:\n \u2022 left mouse single click - increase cross hair rotation one increment\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1074 / 1279\n \n \u2022 right mouse single click - decrease cross hair rotation one increment\n \u2022 middle mouse single click - cycle through rotation increments\n \u2022 left mouse hold and scroll - scroll camera zoom\n \u2022 right mouse hold and scroll - scroll cross hair rotation angle\n@@ -47517,83 +47517,83 @@\n Note the comma and text after is optional - it will override the default button text.\n These buttons are QtVCP action buttons and follow those rules.\n 12.6.1.7 sim_panel\n Small control panel to simulate MPG jogging controls etc.\n For simulated configurations\n loadusr qtvcp sim_panel\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1075 / 1279\n \n Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.8 tool_dialog\n Manual tool change dialog that gives tool description.\n loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog\n \n Options:\n \u2022 -o notify_on - use desktop notify dialogs instead of QtVCP native ones.\n \u2022 -o audio_on - play sound on tool change\n \u2022 -o speak_on - speak announcement of tool change\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.76: QtVCP tool_dialog - Manual Tool Change Dialog\n \n 12.6.2 vismach 3D Simulation Panels\n These panels are prebuilt simulation of common machine types.\n These are also embed-able in other screens such as AXIS or GMOCCAPY.\n 12.6.2.1 QtVCP vismach_mill_xyz\n 3D OpenGL view of a 3-Axis milling machine.\n loadusr qtvcp vismach_mill_xyz\n \n 1076 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2 QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n 1077 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_millturn\n 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle.\n loadusr qtvcp vismach_millturn\n \n 1078 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.4 QtVCP vismach_mill_5axis_gantry\n 3D OpenGL view of a 5-Axis gantry type milling machine.\n loadusr qtvcp vismach_mill_5axis_gantry\n \n 1079 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1080 / 1279\n \n Figure 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.5 QtVCP vismach_fanuc_200f\n 3D openGL view of a 6 joint robotic arm.\n loadusr qtvcp vismach_fanuc_200f\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1081 / 1279\n \n Figure 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm\n \n 12.6.3 Custom Virtual Control Panels\n You can of course make your own panel and load it.\n@@ -47621,15 +47621,15 @@\n # connect pins\n net bit-input1\n \n test_panel.checkbox_1\n \n classicladder.0.in-00\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n net bit-hide\n \n test_panel.checkbox_4\n \n classicladder.0.hide_gui\n \n@@ -47679,15 +47679,15 @@\n Allows one to embed a program into the widget.\n Only programs that utilize the xembed protocol will work such as:\n \u2022 GladeVCP virtual control panels\n \u2022 Onboard virtual keyboard\n \u2022 QtVCP virtual control panels\n \u2022 mplayer video player\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1083 / 1279\n \n 12.7.1.2 Slider - HAL Pin Value Adjusting Widget\n Allows one to adjust a HAL pin value using a sliding pointer.\n 12.7.1.3 LED - Indicator Widget\n \n@@ -47717,15 +47717,15 @@\n qproperty-flashRate: 150;\n }\n \n 12.7.1.4 CheckBox Widget\n This widget allows the user to check a box to set a HAL pin true or false.\n It is based on PyQt\u2019s QCheckButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1084 / 1279\n \n 12.7.1.5 RadioButton Widget\n This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group\n can be true at a time.\n It is based on PyQt\u2019s QRadioButton.\n@@ -47746,15 +47746,15 @@\n In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings\n on the gauge face.\n It should be set to a number that ensures the text readings around the gauge face are readable.\n The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to\n the threshold point.\n It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1085 / 1279\n \n minimum reading, which is 0.\n It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge.\n threshold:: The threshold is the transition point between the zones.\n It should be set to a value between 0 and the maximum value.\n@@ -47772,15 +47772,15 @@\n to a value between 0 and the maximum value.\n 12.7.1.7 HALPad - HAL Buttons Joypad\n \n Figure 12.84: QtVCP HALPad: HAL Buttons Joypad\n This widget looks and acts like a 5 buttons D-pad, with an LED ring.\n Each button has an selectable type (Bit, S32 or Float) output HAL pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1086 / 1279\n \n The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin.\n HALPad ENUMS There are enumerated constants used:\n \u2022 To reference indicator positions:\n \u2013 NONE\n@@ -47818,15 +47818,15 @@\n left_text , right_text , center_text , top_text , bottom_text\n A text string to be displayed in the described button location.\n If left blank an image can be designated to be displayed.\n true_color , false_color\n Color selection for the center LED ring to be displayed when the .light.center HAL\n pin is True or False.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1087 / 1279\n \n text_color\n Color selection for the button text.\n text_font\n Font selection for the button text.\n@@ -47844,15 +47844,15 @@\n 12.7.5.1 [IndicatedPushButton] below for more info.\n \n It also has other options.\n It is based on PyQt\u2019s QPushButton.\n 12.7.1.9 focusOverlay - Focus Overlay Widget\n This widget places a colored overlay over the screen, usually while a dialog is showing.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Figure 12.85: Focus overlay example for confirm close prompt\n Used to create a focused feel and to draw attention to critical information.\n It can also show a translucent image.\n It can also display message text and buttons.\n This widget can be controlled with STATUS messages.\n 12.7.1.10 gridLayout - Grid Layout Widget\n@@ -47860,15 +47860,15 @@\n Disabled widgets typically have a different color and do not respond to actions.\n It is based on PyQt\u2019s QGridLayout.\n 12.7.1.11 hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1088 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1089 / 1279\n \n Values can be sent from:\n \u2022 HAL pins\n The input pin can be selected as Bit, S32, Float or no pin selected\n \u2022 Programmatically\n@@ -47903,15 +47903,15 @@\n When using floats you can set a formatting string.\n You must set the digitCount property to an appropriate setting to display the largest number.\n Properties\n pin_name\n Option string to be used as the HAL pin name.\n If set to an empty string the widget name will be used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1090 / 1279\n \n bit_pin_type\n Selects the input pin as type BIT.\n s32_pin_type\n Selects the input pin as type S32.\n@@ -47942,15 +47942,15 @@\n a large view of a widget and a smaller multi widget view.\n It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it\n in its page with a different layout than it originally had.\n The original widget must be in a layout for switcher to put it back.\n In Qt Designer you will:\n \u2022 Add the WidgetSwitcher widget on screen.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1091 / 1279\n \n \u2022 Right click the WidgetSwitcher and add a page.\n \u2022 Populate it with the widgets/layouts you wish to see in a default form.\n \u2022 Add as many pages as there are views to switch to.\n \u2022 On each page, add a layout widget.\n@@ -47983,15 +47983,15 @@\n Estop , Machine On , Auto , mdi , manual , run , run_from_line status\n Gets line number from STATUS message gcode-line-selected.\n run_from_line slot\n Gets line number from Qt Designer int/str slot setRunFromLine.\n abort , pause , load dialog\n Requires a dialog widget present.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1092 / 1279\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -48032,15 +48032,15 @@\n spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change\n Set view_type_string.\n limits override , flood , mist , block delete , optional stop , mdi command\n Set command_string, i.e.,calls a hard coded MDI command\n INI mdi number\n Set ini_mdi_number, i.e., calls an INI based MDI command\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1093 / 1279\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -48079,15 +48079,15 @@\n Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines.\n The commands are separated by the ;.\n The label is set after the comma, and \\n symbol adds a line break.\n [MDI_COMMAND_LIST]\n MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\\nUser\\nZero\n MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\\nMachn\\nZero\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Action buttons are subclassed from\n for more information about:\n \n 1094 / 1279\n \n 12.7.5.1 [IndicatedPushButton]. See the following sections\n@@ -48124,15 +48124,15 @@\n \u2022 Divide the axis by 2\n \u2022 Set the axis arbitrarily\n \u2022 Reset the axis to the last number recorded\n You select the axis by setting the joint number.\n You can select a halpin option that is set true when the axis is selected.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1095 / 1279\n \n 12.7.2.5 CamView - Workpiece Alignment and Origin Setting Widget\n This widget displays a image from a web camera.\n It overlays an adjustable circular and cross hair target over the image.\n CamView was built with precise visual positioning in mind.\n@@ -48172,15 +48172,15 @@\n Here is how you specify a particular widget by its objectName in Qt Designer:\n DROLabel #dr0_x_axis [isHomed=false] {\n color: yellow;\n }\n \n It is based on PyQt\u2019s QLabel.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1096 / 1279\n \n 12.7.2.7 GcodeDisplay - G-code Text Display Widget\n This displays G-code in text form, highlighting the currently running line.\n This can also display:\n \u2022 MDI history when LinuxCNC is in MDI mode.\n@@ -48222,15 +48222,15 @@\n \u2022 styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including\n () or anything after ; (when used outside of parenthesis) with the exception of the note below)\n \u2022 styleColor2 = G-code: G and the digits after\n \u2022 styleColor3 = M-code: M and the digits after\n \u2022 styleColor4 = Axis: XYZABCUVW\n \u2022 styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1097 / 1279\n \n \u2022 styleColor6 = AxisValue: Values following XYZABCUVW\n \u2022 styleColor7 = OtherValue: Values following EFHIJKDQLRPST$\n \n For comments, the \u201dOtherValue\u201d color (Color 5) can be used to highlight \u201dprint,\u201d \u201ddebug,\u201d \u201dmsg,\u201d\n@@ -48243,15 +48243,15 @@\n \u201dstyle name, size, -1, 0, bold setting (0-99), italics (0-1),\n underline (0-1),0,0,0\u201d\n It is based on PyQt\u2019s QsciScintilla.\n 12.7.2.8 GcodeEditor - G-code Program Editor Widget\n This is an extension of the GcodeDisplay widget that adds editing convenience.\n It is based on PyQt\u2019s QWidget which incorporates GcodeDisplay widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1098 / 1279\n \n 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Figure 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -48267,15 +48267,15 @@\n +_dro+ (bool)\n Determines whether or not to show the DRO.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dro: False;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n +_dtg+ (bool)\n Determine whether or not to show the Distance To Go.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-_dtg: False;\n }\n@@ -48324,15 +48324,15 @@\n \n +_use_gradient_background+ (bool)\n Determines whether or not use a gradient background by default.\n The following shows an example of how to set this property:\n \n 1099 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1100 / 1279\n \n #gcodegraphics{\n qproperty-_use_gradient_background: False;\n }\n \n@@ -48403,15 +48403,15 @@\n Middle\n Middle\n Left\n \n Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some\n lathes and have no rotate button assigned.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Mode\n 6\n 7\n 8\n 9\n 10\n@@ -48468,15 +48468,15 @@\n \u2022 inhibit-selection-off\n \u2022 dimensions-on\n \u2022 dimensions-off\n \u2022 grid-size\n \u2022 record-view\n \u2022 set-recorded-view\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022 P\n \u2022 X\n \u2022 Y\n \u2022 Y2\n \u2022 Z\n \u2022 Z2\n@@ -48506,15 +48506,15 @@\n This will be the text set when the option is False.\n You can use Qt rich text code for different fonts/colors etc.\n Typical template for metric mode in false state, might be: Imperial Mode.\n It is based on PyQt\u2019s QLabel.\n \n 1102 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1103 / 1279\n \n 12.7.2.11 StatusLabel - Controller Variables State Label Display Widget\n This will display a label based on selectable status of the machine controller.\n You can change how the status will be displayed by substituting python formatting code in the text\n template. You can also use rich text for different fonts/colors etc.\n@@ -48553,15 +48553,15 @@\n jograte_angular_status\n Shows the current QtVCP based Angular Jog Rate.\n jogincr_status\n Shows the current QtVCP based Jog increment.\n jogincr_angular_status\n Shows the current QtVCP based Angular Jog increment.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1104 / 1279\n \n machine_state_status\n Shows the current machine interpreter state using the text described from the machine_state_list.\n The interpreter states are:\n \u2022 Estopped\n@@ -48600,15 +48600,15 @@\n tool_number_status\n Returns the tool number of the current loaded tool.\n tool_offset_status\n Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.).\n user_system_status\n Shows the active user coordinate system (G5x setting).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1105 / 1279\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -48637,15 +48637,15 @@\n Toggles between 2 images: axis not homed, axis homed.\n *watch_all_homed\n Would toggle between 2 images: not all homed, all homed.\n *watch_hard_limits\n Would toggle between 2 images or one per joint.\n Here is an example of using it to display an icon of Z axis homing state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1106 / 1279\n \n Figure 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher\n In the properties section notice that:\n \u2022 watch_axis_homed is checked\n \u2022 axis_letter is set to Z\n@@ -48658,15 +48658,15 @@\n \n \u2022 Right click the image name and you should see Copy path.\n \u2022 Click Copy path.\n \u2022 Now double click the image list property so the dialog shows.\n \u2022 Click the New button.\n \u2022 Paste the image path in the entry box.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1107 / 1279\n \n Do that again for the next image.\n Use a clear image to represent a hidden icon.\n You can test the images display from the image list by changing the image number. In this case 0 is\n unhomed and 1 would be homed.\n@@ -48700,15 +48700,15 @@\n notify_option\n Hooking into the desktop notification bubbles for error and messages.\n notify_max_messages\n Number of messages shown on screen at one time.\n catch_close_option\n Catching the close event to pop up a \u2019are you sure\u2019 prompt.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1108 / 1279\n \n close_overlay_color\n Color of transparent layer shown when quitting.\n catch_error_option\n Monitoring of the LinuxCNC error channel.\n@@ -48750,15 +48750,15 @@\n tool_overlay_color\n Color of transparent layer shown when the tool dialog is shown.\n ToolUseDesktopNotify\n Option to use desktop notify dialogs for manual tool change dialog.\n ToolFrameless\n Frameless dialogs can not be easily moved by users.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1109 / 1279\n \n fileDialog_option\n Sets up the file choosing dialog.\n file_overlay_color\n Color of transparent layer shown when the file dialog is shown.\n@@ -48796,15 +48796,15 @@\n Color of transparent layer shown when the machineLog dialog is shown.\n runFromLineDialog_option\n Sets up a dialog to display starting options when starting machine execution from a arbitrary\n line.\n runFromLine_overlay_color\n Color of transparent layer shown when the runFromLine dialog is shown.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1110 / 1279\n \n Setting Properties Programmatically The screen designer chooses the default settings of the\n screenOptions widget.\n Once chosen, most won\u2019t ever need to be changed. But if needed, some can be changed in the handler\n file or in stylesheets.\n@@ -48847,15 +48847,15 @@\n Turns all sounds on or off.\n [MCH_MSG_OPTIONS]\n mchnMsg_play_sound (bool)\n To play alert sound when dialog pops.\n mchnMsg_speak_errors (bool)\n To use Espeak to speak error messages.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1111 / 1279\n \n mchnMsg_speak_text (bool)\n To use Espeak to speak all other messages.\n mchnMsg_sound_type (str)\n Sound to play when messages displayed. See notes below.\n@@ -48895,15 +48895,15 @@\n \u2013 DONE\n \u2013 ATTENTION\n \u2013 RING\n \u2013 LOGIN\n \u2013 LOGOUT\n \u2013 BELL\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1112 / 1279\n \n These Sound options require python3-gst1.0 installed.\n \u2022 Audio Files\n You can also specify a file path to an arbitrary audio file.\n You can use ~ in path to substitute for the user home file path.\n@@ -48937,15 +48937,15 @@\n jograte_angular_rate\n Selects a angular jograte slider.\n max_velocity_rate\n Selects a maximum velocity rate slider.\n alertState\n String to define style change: read-only, under, over and normal.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1113 / 1279\n \n alertUnder\n Sets the float value that signals the stylesheet for under warning.\n alertOver\n Sets the float value that signals the stylesheet for over warning.\n@@ -48981,15 +48981,15 @@\n diameter\n Diameter of the LED.\n color\n Color of the LED when on.\n off_color\n Color of the LED when off.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1114 / 1279\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -49026,15 +49026,15 @@\n \u2022 Rapid override rate\n It is based on PyQt\u2019s QProgressBar.\n 12.7.2.19 SystemToolButton - User System Selection Widget\n This widget allows you to manually select a G5x user system by pressing and holding.\n If you don\u2019t set the button text it will automatically update to the current system.\n It is based on PyQt\u2019s QToolButton.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1115 / 1279\n \n 12.7.2.20 MacroTab - Special Macros Widget\n \n Figure 12.88: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -49052,15 +49052,15 @@\n ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros\n \n MACROCOMMAND This is the first line in the O-word file.\n It is a comma separated list of text to display above an entry.\n There will be one for every variable required in the O-word function.\n If the macro does not require variables, leave it empty:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1116 / 1279\n \n ; MACROCOMMAND=\n \n MACRODEFAULTS This must be the second line in the O-word file.\n It is a comma separated list of the default values for each variable in the O-word function.\n@@ -49097,15 +49097,15 @@\n MACROOPTIONS This optional line must be the fourth line in the O-word file.\n It is a comma separated list of keyword and data:\n LOAD:yes\n Shows a load button.\n SAVE:yes\n Shows a save button.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1117 / 1279\n \n 12.7.2.21 MDILine - MDI Commands Line Entry Widget\n One can enter MDI commands here.\n A popup keyboard is available.\n Embedded Commands There are also embedded commands available from this widget.\n@@ -49142,15 +49142,15 @@\n Disconnects a pin from a signal.\n An error will result if the pin does not exist.\n Running LinuxCNC from terminal may help determine the root cause as error messages from\n hal_lib.c will be displayed there.\n \u2022 Syntax: unlinkp \n \u2022 Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1118 / 1279\n \n The MDILine function spindle_inhibit can be used by a GUI\u2019s handler file to inhibit M3, M4, and M5\n spindle commands if necessary.\n \n It is based on PyQt\u2019s QLineEdit.\n@@ -49161,15 +49161,15 @@\n default):\n MDI_HISTORY_FILE = \u2019~/.axis_mdi_history\u2019\n \n 12.7.2.23 MDITouchy - Touch Screen MDI Entry Widget\n \n Figure 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1119 / 1279\n \n This widget displays buttons and entry lines to use for entering MDI commands.\n Based on LinuxCNC\u2019s Touchy screen\u2019s MDI entry process, its large buttons are most useful for touch\n screens.\n To use MDITouchy:\n@@ -49208,15 +49208,15 @@\n G90\n O endsub\n \n Notice the name of the sub matches the file name and macro name exactly, including case.\n When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc\n and yinc in our example).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1120 / 1279\n \n These are passed to the macro as positional parameters: #1, #2\u2026 #N respectively.\n Parameters you leave empty are passed as value 0.\n If there are several different macros, press the Macro button repeatedly to cycle through them.\n In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0\n@@ -49229,15 +49229,15 @@\n Figure 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget\n This widget allows one to visualize and modify User System Origin offsets directly.\n It will update LinuxCNC\u2019s Parameter file for changes made or found.\n The settings can only be changed in LinuxCNC after homing and when the motion controller is idle.\n The display and entry will change between metric and imperial, based on LinuxCNC\u2019s current G20 /\n G21 setting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1121 / 1279\n \n The current in-use user system will be highlighted.\n Extra actions can be integrated to manipulate settings.\n These actions depend on extra code added either to a combined widget, like originoffsetview dialog,\n or the screens handler code.\n@@ -49276,15 +49276,15 @@\n It can selectably react to:\n \u2022 Machine on\n \u2022 Interpreter idle\n \u2022 E-stop off\n \u2022 All-homed\n It is based on PyQt\u2019s QGridLayout.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.26 MachineLog - Machine Events Journal Display Widget\n FIXME MachineLog documentation\n 12.7.2.27 JointEnableWidget - FIXME\n FIXME JointEnableWidget documentation\n 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget\n This widget will display images based on LinuxCNC status.\n@@ -49293,15 +49293,15 @@\n \u2022 the state of all homed,\n \u2022 the state of a certain axis homed,\n \u2022 the state of hard limits.\n It is based on PyQt\u2019s FIXME\n \n 1122 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1123 / 1279\n \n 12.7.2.29 FileManager - File Loading Selector Widget\n \n Figure 12.91: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -49314,15 +49314,15 @@\n if temp[1]:\n print(\u2019Is a file\u2019)\n \n It is based on PyQt\u2019s FIXME\n 12.7.2.30 RadioAxisSelector - FIXME\n FIXME RadioAxisSelector documentation\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1124 / 1279\n \n 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget\n \n Figure 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget\n This widget displays and allows one to modify tools offsets.\n@@ -49346,15 +49346,15 @@\n Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or\n (if appropriate) in stylesheets:\n dialog_code_string\n Sets which dialog will pop up with numerical entry.\n test_dialog_code_string\n Sets which dialog will pop up with text entry.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1125 / 1279\n \n metric_template\n Metric numerical data format.\n imperial_template\n Imperial numerical data format.\n@@ -49383,24 +49383,24 @@\n Uncheck all selected tools.\n Example for handler file executing aforementioned functions.\n self.w.tooloffsetview.add_tool()\n self.w.tooloffsetview.delete_tools()\n toolList = self.w.tooloffsetview.get_checked_list()\n self.w.tooloffsetview.set_all_unchecked()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.2.32 BasicProbe - Simple Mill Probing Widget\n \n Figure 12.93: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1126 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1127 / 1279\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Figure 12.94: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -49418,15 +49418,15 @@\n \n \u2022 Add a function to call a dialog:\n This function must build a message dict to send to the dialog.\n This message will be passed back in the general message with the addition of the return variable.\n It is possible to add extra user information to the message. The dialog will ignore these and pass\n them back.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1128 / 1279\n \n NAME\n Launches code name of dialog to show.\n ID\n A unique id so we process only a dialog that we requested.\n@@ -49467,15 +49467,15 @@\n TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME\n Not implemented yet.\n FOCUSTEXT (overlay text|None)\n Text to display if focus overlay is used. Use None for no text.\n FOCUSCOLOR (QColor(_R, G, B, A_))\n Color to use if focus overlay is used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1129 / 1279\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -49485,15 +49485,15 @@\n This is used as a manual tool change prompt.\n It has HAL pins to connect to the machine controller. The pins are named the same as the original\n AXIS manual tool prompt and works the same.\n The tool change dialog can only be launched by HAL pins.\n If there is a Focus Overlay widget present, it will signal it to display.\n It is based on PyQt\u2019s QMessagebox.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1130 / 1279\n \n 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget\n \n Figure 12.96: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -49509,15 +49509,15 @@\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n }\n ACTION.CALL_DIALOG(mess)\n \n And for a save dialog\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1131 / 1279\n \n mess = {\u2019NAME\u2019:\u2019SAVE\u2019,\u2019ID\u2019:\u2019_MY_DIALOG_\u2019,\n \u2019TITLE\u2019:\u2019Save Some text File\u2019,\n \u2019FILENAME\u2019:\u2019~/linuxcnc/nc_files/someprogram.txt\u2019,\n \u2019EXTENSIONS\u2019:\u2019Text Files (*.txt);;ALL Files (*.*)\u2019\n@@ -49529,15 +49529,15 @@\n \n Figure 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget\n This widget allows one to modify User System origin offsets directly in a dialog form.\n If there is an Focus Overlay widget present, it will signal it to display.\n When using STATUS \u2019s request-dialog function, the default launch name is ORIGINOFFSET.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1132 / 1279\n \n 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figure 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -49557,61 +49557,61 @@\n 12.7.3.8 EntryDialog - Edit Line Dialog Widget\n This is a dialog to display an edit line for information entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is ENTRY.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1133 / 1279\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Figure 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget\n This is a dialog to display a calculator for numeric entry, such as origin offset.\n It returns the entry via STATUS messages using a Python DICT.\n The DICT contains at minimum, the name of the dialog requested and an ID code.\n When using \u0300 \u0300STATUS \u0300 \u0300\u2019s request-dialog function, the default launch name is CALCULATOR.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Figure 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget\n Dialog to preset spindle settings before running a program from a specific line.\n It is based on PyQt\u2019s QDialog.\n \n 1134 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1135 / 1279\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figure 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget\n This is a dialog to display a part probing screen based on Verser Probe v2.\n It is based on PyQt\u2019s QDialog.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1136 / 1279\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figure 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget\n This is a dialog to display the machine log and QtVCP\u2019s debugging log.\n It is based on PyQt\u2019s QDialog.\n \n 12.7.4 Other Widgets\n Other available widgets:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1137 / 1279\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Figure 12.103: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -49620,15 +49620,15 @@\n It is based on PyQt\u2019s QDialog.\n 12.7.4.2 JoyPad - 5 button D-pad Widget\n It is the base class for the HALPad widget.\n This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring.\n You can put text or icons in each of the button positions.\n You can connect to output signals when the buttons are pressed.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1138 / 1279\n \n There are also input slots to change the color of the indicator(s).\n ENUMS There are enumerated constants used to reference indicator positions.\n They are used in Qt Designer editor\u2019s property editor or in Python code.\n NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A\n@@ -49665,15 +49665,15 @@\n The set_highlight() function must be used prior to set the indicator to use.\n Signals These signals will be sent when buttons are pressed.\n They can be connected to in Qt Designer editor or Python code.\n The first two output a string that indicates the button pressed:\n \n joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1139 / 1279\n \n They are based on PyQt\u2019s Signal (QtCore.pyqtSignal())\n Slots Slots can be connected to in Qt Designer editor or Python code:\n set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_)\n \n@@ -49709,15 +49709,15 @@\n self.w.joypadename.setProperty(\u2019true_color\u2019,\u2019green\u2019)\n self.w.joypadename.setProperty(\u2019false_color\u2019,\u2019red\u2019)\n \n 12.7.5 BaseClass/Mixin Widgets\n These widgets are used combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1140 / 1279\n \n 12.7.5.1 IndicatedPushButtons\n This class modifies QPushButton behaviour.\n indicator_option puts a LED on the top of the button.\n \n@@ -49747,15 +49747,15 @@\n \n Options IndicatedPushButton have exclusive options:\n indicator_HAL_pin_option\n Adds a halpin, named -led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1141 / 1279\n \n \u2022 Is Estopped\n \u2022 Is On\n \u2022 All Homed\n \u2022 Is Joint Homed\n@@ -49797,15 +49797,15 @@\n color: yellow;\n }\n \n Often, having the button disabled and enabled based on the state of LinuxCNC\u2019s motion controller is\n necessary.\n There are several properties that can be selected to aid with this:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1142 / 1279\n \n isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen\n You can select multiple properties for combined requirements.\n Choosing the checked_state_text_option allows a checkable button to change the text based on it\u2019s\n checked state.\n@@ -49841,15 +49841,15 @@\n \n 12.7.6 Import-Only Widgets\n These widgets are usually the base class widget for other QtVCP widgets.\n They are not available directly from the Qt Designer editor but could be imported and manually\n inserted.\n They could also be subclassed to make a similar widget with new features.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1143 / 1279\n \n 12.7.6.1 Auto Height\n Widget for measuring two heights with a probe.\n For setup.\n 12.7.6.2 G-code Utility\n@@ -49872,15 +49872,15 @@\n 12.8.1 Status\n Status is a library that sends GObject messages based on LinuxCNC\u2019s current state. It is an\n extension of GladeVCP\u2019s GStat object.\n It also has some functions to report status on such things as internal jog rate.\n You connect a function call to the STATUS message you are interested in, and QtVCP will call this\n function when the message is sent from STATUS.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1144 / 1279\n \n 12.8.1.1 Usage\n \u2022 Import Status modules\n Add this Python code to your import section:\n ############################\n@@ -49914,15 +49914,15 @@\n print(\u2019LinuxCNC machine is on\u2019)\n def on_state_off(self):\n print(\u2019LinuxCNC machine is off\u2019)\n \n 12.8.2 Info\n Info is a library to collect and filter data from the INI file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.2.1 Available data and defaults\n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n INI = linuxcnc.ini(INIPATH)\n MDI_HISTORY_PATH = \u2019~/.axis_mdi_history\u2019\n@@ -49970,15 +49970,15 @@\n MAX_SPINDLE_0_OVERRIDE = 100\n MIN_SPINDLE_0_OVERRIDE = 50\n MAX_FEED_OVERRIDE = 1.5\n MAX_TRAJ_VELOCITY\n \n 1145 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1146 / 1279\n \n 12.8.2.2 User message dialog info\n USRMESS_BOLDTEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_BOLDTEXT\u201d)\n USRMESS_TEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TEXT\u201d)\n USRMESS_TYPE = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TYPE\u201d)\n@@ -50022,15 +50022,15 @@\n INFO = Info()\n \n \u2022 Access INFO data Use this general syntax:\n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1147 / 1279\n \n 12.8.3 Action\n Action library is used to command LinuxCNC\u2019s motion controller.\n It tries to hide incidental details and add convenience methods for developers.\n 12.8.3.1 Helpers\n@@ -50066,15 +50066,15 @@\n ACTION.SET_LIMITS_OVERRIDE()\n ACTION.CALL_MDI(code)\n ACTION.CALL_MDI_WAIT(code)\n ACTION.CALL_INI_MDI(number)\n ACTION.CALL_OWORD()\n ACTION.OPEN_PROGRAM(filename)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ACTION.SAVE_PROGRAM(text_source, fname):\n ACTION.SET_AXIS_ORIGIN(axis,value)\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n@@ -50115,15 +50115,15 @@\n ACTION.SET_BLOCK_DELETE_OFF()\n ACTION.RELOAD_DISPLAY()\n ACTION.SET_GRAPHICS_VIEW(view)\n ACTION.UPDATE_MACHINE_LOG(text, option=None):\n \n 1148 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1149 / 1279\n \n ACTION.CALL_DIALOG(command):\n ACTION.HIDE_POINTER(state):\n ACTION.PLAY_SOUND(path):\n ACTION.PLAY_ERROR():\n@@ -50157,15 +50157,15 @@\n \u2022 [0] will be real tools information\n \u2022 [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear)\n By default, adds a blank tool entry with tool number -99.\n You can preload the newtool array with tool information.\n DELETE_TOOLS(_toolnumber_)\n Delete the numbered tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1150 / 1279\n \n SAVE_TOOLFILE(_toolarray_)\n This will parse the toolarray and save it to the tool file specified in the INI file as the tool\n path.\n This tool array must contain all the available tools information.\n@@ -50201,15 +50201,15 @@\n PATH.RIPCONFIGDIR\n The Run-in-place config folder for QtVCP screens.\n PATH.BASEDIR\n Base folder for LinuxCNC.\n PATH.BASENAME\n The Qt Designer files name (no ending).\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n PATH.IMAGEDIR\n The QtVCP image folder.\n PATH.SCREENDIR\n The QtVCP builtin Screen folder.\n PATH.PANELDIR\n The QtVCP builtin VCP folder.\n@@ -50242,15 +50242,15 @@\n There are some helper functions available:\n file_list = PATH.find_vismach_files()\n directory_list = PATH.find_screen_dirs()\n directory_list = PATH.find_panel_dirs()\n \n 1151 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1152 / 1279\n \n 12.8.5.3 Usage\n \u2022 Import Path module\n Add this Python code to your import section:\n ############################\n@@ -50282,15 +50282,15 @@\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n WIDGETS = VCPWindow()\n \n 12.8.7 Aux_program_loader\n Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.8.7.1 Helpers\n \n load_halmeter()\n Halmeter is used to display one HAL pin data.\n Load a halmeter with:\n AUX_PRGM.load_halmeter()\n@@ -50329,15 +50329,15 @@\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.lib.aux_program_loader import Aux_program_loader\n \n 1153 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1154 / 1279\n \n \u2022 Instantiate Aux_program_loader module\n Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n@@ -50375,15 +50375,15 @@\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n def initialized__(self):\n KEYBIND.add_call(\u2019Key_F10\u2019,\u2019on_keycall_F10\u2019,None)\n KEYBIND.add_call(\u2019Key_F11\u2019,\u2019on_keycall_override\u2019,10)\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_override\u2019,20)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1155 / 1279\n \n And then we need to add the functions that get called.\n In the handler file, under the KEY BINDING CALLS section, add this:\n #####################\n # KEY BINDING CALLS #\n@@ -50419,15 +50419,15 @@\n no buttons to close the dialog.\n Yes/No messages have three HAL pins:\n \u2022 One to show the dialog,\n \u2022 One for waiting, and\n \u2022 one for the answer.\n By default it will send STATUS messages for focus_overlay and alert sound.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1156 / 1279\n \n 12.8.9.2 Examples\n Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading:\n \u2022 Status bar and desktop notify pop up message:\n MESSAGE_BOLDTEXT = NONE\n@@ -50467,15 +50467,15 @@\n Typically STATUS messages are used to sent notify messages.\n \n 12.8.10.1 Properties\n You can set the:\n title\n Notification message title text.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1157 / 1279\n \n message\n Notification message content text.\n icon\n Notification message icon.\n@@ -50508,15 +50508,15 @@\n \u2022 READY\n \u2022 ATTENTION\n \u2022 RING\n \u2022 DONE\n \u2022 LOGIN\n \u2022 LOGOUT\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1158 / 1279\n \n Beeps There are three beeps:\n \u2022 BEEP_RING\n \u2022 BEEP_START\n \u2022 BEEP\n@@ -50551,15 +50551,15 @@\n \n 12.8.14 Toolbar Actions\n This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons.\n Toolbuttons, menu and toolbar menus are:\n \u2022 built in Qt Designer, and\n \u2022 assigned actions/submenus in the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1159 / 1279\n \n 12.8.14.1 Actions\n \n estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop\n Toggles dimensions display.\n@@ -50599,15 +50599,15 @@\n \u2022 Add a custom toolbar function:\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def my_function(self, widget, state):\n print(\u2019My function State = ()\u2019.format(state))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1160 / 1279\n \n 12.8.15 Qt Vismach Machine Graphics library\n Qt_vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach:\n \u2022 displays the model in a 3D viewport\n@@ -50637,15 +50637,15 @@\n to.\n Translate\n This object will perform an OpenGL translation calculation on a Collection object.\n Translation refers to moving an object in straight line to a different position on screen.\n Scale\n This object will perform an OpenGL scale function on a collection object.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1161 / 1279\n \n HalTranslate\n This object will perform an OpenGL translation calculation on a Collection object, offset by\n the HAL pin value.\n Translation refers to moving an object in straight line to a different position on screen.\n@@ -50686,15 +50686,15 @@\n ArcX\n Build an arc by specifying\n Box\n Build a box specified by the 6 vertex coordinates.\n BoxCentered\n Build a box centered on origin by specifying the width in X and Y, and the height in Z.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1162 / 1279\n \n BoxCenteredXY\n Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y,\n and running up or down to the specified height in Z.\n Capture\n@@ -50735,30 +50735,30 @@\n def initialized__(self):\n machine = MILL.Window()\n self.w.mainLayout.addWidget(machine)\n \n 12.8.15.4 More Information\n More information on how to build a custom machine simulation in the Qt Vismach chapter.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1163 / 1279\n \n 12.9 QtVismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ .\n \n 12.9.1 Introduction\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n Figure 12.105: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1164 / 1279\n \n \u2022 zoom by scroll wheel\n \u2022 pan by middle button drag\n \u2022 rotate by right-button drag\n \u2022 tilt by left button drag\n@@ -50819,15 +50819,15 @@\n |\n |---zassembly\n |\n |---zframe\n |\n |\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1165 / 1279\n \n |\n |---zbody\n |\n |\n@@ -50870,15 +50870,15 @@\n c.ready()\n \n 12.9.5 Creating Parts\n 12.9.5.1 Import STL or OBJ Files\n It is probably easiest to:\n \u2022 create geometry in a CAD package\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1166 / 1279\n \n \u2022 import into the model script using the AsciiSTL() or AsciiOBJ() functions.\n Both functions can take one of two named arguments, either a filename or data:\n part = AsciiSTL(filename=\u201dpath/to/file.stl\u201d)\n part = AsciiSTL(data=\u201dsolid part1 facet normal ...\u201d)\n@@ -50913,15 +50913,15 @@\n Creates a box ground on WY plane of width xw / yw and height z.\n Composite parts may be created by assembling these primitives either at creation time or subsequently:\n part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)])\n part2 = Box(50,40,75,100,75,100)\n part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)])\n part4 = Collection([part1, part2])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1167 / 1279\n \n 12.9.6 Moving Model Parts\n Parts may need to be moved in the Vismach space to assemble the model. The origin does not move\n - Translate() and Rotate() move the Collection as you add parts, relative to a stationary origin. They\n may also need to be moved to create the animation as the animation rotation axis is created at the\n@@ -50955,15 +50955,15 @@\n The HAL component is the next argument.\n In QtVCP if you are reading system pins directly then the component argument is set to None.\n hal_pin\n The name of the HAL pin that will animate the motion.\n This needs to match an existing HAL pin that describes the joint position such as:\n \u201djoint.2.pos-fb\u201d\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1168 / 1279\n \n Otherwise the component instance would be specified and the pin name of that component\n would be specified. xs, ys, zs;; The X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in\n the positive X direction.\n@@ -50998,15 +50998,15 @@\n Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded\n tool.\n tool = HalToolTriangle()\n toolshape = Color([1, 1, 0, 1],[tool])\n # or more compact:\n toolshape = Color([1, 1, 0, 1],[HalToolTriangle()])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1169 / 1279\n \n 12.9.8 Assembling the model\n In order for parts to move together they need to be assembled with the Collection() command.\n It is important to assemble the parts and define their motions in the correct sequence.\n For example to create a moving head milling machine with a rotating spindle and an animated draw\n@@ -51048,15 +51048,15 @@\n Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final\n model is created by:\n model = Collection([link0, floor, table])\n \n Whereas a VMC model with separate parts moving on the base might have\n model = Collection([base, saddle, head, carousel])\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1170 / 1279\n \n 12.9.9 Other functions\n part = Color([_colorspec_], [_part_])\n Sets the display color of the part.\n Note that unlike the other functions, the part definition comes second in this case.\n@@ -51098,15 +51098,15 @@\n \n Add it to the Window class Collection so it is never moved from the origin.\n v.model = Collection([origin, model, world])\n \n Start from the cutting tip and work your way back. Add each collection to the model at the origin and\n run the script to confirm the location, then rotate/translate and run the script to confirm again.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.9.11 Basic structure of a QtVismach script\n # imports\n import hal\n from qtvcp.lib.qt_vismach.qt_vismach import *\n # create HAL pins here if needed\n #c = hal.component(\u201dsamplegui\u201d)\n@@ -51149,15 +51149,15 @@\n # if you call this file directly from python3, it will display a PyQt5 window\n # good for confirming the parts of the assembly.\n if __name__ == \u2019__main__\u2019:\n main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215)\n \n 1171 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1172 / 1279\n \n 12.9.12 Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10 QtVCP: Building Custom Widgets\n@@ -51185,15 +51185,15 @@\n \u2022 Injecting important variables,\n \u2022 Calling an extra setup function\n \u2022 Calling a closing cleanup function at shutdown.\n These functions are not called when the Qt Designer editor displays the widgets.\n When QtVCP builds a screen from the .ui file:\n 1. It searches for all the HAL-ified widgets.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1173 / 1279\n \n 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets\n 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function.\n hal_init() is defined in the base class and it:\n a. Adds variables such as the preference file to every HAL-ified widget.\n@@ -51246,15 +51246,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1174 / 1279\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -51326,15 +51326,15 @@\n #!/usr/bin/env python3\n ###############################\n # Imports\n ###############################\n from PyQt5.QtCore import pyqtProperty\n from qtvcp.widgets.led_widget import LED\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -51384,15 +51384,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1175 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1176 / 1279\n \n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, \u2190reset_is_estopped)\n is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on)\n@@ -51462,15 +51462,15 @@\n self.setState(False)\n self.is_estopped = False\n self.is_on = False\n self.invert_state = False\n \n #\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 1\n \n Defines the name of our custom widget and what other class it inherits from.\n In this case we inherit LED - a QtVCP widget that represents a status light.\n@@ -51531,15 +51531,15 @@\n self.PREFS_\n the instance of an optional preference file\n self.SETTINGS_\n the Qsettings object\n We could use this information to create HAL pins or look up image paths etc.\n STATUS.connect(\u2019state-estop\u2019, lambda w:self._flip_state(True))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1178 / 1279\n \n Lets look at this line more closely:\n \u2022 STATUS is very common theme is widget building.\n STATUS uses GObject message system to send messages to widgets that register to it.\n This line is the registering process.\n@@ -51586,15 +51586,15 @@\n return self.is_on\n def reset_is_on(self):\n self.is_on = False\n \n This is how Qt Designer sets the attributes of the widget.\n This can also be called directly in the widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1179 / 1279\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -51634,15 +51634,15 @@\n self._last = 0\n self._block_signal = False\n self._auto_label_flag = True\n SettingMenu = QMenu()\n for system in(\u2019G54\u2019, \u2019G55\u2019, \u2019G56\u2019, \u2019G57\u2019, \u2019G58\u2019, \u2019G59\u2019, \u2019G59.1\u2019, \u2019G59.2\u2019, \u2019G59.3\u2019):\n Button = QAction(QIcon(\u2019exit24.png\u2019), system, self)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1180 / 1279\n \n Button.triggered.connect(self[system.replace(\u2019.\u2019,\u2019_\u2019)])\n SettingMenu.addAction(Button)\n self.setMenu(SettingMenu)\n self.dialog = EntryDialog()\n@@ -51685,15 +51685,15 @@\n def ChangeState(self, joint):\n if int(joint) != self._joint:\n self._block_signal = True\n self.setChecked(False)\n self._block_signal = False\n self.hal_pin.set(False)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1181 / 1279\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -51740,15 +51740,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12.10.6 Use Stylesheets To Change Custom Widget Properties\n class Label(QLabel):\n def __init__(self, parent=None):\n super(Label, self).__init__(parent)\n alternateFont0 = self.font\n # Qproperty getter and setter\n@@ -51793,15 +51793,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1182 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n return \u201dLinuxCNC - HAL\u201d\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019lcnc_gridlayout\u2019)))\n def toolTip(self):\n return \u201dHAL enable/disable GridLayout widget\u201d\n def whatsThis(self):\n@@ -51850,15 +51850,15 @@\n def domXml(self):\n return \u2019\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1183 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1184 / 1279\n \n 12.10.7.3 Making a plugin with a MenuEntry dialog box\n It possible to add an entry to the dialog that pops up when you right click the widget in the layout.\n This can do things such as selecting options in a more convenient way.\n This is the plugin used for action buttons.\n@@ -51904,15 +51904,15 @@\n def createWidget(self, parent):\n return ActionButton(parent)\n # This method returns the name of the custom widget class\n def name(self):\n return \u201dActionButton\u201d\n # Returns the name of the group in Qt Designer\u2019s widget box\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n def group(self):\n return \u201dLinuxCNC - Controller\u201d\n # Returns the icon\n def icon(self):\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019actionbutton\u2019)))\n # Returns a tool tip short description\n@@ -51953,15 +51953,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1185 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1186 / 1279\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -52000,15 +52000,15 @@\n if self.w.PREFS_:\n # variable name (entry name, default value, type, section name)\n self.int_value = self.w.PREFS_.getpref(\u2019Integer_value\u2019, 75, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.string_value = self.w.PREFS_.getpref(\u2019String_value\u2019, \u2019on\u2019, str, \u2019 \u2190CUSTOM_FORM_ENTRIES\u2019)\n \n Writing preferences at close time In the closing_cleanup__() function, add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1187 / 1279\n \n if self.w.PREFS_:\n # variable name (entry name, variable name, type, section name)\n self.w.PREFS_.putpref(\u2019Integer_value\u2019, self.integer_value, int, \u2019CUSTOM_FORM_ENTRIES\u2019)\n self.w.PREFS_.putpref(\u2019String_value\u2019, self.string_value, str, \u2019CUSTOM_FORM_ENTRIES\u2019)\n@@ -52043,15 +52043,15 @@\n Being able to edit a style on a running screen is convenient.\n Import StyleSheetEditor module in the IMPORT SECTION:\n from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE\n \n Instantiate StyleSheetEditor module in the INSTANTIATE SECTION:\n STYLEEDITOR = SSE()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1188 / 1279\n \n Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets,\n paths):+ function add:\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_F12\u2019)\n \n@@ -52095,15 +52095,15 @@\n def return_value(self, w, message):\n num = message.get(\u2019RETURN\u2019)\n id_code = bool(message.get(\u2019ID\u2019) == \u2019FORM__NUMBER\u2019)\n name = bool(message.get(\u2019NAME\u2019) == \u2019ENTRY\u2019)\n if id_code and name and num is not None:\n print(\u2019The {} number from {} was: {}\u2019.format(name, id_code, num))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1189 / 1279\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog.\n In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know\n the message is for us.\n@@ -52138,15 +52138,15 @@\n The objectName of the toolbar button is used to identify the button when configuring it - descriptive\n names help.\n Using the action editor menu, right click and select edit.\n Edit the object name, text, and button type for an appropriate action.\n In this example the:\n \u2022 submenu name must be menuRecent,\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1190 / 1279\n \n \u2022 actions names must be actionAbout, actionQuit, actionMyFunction\n Loads the toolbar_actions library in the IMPORT SECTION\n from qtvcp.lib.toolbar_actions import ToolBarActions\n \n@@ -52190,15 +52190,15 @@\n Define the function called by pin state change in the GENERAL FUNCTIONS SECTION\n #####################\n # general functions #\n #####################\n def cycleStart(self, state):\n if state:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1191 / 1279\n \n tab = self.w.mainTab.currentWidget()\n if tab in( self.w.tab_auto, self.w.tab_graphics):\n ACTION.RUN(line=0)\n elif tab == self.w.tab_files:\n@@ -52240,15 +52240,15 @@\n jog increment after.\n We will build a button that toggles between continuous jog and whatever increment that was already\n selected.\n In Qt Designer:\n \u2022 Add an ActionButton with no action\n \u2022 Call it btn_toggle_continuous.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1192 / 1279\n \n \u2022 Set the AbstractButton property checkable to True.\n \u2022 Set the ActionButton properties incr_imperial_number and incr_mm_number to 0.\n \u2022 Use Qt Designer\u2019s slot editor to use the button signal clicked(bool) to call form\u2019s handler function\n toggle_continuous_clicked().\n@@ -52294,15 +52294,15 @@\n Class patching (monkey patching) is a little like black magic - so use it only if needed.\n \n The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want\n to print the file name first.\n We can \u201dclass patch\u201d the library to redirect the function call.\n In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1193 / 1279\n \n from qtvcp.widgets.file_manager import FileManager as FM\n \n Here we are going to:\n 1. Keep a reference to the original function (1) so we can still call it\n@@ -52334,15 +52334,15 @@\n def our_load(self,fname):\n print(fname)\n self.old_load(self.w.filemanager,fname)\n \n Now our custom function will print the file path to the terminal before loading the file.\n Obviously boring but shows the principle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1194 / 1279\n \n 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.\n The trick here is to make sure the function name you use to store it is not already used in the class.\n super__ added to the function name would be a good choice.\n We won\u2019t use that in built in QtVCP widgets.\n@@ -52379,15 +52379,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from PyQt5 import QtWidgets\n from PyQt5.QtGui import QColor\n from qtvcp.widgets.state_led import StateLED as LED\n from qtvcp.core import Status, Info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1195 / 1279\n \n Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so\n as to be global references (no self. in front):\n ##########################################\n # **** instantiate libraries section **** #\n@@ -52438,15 +52438,15 @@\n #\n self.w.led.setProperty(\u2019is_spindle_at_speed_status\u2019,True) #\n \n y\n 2y\n 1\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1196 / 1279\n \n y\n 4y\n \n self.w.led.setProperty(\u2019color\u2019,QColor(0,255,0,255))\n@@ -52559,15 +52559,15 @@\n \n 7\n \n We create a QWidget\n Since you can only add one widget to the tab corner and we want two there, we must add both\n into a container.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n y\n \n 8\n \n 1197 / 1279\n \n@@ -52647,15 +52647,15 @@\n self.w = widgets\n self.PATHS = paths\n # register a function to be called at CYCLE_TIME period (usually every 100 ms)\n STATUS.connect(\u2019periodic\u2019, lambda w: self.update_periodic())\n \n Create the custom function to be called periodically\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1198 / 1279\n \n #####################\n # general functions #\n #####################\n def update_periodic(self):\n@@ -52697,15 +52697,15 @@\n #!/usr/bin/env python3\n from time import sleep\n import zmq\n import json\n context = zmq.Context()\n socket = context.socket(zmq.PUB)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1199 / 1279\n \n socket.bind(\u201dtcp://127.0.0.1:5690\u201d)\n topic = b\u2019QtVCP\u2019\n # prebuilt message 1\n # makes a dict of function to call plus any arguments\n@@ -52763,15 +52763,15 @@\n def __init__(self, halcomp,widgets,paths):\n # directly select ZMQ message sending\n self.w.screen_options.setProperty(\u2019use_send_zmq_option\u2019,True)\n \n This allows sending messages to a separate program.\n The message sent will depend on what the external program is expecting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1200 / 1279\n \n Create a function to send ZMQ messages Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n Also, something needs to be added to call this function, such as a button click.\n #####################\n@@ -52811,15 +52811,15 @@\n You can also use the Status library to send a message to the notify library if it is enabled (usually\n set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify\n dialog.\n The messages are also recorded until the user erases them using controls. The users can recall any\n recorded messages.\n There are several options:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1201 / 1279\n \n STATUS.TEMPORARY_MESSAGE\n Show the message for a short time only.\n STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT\n \n@@ -52858,15 +52858,15 @@\n Notice we sometimes compare to widget, sometimes to widget.parent().\n This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get\n the focus; so we need to check the parent of those sub-widgets.\n Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to\n accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent()\n would get you the container that holds the G-code widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1202 / 1279\n \n 12.12 QtVCP Development\n 12.12.1 Overview\n The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building\n for LinuxCNC.\n@@ -52895,15 +52895,15 @@\n 12.12.3 QtVCP Startup To Shutdown\n QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree.\n 12.12.3.1 QtVCP Startup\n When QtVCP first starts:\n 1. It must decide if this object is a screen or a panel.\n 2. It searches for and collects information about paths of required files and useful folders.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1203 / 1279\n \n 3. It then:\n a. Builds the HAL component,\n b. Loads the window instance,\n c. Adds handler extensions,\n@@ -52939,15 +52939,15 @@\n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n XML\n Path of .ui file\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1204 / 1279\n \n DOMAIN\n Path of translation\n IS_SCREEN\n Screen/panel switch\n@@ -52981,15 +52981,15 @@\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n 12.12.5.4 Preference File\n Some QtVCP widgets use the preference file to record important information.\n This requires the preference file to be set up early in the widget initialization process.\n The easiest way to do this is to use the ScreenOptions widget.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1205 / 1279\n \n 12.12.5.5 Widget Special Setup Functions\n QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded.\n It is not called when using Qt Designer editor.\n After this function is called the widget has access to some special variables:\n@@ -53016,15 +53016,15 @@\n By default, if there is a preference file, the dialogs will remember their last size/placement.\n It is possible to override this so they open in the same location each time.\n 12.12.5.7 Styles (Themes)\n While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are\n all set in a separate .qss file.\n The file should be put in the same location as the handler file.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1206 / 1279\n \n Chapter 13\n \n User Interface Programming\n 13.1 Panelui\n@@ -53053,15 +53053,15 @@\n loadrt sampler cfg=u depth=1025\n #uncomment to validate the panelui INI file\n #loadusr pyui\n # -d = debug, -v = verbose debug\n # -d will show you keypress identification and commands called\n # -v is for develeper info\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1207 / 1279\n \n loadusr -W panelui -d\n # using simulated buttons instead of the MESA 7I73 card\n # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes\n loadrt sim_matrix_kb\n@@ -53102,15 +53102,15 @@\n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1208 / 1279\n \n This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program.\n Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group\n has its own output pin, separate from each button in the group. Radio button definitions start with\n the text RADIO_BUTTON inside single brackets.\n@@ -53164,15 +53164,15 @@\n \n Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets.\n [TOGGLE_BUTTONS]\n # Each button name inside double brackets, must be unique and is case sensitive.\n # This button, named \u2019tool_change\u2019is controller by the row 2 column 5 key.\n # It has a BIT output, will output 1 on true state and 0 on false state.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1209 / 1279\n \n # It also has a status pin which will follow it\u2019s current state.\n # DEFAULT sets this to true when first initialized.\n # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will\n # add the lines regardless\n@@ -53216,15 +53216,15 @@\n \u2022 required argument: axis number (int)\n spindle_forward_adjust\n \u2022 optional argument: starting RPM (int) - default 100\n \u2022 Description: If the spindle is stopped it will start in the forward direction. If it is already running it\n will increase or decrease the rpm depending on what direction the spindle is running in.\n spindle_forward\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1210 / 1279\n \n \u2022 optional argument: starting RPM (int) - default 100\n spindle_reverse\n \u2022 optional argument: starting RPM (int) - default 100\n spindle_reverse_adjust\n@@ -53250,15 +53250,15 @@\n \u2022 Description: Move Z axis to the given machine position\n feed_hold\n \u2022 required argument: state (bool 0 or 1)\n feed_override\n \u2022 required argument: rate (float)\n rapid_override\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n \u2022 required argument: rate (float 0-1)\n spindle_override\n \u2022 required argument: rate (float)\n max_velocity\n \u2022 required argument: rate (float)\n optional_stop\n@@ -53290,15 +53290,15 @@\n STATUS_PIN = False\n DEFAULT = FALSE\n TRUE_STATE = 1\n FALSE_STATE = 0\n \n 1211 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1212 / 1279\n \n Here is a sample program that will receive the message and print it to the terminal.\n import zmq\n import json\n # ZeroMQ Context\n@@ -53342,15 +53342,15 @@\n print(wname.metadata)\n # Print the calling widgets internal metadata (from config \u2190file)\n # Call a mdi command to print a msg in LinuxCNC.\n # This requires LinuxCNC to be homed, but does not check for that.\n # parent commands expect a widget_instance - None is substituted\n self.parent.mdi(None,\u2019(MSG, Hello Linuxcnc World!)\u2019)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1213 / 1279\n \n # Each call to this function will cycle the mode of LinuxCNC.\n def cycle_mode(self, wname, m):\n if self.current_mode == 0:\n self.current_mode = 1\n@@ -53390,15 +53390,15 @@\n PROGRAM_EXTENSION = .py Python Script\n py = python\n \n In this way, any Python script can be opened, and its output is treated as G-code. One such example\n script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes\n along the circumference of a circle.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1214 / 1279\n \n Figure 13.1: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -53418,15 +53418,15 @@\n time.sleep(.1)\n # output a line of G-code\n print(\u2019G0 X1\u2019, file=sys.stdout)\n # update progress\n print(\u2019FILTER_PROGRESS={}\u2019.format(i), file=sys.stderr)\n except:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1215 / 1279\n \n # This causes an error message\n print(\u2019Error; But this was only a test\u2019, file=sys.stderr)\n raise SystemExit(1)\n \n@@ -53469,15 +53469,15 @@\n raise SystemExit(1)\n def process(self):\n try:\n # get next line of code\n codeLine = self.temp[self.line]\n # process the line somehow\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1216 / 1279\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -53517,15 +53517,15 @@\n Make sure you use the correct path to your INI file.\n loadusr halui -ini /path/to/inifile.ini\n \n 13.3.2 MDI\n Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL\n pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example:\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1217 / 1279\n \n [HALUI]\n MDI_COMMAND = G0 X0\n MDI_COMMAND = G0 G53 Z0\n MDI_COMMAND = G28\n@@ -53570,15 +53570,15 @@\n 13.3.4.1 Abort\n \u2022 halui.abort (bit, in) - pin to send an abort message (clears out most errors)\n 13.3.4.2 E-Stop\n \u2022 halui.estop.activate (bit, in) - pin for requesting E-Stop\n \u2022 halui.estop.is-activated (bit, out) - indicates E-stop reset\n \u2022 halui.estop.reset (bit, in) - pin for requesting E-Stop reset\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1218 / 1279\n \n 13.3.4.3 Feed Override\n \u2022 halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work.\n \u2022 halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder\n or direct-value.\n@@ -53607,15 +53607,15 @@\n \u2022 halui.lube.on (bit, in) - pin for requesting lube on\n 13.3.4.8 Machine\n \u2022 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\n \u2022 halui.machine.is-on (bit, out) - indicates machine on\n \u2022 halui.machine.off (bit, in) - pin for requesting machine off\n \u2022 halui.machine.on (bit, in) - pin for requesting machine on\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1219 / 1279\n \n 13.3.4.9 Max Velocity\n The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ]\n section of the INI file.\n \u2022 halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work.\n@@ -53649,15 +53649,15 @@\n limit\n \u2022 halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software\n limit\n \u2022 halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software\n limit\n \u2022 halui.joint.N.override-limits (bit out) - status pin telling that joint N\u2019s limits are temporarily overridden\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1220 / 1279\n \n \u2022 halui.joint.N.unhome (bit in) - pin for unhoming joint N\n \u2022 halui.joint.selected (u32 out) - selected joint number (0 \u2026 num_joints-1)\n \u2022 halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted\n \u2022 halui.joint.selected.home (bit in) - pin for homing the selected joint\n@@ -53690,15 +53690,15 @@\n \u2022 halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when\n using increment-plus/minus\n \u2022 halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in\n the negative direction by the increment amount\n \u2022 halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the\n positive direction by the increment amount\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1221 / 1279\n \n \u2022 halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the\n halui.joint.jog-speed velocity\n \n \u2022 halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity\n@@ -53731,15 +53731,15 @@\n \u2022 halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the\n positive direction by the increment amount\n \u2022 halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the\n halui.axis.jog-speed velocity\n \u2022 halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the\n halui.axis.jog-speed velocity\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1222 / 1279\n \n 13.3.4.15 Mode\n \u2022 halui.mode.auto (bit, in) - pin for requesting auto mode\n \u2022 halui.mode.is-auto (bit, out) - indicates auto mode is on\n \u2022 halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on\n@@ -53769,15 +53769,15 @@\n \u2022 halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override\n when counts changes.\n \u2022 halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used\n with an encoder or direct-value.\n \u2022 halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale)\n \u2022 halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1223 / 1279\n \n \u2022 halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale)\n \u2022 halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override\n \u2022 halui.rapid-override.value (float out) - current Rapid Override value\n \u2022 halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0)\n@@ -53802,15 +53802,15 @@\n \u2022 halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction)\n \u2022 halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion\n \u2022 halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse\n \u2022 halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward\n \u2022 halui.spindle.N.start (bit, in) - starts the spindle\n \u2022 halui.spindle.N.stop (bit, in) - stops the spindle\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1224 / 1279\n \n 13.3.4.20 Tool\n \u2022 halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis\n \u2022 halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis\n \u2022 halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis\n@@ -53831,15 +53831,15 @@\n To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the\n halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto\n pin. You do this with an and2 component. The following figure shows how this is done. When the\n Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK\n for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component\n are on the and2.0.out will be on and this will start the program.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1225 / 1279\n \n Figure 13.2: Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= \n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -53862,15 +53862,15 @@\n Your input and output pins are connected to the pins wired to the other controller. They may be\n parallel port pins or any other I/O pins that you have access to.\n \n This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p\n signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC\n is paused.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1226 / 1279\n \n To resume the LinuxCNC G-code program, when the external controller is ready it will make its output\n true. This will signal LinuxCNC that it should resume executing G-code.\n Difficulties in timing\n \u2022 The \u201dresume\u201d input return signal should not be longer than the time required to get the G-code\n@@ -53904,15 +53904,15 @@\n \u2022 send the command by using one of the linuxcnc command channel methods\n To retrieve messages from the error channel, poll the error channel periodically, and process any\n messages retrieved.\n \u2022 poll the status channel, either periodically or as needed\n \u2022 print any error message and explore the exception code\n linuxcnc also defines the error Python exception type to support error reporting.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1227 / 1279\n \n 13.5.3 Reading LinuxCNC status\n Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some\n 80+ values (run while linuxcnc is running for typical values):\n #!/usr/bin/env python3\n@@ -53954,15 +53954,15 @@\n Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256.\n block_delete\n (returns boolean) - block delete current status.\n call_level\n (returns integer) \u0300 - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise\n specified\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1228 / 1279\n \n command\n (returns string) - currently executing command.\n current_line\n (returns integer) - currently executing line.\n@@ -54004,15 +54004,15 @@\n file\n (returns string) - currently loaded G-code filename with path.\n flood\n (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON.\n g5x_index\n (returns integer) - currently active coordinate system, G54=1, G55=2 etc.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1229 / 1279\n \n g5x_offset\n (returns tuple of floats) - offset of the currently active coordinate system.\n g92_offset\n (returns tuple of floats) - pose of the current g92 offset.\n@@ -54055,15 +54055,15 @@\n \u2022 KINEMATICS_FORWARD_ONLY\n \u2022 KINEMATICS_INVERSE_ONLY\n \u2022 KINEMATICS_BOTH\n limit\n (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4,\n maxSoftLimit=8.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1230 / 1279\n \n linear_units\n (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value.\n lube\n (returns integer) - lube on flag.\n@@ -54107,15 +54107,15 @@\n position\n (returns tuple of floats) - trajectory position.\n probe_tripped\n (returns boolean) - flag, True if probe has tripped (latch)\n probe_val\n (returns integer) - reflects value of the motion.probe-input pin.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1231 / 1279\n \n probed_position\n (returns tuple of floats) - position where probe tripped.\n probing\n (returns boolean) - flag, True if a probe operation is in progress.\n@@ -54156,15 +54156,15 @@\n tool_offset\n (returns tuple of floats) - offset values of the current tool.\n tool_table\n (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields:\n id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle,\n backangle, orientation. The id and orientation are integers and the rest are floats.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1232 / 1279\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n s.poll()\n@@ -54200,15 +54200,15 @@\n enabled\n (returns integer) - non-zero means enabled.\n fault\n (returns integer) - non-zero means axis amp fault.\n ferror_current\n (returns float) - current following error.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1233 / 1279\n \n ferror_highmark\n (returns float) - magnitude of max following error.\n homed\n (returns integer) - non-zero means has been homed.\n@@ -54244,15 +54244,15 @@\n units\n (returns float) - joint units per mm, or per degree for angular joints.\n (joint units are the same as machine units, unless set otherwise by the configuration parameter\n [JOINT_n]UNITS)\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1234 / 1279\n \n 13.5.4 The spindle dictionary\n brake\n (returns integer) - value of the spindle brake flag.\n direction\n@@ -54289,15 +54289,15 @@\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n c = linuxcnc.command()\n def ok_for_mdi():\n s.poll()\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1235 / 1279\n \n return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state \u2190== linuxcnc.INTERP_IDLE)\n if ok_for_mdi():\n c.mode(linuxcnc.MODE_MDI)\n c.wait_complete() # wait until mode switch executed\n@@ -54338,15 +54338,15 @@\n c.override_limits()\n c.program_open(\u201dfoo.ngc\u201d)\n c.reset_interpreter()\n c.tool_offset(toolno, z_offset,\n \n x_offset, diameter, frontangle, backangle, orientation)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1236 / 1279\n \n 13.5.6.1 linuxcnc.command attributes\n \n serial\n the current command serial number\n@@ -54387,15 +54387,15 @@\n linuxcnc.JOG_STOP\n linuxcnc.JOG_CONTINUOUS\n linuxcnc.JOG_INCREMENT\n jjogmode\n True\n request individual joint jog (requires teleop_enable(0))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1237 / 1279\n \n False\n request axis Cartesian coordinate jog (requires teleop_enable(1))\n joint_num_or_axis_index\n For joint jog (jjogmode=1)\n@@ -54436,15 +54436,15 @@\n set_block_delete(int)\n set block delete flag\n set_digital_output(int, int)\n set digital output pin to value\n set_feed_hold(int)\n set feed hold on/off\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1238 / 1279\n \n set_feed_override(int)\n set feed override on/off\n set_max_limit(int, float)\n set max position limit for a given axis\n@@ -54480,15 +54480,15 @@\n c.spindle.(linuxcnc.SPINDLE_OFF)\n # Stop spindle 0 explicitly.\n c.spindle.(linuxcnc.SPINDLE_OFF, 0)\n \n spindleoverride(float [, int])\n Set spindle override factor. Defaults to spindle 0.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1239 / 1279\n \n state(int)\n Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON,\n or STATE_OFF.\n task_plan_sync()\n@@ -54528,15 +54528,15 @@\n Here\u2019s an example for reading values from an INI file through the linuxcnc.ini object:\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*# run as:\n # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini\n import sys\n import linuxcnc\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n inifile = linuxcnc.ini(sys.argv[1])\n # inifile.find() returns None if the key wasn\u2019t found - the\n # following idiom is useful for setting a default value:\n machine_name = inifile.find(\u201dEMC\u201d, \u201dMACHINE\u201d) or \u201dunknown\u201d\n print(\u201dmachine name: \u201d, machine_name)\n # inifile.findall() returns a list of matches, or an empty list\n@@ -54571,15 +54571,15 @@\n clear()\n clear the position logger\n stop()\n stop the position logger\n \n 1240 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1241 / 1279\n \n call()\n Plot the backplot now.\n last([int])\n Return the most recent point on the plot or None\n@@ -54613,15 +54613,15 @@\n 13.6.2.1 Sample HAL component code pattern\n This program creates two HAL pins that output the status of G20/G21.\n #!/usr/bin/env python3\n import gi\n gi.require_version(\u2019Gtk\u2019, \u20193.0\u2019)\n from gi.repository import GObject\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1242 / 1279\n \n from gi.repository import GLib\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n@@ -54661,15 +54661,15 @@\n self.builder = builder\n GSTAT.connect(\u201dstate-estop\u201d,lambda w: self.update_estate_label(\u2019ESTOP\u2019))\n GSTAT.connect(\u201dstate-estop-reset\u201d,lambda w: self.update_estate_label(\u2019RESET\u2019))\n GSTAT.connect(\u201dstate-on\u201d,lambda w: self.update_state_label(\u2019MACHIBE ON\u2019))\n GSTAT.connect(\u201dstate-off\u201d,lambda w: self.update_state_label(\u2019MACHINE OFF\u2019))\n GSTAT.connect(\u201dinterp-paused\u201d,lambda w: self.update_interp_label(\u2019Paused\u2019))\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1243 / 1279\n \n GSTAT.connect(\u201dinterp-run\u201d,lambda w: self.update_interp_label(\u2019Run\u2019))\n GSTAT.connect(\u201dinterp-idle\u201d,lambda w: self.update_interp_label(\u2019Idle\u2019))\n def update_state_label(self,text):\n self.builder.get_object(\u2019state_label\u2019).set_label(\u201dState: %s\u201d % (text))\n@@ -54704,15 +54704,15 @@\n def update_estate_label(self,text):\n self.w.e_state_label.setText(\u201dE State: %s\u201d % (text))\n def update_interp_label(self,text):\n self.winterp_state_label.setText(\u201dInterpreter State: %s\u201d % (text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1244 / 1279\n \n 13.6.3 Messages\n periodic\n (returns nothing) - sent every 100 ms.\n state-estop\n@@ -54751,15 +54751,15 @@\n interp-idle\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is idle.\n interp-paused\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is paused.\n interp-reading\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is reading.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1245 / 1279\n \n interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n jograte-changed\n (returns float) - Sent when jog rate has changed.\n@@ -54803,15 +54803,15 @@\n motion-mode-changed\n (returns integer) - Sent when motion\u2019s mode has changed\n spindle-control-changed\n (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction\n & rate, at-speed state)\n Sent when spindle direction or running status changes or at-speed changes.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1246 / 1279\n \n current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n current-x-rel-position\n (returns float) - Sent every 100 ms.\n@@ -54854,15 +54854,15 @@\n rpm-mode\n (returns bool) - Sent when G97 status changes\n (constant RPM mode)\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1247 / 1279\n \n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n flood-changed\n@@ -54904,15 +54904,15 @@\n machine-log-changed\n (returns None) - intended to be sent when machine log has changed.\n This depends on the widget/libraries used.\n update-machine-log\n (returns string, string) - intended to be sent when updating the machine.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1248 / 1279\n \n move-text-lineup\n (returns None) - intended to be sent when moving the cursor one line up in G-code display.\n This depends on the widget/libraries used.\n move-text-linedown\n@@ -54956,15 +54956,15 @@\n General message should be used a sparsely as reasonable because all object connected to it will\n have to parse it.\n It uses a Python dict for communication.\n The dict should include and be checked for a unique id keyname pair:\n \u2022 ID: UNIQUE_ID_CODE\n The dict usually has more keyname pair - it depends on implementation.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1249 / 1279\n \n forced-update\n (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object.\n This depends on the widget/libraries used.\n progress\n@@ -54999,15 +54999,15 @@\n (nothing) - This will return the state of Estop (BOOL)\n set_tool_touchoff\n (tool,axis,value) - This command will\n 1. record the current mode,\n 2. switch to MDI mode,\n 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE],\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1250 / 1279\n \n 4. wait for it to complete,\n 5. invoke G43,\n 6. wait for it to complete,\n 7. switch back to the original mode.\n@@ -55045,15 +55045,15 @@\n get_selected_axis\n (None) - returns string representing the internal selected axis letter.\n is_man_mode\n (None) is_mdi_mode\n (None) is_auto_mode\n (None) -\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1251 / 1279\n \n is_on_and_idle\n (None) is_auto_running\n (None) is_auto_paused\n (None) is_file_loaded\n@@ -55068,30 +55068,30 @@\n state-tags branch.\n \n 13.7 Vismach\n Vismach is a set of Python functions that can be used to create and animate models of machines.\n Vismach displays the model in a 3D viewport and the model parts are animated as the values of\n associated HAL pins change.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1252 / 1279\n \n The Vismach viewport view can be manipulated as follows:\n \u2022 zoom by scroll wheel or right button drag,\n \u2022 pan by left button drag,\n \u2022 rotate by middle-button drag or shift-drag.\n A Vismach model takes the form of a Python script and can use standard Python syntax. This means\n that there is more than one way to lay out the script, but in the examples given in this document I will\n use the simplest and most basic of them.\n The basic sequence in creating the Vismach model is\n \u2022 Create the HAL pins that control the motion.\n \u2022 Create the parts.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1253 / 1279\n \n \u2022 Define how they move.\n \u2022 Assemble into movement groups.\n \n 13.7.1 Start the script\n@@ -55131,15 +55131,15 @@\n \u2022 cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder\n = CylinderZ(z1, r1, z2, r2)\n Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on\n the axis.\n \u2022 sphere = Sphere(x, y, z, r)\n Creates a sphere of radius r at (x,y,z)\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1254 / 1279\n \n \u2022 triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1,\n x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2)\n Creates a triangular plate between planes defined by the last two values parallel to the specified\n plane, with vertices given by the three coordinate pairs.\n@@ -55177,15 +55177,15 @@\n The function arguments are:\n \u2013 first a collection/part which can be pre-created earlier in the script, or could be created at this\n point if preferred eg part1 = HalTranslate([Box(....)], ...).\n \u2013 The HAL component is the next argument, ie the object returned by the comp = hal.component(...)\n command. After that is the name of the HAL in that will animate the motion, this needs to match\n an existing HAL pin that is part of the HAL component created earlier in the script.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1255 / 1279\n \n \u2013 Then follow the X, Y, Z scales.\n For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the\n positive X direction.\n However if the STL file happened to be in cm and the machine was in inches, this could be fixed\n@@ -55226,15 +55226,15 @@\n head = AsciiSTL(filename=\u201d./head.stl\u201d)\n head = Color([0.3,0.3,0.3,1],[head])\n head = Translate([head],0,0,4)\n head = Collection([head, tool, dogs, draw])\n head = HalTranslate([head],c,\u201dZ\u201d,0,0,0.1)\n # base\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1256 / 1279\n \n base = AsciiSTL(filename=\u201d./base.stl\u201d)\n base = Color([0.5,0.5,0.5,1],[base])\n # mount head on it\n base = Collection([head, base])\n@@ -55275,15 +55275,15 @@\n import hal\n #create the HAL component and pins\n comp = hal.component(\u201dcompname\u201d)\n comp.newpin(\u201dpin_name\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n ...\n #create the floor, tool and work\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n floor = Box(-50, -50, -3, 50, 50, 0)\n work = Capture()\n tooltip = Capture()\n ...\n #Build and assemble the model\n part1 = Collection([Box(-6,-3,94,6,3,100)])\n@@ -55294,23 +55294,23 @@\n #create a top-level model\n model = Collection([base, saddle, head, carousel])\n #Start the visualization\n main(model, tooltip, work, 100, lat=-75, lon=215)\n \n 1257 / 1279\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1258 / 1279\n \n Part III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1259 / 1279\n \n Chapter 14\n \n Overleaf\n \n@@ -55330,15 +55330,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1260 / 1279\n \n Chapter 15\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -55372,15 +55372,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1261 / 1279\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -55425,15 +55425,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1262 / 1279\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -55476,15 +55476,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1263 / 1279\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -55527,15 +55527,15 @@\n Rapid\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n 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\n program for the first time.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1264 / 1279\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet\n these requirements it is necessary to install a realtime kernel such as RTAI and build the software\n to run in the special real-time environment. For this reason real-time software runs in kernelspace.\n@@ -55576,28 +55576,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1265 / 1279\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1266 / 1279\n \n Chapter 16\n \n Copyright\n 16.1 Legal Section\n@@ -55625,15 +55625,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1267 / 1279\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any\n such manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -55682,15 +55682,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front\n cover must present the full title with all words of the title equally prominent and visible. You may add\n other material on the covers in addition. Copying with changes limited to the covers, as long as they\n preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying\n in other respects.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1268 / 1279\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access\n@@ -55736,15 +55736,15 @@\n Version. N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any\n Invariant Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1269 / 1279\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -55785,15 +55785,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1270 / 1279\n \n this License provided that you also include the original English version of this License. In case of a\n disagreement between the translation and the original English version of this License, the original\n English version will prevail.\n 9. TERMINATION\n@@ -55821,15 +55821,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1271 / 1279\n \n Chapter 17\n \n LinuxCNC History\n 17.1 Origin\n@@ -55861,15 +55861,15 @@\n interested in improving EMC. Many people requested or coded small improvements to the code. Ray\n Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code\n 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\n NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the\n predominant user interface for EMC at the time.\n For NIST\u2019s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source.\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1272 / 1279\n \n By this time interest in EMC as beginning to pick up substantially. As more and more people attempted\n installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of\n compiling the EMC code became glaringly obvious. Many attempts to document the process and\n write scripts were attempted, some with moderate success. The problem of matching the correct\n@@ -55904,15 +55904,15 @@\n The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0.\n \n 17.1.2 Additional Info\n NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf .\n NIST also published a paper on the history of EMC and its transition to open source. The paper is also\n available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1273 / 1279\n \n Chapter 18\n \n Index\n _\n@@ -55996,15 +55996,15 @@\n connecting-rs485, 344\n Controlled Point, 64\n coolant, 63\n Cooling, 65\n coordinate measuring machine, 1261\n Coordinate Systems, 819\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Core components, 250\n Creating Userspace Python Components, 302\n Custom sections and variables, 156\n Cutter Radius Compensation, 832\n D\n debounce, 282\n@@ -56112,15 +56112,15 @@\n Spindle Stop\n Manual Out, 903\n G89 Boring\n Dwell\n Feed Out, 903\n G90\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n G91 Distance Mode, 903\n G91 Distance Mode, 903\n G92 Coordinate System Offset, 904\n G92.1\n G92.2 Reset G92 Offsets, 905\n G92.2 Reset G92 Offsets, 905\n@@ -56231,15 +56231,15 @@\n HAL xor2\n xor2, 216\n HAL: Implementation, 203\n HAL: Interconnections Design, 203\n HAL: Testing, 203\n HAL:Function, 206\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n HAL:Thread, 206\n HAL:Velocity example, 247\n Halcmd Tutorial, 220\n Halmeter, 312\n Tutorial Halmeter, 226\n Halui Examples, 1224\n@@ -56346,15 +56346,15 @@\n M48\n M49 Speed and Feed Override Control, 911\n M49 Speed and Feed Override Control, 911\n M5 Spindle Control, 908\n M50 Feed Override Control, 911\n M51 Spindle Speed Override, 911\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n M52 Adaptive Feed Control, 911\n M53 Feed Stop Control, 911\n M6-Tool-Change, 909\n M60 Pallet Change Pause, 908\n M61 Set Current Tool, 912\n M62 - M65 Digital Output Control, 912\n@@ -56461,15 +56461,15 @@\n real-time, 1264\n refsig-timing-diagram, 337\n Repeat Loop, 924\n Return Values, 925\n RS274NGC, 1264\n RS274NGC STARTUP CODE, 163\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n RTAI, 1264\n RTAPI, 1264\n RTLINUX, 1264\n Running LinuxCNC, 14\n S\n s32, 213\n@@ -56577,15 +56577,15 @@\n User Foreword, 43\n User Introduction, 44\n USER M PATH, 164\n V\n Variables, 156\n VOLATILE HOME, 186\n \n-\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fLinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n W\n weighted_sum, 216\n Words, 840\n world coordinates, 1265\n X\n xor2, 216\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Getting Started\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Contents\n 1 About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.5 Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iii\n \n 3.6 Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 10\n \n@@ -272,15 +272,15 @@\n \n 28\n \n 5.5.2 INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n iv\n \n 5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n@@ -434,15 +434,15 @@\n \n 38\n \n 5.13.4XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n v\n \n 5.13.4.1xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . .\n \n 38\n \n@@ -581,15 +581,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 49\n 49\n 54\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n vi\n \n The LinuxCNC Team\n \n 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\n Copyright \u00a9 2000-2020 LinuxCNC.org\n@@ -607,15 +607,15 @@\n trademark Linux\u00ae is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds,\n owner of the mark on a world-wide basis.\n The LinuxCNC project is not affiliated with Debian\u00ae. Debian is a registered trademark owned by\n Software in the Public Interest, Inc.\n The LinuxCNC project is not affiliated with UBUNTU\u00ae. UBUNTU is a registered trademark owned\n by Canonical Limited.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 55\n \n Chapter 1\n \n About LinuxCNC\n 1.1 The Software\n@@ -642,15 +642,15 @@\n \u2022 It can simultaneously move up to 9 axes and supports a variety of interfaces.\n \u2022 The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC\n software at the computer, or open loop with step-servos or stepper motors.\n \u2022 Motion control features include: cutter radius and length compensation, path deviation limited to\n a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed\n override, and constant velocity control.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 55\n \n \u2022 Support for non-Cartesian motion systems is provided via custom kinematics modules. Available\n architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary\n joints to provide motion such as PUMA or SCARA robots.\n \u2022 LinuxCNC runs on Linux using real time extensions.\n@@ -683,15 +683,15 @@\n 1.3.2 Mailing List\n An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at\n their convenience. You get better exposure to your questions on a mailing list than on the IRC but\n answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or\n individual replies back depending on how you set up your account.\n You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 55\n \n 1.3.3 Web Forum\n A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the\n linuxcnc.org home page.\n This is quite active but the demographic is more user-biased than the mailing list. If you want to be\n@@ -701,15 +701,15 @@\n A Wiki site is a user maintained web site that anyone can add to or edit.\n \n The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or\n \n 1.3.5 Bug Reports\n Report bugs to the LinuxCNC github bug tracker.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 55\n \n Chapter 2\n \n System Requirements\n 2.1 Minimum Requirements\n@@ -737,15 +737,15 @@\n LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can,\n however run on a standard kernel in simulation mode for purposes such as checking G-code, testing\n config files and learning the system. To work with these kernel versions there are two versions of\n LinuxCNC distributed. The package names are \u201dlinuxcnc\u201d and \u201dlinuxcnc-uspace\u201d.\n The realtime kernel options are preempt-rt, RTAI and Xenomai.\n You can discover the kernel version of your system with the command:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 55\n \n uname -a\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n@@ -781,15 +781,15 @@\n an extended time will give you the info you need to determine suitability.\n \n 2.3.2 Video Cards\n If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize\n your video card or monitor. This can sometimes be worked-around by installing drivers or creating /\n editing Xorg.conf files.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 55\n \n Chapter 3\n \n Getting LinuxCNC\n This section describes the recommended way to download and make a fresh install of LinuxCNC.\n@@ -816,15 +816,15 @@\n \n 3.1.1 Normal Download\n For x86 PCs Download the Live/Install CD by clicking here:\n https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso\n For the Raspberry Pi a complete SD card image is available here:\n https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 7 / 55\n \n This can be installed using the normal Pi install process including with the Raspberry Pi Imager app.\n This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version\n of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both\n WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by\n@@ -860,15 +860,15 @@\n 2. Then compare to these checksums\n md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41\n sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700\n \n Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program,\n but there are alternatives. More information can be found at: How To MD5SUM\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 8 / 55\n \n 3.2 Write the image to a bootable device\n The Raspberry Pi image is a completes SD card image and should be written to an SD card in the\n normal way.\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n@@ -903,15 +903,15 @@\n 4. Select the write speed. It is recommended that you write at the lowest possible speed.\n 5. Start the burning process.\n 6. If a choose a file name for the disc image window pops up, just pick OK.\n Writing the image to a DVD in Windows\n \n 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 9 / 55\n \n 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up.\n 3. Open Infra Recorder, and select the Actions menu, then Burn image.\n Writing the image to a DVD in Mac OSX\n 1. Download the .iso file\n@@ -945,15 +945,15 @@\n With the normal install the Update Manager will notify you of updates to LinuxCNC when you go on\n line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything\n except the operating system when asked to.\n \n Do not upgrade the operating system if prompted to do so. You should accept OS updates\n however, especially security updates.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 10 / 55\n \n 3.6 Install Problems\n In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot\n recognize the hard drive during the boot up.\n \n@@ -1055,15 +1055,15 @@\n \u2022 Debian Wheezy: deb https://linuxcnc.org wheezy base\n \u2022 Ubuntu Precise: deb https://linuxcnc.org precise base\n \n Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is\n strongly advised not to use either for a new install, and to seriously consider upgrading an existing\n installation.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 11 / 55\n \n The Buster / RTAI package is only available on amd64, but there are very few surviving systems that\n can not run a 64-bit OS.\n \n There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The\n@@ -1099,15 +1099,15 @@\n 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right\n click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the\n system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels\n need not be deleted, but grub boot configuration changes will be needed beyond the scope of\n this document.\n 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 55\n \n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n Alternate keyserver: keyserver.ubuntu.com\n \n 6. Add the apt repository:\n@@ -1142,15 +1142,15 @@\n sudo apt-get update\n \n 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc\n sudo apt-get install linux-image-4.19.195-rtai-amd64\n \n 6. Install the RTAI application layer\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 55\n \n sudo apt-get install rtai-modules-4.19.195\n \n 7. Install LinuxCNC (may be necessary to reboot before installing)\n sudo apt-get install linuxcnc\n@@ -1187,15 +1187,15 @@\n \n 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running\n # Alternate keyserver: keyserver.ubuntu.com\n sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef\n \n 4. Add a new apt source\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 55\n \n sudo add-apt-repository \u201ddeb https://linuxcnc.org/ precise base 2.8-rt\u201d\n \n 5. Fetch the package list from linuxcnc.org.\n sudo apt-get update\n@@ -1209,15 +1209,15 @@\n 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name\n is 3.4-9-rtai-686-pae.\n uname -r\n \n 9. Run\n sudo apt-get install linuxcnc\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 55\n \n Chapter 4\n \n Running LinuxCNC\n 4.1 Invoking LinuxCNC\n@@ -1244,15 +1244,15 @@\n applications like PyVCP or GladeVCP.\n \u2013 attic - Obsolete or historical configurations.\n The sim configurations are often the most useful starting point for new users and are organized around\n supported GUIs:\n \u2022 axis - Keyboard and Mouse GUI\n \u2022 gmoccapy - Touch Screen GUI\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 55\n \n \u2022 gscreen - Touch Screen GUI\n \u2022 low_graphics - Keyboard GUI\n \u2022 pyvcp_demo - Paneles de Control Virtuales Python\n \u2022 qtvcp_screens - Guis dise\u00f1adas con Qt5 y Python\n@@ -1283,15 +1283,15 @@\n applications that can be used with linuxcnc:\n \u2022 info - creates a file with system information that may be useful for problem diagnosis.\n \u2022 gladevcp - Example GladeVCP applications.\n \u2022 halrun - Starts halrun in an terminal.\n \u2022 latency - Applications to investigate latency\n \u2013 latency-test - standard test\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 55\n \n \u2013 latency-plot - stripchart\n \u2013 latency-histogram - histogram\n \u2022 parport - Applications to test parport.\n \u2022 pyvcp - Example pyvcp applications.\n@@ -1303,15 +1303,15 @@\n Figure 4.1: LinuxCNC Configuration Selector\n Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration.\n Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly\n launch this configuration without showing the Configuration Selector screen.\n When you select a configuration from the Sample Configurations section, it will automatically place a\n copy of that config in the ~/linuxcnc/configs directory.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 55\n \n 4.3 Next steps in configuration\n After finding the sample configuration that uses the same interface hardware as your machine (or a\n simulator configuration), and saving a copy to your home directory, you can customize it according to\n the details of your machine. Refer to the Integrator Manual for topics on configuration.\n@@ -1338,15 +1338,15 @@\n HAL files, local modifications will then prevail.\n The Configuration selector makes a symbolic link in the user configuration directory (named hallib)\n that points to the system HAL file library. This link simplifies copying a library file. For example, to\n copy the library core_sim.hal file in order to make local modifications:\n cd ~/linuxcnc/configs/name_of_configuration\n cp hallib/core_sim.hal core_sim.hal\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 19 / 55\n \n Chapter 5\n \n Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n@@ -1378,15 +1378,15 @@\n \n You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also\n available for Debian Jessie or Debian Buster if you happen to already be running one of those.\n You will also need to check which realtime kernel is being used:\n uname -r\n 4.19.0-9-rt-amd64\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 20 / 55\n \n If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should\n install the \u201duspace\u201d version of LinuxCNC. You should also install uspace for \u201dsim\u201d configs on nonrealtime kernels\n If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC\n version to install.\n@@ -1431,15 +1431,15 @@\n deb https://linuxcnc.org jessie base\n 2.8-rt\n deb https://linuxcnc.org buster base\n 2.8-rtpreempt\n deb https://linuxcnc.org buster base\n 2.8-rt\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 21 / 55\n \n \u2022 Click Add Source, then Close in the Software Sources window. If it pops up a window informing\n you that the information about available software is out-of-date, click the Reload button.\n \n 5.1.2 Upgrading to the new version\n@@ -1459,15 +1459,15 @@\n \n 5.1.3 Ubuntu Precise\n \u2022 Click on the Dash Home icon in the top left.\n \u2022 In the Search field, type \u201dupdate\u201d, then click on the Update Manager icon.\n \u2022 Click the Check button to fetch the list of packages available.\n \u2022 Click the Install Updates button to install the new versions of all packages.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 22 / 55\n \n 5.2 Updating without Network\n To update without a network connection you need to download the .deb then install it with dpkg. The\n .debs can be found in https://linuxcnc.org/dists/ .\n You have to drill down from the above link to find the correct deb for your installation. Open a terminal\n@@ -1504,15 +1504,15 @@\n /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting\n correspondingly needs to change from libcanterp.so to canterp.so.\n \n 5.4 Updating Configuration Files (for 2.8.x)\n The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your\n machine configuration.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 23 / 55\n \n The main difference is that LinuxCNC no longer makes any assumptions about which joint controls\n which axis. This change is generally termed \u201djoints-axes\u201d after the name of the development branch\n where the changes started. This change has been in development since at least 2010, and has finally\n been merged.\n@@ -1552,15 +1552,15 @@\n spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for\n the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a\n HAL file loadrt entry for motmod).\n The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match.\n The spindle control pin names have been changed to make spindles look more like axes and joints.\n motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 24 / 55\n \n take care of these changes. To control extra spindles the G and M-codes which control spindle speed\n now accept an additional \u201d$\u201d argument, for example M3 $2 to start the third spindle. \u201d$\u201d was chosen\n to avoid clashes with any existing code letters. It should be possible to create custom G-codes to\n match any other multi-spindle controller. See the G-code and M-code manuals for code changes, and\n@@ -1608,15 +1608,15 @@\n \n HAL file:\n \n loadrt [KINS]KINEMATICS\n \n haltcl file: loadrt $::KINS(KINEMATICS)\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 25 / 55\n \n 5.4.6 Lathe Configurations\n 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\n configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for\n homing the unused Y coordinate. These arrangements are no longer required or recommended.\n@@ -1656,15 +1656,15 @@\n \n Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters:\n [KINS]KINEMATICS = trivkins coordinates=XZ\n [KINS]JOINTS\n = 2\n [TRAJ]COORDINATES = XZ\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 26 / 55\n \n Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint\n positioning (for homing):\n [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH\n [KINS]JOINTS\n@@ -1712,15 +1712,15 @@\n [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer\n \n Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe\n [JOINT_N]LOCKING_INDEXER = 1\n \n HAL pins can be created to coordinate use of a locking indicator joint:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 27 / 55\n \n joint.N.unlock\n (BIT output from HAL)\n joint.N.is-unlocked (BIT input to\n HAL)\n@@ -1762,15 +1762,15 @@\n For example, lines like this will no longer be accepted:\n MAX_VELOCITY = 7.5 # This is the max velocity of the axis.\n \n They could be transformed into pairs of lines like this:\n # This is the max velocity of the axis.\n MAX_VELOCITY = 7.5\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 28 / 55\n \n 5.4.11 [TRAJ] settings\n In 2.7.x versions, trajectory planning ([TRAJ]) settings included:\n [TRAJ]\n DEFAULT_ACCELERATION\n@@ -1837,15 +1837,15 @@\n axis.L.jog-vel-mode\n \n where N is a joint number and L is an axis letter.\n To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint\n number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example,\n if joint 1 corresponds exactly to axis letter y:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 29 / 55\n \n net jora_1_y_enable\n => joint.1.jog-enable => axis.y.jog-enable\n net jora_1_y_scale\n => joint.1.jog-scale => axis.y.jog-scale\n@@ -1904,15 +1904,15 @@\n 5.6.1 halcompile\n The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt)\n the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names=\n items for userspace (loadusr) components.\n For components using personality, the maximum number is now settable by a command line option\n -P|--personalities.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 30 / 55\n \n 5.6.2 Parameter to Pin changes\n The following HAL output pins were changed from parameters to pins so that they can be connected\n to signals:\n motion.servo.last-period\n@@ -1946,15 +1946,15 @@\n homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode\n and axis jogging (coordinate letter X,Y,\u2026) is used. This is appropriate for all G-code moves requested\n by MDI commands or by G-code programs.\n Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide\n a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that\n use non-IDENTITY kinematics.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 31 / 55\n \n In many common situations, joint jogging is never needed since homing is accomplished using home\n switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine,\n issues the Home-All command, the machine homes and changes to world mode automatically. See\n Homing Configuration.\n@@ -2001,15 +2001,15 @@\n was: halui.jog.N.minus\n ... etc.\n \n is: halui.joint.N.plus\n is: halui.joint.N.minus\n ... etc.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 32 / 55\n \n where N is a joint number (0 \u2026 num_noints-1) or selected for the joint selected by the halui.joint.N.select\n pins.\n 5.8.2.3 Additional pin renames\n The HAL pins for selected joints were renamed for consistency with related pins.\n@@ -2042,15 +2042,15 @@\n 2. Preview Tab display of joints or axes according to joint or teleop mode\n 3. Preview Tab display of Home and Limit icons in joint mode\n 4. Preview Tab display of All-homed and Any-limit icons in teleop mode\n 5. DRO Tab display of joint or axes according to joint or teleop mode\n 6. Jogging is supported in both joint and teleop motion modes.\n 7. External changes to the joint/teleop motion mode are detected.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 33 / 55\n \n 5.8.3.4 Home icons\n For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a\n joint is homed.\n For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint\n@@ -2085,15 +2085,15 @@\n commands have been simplified to use an argument that is just the coordinate letter.\n Commands now using a coordinate letter argument are:\n 1. emc_pos_offset\n 2. emc_abs_cmd_pos\n 3. emc_abs_act_pos\n 4. emc_rel_cmd_pos\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 34 / 55\n \n 5. emc_rel_act_pos\n 6. emc_tool_offset\n 7. emc_probed_pos\n \n@@ -2131,15 +2131,15 @@\n was: set jog_stop\n is: set jog_stop joint_number|axis_letter\n \n Test for teleop mode using command: get teleop_enable\n If TELEOP_ENABLE=YES, use axis_letter;\n Else use joint_number\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 35 / 55\n \n Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234\n in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided\n the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding\n command is: set jog x 1.234.\n@@ -2167,15 +2167,15 @@\n \n 5.12 Simulator configurations (updates for joints axes 2.8.x)\n 5.12.1 Pre-joints_axes\n Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common\n milling machine \u2014 a Cartesian system with trivial kinematics and three axes named X Y Z. Typical\n HAL file entries:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 36 / 55\n \n [HAL]\n HALFILE = core_sim.hal\n HALFILE = sim_spindle_encoder.hal\n HALFILE = axis_manualtoolchange.hal\n@@ -2215,15 +2215,15 @@\n Omitting one or more of the core functions allows testing without without the function or addition of\n new HALFILEs to implement or expand on the functionality.\n 5.12.2.1 Equivalent HAL commands file\n When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to\n show the halcmd commands issued. The file name is based on the name of the INI file with _cmds\n appended to the basename and a conventional .hal file extension. Example:\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 37 / 55\n \n inifilename:\n example.ini\n equivalent_halfilename: example_cmds.hal\n \n@@ -2255,15 +2255,15 @@\n Commits to unreleased branches may make changes that affect testers and early-adopters of the\n unreleased software.\n \n 5.13.1 Motion pins\n New pins (see the motion man page for more info):\n --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction ---\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 38 / 55\n \n 5.13.2 HAL pins\n Name changes:\n was: axis.L.vel-cmd\n is: axis.l.teleop-vel-cmd\n@@ -2294,15 +2294,15 @@\n 5.13.6 bldc3_hall\n The bldc_hall3 component has been removed. The bldc component is more flexible and better tested.\n \n 5.13.7 [JOINT_n]HOME_SEQUENCE Starting values\n Starting sequence values may be 0, 1 (or -1) only. See the \u201dHoming Configuration\u201d documentation for\n more information.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 39 / 55\n \n 5.13.8 [JOINT_n]HOME_SEQUENCE Negative values\n Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent\n misalignment (racking) in common gantry configurations. As always, machines with any kinematics\n type must be homed prior to enabling conventional world mode jogging.\n@@ -2335,15 +2335,15 @@\n \n 5.14.4 Configuration Updates\n 5.14.4.1 INI file Settings\n New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET \u2014 support encoder with index that does not\n reset upon receipt of index pulse following assertion of index_enable.\n axis.py default for [DISPLAY]GEOMETRY was:\u201dXYZBCUVW\u201d,is:\u201dXYZABCUVW\u201d\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 40 / 55\n \n 5.14.5 Code Updates\n Management of the internal storage of tool data and the communication of same between EMCIO and\n TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata\n is deprecated and may be removed before a new release.\n@@ -2371,15 +2371,15 @@\n A homing api is provided by src/emc/motion/homing.h to support users\u2019 custom homing code that\n replaces src/emc/motion/homing.c with a user-customized homing.c file.\n 5.14.5.5 Motion\n The motion module supports kinematics modules that define new functions kinematicsSwitchable()\n and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided for use of such kinematics modules.\n 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 \u201dKINS_NOT_SWITCHABLE\u201d provided by kinematics.h.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 41 / 55\n \n 5.14.5.6 Switchkins Kinematics Modules\n Several kinematics modules are now switchable between their eponymous kinematics and an alternate\n identity kinematics mode.\n Kinematic modules supporting switchkins:\n@@ -2408,15 +2408,15 @@\n lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified.\n lib/python/vismach.py: new HAL pin vismach.plotclear\n \n 5.14.6 HAL\n 5.14.6.1 Components\n sim_home_switch: added I/O pin for index-enable\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 42 / 55\n \n 5.14.6.2 Motion module pins\n motion.feed-upm \u2014 current feed in units per minute\n \n 5.14.7 Configs\n@@ -2426,15 +2426,15 @@\n 5.14.7.2 Simulation Configs\n sim/configs/axis/axis_9axis: demonstrate simulated encoder index\n \n 5.15 Changes after 2.8.x\n Future versions of this document will take into account changes made to the development branch\n after the latest 2.8.x release.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 43 / 55\n \n Chapter 6\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -2468,15 +2468,15 @@\n Backlash Compensation\n Any technique that attempts to reduce the effect of backlash without actually removing it from\n the mechanical system. This is typically done in software in the controller. This can correct the\n final resting place of the part in motion but fails to solve problems related to direction changes\n while in motion (think circular interpolation) and motion that is caused when external forces\n (think cutting tool pulling on the work piece) are the source of the motion.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 44 / 55\n \n Ball Screw\n A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce\n friction. Ball-screws have very low friction and backlash, but are usually quite expensive.\n Ball Nut\n@@ -2521,15 +2521,15 @@\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n EMCMOT\n The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a\n real-time program and directly controls the motors.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 45 / 55\n \n Encoder\n A device to measure position. Usually a mechanical-optical device, which outputs a quadrature\n signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.\n Feed\n@@ -2572,15 +2572,15 @@\n Joint Coordinates\n These specify the angles between the individual joints of the machine. See also Kinematics\n Jog\n Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each\n key-press, or moves the axis at a constant speed as long as you hold down the key. In manual\n mode, jog speed can be set from the graphical interface.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 46 / 55\n \n kernel-space\n See real-time.\n Kinematics\n The position relationship between world coordinates and joint coordinates of a machine. There\n@@ -2623,15 +2623,15 @@\n Rapid\n Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool\n meets the workpiece or the fixturing during a rapid, it is probably a bad thing!\n Rapid rate\n 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\n program for the first time.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 47 / 55\n \n Real-time\n Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet\n these requirements it is necessary to install a realtime kernel such as RTAI and build the software\n to run in the special real-time environment. For this reason real-time software runs in kernelspace.\n@@ -2672,28 +2672,28 @@\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n Tcl/Tk\n A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and\n selection wizards were written.\n Traverse Move\n A move in a straight line from the start point to the end point.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 48 / 55\n \n Units\n See \u201dMachine Units\u201d, \u201dDisplay Units\u201d, or \u201dProgram Units\u201d.\n Unsigned Integer\n A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a\n usable range of zero to 4,294,967,296.)\n World Coordinates\n This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame\n that is attached to some point (generally the base) of the machine tool.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 49 / 55\n \n Chapter 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -2720,15 +2720,15 @@\n We have designed this License in order to use it for manuals for free software, because free software\n needs free documentation: a free program should come with manuals providing the same freedoms\n that the software does. But this License is not limited to software manuals; it can be used for any\n textual work, regardless of subject matter or whether it is published as a printed book. We recommend\n this License principally for works whose purpose is instruction or reference.\n 1. APPLICABILITY AND DEFINITIONS\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 50 / 55\n \n This License applies to any manual or other work that contains a notice placed by the copyright holder\n saying it can be distributed under the terms of this License. The \u201dDocument\u201d, below, refers to any\n such manual or work. Any member of the public is a licensee, and is addressed as \u201dyou\u201d.\n A \u201dModified Version\u201d of the Document means any work containing the Document or a portion of it,\n@@ -2777,15 +2777,15 @@\n these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.\n Both covers must also clearly and legibly identify you as the publisher of these copies. The front\n cover must present the full title with all words of the title equally prominent and visible. You may add\n other material on the covers in addition. Copying with changes limited to the covers, as long as they\n preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying\n in other respects.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 51 / 55\n \n If the required texts for either cover are too voluminous to fit legibly, you should put the first ones\n listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.\n If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with\n each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access\n@@ -2831,15 +2831,15 @@\n Version. N. Do not retitle any existing section as \u201dEndorsements\u201d or to conflict in title with any\n Invariant Section.\n If the Modified Version includes new front-matter sections or appendices that qualify as Secondary\n Sections and contain no material copied from the Document, you may at your option designate some\n or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the\n Modified Version\u2019s license notice. These titles must be distinct from any other section titles.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 52 / 55\n \n You may add a section entitled \u201dEndorsements\u201d, provided it contains nothing but endorsements of\n your Modified Version by various parties\u2014for example, statements of peer review or that the text has\n been approved by an organization as the authoritative definition of a standard.\n You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as\n@@ -2880,15 +2880,15 @@\n placed on covers that surround only the Document within the aggregate. Otherwise they must appear\n on covers around the whole aggregate.\n 8. TRANSLATION\n Translation is considered a kind of modification, so you may distribute translations of the Document\n under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections\n in addition to the original versions of these Invariant Sections. You may include a translation of\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 53 / 55\n \n this License provided that you also include the original English version of this License. In case of a\n disagreement between the translation and the original English version of this License, the original\n English version will prevail.\n 9. TERMINATION\n@@ -2916,15 +2916,15 @@\n is included in the section entitled \u201dGNU Free Documentation License\u201d.\n If you have no Invariant Sections, write \u201dwith no Invariant Sections\u201d instead of saying which ones\n are invariant. If you have no Front-Cover Texts, write \u201dno Front-Cover Texts\u201d instead of \u201dFront-Cover\n Texts being LIST\u201d; likewise for Back-Cover Texts.\n If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License,\n to permit their use in free software.\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 54 / 55\n \n Chapter 8\n \n Index\n A\n@@ -3002,15 +3002,15 @@\n RTAI, 47\n RTAPI, 47\n RTLINUX, 47\n Running LinuxCNC, 15\n S\n servo motor, 47\n \n-\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fGetting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Signed Integer, 47\n spindle, 47\n stepper motor, 47\n System Requirements, 4\n T\n TASK, 47\n"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: \"D:20230210043318-00'00'\"\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20211117)'\n-Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023'\n+Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,12 +1,12 @@\n Integrator Information\n-V2.9.0~pre1+git20230208.f1270d6ed7, 09\n+V2.9.0~pre1+git20230208.f1270d6ed7, 10\n Feb 2023\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n ii\n \n Contents\n 1 Stepper Information\n \n 1\n@@ -127,15 +127,15 @@\n \n 18\n \n 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 1 / 18\n \n Chapter 1\n \n Stepper Information\n 1.1 Stepper Motor Operation\n@@ -154,15 +154,15 @@\n the time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing\n the overall torque. This relationship between speed and torque is largely inversely proportional.\n In the below example, the charging time for three coils is shown when the applied voltage is stepped\n from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time\n taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full\n current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again:\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 2 / 18\n \n If the rate at which step changes are applied to the coils is significantly shorter than the rise time,\n it\u2019s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus\n maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before\n the step voltage is removed, but the 4 mH and 8 mH coils cannot:\n@@ -181,15 +181,15 @@\n In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several\n orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor\n may have a rating of only a handful of volts, yet the power supply and driver could be operating at\n 48 VDC or more.\n Nearly all modern stepper motor drivers on the market today are constant-current types. That is,\n the current being applied to each winding is fixed irrespective of how much voltage is being applied.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 3 / 18\n \n Most drivers accomplish this by monitoring the current being drawn through the motor windings and\n rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending\n on the drivers being used, it may even be possible to hear this high frequency whistling in the motors\n themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding\n@@ -234,15 +234,15 @@\n introduced.\n Several methods exist to help control the effects of resonance, all with varying degrees of complexity,\n effectiveness and side effects:\n \u2022 Microstepping can help reduce resonance by using smaller step changes in current between each\n step. These smaller step changes cause less ringing in the motor and windings and thus cause less\n excitation at the point of resonance.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 4 / 18\n \n \u2022 Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic\n method of reducing resonance, always accelerating or decelerating through the resonant peak.\n \u2022 Increasing inertial load will damp unwanted resonances at the expense of some torque and potentially some accuracy. Elastomeric motor mounts, shaft couplings or bearing mounts can be\n employed.\n@@ -281,15 +281,15 @@\n in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper\n motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely\n meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with\n leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees\n of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain\n the necessary resolution and torque gains.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 5 / 18\n \n 1.5 Open and Closed Loop\n In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver\n receives no feedback from the motor that it has achieved the desired outcome when commanded to\n begin stepping. The assumption by the software, driver and end user is that the motor operated\n@@ -309,15 +309,15 @@\n to the downstream driver as it would normally when running in open loop. In these situations the\n drivers usually include an alarm output which signals the software to halt when the load placed on\n the stepper becomes too great for the driver to compensate without losing steps.\n More advanced implementations of closed loop operation bring the encoder signal all the way back\n to the host computer, but require that a much higher hardware and software overhead be installed to\n manage the encoder feedback and calculation and delivery of drive compensation.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 6 / 18\n \n Chapter 2\n \n Stepper Timing\n This page is for step and direction timing of stepper drives.\n@@ -380,15 +380,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 202\n \n@@ -480,15 +480,15 @@\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g212rev15.html\n http://www.geckodrive.com\n support/motorcontrolmanuals/stepperdrives/g213vrev7.html\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n Gecko\n \n 320\n \n@@ -625,15 +625,15 @@\n http://granitedevices.fi/assets/files/vsde_160_manual.pdf\n http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.jvl.dk/files/pdf/lb043gb.pdf\n http://www.piclist.com/techref/io/stepper/linistep/index.htm\n http://www.piclist.com/techref/io/stepper/THB6064/index.htm\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n *Motion\n Control\n \n MSD542\n@@ -857,15 +857,15 @@\n http://www.kelinginc.net/kL6852.pdf\n https://www.sherline.com/-\n \n http://www.lewetz.de/download/ibstep3se.pdf\n http://www.compumotor.com\n manuals/ZETA/ZETA_Rev_A_Entire.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1104,15 +1104,15 @@\n http://leadshine.com/UploadFile/Down/EM503d_P.pdf\n http://leadshine.com/UploadFile/Down/EM705d_P.pdf\n http://leadshine.com/UploadFile/Down/EM806d_P.pdf\n http://leadshineusa.com/UploadFile/Down/M415Bm.pdf\n http://leadshineusa.com/UploadFile/Down/M542V2m.pdf\n http://leadshineusa.com/UploadFile/Down/M752m.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1291,15 +1291,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 12 / 18\n \n Chapter 3\n \n Best Wiring Practices\n 3.1 Electrical Noise\n@@ -1328,15 +1328,15 @@\n this discussion the terms earth and common must be made distinct from each other to avoid confusion.\n \n 3.3 Wire Selection and Use\n 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\n wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have\n some effect on the overall system. What follows are some tips that may prove helpful.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 13 / 18\n \n 3.3.1 Single Conductor Wire\n Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than\n 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\n wherever possible.\n@@ -1377,15 +1377,15 @@\n is more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded\n types. Coverage is typically 70% to 95% depending on how tight the braid has been constructed.\n Despite the lower coverage of braided shield, the effectiveness is greater than foil shielding due to\n the increased bulk of the braid, and copper being a better conductor than aluminum.\n 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 multiconductor cable may also be shielded along with an overall shield being applied to the entire cable\n jacket.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 14 / 18\n \n 3.4 AC Line Voltage\n The incoming mains AC that powers the CNC system can pick up and carry noise into the power\n supplies and other equipment. For example, if the incoming supply is also used to feed large motors,\n electrical noise may be generated on the line feeding the CNC components. Although most modern\n@@ -1423,15 +1423,15 @@\n supply may have optically-isolated signal input lines which provide complete electrical separation of\n the driver\u2019s input and output circuitry for safety and noise immunity purposes. Tying the stepper\n motor and logic control supply commons together in this case may have a detrimental impact on the\n operation of the system.\n In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system\n separate from each other, and separate from the AC mains earth unless there is a specific requirement\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 15 / 18\n \n to tie them together. In most cases the common points of the heavy-duty power sections of the CNC\n system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common\n points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool\n probe circuitry etc) to prevent cross-contamination of the two systems.\n@@ -1471,15 +1471,15 @@\n electrically hostile environments. When grounding the shield in the cable, terminate to the mains\n earth.\n If the controller and interfacing devices can withstand higher control signals, consider altering the\n wiring and power supply requirements to use a bigger voltage for signaling (eg, 12V or 24V). The\n same 2V EMI noise spike that could corrupt a 3.3V limit switch signal will be far less likely to cause\n issues with a limit switch operating with a 24V signal.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 16 / 18\n \n 3.8 Stepper or Servo Motor Drivers\n The metal housing of the driver should be connected to the local mains earth in the CNC system.\n Some driver enclosures will indicate a specific terminal as being the earthing point, in which case this\n point must be connected to earth via a dedicated wire.\n@@ -1514,15 +1514,15 @@\n 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\n degree angle as possible.\n Avoid long loops of excess wire at any peripheral devices - they are great antennas for receiving or\n transmitting noise. Where possible, run wires in close proximity to large earthed structures. If the\n controller enclosure features a large metallic back plate that is earthed, secure all control wiring\n against this surface as much as possible while wiring between two points.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 17 / 18\n \n 3.11 Mechanical Noise\n Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly\n when operated. More often than not the switch contacts will physically bounce against each other\n several times within a very short space of time when operated. This may be interpreted by the machine\n@@ -1556,15 +1556,15 @@\n \n 3.12.1 Hardware Documentation\n At a minimum, make sure to save any documentation associated with the installed hardware in a safe\n place. Stepper controllers, break out boards, power supplies, VFDs, interfaces and controllers, servo\n and stepper drivers and any associated device settings are all critical components of the system and\n their documentation should be kept at hand for easy reference.\n \n-\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023\n+\fIntegrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023\n \n 18 / 18\n \n 3.12.2 Wiring Schematics\n As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The\n schematic does not have to be all that neat, but it should be understandable in such a way that it\n could be easily interpreted at a later date, ideally by anyone who may need to service the equipment.\n"}]}]}]}]}, {"source1": "linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb", "source2": "linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary\n--rw-r--r-- 0 0 0 110932 2023-02-10 04:33:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 21477900 2023-02-10 04:33:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 110928 2023-02-10 04:33:18.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 21475972 2023-02-10 04:33:18.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: linuxcnc-uspace\n Source: linuxcnc\n Version: 2.9.0~pre1+git20230208.f1270d6ed7-1\n Architecture: amd64\n Maintainer: LinuxCNC Developers \n-Installed-Size: 81860\n+Installed-Size: 81861\n Depends: python3 (<< 3.12), python3 (>= 3.11~), python3:any, libboost-python1.74.0 (>= 1.74.0+ds1), libboost-python1.74.0-py311, libc6 (>= 2.35), libcairo2 (>= 1.2.4), libedit2 (>= 2.11-20080614-0), libepoxy0 (>= 1.0), libgcc-s1 (>= 4.0), libglib2.0-0 (>= 2.12.0), libgtk-3-0 (>= 3.11.5), libgtk2.0-0 (>= 2.8.0), libmodbus5 (>= 3.1.4), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpython3.11 (>= 3.11.0), libstdc++6 (>= 11), libtirpc3 (>= 1.0.2), libtk8.6 (>= 8.6.0), libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.22), libx11-6, libxinerama1 (>= 2:1.1.4), libxmu6 (>= 2:1.1.3), libudev-dev, iptables, blt, mesa-utils, python3-tk, python3-numpy, python3-cairo, python3-gi-cairo, python3-opengl, python3-configobj, python3-xlib, libgtksourceview-3.0-dev, tcl8.6, tk8.6, bwidget (>= 1.7), tclreadline, tclx, procps, psmisc, udev\n Recommends: linuxcnc-doc-en | linuxcnc-doc, librsvg2-dev, hostmot2-firmware-all, linux-image-rt-amd64, python3-pil, python3-pil.imagetk, python3-pyqt5, python3-pyqt5.qsci, python3-pyqt5.qtsvg, python3-pyqt5.qtopengl, python3-opencv, python3-dbus, python3-espeak, python3-dbus.mainloop.pyqt5, python3-pyqt5.qtwebkit, espeak-ng, pyqt5-dev-tools, gstreamer1.0-tools, espeak, sound-theme-freedesktop, python3-poppler-qt5\n Suggests: mesaflash, onboard\n Conflicts: linuxcnc, linuxcnc-sim\n Breaks: linuxcnc-doc-en (<= 2.9.0~pre0+git20220402.2500863908-4), linuxcnc-doc-es (<= 2.9.0~pre0+git20220402.2500863908-4), linuxcnc-doc-fr (<= 2.9.0~pre0+git20220402.2500863908-4)\n Section: misc\n Priority: optional\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -4484,15 +4484,15 @@\n -rw-r--r-- 0 root (0) root (0) 2096 2023-02-10 04:33:18.000000 ./usr/share/man/man1/mitsub_vfd.1.gz\n -rw-r--r-- 0 root (0) root (0) 1126 2023-02-10 04:33:18.000000 ./usr/share/man/man1/monitor-xhc-hb04.1.gz\n -rw-r--r-- 0 root (0) root (0) 1047 2023-02-10 04:33:18.000000 ./usr/share/man/man1/motion-logger.1.gz\n -rw-r--r-- 0 root (0) root (0) 2586 2023-02-10 04:33:18.000000 ./usr/share/man/man1/moveoff_gui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1969 2023-02-10 04:33:18.000000 ./usr/share/man/man1/mqtt-publisher.1.gz\n -rw-r--r-- 0 root (0) root (0) 1010 2023-02-10 04:33:18.000000 ./usr/share/man/man1/ngcgui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1203 2023-02-10 04:33:18.000000 ./usr/share/man/man1/panelui.1.gz\n--rw-r--r-- 0 root (0) root (0) 614 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pi500_vfd.1.gz\n+-rw-r--r-- 0 root (0) root (0) 616 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pi500_vfd.1.gz\n -rw-r--r-- 0 root (0) root (0) 942 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pmx485-test.1.gz\n -rw-r--r-- 0 root (0) root (0) 855 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pmx485.1.gz\n -rw-r--r-- 0 root (0) root (0) 1023 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pncconf.1.gz\n -rw-r--r-- 0 root (0) root (0) 1038 2023-02-10 04:33:18.000000 ./usr/share/man/man1/puma560gui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1038 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pumagui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1014 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pyngcgui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1034 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pyui.1.gz\n@@ -4513,187 +4513,187 @@\n -rw-r--r-- 0 root (0) root (0) 1492 2023-02-10 04:33:18.000000 ./usr/share/man/man1/shuttle.1.gz\n -rw-r--r-- 0 root (0) root (0) 560 2023-02-10 04:33:18.000000 ./usr/share/man/man1/sim-torch.1.gz\n -rw-r--r-- 0 root (0) root (0) 1494 2023-02-10 04:33:18.000000 ./usr/share/man/man1/sim_pin.1.gz\n -rw-r--r-- 0 root (0) root (0) 1032 2023-02-10 04:33:18.000000 ./usr/share/man/man1/simulate_probe.1.gz\n -rw-r--r-- 0 root (0) root (0) 1044 2023-02-10 04:33:18.000000 ./usr/share/man/man1/stepconf.1.gz\n -rw-r--r-- 0 root (0) root (0) 2117 2023-02-10 04:33:18.000000 ./usr/share/man/man1/svd-ps_vfd.1.gz\n -rw-r--r-- 0 root (0) root (0) 1133 2023-02-10 04:33:18.000000 ./usr/share/man/man1/teach-in.1.gz\n--rw-r--r-- 0 root (0) root (0) 715 2023-02-10 04:33:18.000000 ./usr/share/man/man1/thermistor.1.gz\n+-rw-r--r-- 0 root (0) root (0) 718 2023-02-10 04:33:18.000000 ./usr/share/man/man1/thermistor.1.gz\n -rw-r--r-- 0 root (0) root (0) 1002 2023-02-10 04:33:18.000000 ./usr/share/man/man1/tooledit.1.gz\n -rw-r--r-- 0 root (0) root (0) 1226 2023-02-10 04:33:18.000000 ./usr/share/man/man1/touchy.1.gz\n -rw-r--r-- 0 root (0) root (0) 1125 2023-02-10 04:33:18.000000 ./usr/share/man/man1/update_ini.1.gz\n -rw-r--r-- 0 root (0) root (0) 3449 2023-02-10 04:33:18.000000 ./usr/share/man/man1/vfdb_vfd.1.gz\n -rw-r--r-- 0 root (0) root (0) 3121 2023-02-10 04:33:18.000000 ./usr/share/man/man1/vfs11_vfd.1.gz\n--rw-r--r-- 0 root (0) root (0) 632 2023-02-10 04:33:18.000000 ./usr/share/man/man1/wj200_vfd.1.gz\n+-rw-r--r-- 0 root (0) root (0) 635 2023-02-10 04:33:18.000000 ./usr/share/man/man1/wj200_vfd.1.gz\n -rw-r--r-- 0 root (0) root (0) 1014 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-hb04-accels.1.gz\n -rw-r--r-- 0 root (0) root (0) 3946 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-hb04.1.gz\n -rw-r--r-- 0 root (0) root (0) 8219 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-whb04b-6.1.gz\n -rw-r--r-- 0 root (0) root (0) 1069 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xyzac-trt-gui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1069 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xyzbc-trt-gui.1.gz\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/man/man9/\n--rw-r--r-- 0 root (0) root (0) 475 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs.9.gz\n--rw-r--r-- 0 root (0) root (0) 466 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 479 2023-02-10 04:33:18.000000 ./usr/share/man/man9/and2.9.gz\n--rw-r--r-- 0 root (0) root (0) 1369 2023-02-10 04:33:18.000000 ./usr/share/man/man9/anglejog.9.gz\n+-rw-r--r-- 0 root (0) root (0) 477 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs.9.gz\n+-rw-r--r-- 0 root (0) root (0) 468 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 482 2023-02-10 04:33:18.000000 ./usr/share/man/man9/and2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/anglejog.9.gz\n -rw-r--r-- 0 root (0) root (0) 195 2023-02-10 04:33:18.000000 ./usr/share/man/man9/at_pid.9.gz\n--rw-r--r-- 0 root (0) root (0) 761 2023-02-10 04:33:18.000000 ./usr/share/man/man9/axistest.9.gz\n--rw-r--r-- 0 root (0) root (0) 390 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bin2gray.9.gz\n+-rw-r--r-- 0 root (0) root (0) 763 2023-02-10 04:33:18.000000 ./usr/share/man/man9/axistest.9.gz\n+-rw-r--r-- 0 root (0) root (0) 393 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bin2gray.9.gz\n -rw-r--r-- 0 root (0) root (0) 960 2023-02-10 04:33:18.000000 ./usr/share/man/man9/biquad.9.gz\n--rw-r--r-- 0 root (0) root (0) 519 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitslice.9.gz\n--rw-r--r-- 0 root (0) root (0) 444 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitwise.9.gz\n--rw-r--r-- 0 root (0) root (0) 5513 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bldc.9.gz\n--rw-r--r-- 0 root (0) root (0) 556 2023-02-10 04:33:18.000000 ./usr/share/man/man9/blend.9.gz\n--rw-r--r-- 0 root (0) root (0) 3386 2023-02-10 04:33:18.000000 ./usr/share/man/man9/carousel.9.gz\n--rw-r--r-- 0 root (0) root (0) 727 2023-02-10 04:33:18.000000 ./usr/share/man/man9/charge_pump.9.gz\n--rw-r--r-- 0 root (0) root (0) 767 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke2.9.gz\n--rw-r--r-- 0 root (0) root (0) 671 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke3.9.gz\n--rw-r--r-- 0 root (0) root (0) 612 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarkeinv.9.gz\n+-rw-r--r-- 0 root (0) root (0) 522 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitslice.9.gz\n+-rw-r--r-- 0 root (0) root (0) 447 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitwise.9.gz\n+-rw-r--r-- 0 root (0) root (0) 5514 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bldc.9.gz\n+-rw-r--r-- 0 root (0) root (0) 559 2023-02-10 04:33:18.000000 ./usr/share/man/man9/blend.9.gz\n+-rw-r--r-- 0 root (0) root (0) 3388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/carousel.9.gz\n+-rw-r--r-- 0 root (0) root (0) 729 2023-02-10 04:33:18.000000 ./usr/share/man/man9/charge_pump.9.gz\n+-rw-r--r-- 0 root (0) root (0) 769 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 673 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke3.9.gz\n+-rw-r--r-- 0 root (0) root (0) 614 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarkeinv.9.gz\n -rw-r--r-- 0 root (0) root (0) 1231 2023-02-10 04:33:18.000000 ./usr/share/man/man9/classicladder.9.gz\n--rw-r--r-- 0 root (0) root (0) 695 2023-02-10 04:33:18.000000 ./usr/share/man/man9/comp.9.gz\n--rw-r--r-- 0 root (0) root (0) 386 2023-02-10 04:33:18.000000 ./usr/share/man/man9/constant.9.gz\n--rw-r--r-- 0 root (0) root (0) 412 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 387 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 387 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_u32.9.gz\n--rw-r--r-- 0 root (0) root (0) 511 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 698 2023-02-10 04:33:18.000000 ./usr/share/man/man9/comp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/constant.9.gz\n+-rw-r--r-- 0 root (0) root (0) 418 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 389 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_u32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz\n -rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_u32.9.gz\n--rw-r--r-- 0 root (0) root (0) 480 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz\n--rw-r--r-- 0 root (0) root (0) 413 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz\n--rw-r--r-- 0 root (0) root (0) 481 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_bit.9.gz\n--rw-r--r-- 0 root (0) root (0) 415 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 1012 2023-02-10 04:33:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz\n+-rw-r--r-- 0 root (0) root (0) 483 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz\n+-rw-r--r-- 0 root (0) root (0) 417 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 483 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_bit.9.gz\n+-rw-r--r-- 0 root (0) root (0) 417 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1015 2023-02-10 04:33:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz\n -rw-r--r-- 0 root (0) root (0) 1025 2023-02-10 04:33:18.000000 ./usr/share/man/man9/counter.9.gz\n--rw-r--r-- 0 root (0) root (0) 437 2023-02-10 04:33:18.000000 ./usr/share/man/man9/dbounce.9.gz\n--rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ddt.9.gz\n--rw-r--r-- 0 root (0) root (0) 488 2023-02-10 04:33:18.000000 ./usr/share/man/man9/deadzone.9.gz\n+-rw-r--r-- 0 root (0) root (0) 436 2023-02-10 04:33:18.000000 ./usr/share/man/man9/dbounce.9.gz\n+-rw-r--r-- 0 root (0) root (0) 587 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ddt.9.gz\n+-rw-r--r-- 0 root (0) root (0) 489 2023-02-10 04:33:18.000000 ./usr/share/man/man9/deadzone.9.gz\n -rw-r--r-- 0 root (0) root (0) 821 2023-02-10 04:33:18.000000 ./usr/share/man/man9/debounce.9.gz\n--rw-r--r-- 0 root (0) root (0) 782 2023-02-10 04:33:18.000000 ./usr/share/man/man9/demux.9.gz\n--rw-r--r-- 0 root (0) root (0) 506 2023-02-10 04:33:18.000000 ./usr/share/man/man9/differential.9.gz\n--rw-r--r-- 0 root (0) root (0) 588 2023-02-10 04:33:18.000000 ./usr/share/man/man9/div2.9.gz\n--rw-r--r-- 0 root (0) root (0) 607 2023-02-10 04:33:18.000000 ./usr/share/man/man9/edge.9.gz\n+-rw-r--r-- 0 root (0) root (0) 783 2023-02-10 04:33:18.000000 ./usr/share/man/man9/demux.9.gz\n+-rw-r--r-- 0 root (0) root (0) 509 2023-02-10 04:33:18.000000 ./usr/share/man/man9/differential.9.gz\n+-rw-r--r-- 0 root (0) root (0) 591 2023-02-10 04:33:18.000000 ./usr/share/man/man9/div2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 610 2023-02-10 04:33:18.000000 ./usr/share/man/man9/edge.9.gz\n -rw-r--r-- 0 root (0) root (0) 2502 2023-02-10 04:33:18.000000 ./usr/share/man/man9/encoder.9.gz\n -rw-r--r-- 0 root (0) root (0) 1213 2023-02-10 04:33:18.000000 ./usr/share/man/man9/encoder_ratio.9.gz\n--rw-r--r-- 0 root (0) root (0) 1753 2023-02-10 04:33:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz\n--rw-r--r-- 0 root (0) root (0) 943 2023-02-10 04:33:18.000000 ./usr/share/man/man9/estop_latch.9.gz\n--rw-r--r-- 0 root (0) root (0) 509 2023-02-10 04:33:18.000000 ./usr/share/man/man9/feedcomp.9.gz\n--rw-r--r-- 0 root (0) root (0) 1261 2023-02-10 04:33:18.000000 ./usr/share/man/man9/filter_kalman.9.gz\n--rw-r--r-- 0 root (0) root (0) 438 2023-02-10 04:33:18.000000 ./usr/share/man/man9/flipflop.9.gz\n--rw-r--r-- 0 root (0) root (0) 1158 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantry.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1755 2023-02-10 04:33:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 946 2023-02-10 04:33:18.000000 ./usr/share/man/man9/estop_latch.9.gz\n+-rw-r--r-- 0 root (0) root (0) 511 2023-02-10 04:33:18.000000 ./usr/share/man/man9/feedcomp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1263 2023-02-10 04:33:18.000000 ./usr/share/man/man9/filter_kalman.9.gz\n+-rw-r--r-- 0 root (0) root (0) 440 2023-02-10 04:33:18.000000 ./usr/share/man/man9/flipflop.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1160 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantry.9.gz\n -rw-r--r-- 0 root (0) root (0) 281 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantrykins.9.gz\n--rw-r--r-- 0 root (0) root (0) 780 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gearchange.9.gz\n+-rw-r--r-- 0 root (0) root (0) 782 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gearchange.9.gz\n -rw-r--r-- 0 root (0) root (0) 169 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gentrivkins.9.gz\n -rw-r--r-- 0 root (0) root (0) 695 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gladevcp.9.gz\n--rw-r--r-- 0 root (0) root (0) 406 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gray2bin.9.gz\n+-rw-r--r-- 0 root (0) root (0) 408 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gray2bin.9.gz\n -rw-r--r-- 0 root (0) root (0) 845 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hal_bb_gpio.9.gz\n--rw-r--r-- 0 root (0) root (0) 987 2023-02-10 04:33:18.000000 ./usr/share/man/man9/histobins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 989 2023-02-10 04:33:18.000000 ./usr/share/man/man9/histobins.9.gz\n -rw-r--r-- 0 root (0) root (0) 1619 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_7i43.9.gz\n -rw-r--r-- 0 root (0) root (0) 1370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_7i90.9.gz\n -rw-r--r-- 0 root (0) root (0) 3833 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_eth.9.gz\n -rw-r--r-- 0 root (0) root (0) 600 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_pci.9.gz\n -rw-r--r-- 0 root (0) root (0) 3760 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_rpspi.9.gz\n -rw-r--r-- 0 root (0) root (0) 1625 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_spi.9.gz\n--rw-r--r-- 0 root (0) root (0) 1155 2023-02-10 04:33:18.000000 ./usr/share/man/man9/homecomp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1158 2023-02-10 04:33:18.000000 ./usr/share/man/man9/homecomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 21228 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hostmot2.9.gz\n--rw-r--r-- 0 root (0) root (0) 420 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hypot.9.gz\n--rw-r--r-- 0 root (0) root (0) 986 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ilowpass.9.gz\n--rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/integ.9.gz\n--rw-r--r-- 0 root (0) root (0) 558 2023-02-10 04:33:18.000000 ./usr/share/man/man9/invert.9.gz\n--rw-r--r-- 0 root (0) root (0) 946 2023-02-10 04:33:18.000000 ./usr/share/man/man9/joyhandle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 422 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hypot.9.gz\n+-rw-r--r-- 0 root (0) root (0) 989 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ilowpass.9.gz\n+-rw-r--r-- 0 root (0) root (0) 489 2023-02-10 04:33:18.000000 ./usr/share/man/man9/integ.9.gz\n+-rw-r--r-- 0 root (0) root (0) 560 2023-02-10 04:33:18.000000 ./usr/share/man/man9/invert.9.gz\n+-rw-r--r-- 0 root (0) root (0) 948 2023-02-10 04:33:18.000000 ./usr/share/man/man9/joyhandle.9.gz\n -rw-r--r-- 0 root (0) root (0) 4375 2023-02-10 04:33:18.000000 ./usr/share/man/man9/kins.9.gz\n--rw-r--r-- 0 root (0) root (0) 570 2023-02-10 04:33:18.000000 ./usr/share/man/man9/knob2float.9.gz\n--rw-r--r-- 0 root (0) root (0) 829 2023-02-10 04:33:18.000000 ./usr/share/man/man9/latencybins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 573 2023-02-10 04:33:18.000000 ./usr/share/man/man9/knob2float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 832 2023-02-10 04:33:18.000000 ./usr/share/man/man9/latencybins.9.gz\n -rw-r--r-- 0 root (0) root (0) 3225 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lcd.9.gz\n--rw-r--r-- 0 root (0) root (0) 420 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit1.9.gz\n--rw-r--r-- 0 root (0) root (0) 541 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit2.9.gz\n--rw-r--r-- 0 root (0) root (0) 714 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit3.9.gz\n--rw-r--r-- 0 root (0) root (0) 994 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lincurve.9.gz\n+-rw-r--r-- 0 root (0) root (0) 422 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit1.9.gz\n+-rw-r--r-- 0 root (0) root (0) 544 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 716 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit3.9.gz\n+-rw-r--r-- 0 root (0) root (0) 997 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lincurve.9.gz\n -rw-r--r-- 0 root (0) root (0) 808 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lineardeltakins.9.gz\n--rw-r--r-- 0 root (0) root (0) 1183 2023-02-10 04:33:18.000000 ./usr/share/man/man9/logic.9.gz\n--rw-r--r-- 0 root (0) root (0) 855 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lowpass.9.gz\n--rw-r--r-- 0 root (0) root (0) 1692 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lut5.9.gz\n--rw-r--r-- 0 root (0) root (0) 370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/maj3.9.gz\n--rw-r--r-- 0 root (0) root (0) 504 2023-02-10 04:33:18.000000 ./usr/share/man/man9/match8.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1185 2023-02-10 04:33:18.000000 ./usr/share/man/man9/logic.9.gz\n+-rw-r--r-- 0 root (0) root (0) 856 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lowpass.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1693 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lut5.9.gz\n+-rw-r--r-- 0 root (0) root (0) 373 2023-02-10 04:33:18.000000 ./usr/share/man/man9/maj3.9.gz\n+-rw-r--r-- 0 root (0) root (0) 506 2023-02-10 04:33:18.000000 ./usr/share/man/man9/match8.9.gz\n -rw-r--r-- 0 root (0) root (0) 1760 2023-02-10 04:33:18.000000 ./usr/share/man/man9/matrix_kb.9.gz\n--rw-r--r-- 0 root (0) root (0) 1074 2023-02-10 04:33:18.000000 ./usr/share/man/man9/max31855.9.gz\n--rw-r--r-- 0 root (0) root (0) 919 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_7i65.9.gz\n--rw-r--r-- 0 root (0) root (0) 1026 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_pktgyro_test.9.gz\n--rw-r--r-- 0 root (0) root (0) 1198 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_uart.9.gz\n--rw-r--r-- 0 root (0) root (0) 883 2023-02-10 04:33:18.000000 ./usr/share/man/man9/message.9.gz\n--rw-r--r-- 0 root (0) root (0) 851 2023-02-10 04:33:18.000000 ./usr/share/man/man9/millturn.9.gz\n--rw-r--r-- 0 root (0) root (0) 440 2023-02-10 04:33:18.000000 ./usr/share/man/man9/minmax.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1075 2023-02-10 04:33:18.000000 ./usr/share/man/man9/max31855.9.gz\n+-rw-r--r-- 0 root (0) root (0) 918 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_7i65.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1029 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_pktgyro_test.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1199 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_uart.9.gz\n+-rw-r--r-- 0 root (0) root (0) 885 2023-02-10 04:33:18.000000 ./usr/share/man/man9/message.9.gz\n+-rw-r--r-- 0 root (0) root (0) 853 2023-02-10 04:33:18.000000 ./usr/share/man/man9/millturn.9.gz\n+-rw-r--r-- 0 root (0) root (0) 444 2023-02-10 04:33:18.000000 ./usr/share/man/man9/minmax.9.gz\n -rw-r--r-- 0 root (0) root (0) 6650 2023-02-10 04:33:18.000000 ./usr/share/man/man9/motion.9.gz\n--rw-r--r-- 0 root (0) root (0) 3093 2023-02-10 04:33:18.000000 ./usr/share/man/man9/moveoff.9.gz\n--rw-r--r-- 0 root (0) root (0) 408 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mult2.9.gz\n--rw-r--r-- 0 root (0) root (0) 1147 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiclick.9.gz\n--rw-r--r-- 0 root (0) root (0) 677 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiswitch.9.gz\n--rw-r--r-- 0 root (0) root (0) 1024 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux16.9.gz\n--rw-r--r-- 0 root (0) root (0) 431 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux2.9.gz\n--rw-r--r-- 0 root (0) root (0) 545 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux4.9.gz\n--rw-r--r-- 0 root (0) root (0) 596 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux8.9.gz\n+-rw-r--r-- 0 root (0) root (0) 3094 2023-02-10 04:33:18.000000 ./usr/share/man/man9/moveoff.9.gz\n+-rw-r--r-- 0 root (0) root (0) 411 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mult2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1149 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiclick.9.gz\n+-rw-r--r-- 0 root (0) root (0) 679 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiswitch.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1025 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux16.9.gz\n+-rw-r--r-- 0 root (0) root (0) 434 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 547 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux4.9.gz\n+-rw-r--r-- 0 root (0) root (0) 598 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux8.9.gz\n -rw-r--r-- 0 root (0) root (0) 1751 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux_generic.9.gz\n--rw-r--r-- 0 root (0) root (0) 571 2023-02-10 04:33:18.000000 ./usr/share/man/man9/near.9.gz\n--rw-r--r-- 0 root (0) root (0) 366 2023-02-10 04:33:18.000000 ./usr/share/man/man9/not.9.gz\n--rw-r--r-- 0 root (0) root (0) 484 2023-02-10 04:33:18.000000 ./usr/share/man/man9/offset.9.gz\n--rw-r--r-- 0 root (0) root (0) 1569 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ohmic.9.gz\n--rw-r--r-- 0 root (0) root (0) 758 2023-02-10 04:33:18.000000 ./usr/share/man/man9/oneshot.9.gz\n+-rw-r--r-- 0 root (0) root (0) 574 2023-02-10 04:33:18.000000 ./usr/share/man/man9/near.9.gz\n+-rw-r--r-- 0 root (0) root (0) 368 2023-02-10 04:33:18.000000 ./usr/share/man/man9/not.9.gz\n+-rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/offset.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1570 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ohmic.9.gz\n+-rw-r--r-- 0 root (0) root (0) 763 2023-02-10 04:33:18.000000 ./usr/share/man/man9/oneshot.9.gz\n -rw-r--r-- 0 root (0) root (0) 1142 2023-02-10 04:33:18.000000 ./usr/share/man/man9/opto_ac5.9.gz\n--rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/or2.9.gz\n--rw-r--r-- 0 root (0) root (0) 1236 2023-02-10 04:33:18.000000 ./usr/share/man/man9/orient.9.gz\n+-rw-r--r-- 0 root (0) root (0) 454 2023-02-10 04:33:18.000000 ./usr/share/man/man9/or2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1237 2023-02-10 04:33:18.000000 ./usr/share/man/man9/orient.9.gz\n -rw-r--r-- 0 root (0) root (0) 5662 2023-02-10 04:33:18.000000 ./usr/share/man/man9/pid.9.gz\n -rw-r--r-- 0 root (0) root (0) 4331 2023-02-10 04:33:18.000000 ./usr/share/man/man9/plasmac.9.gz\n -rw-r--r-- 0 root (0) root (0) 2004 2023-02-10 04:33:18.000000 ./usr/share/man/man9/pwmgen.9.gz\n -rw-r--r-- 0 root (0) root (0) 673 2023-02-10 04:33:18.000000 ./usr/share/man/man9/rosekins.9.gz\n--rw-r--r-- 0 root (0) root (0) 367 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sample_hold.9.gz\n+-rw-r--r-- 0 root (0) root (0) 369 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sample_hold.9.gz\n -rw-r--r-- 0 root (0) root (0) 1955 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sampler.9.gz\n--rw-r--r-- 0 root (0) root (0) 403 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scale.9.gz\n--rw-r--r-- 0 root (0) root (0) 519 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scaled_s32_sums.9.gz\n--rw-r--r-- 0 root (0) root (0) 517 2023-02-10 04:33:18.000000 ./usr/share/man/man9/select8.9.gz\n--rw-r--r-- 0 root (0) root (0) 913 2023-02-10 04:33:18.000000 ./usr/share/man/man9/serport.9.gz\n+-rw-r--r-- 0 root (0) root (0) 405 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scale.9.gz\n+-rw-r--r-- 0 root (0) root (0) 521 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scaled_s32_sums.9.gz\n+-rw-r--r-- 0 root (0) root (0) 518 2023-02-10 04:33:18.000000 ./usr/share/man/man9/select8.9.gz\n+-rw-r--r-- 0 root (0) root (0) 915 2023-02-10 04:33:18.000000 ./usr/share/man/man9/serport.9.gz\n -rw-r--r-- 0 root (0) root (0) 1909 2023-02-10 04:33:18.000000 ./usr/share/man/man9/setsserial.9.gz\n -rw-r--r-- 0 root (0) root (0) 1312 2023-02-10 04:33:18.000000 ./usr/share/man/man9/siggen.9.gz\n--rw-r--r-- 0 root (0) root (0) 1249 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1250 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz\n -rw-r--r-- 0 root (0) root (0) 1295 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_encoder.9.gz\n--rw-r--r-- 0 root (0) root (0) 683 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz\n--rw-r--r-- 0 root (0) root (0) 474 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz\n--rw-r--r-- 0 root (0) root (0) 1124 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_parport.9.gz\n--rw-r--r-- 0 root (0) root (0) 609 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_spindle.9.gz\n--rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/simple_tp.9.gz\n--rw-r--r-- 0 root (0) root (0) 456 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sphereprobe.9.gz\n--rw-r--r-- 0 root (0) root (0) 1843 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle.9.gz\n--rw-r--r-- 0 root (0) root (0) 492 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz\n+-rw-r--r-- 0 root (0) root (0) 686 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz\n+-rw-r--r-- 0 root (0) root (0) 475 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1127 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_parport.9.gz\n+-rw-r--r-- 0 root (0) root (0) 610 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_spindle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 586 2023-02-10 04:33:18.000000 ./usr/share/man/man9/simple_tp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 458 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sphereprobe.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1845 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 495 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz\n -rw-r--r-- 0 root (0) root (0) 6159 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sserial.9.gz\n -rw-r--r-- 0 root (0) root (0) 3748 2023-02-10 04:33:18.000000 ./usr/share/man/man9/stepgen.9.gz\n--rw-r--r-- 0 root (0) root (0) 776 2023-02-10 04:33:18.000000 ./usr/share/man/man9/steptest.9.gz\n+-rw-r--r-- 0 root (0) root (0) 779 2023-02-10 04:33:18.000000 ./usr/share/man/man9/steptest.9.gz\n -rw-r--r-- 0 root (0) root (0) 1947 2023-02-10 04:33:18.000000 ./usr/share/man/man9/streamer.9.gz\n--rw-r--r-- 0 root (0) root (0) 488 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sum2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 490 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sum2.9.gz\n -rw-r--r-- 0 root (0) root (0) 831 2023-02-10 04:33:18.000000 ./usr/share/man/man9/supply.9.gz\n--rw-r--r-- 0 root (0) root (0) 1342 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thc.9.gz\n--rw-r--r-- 0 root (0) root (0) 1256 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thcud.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1345 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thc.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1257 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thcud.9.gz\n -rw-r--r-- 0 root (0) root (0) 1035 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threads.9.gz\n--rw-r--r-- 0 root (0) root (0) 361 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threadtest.9.gz\n--rw-r--r-- 0 root (0) root (0) 1178 2023-02-10 04:33:18.000000 ./usr/share/man/man9/time.9.gz\n--rw-r--r-- 0 root (0) root (0) 581 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelay.9.gz\n--rw-r--r-- 0 root (0) root (0) 776 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelta.9.gz\n--rw-r--r-- 0 root (0) root (0) 448 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tof.9.gz\n--rw-r--r-- 0 root (0) root (0) 504 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle.9.gz\n--rw-r--r-- 0 root (0) root (0) 654 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle2nist.9.gz\n--rw-r--r-- 0 root (0) root (0) 447 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ton.9.gz\n--rw-r--r-- 0 root (0) root (0) 466 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tp.9.gz\n--rw-r--r-- 0 root (0) root (0) 883 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tpcomp.9.gz\n--rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_bit.9.gz\n--rw-r--r-- 0 root (0) root (0) 482 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 641 2023-02-10 04:33:18.000000 ./usr/share/man/man9/updown.9.gz\n--rw-r--r-- 0 root (0) root (0) 1276 2023-02-10 04:33:18.000000 ./usr/share/man/man9/userkins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 363 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threadtest.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1181 2023-02-10 04:33:18.000000 ./usr/share/man/man9/time.9.gz\n+-rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelay.9.gz\n+-rw-r--r-- 0 root (0) root (0) 779 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelta.9.gz\n+-rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tof.9.gz\n+-rw-r--r-- 0 root (0) root (0) 507 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 657 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle2nist.9.gz\n+-rw-r--r-- 0 root (0) root (0) 449 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ton.9.gz\n+-rw-r--r-- 0 root (0) root (0) 469 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 886 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tpcomp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 453 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_bit.9.gz\n+-rw-r--r-- 0 root (0) root (0) 485 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 642 2023-02-10 04:33:18.000000 ./usr/share/man/man9/updown.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1277 2023-02-10 04:33:18.000000 ./usr/share/man/man9/userkins.9.gz\n -rw-r--r-- 0 root (0) root (0) 967 2023-02-10 04:33:18.000000 ./usr/share/man/man9/watchdog.9.gz\n--rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/wcomp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 515 2023-02-10 04:33:18.000000 ./usr/share/man/man9/wcomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 780 2023-02-10 04:33:18.000000 ./usr/share/man/man9/weighted_sum.9.gz\n--rw-r--r-- 0 root (0) root (0) 783 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz\n--rw-r--r-- 0 root (0) root (0) 492 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xor2.9.gz\n--rw-r--r-- 0 root (0) root (0) 867 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xyzab_tdr_kins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 785 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz\n+-rw-r--r-- 0 root (0) root (0) 494 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xor2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 871 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xyzab_tdr_kins.9.gz\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/metainfo/\n -rw-r--r-- 0 root (0) root (0) 715 2022-10-24 01:10:25.000000 ./usr/share/metainfo/linuxcnc-uspace.metainfo.xml\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/mime/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/mime/packages/\n -rw-r--r-- 0 root (0) root (0) 305 2022-07-01 22:52:59.000000 ./usr/share/mime/packages/linuxcnc-uspace.xml\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/qtvcp/\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/qtvcp/images/\n"}, {"source1": "./etc/linuxcnc/rtapi.conf", "source2": "./etc/linuxcnc/rtapi.conf", "unified_diff": "@@ -1,11 +1,11 @@\n # DO NOT EDIT THIS FILE !\n #\n # ../scripts/rtapi.conf. Generated from rtapi.conf.in by configure. \n-# on Fri Feb 2 06:20:29 -12 2024\n+# on Fri Mar 7 19:14:59 +14 2025\n #\n \n # A few parameters from emc2/Makefile.inc\n EMC2_HOME=/usr\n KERNELDIR=\n RTLIB_DIR=/usr/lib/linuxcnc/modules\n MODULE_EXT=.so\n"}, {"source1": "./usr/lib/linuxcnc/realtime", "source2": "./usr/lib/linuxcnc/realtime", "unified_diff": "@@ -10,15 +10,15 @@\n # removed when the job has ended and is used throughout the LinuxCNC\n # infrastructure. The script has no effect for the PREEMPT realtime kernel.\n # The script is not meant to be started a boot time - it could be, though.\n # X-Interactive: false\n ### END INIT INFO\n #\n # ../scripts/realtime. Generated from realtime.in by configure. \n-# on Fri Feb 2 06:20:29 -12 2024\n+# on Fri Mar 7 19:14:59 +14 2025\n #\n \n export LANG=C\n \n GREP=/bin/grep\n PS=/bin/ps\n \n"}, {"source1": "./usr/share/man/man1/pi500_vfd.1.gz", "source2": "./usr/share/man/man1/pi500_vfd.1.gz", "unified_diff": null, "details": [{"source1": "pi500_vfd.1", "source2": "pi500_vfd.1", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/user_comps/pi500_vfd/pi500_vfd.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH PI500_VFD \"1\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH PI500_VFD \"1\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n pi500_vfd \\- Powtran PI500 Modbus driver\n .SH SYNOPSIS\n .B pi500_vfd\n .SH PINS\n .TP\n"}]}, {"source1": "./usr/share/man/man1/thermistor.1.gz", "source2": "./usr/share/man/man1/thermistor.1.gz", "unified_diff": null, "details": [{"source1": "thermistor.1", "source2": "thermistor.1", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/user_comps/thermistor.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH THERMISTOR \"1\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THERMISTOR \"1\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n thermistor \\- compute temperature indicated by a thermistor\n .SH SYNOPSIS\n .B thermistor\n .SH DESCRIPTION\n \n"}]}, {"source1": "./usr/share/man/man1/wj200_vfd.1.gz", "source2": "./usr/share/man/man1/wj200_vfd.1.gz", "unified_diff": null, "details": [{"source1": "wj200_vfd.1", "source2": "wj200_vfd.1", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/user_comps/wj200_vfd/wj200_vfd.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH WJ200_VFD \"1\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH WJ200_VFD \"1\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n wj200_vfd \\- Hitachi wj200 modbus driver\n .SH SYNOPSIS\n .B wj200_vfd\n .SH PINS\n .TP\n"}]}, {"source1": "./usr/share/man/man9/abs.9.gz", "source2": "./usr/share/man/man9/abs.9.gz", "unified_diff": null, "details": [{"source1": "abs.9", "source2": "abs.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/abs.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ABS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ABS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n abs \\- Compute the absolute value and sign of the input signal\n .SH SYNOPSIS\n .HP\n .B loadrt abs [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/abs_s32.9.gz", "source2": "./usr/share/man/man9/abs_s32.9.gz", "unified_diff": null, "details": [{"source1": "abs_s32.9", "source2": "abs_s32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/abs_s32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ABS_S32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ABS_S32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n abs_s32 \\- Compute the absolute value and sign of the input signal\n .SH SYNOPSIS\n .HP\n .B loadrt abs_s32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/and2.9.gz", "source2": "./usr/share/man/man9/and2.9.gz", "unified_diff": null, "details": [{"source1": "and2.9", "source2": "and2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/and2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH AND2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH AND2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n and2 \\- Two-input AND gate\n .SH SYNOPSIS\n .HP\n .B loadrt and2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/anglejog.9.gz", "source2": "./usr/share/man/man9/anglejog.9.gz", "unified_diff": null, "details": [{"source1": "anglejog.9", "source2": "anglejog.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/anglejog.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ANGLEJOG \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ANGLEJOG \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n anglejog \\- Jog two axes (or joints) at an angle\n .SH SYNOPSIS\n \n This component accepts a dynamic counts-in input (typically from a\n manual pulse generator (MPG)) and static angle and scale factor\n"}]}, {"source1": "./usr/share/man/man9/axistest.9.gz", "source2": "./usr/share/man/man9/axistest.9.gz", "unified_diff": null, "details": [{"source1": "axistest.9", "source2": "axistest.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/axistest.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH AXISTEST \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH AXISTEST \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n axistest \\- Used to allow testing of an axis. Used IN PnCconf.\n .SH SYNOPSIS\n .HP\n .B loadrt axistest [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/bin2gray.9.gz", "source2": "./usr/share/man/man9/bin2gray.9.gz", "unified_diff": null, "details": [{"source1": "bin2gray.9", "source2": "bin2gray.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/bin2gray.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BIN2GRAY \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BIN2GRAY \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n bin2gray \\- convert a number to the gray-code representation\n .SH SYNOPSIS\n .HP\n .B loadrt bin2gray [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/biquad.9.gz", "source2": "./usr/share/man/man9/biquad.9.gz", "unified_diff": null, "details": [{"source1": "biquad.9", "source2": "biquad.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/biquad.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BIQUAD \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BIQUAD \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n biquad \\- Biquad IIR filter\n .SH SYNOPSIS\n .HP\n .B loadrt biquad [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/bitslice.9.gz", "source2": "./usr/share/man/man9/bitslice.9.gz", "unified_diff": null, "details": [{"source1": "bitslice.9", "source2": "bitslice.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/bitslice.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BITSLICE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BITSLICE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n bitslice \\- Converts an unsigned-32 input into individual bits\n .SH SYNOPSIS\n .HP\n .B loadrt bitslice [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/bitwise.9.gz", "source2": "./usr/share/man/man9/bitwise.9.gz", "unified_diff": null, "details": [{"source1": "bitwise.9", "source2": "bitwise.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/bitwise.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BITWISE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BITWISE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n bitwise \\- Computes various bitwise operations on the two input values\n .SH SYNOPSIS\n .HP\n .B loadrt bitwise [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/bldc.9.gz", "source2": "./usr/share/man/man9/bldc.9.gz", "unified_diff": null, "details": [{"source1": "bldc.9", "source2": "bldc.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/bldc.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BLDC \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BLDC \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n bldc \\- BLDC and AC-servo control component \n .SH SYNOPSIS\n .B loadrt bldc cfg=qi6,aH\\fB\n .SH DESCRIPTION\n \n"}]}, {"source1": "./usr/share/man/man9/blend.9.gz", "source2": "./usr/share/man/man9/blend.9.gz", "unified_diff": null, "details": [{"source1": "blend.9", "source2": "blend.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/blend.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH BLEND \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BLEND \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n blend \\- Perform linear interpolation between two values\n .SH SYNOPSIS\n .HP\n .B loadrt blend [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/carousel.9.gz", "source2": "./usr/share/man/man9/carousel.9.gz", "unified_diff": null, "details": [{"source1": "carousel.9", "source2": "carousel.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/carousel.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CAROUSEL \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CAROUSEL \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n carousel \\- Orient a toolchanger carousel using various encoding schemes\n .SH SYNOPSIS\n \n .B loadrt carousel pockets=\\fIN\\fR[,\\fIN\\fR]\n .B encoding=\\fIssss\\fR[,\\fIsss\\fR]\\fB\n"}]}, {"source1": "./usr/share/man/man9/charge_pump.9.gz", "source2": "./usr/share/man/man9/charge_pump.9.gz", "unified_diff": null, "details": [{"source1": "charge_pump.9", "source2": "charge_pump.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/charge_pump.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CHARGE_PUMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CHARGE_PUMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n charge_pump \\- Create a square-wave for the 'charge pump' input of some controller boards\n .SH SYNOPSIS\n .HP\n .B loadrt charge_pump\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/clarke2.9.gz", "source2": "./usr/share/man/man9/clarke2.9.gz", "unified_diff": null, "details": [{"source1": "clarke2.9", "source2": "clarke2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/clarke2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CLARKE2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKE2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n clarke2 \\- Two input version of Clarke transform\n .SH SYNOPSIS\n .HP\n .B loadrt clarke2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/clarke3.9.gz", "source2": "./usr/share/man/man9/clarke3.9.gz", "unified_diff": null, "details": [{"source1": "clarke3.9", "source2": "clarke3.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/clarke3.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CLARKE3 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKE3 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n clarke3 \\- Clarke (3 phase to cartesian) transform\n .SH SYNOPSIS\n .HP\n .B loadrt clarke3 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/clarkeinv.9.gz", "source2": "./usr/share/man/man9/clarkeinv.9.gz", "unified_diff": null, "details": [{"source1": "clarkeinv.9", "source2": "clarkeinv.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/clarkeinv.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CLARKEINV \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKEINV \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n clarkeinv \\- Inverse Clarke transform\n .SH SYNOPSIS\n .HP\n .B loadrt clarkeinv [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/comp.9.gz", "source2": "./usr/share/man/man9/comp.9.gz", "unified_diff": null, "details": [{"source1": "comp.9", "source2": "comp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/comp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH COMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH COMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n comp \\- Two input comparator with hysteresis\n .SH SYNOPSIS\n .HP\n .B loadrt comp [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/constant.9.gz", "source2": "./usr/share/man/man9/constant.9.gz", "unified_diff": null, "details": [{"source1": "constant.9", "source2": "constant.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/constant.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONSTANT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONSTANT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n constant \\- Use a parameter to set the value of a pin\n .SH SYNOPSIS\n .HP\n .B loadrt constant [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_bit_float.9.gz", "source2": "./usr/share/man/man9/conv_bit_float.9.gz", "unified_diff": null, "details": [{"source1": "conv_bit_float.9", "source2": "conv_bit_float.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_bit_float.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_BIT_FLOAT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_FLOAT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_bit_float \\- Convert a value from bit to float\n .SH SYNOPSIS\n .HP\n .B loadrt conv_bit_float [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_bit_s32.9.gz", "source2": "./usr/share/man/man9/conv_bit_s32.9.gz", "unified_diff": null, "details": [{"source1": "conv_bit_s32.9", "source2": "conv_bit_s32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_bit_s32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_BIT_S32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_S32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_bit_s32 \\- Convert a value from bit to s32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_bit_s32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_bit_u32.9.gz", "source2": "./usr/share/man/man9/conv_bit_u32.9.gz", "unified_diff": null, "details": [{"source1": "conv_bit_u32.9", "source2": "conv_bit_u32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_bit_u32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_BIT_U32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_U32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_bit_u32 \\- Convert a value from bit to u32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_bit_u32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_float_s32.9.gz", "source2": "./usr/share/man/man9/conv_float_s32.9.gz", "unified_diff": null, "details": [{"source1": "conv_float_s32.9", "source2": "conv_float_s32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_float_s32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_FLOAT_S32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_FLOAT_S32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_float_s32 \\- Convert a value from float to s32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_float_s32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_float_u32.9.gz", "source2": "./usr/share/man/man9/conv_float_u32.9.gz", "unified_diff": null, "details": [{"source1": "conv_float_u32.9", "source2": "conv_float_u32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_float_u32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_FLOAT_U32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_FLOAT_U32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_float_u32 \\- Convert a value from float to u32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_float_u32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_s32_bit.9.gz", "source2": "./usr/share/man/man9/conv_s32_bit.9.gz", "unified_diff": null, "details": [{"source1": "conv_s32_bit.9", "source2": "conv_s32_bit.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_s32_bit.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_S32_BIT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_BIT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_s32_bit \\- Convert a value from s32 to bit\n .SH SYNOPSIS\n .HP\n .B loadrt conv_s32_bit [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_s32_float.9.gz", "source2": "./usr/share/man/man9/conv_s32_float.9.gz", "unified_diff": null, "details": [{"source1": "conv_s32_float.9", "source2": "conv_s32_float.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_s32_float.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_S32_FLOAT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_FLOAT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_s32_float \\- Convert a value from s32 to float\n .SH SYNOPSIS\n .HP\n .B loadrt conv_s32_float [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_s32_u32.9.gz", "source2": "./usr/share/man/man9/conv_s32_u32.9.gz", "unified_diff": null, "details": [{"source1": "conv_s32_u32.9", "source2": "conv_s32_u32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_s32_u32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_S32_U32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_U32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_s32_u32 \\- Convert a value from s32 to u32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_s32_u32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_u32_bit.9.gz", "source2": "./usr/share/man/man9/conv_u32_bit.9.gz", "unified_diff": null, "details": [{"source1": "conv_u32_bit.9", "source2": "conv_u32_bit.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_u32_bit.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_U32_BIT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_BIT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_u32_bit \\- Convert a value from u32 to bit\n .SH SYNOPSIS\n .HP\n .B loadrt conv_u32_bit [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_u32_float.9.gz", "source2": "./usr/share/man/man9/conv_u32_float.9.gz", "unified_diff": null, "details": [{"source1": "conv_u32_float.9", "source2": "conv_u32_float.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_u32_float.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_U32_FLOAT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_FLOAT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_u32_float \\- Convert a value from u32 to float\n .SH SYNOPSIS\n .HP\n .B loadrt conv_u32_float [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/conv_u32_s32.9.gz", "source2": "./usr/share/man/man9/conv_u32_s32.9.gz", "unified_diff": null, "details": [{"source1": "conv_u32_s32.9", "source2": "conv_u32_s32.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/conv_u32_s32.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH CONV_U32_S32 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_S32 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n conv_u32_s32 \\- Convert a value from u32 to s32\n .SH SYNOPSIS\n .HP\n .B loadrt conv_u32_s32 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/corexy_by_hal.9.gz", "source2": "./usr/share/man/man9/corexy_by_hal.9.gz", "unified_diff": null, "details": [{"source1": "corexy_by_hal.9", "source2": "corexy_by_hal.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/corexy_by_hal.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH COREXY_BY_HAL \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH COREXY_BY_HAL \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n corexy_by_hal \\- CoreXY kinematics\n .SH SYNOPSIS\n .HP\n .B loadrt corexy_by_hal [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/dbounce.9.gz", "source2": "./usr/share/man/man9/dbounce.9.gz", "unified_diff": null, "details": [{"source1": "dbounce.9", "source2": "dbounce.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/dbounce.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DBOUNCE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DBOUNCE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n dbounce \\- alternative debounce component\n .SH SYNOPSIS\n \n This component is similar to the \\fBdebounce\\fR component\n \n"}]}, {"source1": "./usr/share/man/man9/ddt.9.gz", "source2": "./usr/share/man/man9/ddt.9.gz", "unified_diff": null, "details": [{"source1": "ddt.9", "source2": "ddt.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/ddt.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DDT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DDT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n ddt \\- Compute the derivative of the input function\n .SH SYNOPSIS\n .HP\n .B loadrt ddt [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/deadzone.9.gz", "source2": "./usr/share/man/man9/deadzone.9.gz", "unified_diff": null, "details": [{"source1": "deadzone.9", "source2": "deadzone.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/deadzone.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DEADZONE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DEADZONE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n deadzone \\- Return the center if within the threshold\n .SH SYNOPSIS\n .HP\n .B loadrt deadzone [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/demux.9.gz", "source2": "./usr/share/man/man9/demux.9.gz", "unified_diff": null, "details": [{"source1": "demux.9", "source2": "demux.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/demux.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DEMUX \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DEMUX \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n demux \\- Select one of several output pins by integer and/or or individual bits.\n .SH SYNOPSIS\n .HP\n .B loadrt demux [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/differential.9.gz", "source2": "./usr/share/man/man9/differential.9.gz", "unified_diff": null, "details": [{"source1": "differential.9", "source2": "differential.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/differential.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DIFFERENTIAL \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DIFFERENTIAL \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n differential \\- kinematics for a differential transmission\n .SH SYNOPSIS\n .HP\n .B loadrt differential [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/div2.9.gz", "source2": "./usr/share/man/man9/div2.9.gz", "unified_diff": null, "details": [{"source1": "div2.9", "source2": "div2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/div2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH DIV2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DIV2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n div2 \\- Quotient of two floating point inputs\n .SH SYNOPSIS\n .HP\n .B loadrt div2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/edge.9.gz", "source2": "./usr/share/man/man9/edge.9.gz", "unified_diff": null, "details": [{"source1": "edge.9", "source2": "edge.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/edge.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH EDGE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH EDGE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n edge \\- Edge detector\n .SH SYNOPSIS\n .HP\n .B loadrt edge [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/eoffset_per_angle.9.gz", "source2": "./usr/share/man/man9/eoffset_per_angle.9.gz", "unified_diff": null, "details": [{"source1": "eoffset_per_angle.9", "source2": "eoffset_per_angle.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/eoffset_per_angle.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH EOFFSET_PER_ANGLE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH EOFFSET_PER_ANGLE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n eoffset_per_angle \\- Compute External Offset Per Angle\n .SH SYNOPSIS\n .HP\n .B loadrt eoffset_per_angle [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/estop_latch.9.gz", "source2": "./usr/share/man/man9/estop_latch.9.gz", "unified_diff": null, "details": [{"source1": "estop_latch.9", "source2": "estop_latch.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/estop_latch.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ESTOP_LATCH \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ESTOP_LATCH \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n estop_latch \\- Software ESTOP latch\n .SH SYNOPSIS\n .HP\n .B loadrt estop_latch [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/feedcomp.9.gz", "source2": "./usr/share/man/man9/feedcomp.9.gz", "unified_diff": null, "details": [{"source1": "feedcomp.9", "source2": "feedcomp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/feedcomp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH FEEDCOMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FEEDCOMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n feedcomp \\- Multiply the input by the ratio of current velocity to the feed rate.\n .SH SYNOPSIS\n .HP\n .B loadrt feedcomp [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/filter_kalman.9.gz", "source2": "./usr/share/man/man9/filter_kalman.9.gz", "unified_diff": null, "details": [{"source1": "filter_kalman.9", "source2": "filter_kalman.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/filter_kalman.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH FILTER_KALMAN \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FILTER_KALMAN \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n filter_kalman \\- Unidimensional Kalman filter, also known as linear quadratic estimation (LQE)\n .SH SYNOPSIS\n .HP\n .B loadrt filter_kalman [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/flipflop.9.gz", "source2": "./usr/share/man/man9/flipflop.9.gz", "unified_diff": null, "details": [{"source1": "flipflop.9", "source2": "flipflop.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/flipflop.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH FLIPFLOP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FLIPFLOP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n flipflop \\- D type flip-flop\n .SH SYNOPSIS\n .HP\n .B loadrt flipflop [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/gantry.9.gz", "source2": "./usr/share/man/man9/gantry.9.gz", "unified_diff": null, "details": [{"source1": "gantry.9", "source2": "gantry.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/gantry.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH GANTRY \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GANTRY \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n gantry \\- LinuxCNC HAL component for driving multiple joints from a single axis.\n .SH SYNOPSIS\n .HP\n .B loadrt gantry [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/gearchange.9.gz", "source2": "./usr/share/man/man9/gearchange.9.gz", "unified_diff": null, "details": [{"source1": "gearchange.9", "source2": "gearchange.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/gearchange.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH GEARCHANGE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GEARCHANGE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n gearchange \\- Select from one two speed ranges\n .SH SYNOPSIS\n The output will be a value scaled for the selected gear, and clamped to\n the min/max values for that gear.\n The scale of gear 1 is assumed to be 1, so the output device scale\n"}]}, {"source1": "./usr/share/man/man9/gray2bin.9.gz", "source2": "./usr/share/man/man9/gray2bin.9.gz", "unified_diff": null, "details": [{"source1": "gray2bin.9", "source2": "gray2bin.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/gray2bin.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH GRAY2BIN \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GRAY2BIN \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n gray2bin \\- convert a gray-code input to binary\n .SH SYNOPSIS\n .HP\n .B loadrt gray2bin [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/histobins.9.gz", "source2": "./usr/share/man/man9/histobins.9.gz", "unified_diff": null, "details": [{"source1": "histobins.9", "source2": "histobins.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/histobins.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH HISTOBINS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HISTOBINS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n histobins \\- histogram bins utility for scripts/hal-histogram\n .SH SYNOPSIS\n \n Usage:\n Read availablebins pin for the number of bins available.\n"}]}, {"source1": "./usr/share/man/man9/homecomp.9.gz", "source2": "./usr/share/man/man9/homecomp.9.gz", "unified_diff": null, "details": [{"source1": "homecomp.9", "source2": "homecomp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/homecomp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH HOMECOMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HOMECOMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n homecomp \\- homing module template\n .SH SYNOPSIS\n .HP\n Custom Homing module loaded with \\fB[EMCMOT]HOMEMOD=homecomp\\fR\n \n"}]}, {"source1": "./usr/share/man/man9/hypot.9.gz", "source2": "./usr/share/man/man9/hypot.9.gz", "unified_diff": null, "details": [{"source1": "hypot.9", "source2": "hypot.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/hypot.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH HYPOT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HYPOT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n hypot \\- Three-input hypotenuse (Euclidean distance) calculator\n .SH SYNOPSIS\n .HP\n .B loadrt hypot [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/ilowpass.9.gz", "source2": "./usr/share/man/man9/ilowpass.9.gz", "unified_diff": null, "details": [{"source1": "ilowpass.9", "source2": "ilowpass.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/ilowpass.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ILOWPASS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ILOWPASS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n ilowpass \\- Low-pass filter with integer inputs and outputs\n .SH SYNOPSIS\n .HP\n .B loadrt ilowpass [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/integ.9.gz", "source2": "./usr/share/man/man9/integ.9.gz", "unified_diff": null, "details": [{"source1": "integ.9", "source2": "integ.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/integ.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH INTEG \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH INTEG \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n integ \\- Integrator with gain pin and windup limits\n .SH SYNOPSIS\n .HP\n .B loadrt integ [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/invert.9.gz", "source2": "./usr/share/man/man9/invert.9.gz", "unified_diff": null, "details": [{"source1": "invert.9", "source2": "invert.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/invert.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH INVERT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH INVERT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n invert \\- Compute the inverse of the input signal\n .SH SYNOPSIS\n The output will be the mathematical inverse of the input, ie \\fBout\\fR = 1/\\fBin\\fR.\n The parameter \\fBdeadband\\fR can be used to control how close to 0 the denominator can be\n before the output is clamped to 0. \\fBdeadband\\fR must be at least 1e-8, and must be positive.\n"}]}, {"source1": "./usr/share/man/man9/joyhandle.9.gz", "source2": "./usr/share/man/man9/joyhandle.9.gz", "unified_diff": null, "details": [{"source1": "joyhandle.9", "source2": "joyhandle.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/joyhandle.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH JOYHANDLE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH JOYHANDLE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n joyhandle \\- sets nonlinear joypad movements, deadbands and scales\n .SH SYNOPSIS\n .HP\n .B loadrt joyhandle [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/knob2float.9.gz", "source2": "./usr/share/man/man9/knob2float.9.gz", "unified_diff": null, "details": [{"source1": "knob2float.9", "source2": "knob2float.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/knob2float.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH KNOB2FLOAT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH KNOB2FLOAT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n knob2float \\- Convert counts (probably from an encoder) to a float value\n .SH SYNOPSIS\n .HP\n .B loadrt knob2float [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/latencybins.9.gz", "source2": "./usr/share/man/man9/latencybins.9.gz", "unified_diff": null, "details": [{"source1": "latencybins.9", "source2": "latencybins.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/latencybins.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LATENCYBINS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LATENCYBINS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n latencybins \\- comp utility for scripts/latency-histogram\n .SH SYNOPSIS\n \n Usage:\n Read availablebins pin for the number of bins available.\n"}]}, {"source1": "./usr/share/man/man9/limit1.9.gz", "source2": "./usr/share/man/man9/limit1.9.gz", "unified_diff": null, "details": [{"source1": "limit1.9", "source2": "limit1.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/limit1.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LIMIT1 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT1 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n limit1 \\- Limit the output signal to fall between min and max\n .SH SYNOPSIS\n .HP\n .B loadrt limit1 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/limit2.9.gz", "source2": "./usr/share/man/man9/limit2.9.gz", "unified_diff": null, "details": [{"source1": "limit2.9", "source2": "limit2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/limit2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LIMIT2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n limit2 \\- Limit the output signal to fall between min and max and limit its slew rate to less than maxv per second. When the signal is a position, this means that position and velocity are limited.\n .SH SYNOPSIS\n .HP\n .B loadrt limit2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/limit3.9.gz", "source2": "./usr/share/man/man9/limit3.9.gz", "unified_diff": null, "details": [{"source1": "limit3.9", "source2": "limit3.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/limit3.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LIMIT3 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT3 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n limit3 \\- Follow input signal while obeying limits\n .SH SYNOPSIS\n Limit the output signal to fall between min and max, limit its slew\n rate to less than maxv per second, and limit its second derivative to\n less than maxa per second squared. When the signal is a position,\n"}]}, {"source1": "./usr/share/man/man9/lincurve.9.gz", "source2": "./usr/share/man/man9/lincurve.9.gz", "unified_diff": null, "details": [{"source1": "lincurve.9", "source2": "lincurve.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/lincurve.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LINCURVE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LINCURVE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n lincurve \\- one-dimensional lookup table\n .SH SYNOPSIS\n .HP\n .B loadrt lincurve [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/logic.9.gz", "source2": "./usr/share/man/man9/logic.9.gz", "unified_diff": null, "details": [{"source1": "logic.9", "source2": "logic.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/logic.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LOGIC \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LOGIC \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n logic \\- LinuxCNC HAL component providing configurable logic functions\n .SH SYNOPSIS\n \n .B loadrt logic\n .B [count=N|names=name1[,name2...]]\n"}]}, {"source1": "./usr/share/man/man9/lowpass.9.gz", "source2": "./usr/share/man/man9/lowpass.9.gz", "unified_diff": null, "details": [{"source1": "lowpass.9", "source2": "lowpass.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/lowpass.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LOWPASS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LOWPASS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n lowpass \\- Low-pass filter\n .SH SYNOPSIS\n .HP\n .B loadrt lowpass [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/lut5.9.gz", "source2": "./usr/share/man/man9/lut5.9.gz", "unified_diff": null, "details": [{"source1": "lut5.9", "source2": "lut5.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/lut5.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LUT5 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LUT5 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n lut5 \\- Arbitrary 5-input logic function based on a look-up table\n .SH SYNOPSIS\n .HP\n .B loadrt lut5 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n .\\\"******************************************************************* .\\\" .\\\"\n This file was extracted from hal/components/lut5.comp using halcompile.g. .\\\"\n Modify the source file. .\\\"\n .\\\"******************************************************************* .TH LUT5\n-\"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\" .SH NAME lut5 \\-\n+\"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\" .SH NAME lut5 \\-\n Arbitrary 5-input logic function based on a look-up table .SH SYNOPSIS .HP .B\n loadrt lut5 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] .SH DESCRIPTION\n .B lut5 constructs a logic function with up to 5 inputs using a \\fBl\\fRook-\n \\fBu\\fRp \\fBt\\fRable. The value for \\fBfunction\\fR can be determined by writing\n the truth table, and computing the sum of \\fBall\\fR the \\fBweights\\fR for which\n the output value would be \\fRTRUE\\fR. The weights are hexadecimal not decimal\n so hexadecimal math must be used to sum the weights. A wiki page has a\n"}]}]}, {"source1": "./usr/share/man/man9/maj3.9.gz", "source2": "./usr/share/man/man9/maj3.9.gz", "unified_diff": null, "details": [{"source1": "maj3.9", "source2": "maj3.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/maj3.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MAJ3 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MAJ3 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n maj3 \\- Compute the majority of 3 inputs\n .SH SYNOPSIS\n .HP\n .B loadrt maj3 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/match8.9.gz", "source2": "./usr/share/man/man9/match8.9.gz", "unified_diff": null, "details": [{"source1": "match8.9", "source2": "match8.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/match8.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MATCH8 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MATCH8 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n match8 \\- 8-bit binary match detector\n .SH SYNOPSIS\n .HP\n .B loadrt match8 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/max31855.9.gz", "source2": "./usr/share/man/man9/max31855.9.gz", "unified_diff": null, "details": [{"source1": "max31855.9", "source2": "max31855.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/max31855.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MAX31855 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MAX31855 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n max31855 \\- Support for the MAX31855 Thermocouple-to-Digital converter using bitbanged spi\n .SH SYNOPSIS\n .HP\n .B loadrt max31855 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/mesa_7i65.9.gz", "source2": "./usr/share/man/man9/mesa_7i65.9.gz", "unified_diff": null, "details": [{"source1": "mesa_7i65.9", "source2": "mesa_7i65.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/drivers/mesa_7i65.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MESA_7I65 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_7I65 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mesa_7i65 \\- Support for the Mesa 7i65 Octuple Servo Card\n .SH SYNOPSIS\n .HP\n .B loadrt mesa_7i65\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/mesa_pktgyro_test.9.gz", "source2": "./usr/share/man/man9/mesa_pktgyro_test.9.gz", "unified_diff": null, "details": [{"source1": "mesa_pktgyro_test.9", "source2": "mesa_pktgyro_test.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mesa_pktgyro_test.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MESA_PKTGYRO_TEST \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_PKTGYRO_TEST \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mesa_pktgyro_test \\- PktUART simple test with Microstrain 3DM-GX3-15 gyro\n .SH SYNOPSIS\n .HP\n .B loadrt mesa_pktgyro_test [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/mesa_uart.9.gz", "source2": "./usr/share/man/man9/mesa_uart.9.gz", "unified_diff": null, "details": [{"source1": "mesa_uart.9", "source2": "mesa_uart.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/drivers/mesa_uart.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MESA_UART \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_UART \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mesa_uart \\- An example component demonstrating how to access the Hostmot2 UART\n .SH SYNOPSIS\n .HP\n .B loadrt mesa_uart [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/message.9.gz", "source2": "./usr/share/man/man9/message.9.gz", "unified_diff": null, "details": [{"source1": "message.9", "source2": "message.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/message.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MESSAGE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESSAGE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n message \\- Display a message\n .SH SYNOPSIS\n .HP\n .B loadrt message [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [messages=\\fIN\\fB]\n .RS 4\n"}]}, {"source1": "./usr/share/man/man9/millturn.9.gz", "source2": "./usr/share/man/man9/millturn.9.gz", "unified_diff": null, "details": [{"source1": "millturn.9", "source2": "millturn.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/millturn.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MILLTURN \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MILLTURN \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n millturn \\- Switchable kinematics for a mill-turn machine\n .SH SYNOPSIS\n .HP\n .B loadrt millturn [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/minmax.9.gz", "source2": "./usr/share/man/man9/minmax.9.gz", "unified_diff": null, "details": [{"source1": "minmax.9", "source2": "minmax.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/minmax.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MINMAX \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MINMAX \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n minmax \\- Track the minimum and maximum values of the input to the outputs\n .SH SYNOPSIS\n .HP\n .B loadrt minmax [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/moveoff.9.gz", "source2": "./usr/share/man/man9/moveoff.9.gz", "unified_diff": null, "details": [{"source1": "moveoff.9", "source2": "moveoff.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/moveoff.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MOVEOFF \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MOVEOFF \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n moveoff \\- Component for HAL-only offsets\n .SH SYNOPSIS\n .HP\n .B loadrt moveoff [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP,P,...\\fB]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/mult2.9.gz", "source2": "./usr/share/man/man9/mult2.9.gz", "unified_diff": null, "details": [{"source1": "mult2.9", "source2": "mult2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mult2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MULT2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULT2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mult2 \\- Product of two inputs\n .SH SYNOPSIS\n .HP\n .B loadrt mult2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/multiclick.9.gz", "source2": "./usr/share/man/man9/multiclick.9.gz", "unified_diff": null, "details": [{"source1": "multiclick.9", "source2": "multiclick.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/multiclick.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MULTICLICK \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULTICLICK \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n multiclick \\- Single-, double-, triple-, and quadruple-click detector\n .SH SYNOPSIS\n .HP\n .B loadrt multiclick [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/multiswitch.9.gz", "source2": "./usr/share/man/man9/multiswitch.9.gz", "unified_diff": null, "details": [{"source1": "multiswitch.9", "source2": "multiswitch.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/multiswitch.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MULTISWITCH \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULTISWITCH \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n multiswitch \\- This component toggles between a specified number of output bits.\n .SH SYNOPSIS\n .HP\n .B loadrt multiswitch personality=\\fIP\\fB [cfg=\\fIN\\fB]\n .RS 4\n"}]}, {"source1": "./usr/share/man/man9/mux16.9.gz", "source2": "./usr/share/man/man9/mux16.9.gz", "unified_diff": null, "details": [{"source1": "mux16.9", "source2": "mux16.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mux16.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MUX16 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX16 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mux16 \\- Select from one of sixteen input values\n .SH SYNOPSIS\n .HP\n .B loadrt mux16 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/mux2.9.gz", "source2": "./usr/share/man/man9/mux2.9.gz", "unified_diff": null, "details": [{"source1": "mux2.9", "source2": "mux2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mux2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MUX2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mux2 \\- Select from one of two input values\n .SH SYNOPSIS\n .HP\n .B loadrt mux2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/mux4.9.gz", "source2": "./usr/share/man/man9/mux4.9.gz", "unified_diff": null, "details": [{"source1": "mux4.9", "source2": "mux4.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mux4.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MUX4 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX4 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mux4 \\- Select from one of four input values\n .SH SYNOPSIS\n .HP\n .B loadrt mux4 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/mux8.9.gz", "source2": "./usr/share/man/man9/mux8.9.gz", "unified_diff": null, "details": [{"source1": "mux8.9", "source2": "mux8.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/mux8.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH MUX8 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX8 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n mux8 \\- Select from one of eight input values\n .SH SYNOPSIS\n .HP\n .B loadrt mux8 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/near.9.gz", "source2": "./usr/share/man/man9/near.9.gz", "unified_diff": null, "details": [{"source1": "near.9", "source2": "near.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/near.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH NEAR \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH NEAR \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n near \\- Determine whether two values are roughly equal.\n .SH SYNOPSIS\n .HP\n .B loadrt near [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/not.9.gz", "source2": "./usr/share/man/man9/not.9.gz", "unified_diff": null, "details": [{"source1": "not.9", "source2": "not.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/not.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH NOT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH NOT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n not \\- Inverter\n .SH SYNOPSIS\n .HP\n .B loadrt not [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/offset.9.gz", "source2": "./usr/share/man/man9/offset.9.gz", "unified_diff": null, "details": [{"source1": "offset.9", "source2": "offset.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/offset.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH OFFSET \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OFFSET \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n offset \\- Adds an offset to an input, and subtracts it from the feedback value.\n .SH SYNOPSIS\n .HP\n .B loadrt offset [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/ohmic.9.gz", "source2": "./usr/share/man/man9/ohmic.9.gz", "unified_diff": null, "details": [{"source1": "ohmic.9", "source2": "ohmic.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/ohmic.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH OHMIC \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OHMIC \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n ohmic \\- LinuxCNC HAL component that uses a Mesa THCAD for Ohmic sensing\n .SH SYNOPSIS\n .HP\n .B loadrt ohmic [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/oneshot.9.gz", "source2": "./usr/share/man/man9/oneshot.9.gz", "unified_diff": null, "details": [{"source1": "oneshot.9", "source2": "oneshot.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/oneshot.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ONESHOT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ONESHOT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n oneshot \\- one-shot pulse generator\n .SH SYNOPSIS\n .HP\n .B loadrt oneshot [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/or2.9.gz", "source2": "./usr/share/man/man9/or2.9.gz", "unified_diff": null, "details": [{"source1": "or2.9", "source2": "or2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/or2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH OR2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OR2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n or2 \\- Two-input OR gate\n .SH SYNOPSIS\n .HP\n .B loadrt or2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/orient.9.gz", "source2": "./usr/share/man/man9/orient.9.gz", "unified_diff": null, "details": [{"source1": "orient.9", "source2": "orient.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/orient.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH ORIENT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ORIENT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n orient \\- Provide a PID command input for orientation mode based on current spindle position, target angle and orient mode\n .SH SYNOPSIS\n .HP\n .B loadrt orient [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/plasmac.9.gz", "source2": "./usr/share/man/man9/plasmac.9.gz", "unified_diff": null, "details": [{"source1": "plasmac.9", "source2": "plasmac.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/plasmac.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH PLASMAC \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH PLASMAC \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n plasmac \\- A plasma cutter controller\n .SH SYNOPSIS\n .HP\n .B loadrt plasmac\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/sample_hold.9.gz", "source2": "./usr/share/man/man9/sample_hold.9.gz", "unified_diff": null, "details": [{"source1": "sample_hold.9", "source2": "sample_hold.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sample_hold.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SAMPLE_HOLD \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SAMPLE_HOLD \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sample_hold \\- Sample and Hold\n .SH SYNOPSIS\n .HP\n .B loadrt sample_hold [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/scale.9.gz", "source2": "./usr/share/man/man9/scale.9.gz", "unified_diff": null, "details": [{"source1": "scale.9", "source2": "scale.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/scale.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SCALE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SCALE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n scale \\- LinuxCNC HAL component that applies a scale and offset to its input\n .SH SYNOPSIS\n .HP\n .B loadrt scale [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/scaled_s32_sums.9.gz", "source2": "./usr/share/man/man9/scaled_s32_sums.9.gz", "unified_diff": null, "details": [{"source1": "scaled_s32_sums.9", "source2": "scaled_s32_sums.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/scaled_s32_sums.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SCALED_S32_SUMS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SCALED_S32_SUMS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n scaled_s32_sums \\- Sum of four inputs (each with a scale)\n .SH SYNOPSIS\n .HP\n .B loadrt scaled_s32_sums [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/select8.9.gz", "source2": "./usr/share/man/man9/select8.9.gz", "unified_diff": null, "details": [{"source1": "select8.9", "source2": "select8.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/select8.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SELECT8 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SELECT8 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n select8 \\- 8-bit binary match detector\n .SH SYNOPSIS\n .HP\n .B loadrt select8 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/serport.9.gz", "source2": "./usr/share/man/man9/serport.9.gz", "unified_diff": null, "details": [{"source1": "serport.9", "source2": "serport.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/drivers/serport.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SERPORT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SERPORT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n serport \\- Hardware driver for the digital I/O bits of the 8250 and 16550 serial port.\n .SH SYNOPSIS\n \n .B loadrt serport io=\\fIaddr[,addr...]\\fR\n .PP\n"}]}, {"source1": "./usr/share/man/man9/sim_axis_hardware.9.gz", "source2": "./usr/share/man/man9/sim_axis_hardware.9.gz", "unified_diff": null, "details": [{"source1": "sim_axis_hardware.9", "source2": "sim_axis_hardware.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sim_axis_hardware.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIM_AXIS_HARDWARE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_AXIS_HARDWARE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sim_axis_hardware \\- A component to simulate home and limit switches\n .SH SYNOPSIS\n .HP\n .B loadrt sim_axis_hardware [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/sim_home_switch.9.gz", "source2": "./usr/share/man/man9/sim_home_switch.9.gz", "unified_diff": null, "details": [{"source1": "sim_home_switch.9", "source2": "sim_home_switch.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sim_home_switch.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIM_HOME_SWITCH \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_HOME_SWITCH \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sim_home_switch \\- Home switch simulator\n .SH SYNOPSIS\n .HP\n .B loadrt sim_home_switch [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/sim_matrix_kb.9.gz", "source2": "./usr/share/man/man9/sim_matrix_kb.9.gz", "unified_diff": null, "details": [{"source1": "sim_matrix_kb.9", "source2": "sim_matrix_kb.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sim_matrix_kb.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIM_MATRIX_KB \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_MATRIX_KB \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sim_matrix_kb \\- convert HAL pin inputs to keycodes\n .SH SYNOPSIS\n .HP\n .B loadrt sim_matrix_kb [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/sim_parport.9.gz", "source2": "./usr/share/man/man9/sim_parport.9.gz", "unified_diff": null, "details": [{"source1": "sim_parport.9", "source2": "sim_parport.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sim_parport.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIM_PARPORT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_PARPORT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sim_parport \\- A component to simulate the pins of the hal_parport component\n .SH SYNOPSIS\n .HP\n .B loadrt sim_parport [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/sim_spindle.9.gz", "source2": "./usr/share/man/man9/sim_spindle.9.gz", "unified_diff": null, "details": [{"source1": "sim_spindle.9", "source2": "sim_spindle.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sim_spindle.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIM_SPINDLE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_SPINDLE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sim_spindle \\- Simulated spindle with index pulse\n .SH SYNOPSIS\n .HP\n .B loadrt sim_spindle [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/simple_tp.9.gz", "source2": "./usr/share/man/man9/simple_tp.9.gz", "unified_diff": null, "details": [{"source1": "simple_tp.9", "source2": "simple_tp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/simple_tp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SIMPLE_TP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIMPLE_TP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n simple_tp \\- This component is a single axis simple trajectory planner, same as used for jogging in LinuxCNC.\n .SH SYNOPSIS\n Used by PNCconf to allow testing of acceleration and velocity values for an axis.\n .SH FUNCTIONS\n .TP\n"}]}, {"source1": "./usr/share/man/man9/sphereprobe.9.gz", "source2": "./usr/share/man/man9/sphereprobe.9.gz", "unified_diff": null, "details": [{"source1": "sphereprobe.9", "source2": "sphereprobe.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sphereprobe.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SPHEREPROBE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPHEREPROBE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sphereprobe \\- Probe a pretend hemisphere\n .SH SYNOPSIS\n .HP\n .B loadrt sphereprobe [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/spindle.9.gz", "source2": "./usr/share/man/man9/spindle.9.gz", "unified_diff": null, "details": [{"source1": "spindle.9", "source2": "spindle.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/spindle.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SPINDLE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPINDLE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n spindle \\- Control a spindle with different acceleration and deceleration and optional gear change scaling\n .SH SYNOPSIS\n .HP\n .B loadrt spindle [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/spindle_monitor.9.gz", "source2": "./usr/share/man/man9/spindle_monitor.9.gz", "unified_diff": null, "details": [{"source1": "spindle_monitor.9", "source2": "spindle_monitor.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/spindle_monitor.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SPINDLE_MONITOR \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPINDLE_MONITOR \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n spindle_monitor \\- spindle at-speed and underspeed detection\n .SH SYNOPSIS\n .HP\n .B loadrt spindle_monitor [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/steptest.9.gz", "source2": "./usr/share/man/man9/steptest.9.gz", "unified_diff": null, "details": [{"source1": "steptest.9", "source2": "steptest.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/steptest.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH STEPTEST \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH STEPTEST \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n steptest \\- Used by Stepconf to allow testing of acceleration and velocity values for an axis.\n .SH SYNOPSIS\n .HP\n .B loadrt steptest [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/sum2.9.gz", "source2": "./usr/share/man/man9/sum2.9.gz", "unified_diff": null, "details": [{"source1": "sum2.9", "source2": "sum2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/sum2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH SUM2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SUM2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n sum2 \\- Sum of two inputs (each with a gain) and an offset\n .SH SYNOPSIS\n .HP\n .B loadrt sum2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/thc.9.gz", "source2": "./usr/share/man/man9/thc.9.gz", "unified_diff": null, "details": [{"source1": "thc.9", "source2": "thc.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/thc.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH THC \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THC \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n thc \\- Torch Height Control\n .SH SYNOPSIS\n .HP\n .B loadrt thc\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/thcud.9.gz", "source2": "./usr/share/man/man9/thcud.9.gz", "unified_diff": null, "details": [{"source1": "thcud.9", "source2": "thcud.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/thcud.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH THCUD \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THCUD \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n thcud \\- Torch Height Control Up/Down Input\n .SH SYNOPSIS\n .HP\n .B loadrt thcud\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/threadtest.9.gz", "source2": "./usr/share/man/man9/threadtest.9.gz", "unified_diff": null, "details": [{"source1": "threadtest.9", "source2": "threadtest.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/threadtest.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH THREADTEST \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THREADTEST \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n threadtest \\- LinuxCNC HAL component for testing thread behavior\n .SH SYNOPSIS\n .HP\n .B loadrt threadtest [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/time.9.gz", "source2": "./usr/share/man/man9/time.9.gz", "unified_diff": null, "details": [{"source1": "time.9", "source2": "time.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/time.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TIME \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIME \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n time \\- Time on in Hours, Minutes, Seconds\n .SH SYNOPSIS\n .HP\n .B loadrt time [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/timedelay.9.gz", "source2": "./usr/share/man/man9/timedelay.9.gz", "unified_diff": null, "details": [{"source1": "timedelay.9", "source2": "timedelay.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/timedelay.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TIMEDELAY \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIMEDELAY \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n timedelay \\- The equivalent of a time-delay relay\n .SH SYNOPSIS\n .HP\n .B loadrt timedelay [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/timedelta.9.gz", "source2": "./usr/share/man/man9/timedelta.9.gz", "unified_diff": null, "details": [{"source1": "timedelta.9", "source2": "timedelta.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/timedelta.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TIMEDELTA \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIMEDELTA \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n timedelta \\- LinuxCNC HAL component that measures thread scheduling timing behavior\n .SH SYNOPSIS\n .HP\n .B loadrt timedelta [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/tof.9.gz", "source2": "./usr/share/man/man9/tof.9.gz", "unified_diff": null, "details": [{"source1": "tof.9", "source2": "tof.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/tof.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TOF \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOF \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n tof \\- IEC TOF timer - delay falling edge on a signal\n .SH SYNOPSIS\n .HP\n .B loadrt tof [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/toggle.9.gz", "source2": "./usr/share/man/man9/toggle.9.gz", "unified_diff": null, "details": [{"source1": "toggle.9", "source2": "toggle.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/toggle.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TOGGLE \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOGGLE \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n toggle \\- 'push-on, push-off' from momentary pushbuttons\n .SH SYNOPSIS\n .HP\n .B loadrt toggle [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/toggle2nist.9.gz", "source2": "./usr/share/man/man9/toggle2nist.9.gz", "unified_diff": null, "details": [{"source1": "toggle2nist.9", "source2": "toggle2nist.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/toggle2nist.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TOGGLE2NIST \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOGGLE2NIST \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n toggle2nist \\- toggle button to nist logic\n .SH SYNOPSIS\n .HP\n .B loadrt toggle2nist [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/ton.9.gz", "source2": "./usr/share/man/man9/ton.9.gz", "unified_diff": null, "details": [{"source1": "ton.9", "source2": "ton.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/ton.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TON \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TON \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n ton \\- IEC TON timer - delay rising edge on a signal\n .SH SYNOPSIS\n .HP\n .B loadrt ton [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/tp.9.gz", "source2": "./usr/share/man/man9/tp.9.gz", "unified_diff": null, "details": [{"source1": "tp.9", "source2": "tp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/tp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n tp \\- IEC TP timer - generate a high pulse of defined duration on rising edge\n .SH SYNOPSIS\n .HP\n .B loadrt tp [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/tpcomp.9.gz", "source2": "./usr/share/man/man9/tpcomp.9.gz", "unified_diff": null, "details": [{"source1": "tpcomp.9", "source2": "tpcomp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/tpcomp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TPCOMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TPCOMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n tpcomp \\- Trajectory Planning (tp) module skeleton\n .SH SYNOPSIS\n .HP\n Custom Trajectory Planning module loaded with \\fB[TRAJ]TPMOD=tpcomp\\fR\n \n"}]}, {"source1": "./usr/share/man/man9/tristate_bit.9.gz", "source2": "./usr/share/man/man9/tristate_bit.9.gz", "unified_diff": null, "details": [{"source1": "tristate_bit.9", "source2": "tristate_bit.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/tristate_bit.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TRISTATE_BIT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TRISTATE_BIT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n tristate_bit \\- Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics\n .SH SYNOPSIS\n .HP\n .B loadrt tristate_bit [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/tristate_float.9.gz", "source2": "./usr/share/man/man9/tristate_float.9.gz", "unified_diff": null, "details": [{"source1": "tristate_float.9", "source2": "tristate_float.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/tristate_float.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH TRISTATE_FLOAT \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TRISTATE_FLOAT \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n tristate_float \\- Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics\n .SH SYNOPSIS\n .HP\n .B loadrt tristate_float [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/updown.9.gz", "source2": "./usr/share/man/man9/updown.9.gz", "unified_diff": null, "details": [{"source1": "updown.9", "source2": "updown.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/updown.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH UPDOWN \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH UPDOWN \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n updown \\- Counts up or down, with optional limits and wraparound behavior\n .SH SYNOPSIS\n .HP\n .B loadrt updown [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/userkins.9.gz", "source2": "./usr/share/man/man9/userkins.9.gz", "unified_diff": null, "details": [{"source1": "userkins.9", "source2": "userkins.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/userkins.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH USERKINS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH USERKINS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n userkins \\- Template for user-built kinematics\n .SH SYNOPSIS\n .HP\n .B loadrt userkins [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/wcomp.9.gz", "source2": "./usr/share/man/man9/wcomp.9.gz", "unified_diff": null, "details": [{"source1": "wcomp.9", "source2": "wcomp.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/wcomp.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH WCOMP \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH WCOMP \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n wcomp \\- Window comparator\n .SH SYNOPSIS\n .HP\n .B loadrt wcomp [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/xhc_hb04_util.9.gz", "source2": "./usr/share/man/man9/xhc_hb04_util.9.gz", "unified_diff": null, "details": [{"source1": "xhc_hb04_util.9", "source2": "xhc_hb04_util.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/xhc_hb04_util.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH XHC_HB04_UTIL \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XHC_HB04_UTIL \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n xhc_hb04_util \\- xhc-hb04 convenience utility\n .SH SYNOPSIS\n .HP\n .B loadrt xhc_hb04_util [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}, {"source1": "./usr/share/man/man9/xor2.9.gz", "source2": "./usr/share/man/man9/xor2.9.gz", "unified_diff": null, "details": [{"source1": "xor2.9", "source2": "xor2.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/xor2.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH XOR2 \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XOR2 \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n xor2 \\- Two-input XOR (exclusive OR) gate\n .SH SYNOPSIS\n .HP\n .B loadrt xor2 [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH FUNCTIONS\n"}]}, {"source1": "./usr/share/man/man9/xyzab_tdr_kins.9.gz", "source2": "./usr/share/man/man9/xyzab_tdr_kins.9.gz", "unified_diff": null, "details": [{"source1": "xyzab_tdr_kins.9", "source2": "xyzab_tdr_kins.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/xyzab_tdr_kins.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH XYZAB_TDR_KINS \"9\" \"2024-02-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XYZAB_TDR_KINS \"9\" \"2025-03-07\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n xyzab_tdr_kins \\- Switchable kinematics for 5 axis machine with rotary table A and B\n .SH SYNOPSIS\n .HP\n .B loadrt xyzab_tdr_kins [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]]\n .SH DESCRIPTION\n"}]}]}]}]}]}