{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.qIWZYJf7/b1/linuxcnc_2.9.3-2_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.qIWZYJf7/b2/linuxcnc_2.9.3-2_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n- bb5dba4c13f21c59e39e1bbc7e2568ce 27875572 misc optional linuxcnc-doc-de_2.9.3-2_all.deb\n- b38dfae221e863712d77e53db7fe3f6a 28455084 misc optional linuxcnc-doc-en_2.9.3-2_all.deb\n- 28b34e8a859d8cec279c0cbf930b9eba 27609412 misc optional linuxcnc-doc-es_2.9.3-2_all.deb\n- d7d7e8c4c3019672b62780eea9c1e815 27519760 misc optional linuxcnc-doc-fr_2.9.3-2_all.deb\n- 61ddbb77a868cbab33417e451aed3e0a 27565884 misc optional linuxcnc-doc-zh-cn_2.9.3-2_all.deb\n+ ebf76f5145122420ea6d71f92289dc8a 27875784 misc optional linuxcnc-doc-de_2.9.3-2_all.deb\n+ 82a1ecea564fc683c996998dfd6caffa 28457160 misc optional linuxcnc-doc-en_2.9.3-2_all.deb\n+ acecaff0d3ce9afeb552fd7a13790bc6 27610712 misc optional linuxcnc-doc-es_2.9.3-2_all.deb\n+ 5450c178bca8a8143f61df05725316bd 27521932 misc optional linuxcnc-doc-fr_2.9.3-2_all.deb\n+ be2d7ebc23b3d67824d0d7d2728d8a68 27568460 misc optional linuxcnc-doc-zh-cn_2.9.3-2_all.deb\n 2f3b5662b1b42742313806659dd04683 11382172 debug optional linuxcnc-uspace-dbgsym_2.9.3-2_amd64.deb\n 221e7e52ac4788faa992c8bf8fa19700 261812 devel optional linuxcnc-uspace-dev_2.9.3-2_amd64.deb\n- 50bcd936780b743725fe2607c5a19471 25571452 misc optional linuxcnc-uspace_2.9.3-2_amd64.deb\n+ cd8709d50fad169af6129f7b8db76c0c 25570164 misc optional linuxcnc-uspace_2.9.3-2_amd64.deb\n"}, {"source1": "linuxcnc-doc-de_2.9.3-2_all.deb", "source2": "linuxcnc-doc-de_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n--rw-r--r-- 0 0 0 1076 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 27874304 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 1080 2025-01-26 08:13:18.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 27874512 2025-01-26 08:13: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.3-2\n Architecture: all\n Maintainer: LinuxCNC Developers <emc-developers@lists.sourceforge.net>\n-Installed-Size: 30633\n+Installed-Size: 30635\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 2025-01-26 08:13:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 340 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-documentation_de.desktop\n -rw-r--r-- 0 root (0) root (0) 367 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gcoderef_de.desktop\n -rw-r--r-- 0 root (0) root (0) 381 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gettingstarted_de.desktop\n -rw-r--r-- 0 root (0) root (0) 370 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-integratorinfo_de.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 869876 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf\n--rw-r--r-- 0 root (0) root (0) 29754574 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf\n+-rw-r--r-- 0 root (0) root (0) 869991 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf\n+-rw-r--r-- 0 root (0) root (0) 29756508 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf\n -rw-r--r-- 0 root (0) root (0) 498996 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_de.pdf\n -rw-r--r-- 0 root (0) root (0) 155423 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_de.pdf\n -rw-r--r-- 0 root (0) root (0) 15158 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/gcode_de.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-de/\n -rw-r--r-- 0 root (0) root (0) 11212 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-de/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2024-07-06 08:41:36.000000 ./usr/share/doc/linuxcnc-doc-de/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13: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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Entwickler-Handbuch V2.9.3, 25 Jan 2025'\n+Title: 'Entwickler-Handbuch V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Entwickler-Handbuch V2.9.3, 25 Jan 2025\n+Entwickler-Handbuch V2.9.3, 26 Jan 2025\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n ii\n \n Inhaltsverzeichnis\n 1 Einf\u00fchrung\n \n 1\n@@ -115,15 +115,15 @@\n \n 16\n \n 3.8.3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n iii\n \n 3.8.3.2 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 17\n \n@@ -277,15 +277,15 @@\n \n 21\n \n 3.8.16.1Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n iv\n \n 3.8.16.2Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n@@ -447,15 +447,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n \n 3.21.3Prozesslinie\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n v\n \n 3.21.4Kommentare zur Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 30\n \n@@ -619,15 +619,15 @@\n \n 43\n \n 4.14Andere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 43\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n vi\n \n 5 Quellcode-Stil\n \n 45\n \n@@ -777,15 +777,15 @@\n \n 60\n \n 8.4.1 LinuxCNC offizielles Git Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 60\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n vii\n \n 8.4.2 Verwendung von Git im LinuxCNC-Projekt . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 61\n \n@@ -870,15 +870,15 @@\n \n 10.2GNU Free Documentation License\n \n 72\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 1 / 76\n \n Kapitel 1\n \n Einf\u00fchrung\n \n@@ -901,15 +901,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 2 / 76\n \n Kapitel 2\n \n HAL General Reference\n 2.1 HAL Entity Names\n@@ -939,15 +939,15 @@\n Halcmd and other low-level HAL utilities treat HAL names as single entities, with no internal structure. However, most modules do have some implicit structure. For example, a board provides several\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 \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 3 / 76\n \n \u2022 Punkte (\u201d.\u201d) trennen die einzelnen Ebenen der Hierarchie. Dies ist vergleichbar mit dem Schr\u00e4gstrich (\u201d/\u201d) in einem Dateinamen.\n \u2022 Bindestriche (\u201e-\u201c) trennen W\u00f6rter oder Felder auf derselben Hierarchieebene.\n \u2022 HAL-Komponenten sollten keine Unterstriche oder \u201dMixedCase\u201d verwenden. 1\n \u2022 Verwenden Sie in Namen nur Kleinbuchstaben und Zahlen.\n@@ -982,15 +982,15 @@\n Like device numbers, channel numbers start at zero and increment.2 If more than one device is\n installed, the channel numbers on additional devices start over at zero. If it is possible to have a\n 1 Die unterstrichenen Zeichen wurden entfernt, aber es gibt immer noch einige F\u00e4lle, in denen die Mischung nicht stimmt,\n zum Beispiel pid.0.Pgain anstelle von pid.0.p-gain.\n 2 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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 4 / 76\n \n channel number greater than 9, then channel numbers should be two digits, with a leading zero\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@@ -1031,28 +1031,28 @@\n Funktionen darauf zugreifen.\n read|write\n Gibt an, ob die Funktion die Hardware liest (engl. read) oder in sie schreibt (engl. write).\n 3 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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 5 / 76\n \n Beispiele\n motenc.0.encoder.read\n Liest alle Encoder auf der ersten Motenc-Platine aus.\n generic8255.0.din.09-15.read\n Liest den zweiten 8-Bit-Port auf der ersten generischen 8255-basierten digitalen E/A-Karte.\n ppmc.0.write\n Schreibt alle Ausg\u00e4nge (Schrittgeneratoren, PWM, DACs und Digital) auf die erste Pico Systems\n ppmc-Karte.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 6 / 76\n \n Kapitel 3\n \n Code Anmerkungen\n 3.1 Zielgruppe\n@@ -1077,15 +1077,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 7 / 76\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@@ -1116,19 +1116,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 8 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 9 / 76\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@@ -1159,19 +1159,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 10 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 11 / 76\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@@ -1184,15 +1184,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 12 / 76\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@@ -1215,26 +1215,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 13 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 3.7 Referenzfahrt (engl. homing)\n 3.7.1 Zustandsdiagramm der Referenzfahrt\n \n 14 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 15 / 76\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@@ -1247,15 +1247,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 16 / 76\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@@ -1288,15 +1288,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 17 / 76\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@@ -1327,15 +1327,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 18 / 76\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@@ -1360,15 +1360,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 19 / 76\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@@ -1392,15 +1392,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 20 / 76\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@@ -1423,15 +1423,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 21 / 76\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@@ -1460,15 +1460,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 22 / 76\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@@ -1494,15 +1494,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 23 / 76\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@@ -1534,15 +1534,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 24 / 76\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@@ -1572,15 +1572,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 25 / 76\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@@ -1605,15 +1605,15 @@\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 #define EMC_TOOL_SET_NUMBER_TYPE ((NMLTYPE) 1109)\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 26 / 76\n \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 \n@@ -1643,15 +1643,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 27 / 76\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@@ -1681,15 +1681,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 28 / 76\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@@ -1707,15 +1707,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 29 / 76\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@@ -1747,15 +1747,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 30 / 76\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@@ -1794,15 +1794,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 31 / 76\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@@ -1829,15 +1829,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 32 / 76\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@@ -1869,15 +1869,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 33 / 76\n \n Anmerkung\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 has got\n an empty spindle.\n@@ -1909,15 +1909,15 @@\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 \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 \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 34 / 76\n \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 Durchmesser\n Durchmesser des Werkzeugs in Maschineneinheiten.\n@@ -1948,15 +1948,15 @@\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 1. Die Maschine wird aufgefordert, zum ausgew\u00e4hlten Werkzeug zu wechseln, indem die CanonFunktion CHANGE_TOOL() mit settings->selected_pocket (einem Werkzeugdatenindex) aufgerufen wird.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 35 / 76\n \n a. (saicanon) Sets sai\u2019s _active_slot to the passed-in pocket number. Tool information is copied from the selected pocket of of the tool table (ie, from sai\u2019s _tools[_active_slot]) to\n the spindle (aka sai\u2019s _tools[0]).\n b. (emccanon) Sendet eine EMC_TOOL_LOAD Nachricht an Task, die diese an IO sendet. IO setzt\n emcioStatus.tool.toolInSpindle auf die Werkzeugnummer des Werkzeugs in der Tasche,\n@@ -1988,15 +1988,15 @@\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 3.24.3.4 G10 L1/L10/L11\n \u00c4ndert die Werkzeugtabelle.\n Wird von Interp::convert_setup_tool() behandelt.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 36 / 76\n \n 1. W\u00e4hlt die Werkzeugnummer aus dem P-Wort im Block aus und findet die Tasche f\u00fcr dieses Werkzeug:\n a. Bei einer nicht-zuf\u00e4lligen Werkzeugwechsler-Konfiguration ist dies immer die Platznummer\n im Werkzeugwechsler (auch wenn sich das Werkzeug in der Spindel befindet).\n b. Bei einer zuf\u00e4lligen Werkzeugwechslerkonfiguration wird, wenn das Werkzeug gerade geladen ist, Platz 0 verwendet (Platz 0 bedeutet \u201ddie Spindel\u201d), und wenn das Werkzeug nicht\n@@ -2028,15 +2028,15 @@\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 Canon: CHANGE_TOOL_NUMBER()\n settings->current_pocket wird dem Werkzeugdaten-Index zugewiesen, der das durch das Q-WortArgument angegebene Werkzeug enth\u00e4lt.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 37 / 76\n \n 3.24.3.6 G41/G41.1/G42/G42.1\n Aktiviert die Fr\u00e4serradiuskompensation (engl. kurz cutter comp genannt).\n Wird von Interp::convert_cutter_compensation_on() behandelt.\n Kein Canon-Aufruf, die Fr\u00e4ser Kompensation erfolgt im Interpreter. Verwendet die Werkzeugtabelle\n@@ -2069,15 +2069,15 @@\n settings.selected_pocket\n Tooldatenindex des zuletzt mit Txxx ausgew\u00e4hlten Werkzeugs.\n settings.current_pocket\n Urspr\u00fcnglicher Werkzeugdatenindex des Werkzeugs, das sich gerade in der Spindel befindet.\n Mit anderen Worten: Von welchem Werkzeugdatenindex das Werkzeug geladen wurde, das sich\n gerade in der Spindel befindet.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 38 / 76\n \n settings.tool_table[]\n Ein Array mit Werkzeuginformationen. Der Index im Array ist die \u201dPlatznummer\u201d (auch \u201dSlotnummer\u201d genannt). Platz 0 ist die Spindel, die Pl\u00e4tze 1 bis (CANON_POCKETS_MAX-1) sind die\n Pl\u00e4tze des Werkzeugwechslers.\n settings.tool_offset_index\n@@ -2111,15 +2111,15 @@\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 3.25.1 Im Statuspuffer\n Der Statuspuffer wird vom Task-Modul und den Benutzeroberfl\u00e4chen verwendet.\n FIXME: axis_mask und axes \u00fcberspezifizieren die Anzahl der Achsen\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 39 / 76\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@@ -2145,15 +2145,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\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@@ -2185,15 +2185,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3 ACHSE\n \n 40 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\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@@ -2239,15 +2239,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6 MOTION (engl. f\u00fcr Bewegung)\n \n 41 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 42 / 76\n \n EMC_MOTION_INIT_TYPE\n EMC_MOTION_HALT_TYPE\n EMC_MOTION_ABORT_TYPE\n EMC_MOTION_SET_AOUT_TYPE\n@@ -2292,15 +2292,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 43 / 76\n \n EMC_AUX_INPUT_WAIT_TYPE\n EMC_AUX_STAT_TYPE\n \n 4.10 SPINDLE (engl. f\u00fcr Spindel)\n@@ -2335,28 +2335,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\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 / 76\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 45 / 76\n \n Kapitel 5\n \n Quellcode-Stil\n Dieses Kapitel beschreibt den vom LinuxCNC-Team bevorzugten Quellcode-Stil.\n@@ -2380,15 +2380,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 46 / 76\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@@ -2422,15 +2422,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 47 / 76\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@@ -2466,15 +2466,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 48 / 76\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@@ -2510,15 +2510,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 49 / 76\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@@ -2531,15 +2531,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 50 / 76\n \n Kapitel 6\n \n Kompilieren (\u201dbauen\u201d) von LinuxCNC\n 6.1 Einf\u00fchrung\n@@ -2567,15 +2567,15 @@\n To retrieve the source tree you have two options:\n Download tarball\n On the LinuxCNC project page in GitHub find a reference to the \u201dreleases\u201d or \u201dtags\u201d, click that\n hyperlink to the archive page and download the latest .tar file. You will find that file compressed\n as a .tar.xz or .tar.gz file. This file, commonly referred to as a \u201dtarball\u201d is an archive very analogous\n to a .zip. Your Linux desktop will know how to treat that file when double-clicking on it.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 51 / 76\n \n Prepare a local copy of the LinuxCNC repository\n You would first install the tool \u201dgit\u201d on your machine if it is not available already (sudo apt\n install git). Then prepare a local instance of the source tree as follows: .\n $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir\n@@ -2616,15 +2616,15 @@\n \n 6.3 Unterst\u00fctzte Plattformen\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint. 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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 52 / 76\n \n 6.3.1 Echtzeit\n LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version\n of LinuxCNC supports the following platforms. The first three listed are realtime operating systems:\n RTAI\n@@ -2657,15 +2657,15 @@\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments. List all arguments to src/configure by running this:\n $ cd linuxcnc-source-dir/src\n $ ./configure --help\n \n Die am h\u00e4ufigsten verwendeten Argumente sind:\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 53 / 76\n \n --with-realtime=uspace\n Build for any realtime platform, or for non-realtime. The resulting LinuxCNC executables will run\n on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a\n vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).\n@@ -2701,15 +2701,15 @@\n in a Debian package, complete with dependency information. This process by default also includes\n the building of the documentation, which takes its time because of all the I/O for many languages, but\n that can be skipped. LinuxCNC is then installed as part of those packages on the same machines or on\n whatever machine of the same architecture that the .deb files are copied to. LinuxCNC cannot be run\n until the Debian packages are installed on a target machine and then the executables are available in\n /usr/bin and /usr/lib just like other regular software of the sytem.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 54 / 76\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 does not have the build environment installed, or that does\n not have internet access.\n To build packages is primarily useful when packaging the software for delivery to end users. Developers among themselves exchange only the source code, likely supported by the LinuxCNC GitHub repository referenced below. Also, when building the software for a machine that doesn\u2019t have the build\n@@ -2747,15 +2747,15 @@\n 6.4.2.1 LinuxCNC\u2019s debian/configure arguments\n The LinuxCNC source tree has a debian directory with all the info about how the Debian package\n shall be built, but some key files within are only distributed as templates. The debian/configure\n script readies those build instructions for the regular Debian packaging utilities and must thus be run\n prior to dpkg-checkbuilddeps or dpkg-buildpackage.\n The debian/configure script takes a single argument which specifies the underlying realtime or nonrealtime platform to build for. The regular values for this argument are:\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 55 / 76\n \n no-docs\n Skip building documentation.\n uspace\n Konfigurieren Sie das Debian-Paket f\u00fcr Preempt-RT-Echtzeit oder f\u00fcr Nicht-Echtzeit (diese beiden sind kompatibel).\n@@ -2794,15 +2794,15 @@\n sudo apt-get build-dep .\n \n which will install all the dependencies required but available. The . is part of the command line, i.e. an\n instruction to retrieve the dependencies for the source tree at hand, not for dependencies of another\n package. This completes the installation of build-dependencies.\n The remainder of this section describes a semi-manual approach. The list of dependencies in debian/control is long and it is tedious to compare the current state of packages already installed with it.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 56 / 76\n \n Debian systems provide a program called dpkg-checkbuilddeps that parses the package meta-data\n and compares the packages listed as build dependencies against the list of installed packages, and\n tells you what\u2019s missing.\n Installieren Sie zuerst das Programm dpkg-checkbuilddeps, indem Sie es ausf\u00fchren:\n@@ -2841,15 +2841,15 @@\n -b\n Only compiles the architecture-dependent packages (like the linuxcnc binaries and GUIs). This\n is very helpful to avoid compiling what is hardware-independent, which for LinuxCNC is the\n documentation. That documentation is available online anyway.\n If you happen to run into difficulties while compiling, check the LinuxCNC forum online. Currently\n emerging is the support for the DEB_BUILD_OPTIONS environment variable. Set it to\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 57 / 76\n \n nodocs\n to skip building the documentation, preferably instead use the -B flag to dpkg-buildpackage.\n nocheck\n to skip self-tests of the LinuxCNC build process. This saves some time and reduces the demand\n@@ -2887,25 +2887,25 @@\n RTAPI: ERROR: failed to map shmem\n RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB.\n \n Um dieses Problem zu beheben, f\u00fcgen Sie eine Datei namens /etc/security/limits.d/linuxcnc.conf\n (als root) mit Ihrem bevorzugten Texteditor hinzu (z.B. sudo gedit /etc/security/limits.d/linuxcnc.co\n Die Datei sollte die folgende Zeile enthalten:\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 58 / 76\n \n * - memlock 20480\n \n Melden Sie sich ab und wieder an, damit die \u00c4nderungen wirksam werden. \u00dcberpr\u00fcfen Sie mit dem\n folgenden Befehl, ob die Speichersperrgrenze angehoben wurde:\n $ ulimit -l\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 59 / 76\n \n Kapitel 7\n \n Hinzuf\u00fcgen von Konfigurationsauswahl\n elementen\n@@ -2916,15 +2916,15 @@\n \n \u2022 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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 60 / 76\n \n Kapitel 8\n \n Mitwirkung an LinuxCNC\n 8.1 Einf\u00fchrung\n@@ -2945,15 +2945,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 61 / 76\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@@ -2986,15 +2986,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 62 / 76\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 Communicate with the project developers and let us know what you\u2019re hacking on. Explain what\n you are doing, and why.\n@@ -3026,15 +3026,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 63 / 76\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@@ -3066,15 +3066,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 64 / 76\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@@ -3113,30 +3113,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 65 / 76\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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 66 / 76\n \n Kapitel 9\n \n Glossar\n Eine Auflistung von Begriffen und deren Bedeutung. Einige Begriffe haben eine allgemeine Bedeutung\n@@ -3170,15 +3170,15 @@\n Umkehrspiel-Kompensation\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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 67 / 76\n \n Kugelumlaufspindel\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 Kugelmutter\n@@ -3218,15 +3218,15 @@\n sinking electrode.\n EMC\n The Enhanced Machine Controller. Initially a NIST project. Renamed to LinuxCNC in 2012.\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 68 / 76\n \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 Encoder\n@@ -3269,15 +3269,15 @@\n A text file that contains most of the information that configures LinuxCNC for a particular machine.\n Instanz\n One can have an instance of a class or a particular object. The instance is the actual object created\n at runtime. In programmer jargon, the \u201dLassie\u201d object is an instance of the \u201dDog\u201d class.\n Gelenk-Koordinaten\n These specify the angles between the individual joints of the machine. See also Kinematics\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 69 / 76\n \n Jog (manuelle Bewegung)\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@@ -3322,15 +3322,15 @@\n Python\n General-purpose, very high-level programming language. Used in LinuxCNC for the Axis GUI,\n the StepConf configuration tool, and several G-code programming scripts.\n Schnell\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 \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 70 / 76\n \n Schnellauf-Geschwindigkeit\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@@ -3372,15 +3372,15 @@\n Schrittmotor\n A type of motor that turns in fixed steps. By counting steps, it is possible to determine how far\n the motor has turned. If the load exceeds the torque capability of the motor, it will skip one or\n more steps, causing position errors.\n TASK (engl. f\u00fcr Aufgabe, auch Name des entsprechenden LinuxCNC Moduls)\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n \n-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 71 / 76\n \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 Bewegung\n@@ -3390,15 +3390,15 @@\n Ganzzahl ohne Vorzeichen\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 Weltkoordinaten\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-\fEntwickler-Handbuch V2.9.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 72 / 76\n \n Kapitel 10\n \n Juristischer Abschnitt\n Die \u00dcbersetzungen dieser Datei im Quellbaum sind nicht rechtsverbindlich.\n@@ -3427,15 +3427,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 73 / 76\n \n 1. APPLICABILITY AND DEFINITIONS\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@@ -3469,15 +3469,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 74 / 76\n \n 3. COPYING IN QUANTITY\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@@ -3515,15 +3515,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 75 / 76\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@@ -3563,15 +3563,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.3, 25 Jan 2025\n+\fEntwickler-Handbuch V2.9.3, 26 Jan 2025\n \n 76 / 76\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'LinuxCNC V2.9.3, 25 Jan 2025'\n+Title: 'LinuxCNC V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-LinuxCNC V2.9.3, 25 Jan 2025\n+LinuxCNC V2.9.3, 26 Jan 2025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ii\n \n Inhaltsverzeichnis\n \n I Erste Schritte & Konfiguration\n \n@@ -114,15 +114,15 @@\n \n 8\n \n 1.3.2.1 Raspberry Pi Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 8\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iii\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n \n . . . . . . . . . . . . . . . . . .\n \n@@ -284,15 +284,15 @@\n \n 23\n \n 1.6.4 Man Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 23\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iv\n \n 1.6.5 Module auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 23\n \n@@ -447,15 +447,15 @@\n \n 46\n \n 2.3.2.2 Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 46\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n v\n \n 2.3.2.3 Tool Radius Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 46\n \n@@ -613,15 +613,15 @@\n \n 56\n \n 2.5.3.3 Optionaler Programm-Stopp-Schalter . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vi\n \n 2.5.4 Werkzeugtabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n@@ -779,15 +779,15 @@\n \n 75\n \n 2.7.13Hole And Small Shape Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 75\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vii\n \n 2.7.14I/O Pins For Plasma Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 76\n \n@@ -941,15 +941,15 @@\n \n 97\n \n 3.1.8.3 Determining Spindle Calibration . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 97\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n viii\n \n 3.1.9 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 98\n \n@@ -1014,15 +1014,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n \n 4.1.4.6 Manuelle Abstimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n 4.1.5 RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n 4.1.5.1 ACPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ix\n \n 4.2 Latency Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138\n 4.2.1 What is latency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138\n 4.2.2 Latency Tests\n \n@@ -1070,15 +1070,15 @@\n \n 4.4.2.11 [KINS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163\n 4.4.2.12 [AXIS_<letter>] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163\n 4.4.2.13 [JOINT_<num>] Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164\n 4.4.2.14 [SPINDLE_<num>] Section(s)) . . . . . . . . . . . . . . . . . . . . . . . . . . 170\n 4.4.2.15 [EMCIO] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n x\n \n 4.5 Konfiguration der Referenzfahrt (engl. homing)\n \n . . . . . . . . . . . . . . . . . . . . . . . . . 172\n \n@@ -1131,15 +1131,15 @@\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187\n 4.8.4 Maschineninformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187\n 4.8.5 Informationen zur Pinbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187\n 4.8.6 Mechanische Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188\n 4.9 Stepper Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xi\n \n 4.9.1 Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189\n 4.9.2 Maximale Schrittgeschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n 4.9.3 Pinbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n 4.9.3.1 Standard-Pinbelegung HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n@@ -1177,15 +1177,15 @@\n 5.1.3.4 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205\n 5.1.3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205\n 5.1.4 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.1.5 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208\n 5.1.6 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208\n 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xii\n \n 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210\n 5.2.1.3 loadusr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211\n@@ -1236,15 +1236,15 @@\n 5.4.3.1 Laden einer Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224\n 5.4.3.2 Untersuchung der HAL\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224\n \n 5.4.3.3 Echtzeitcode zum Laufen bringen . . . . . . . . . . . . . . . . . . . . . . . . . 225\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiii\n \n 5.4.3.4 \u00c4ndern von Parametern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227\n 5.4.3.5 Speichern der HAL-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 227\n 5.4.3.6 Halrun beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228\n 5.4.3.7 Wiederherstellung der HAL-Konfiguration . . . . . . . . . . . . . . . . . . . . 228\n@@ -1294,15 +1294,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259\n \n 5.6.5 INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259\n 5.6.5.1 Pins )\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiv\n \n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261\n 5.7.1 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261\n 5.7.1.1 User Interfaces (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . 261\n 5.7.1.2 Motion (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262\n@@ -1357,15 +1357,15 @@\n 5.8.5.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286\n 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286\n 5.8.6.2 Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xv\n \n 5.8.6.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287\n 5.8.7 SigGen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287\n@@ -1410,15 +1410,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302\n \n 5.10HALTCL-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302\n 5.10.1Kompatibilit\u00e4t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303\n 5.10.2Haltcl-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvi\n \n 5.10.3Haltcl INI-Datei-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303\n 5.10.4Konvertieren von HAL-Dateien in Tcl-Dateien . . . . . . . . . . . . . . . . . . . . . . . 304\n 5.10.5Haltcl Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304\n 5.10.6Haltcl Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305\n@@ -1470,15 +1470,15 @@\n 5.13.1Basic usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.13.2Non-realtime components and delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.13.3Pins und Parameter erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.13.3.1\u00c4ndern des Pr\u00e4fixes\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvii\n \n 5.13.4Lesen und Schreiben von Pins und Parametern . . . . . . . . . . . . . . . . . . . . . . 318\n 5.13.4.1Ansteuerung der Ausgangsstifte (HAL_OUT) . . . . . . . . . . . . . . . . . . 318\n 5.13.4.2Ansteuerung von bidirektionalen (HAL_IO) Pins . . . . . . . . . . . . . . . . 318\n 5.13.5Beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318\n@@ -1527,15 +1527,15 @@\n 5.15.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325\n 5.15.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326\n 5.15.5Sim-Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326\n 5.15.6simulate_probe (Sonde simulieren) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327\n 5.15.7HAL Histogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 5.15.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xviii\n \n 6 Hardware-Treiber\n \n 332\n \n@@ -1595,15 +1595,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354\n \n 6.3.6 Status-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354\n 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354\n 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xix\n \n 6.3.6.4 Booten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.3.6.5 Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.3.7 RS485 E/A-Erweiterungsmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.3.7.1 Relais-Ausgangsmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n@@ -1659,15 +1659,15 @@\n 6.7.4 Laden von HostMot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368\n 6.7.5 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369\n 6.7.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369\n 6.7.5.2 Parameter\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xx\n \n 6.7.6 HostMot2-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369\n 6.7.7 Pinbelegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370\n 6.7.8 PIN-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371\n 6.7.9 Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371\n@@ -1730,15 +1730,15 @@\n 6.8.5.2 fnct_02_read_discrete_inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.8.5.3 fnct_03_read_holding_registers\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n \n 6.8.5.4 fnct_04_read_input_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxi\n \n 6.8.5.5 fnct_05_write_single_coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.8.5.6 fnct_06_write_single_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.8.5.7 fnct_15_write_multiple_coils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.8.5.8 fnct_16_write_multiple_registers . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n@@ -1786,15 +1786,15 @@\n 6.13.1.4LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.13.1.5Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.13.1.6PC-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.13.1.7Neuerstellung der FPGA-Firmware . . . . . . . . . . . . . . . . . . . . . . . . 403\n 6.13.1.8F\u00fcr weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n 6.13.2Pluto-Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxii\n \n 6.13.2.1Pinbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n 6.13.2.2Input-Latching und Output-Aktualisierung . . . . . . . . . . . . . . . . . . . . 405\n 6.13.2.3HAL-Funktionen, Pins und Parameter . . . . . . . . . . . . . . . . . . . . . . . 406\n 6.13.2.4Kompatible Treiber-Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 406\n@@ -1836,15 +1836,15 @@\n 6.17.8Konfigurieren des VFS11 VFD f\u00fcr die Modbus-Nutzung . . . . . . . . . . . . . . . . . 417\n 6.17.8.1Anschlie\u00dfen der seriellen Schnittstelle . . . . . . . . . . . . . . . . . . . . . . 417\n 6.17.8.2Modbus-Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418\n 6.17.9Hinweis zur Programmierung\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiii\n \n 7 Hardware-Beispiele\n \n 419\n \n@@ -1890,15 +1890,15 @@\n 8.2.5.4 Symbol-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437\n 8.2.5.5 Das Editor-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438\n 8.2.5.6 Konfigurationsfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439\n 8.2.6 SPS Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441\n 8.2.6.1 KONTAKTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441\n 8.2.6.2 IEC-TIMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiv\n \n 8.2.6.3 ZEITGLIEDER (engl. timers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442\n 8.2.6.4 KIPPSTUFEN (engl. monostables) . . . . . . . . . . . . . . . . . . . . . . . . . 442\n 8.2.6.5 Z\u00c4HLER (engl. counters) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443\n 8.2.6.6 VERGLEICHEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443\n@@ -1942,15 +1942,15 @@\n 9.1.3.2 Inverse Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476\n 9.1.4 Details zur Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476\n 9.1.4.1 Kinematikmodul unter Verwendung der Vorlage userkins.comp . . . . . . . 478\n 9.2 Setting up \u201dmodified\u201d Denavit-Hartenberg (DH) parameters for genserkins . . . . . . . . 478\n 9.2.1 Vorspiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478\n 9.2.2 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxv\n \n 9.2.3 Modifizierte DH-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479\n 9.2.4 Modifizierte DH-Parameter, wie sie in Genserkins verwendet werden . . . . . . . . 479\n 9.2.5 Nummerierung der Verbindungen und Parameter . . . . . . . . . . . . . . . . . . . . 480\n 9.2.6 Wie fange ich an? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480\n@@ -1992,15 +1992,15 @@\n 9.4.4.1 HAL-Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520\n 9.4.4.2 G-/M-Code-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521\n 9.4.4.3 INI file limit settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521\n 9.4.4.4 \u00dcberlegungen zum Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523\n 9.4.5 Simulationskonfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523\n 9.4.6 Kinematische Bestimmungen des Benutzers . . . . . . . . . . . . . . . . . . . . . . . . 524\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvi\n \n 9.4.7 Warnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.4.8 Code Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.5 PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525\n 9.5.1 PID-Regler (engl. PID controller) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525\n@@ -2037,15 +2037,15 @@\n 9.6.5.8 Fehlerbehandlung: Umgang mit Abbr\u00fcchen . . . . . . . . . . . . . . . . . . . 543\n 9.6.5.9 Fehlerbehandlung: Fehlschlagen einer NGC-Prozedur mit neu zugeordnetem Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545\n 9.6.6 Umschl\u00fcsselung anderer bestehender Codes: S, M0, M1, M60 . . . . . . . . . . . . 545\n 9.6.6.1 Automatic gear selection be remapping S (set spindle speed) . . . . . . . . 545\n 9.6.6.2 Anpassen des Verhaltens von M0, M1, M60 . . . . . . . . . . . . . . . . . . . 545\n 9.6.7 Creating new G-code cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvii\n \n 9.6.8 Embedded Python konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546\n 9.6.8.1 Python plugin : INI file configuration . . . . . . . . . . . . . . . . . . . . . . . 546\n 9.6.8.2 Executing Python statements from the interpreter . . . . . . . . . . . . . . . 547\n 9.6.9 Programming Embedded Python in the RS274NGC Interpreter . . . . . . . . . . . . 547\n@@ -2081,15 +2081,15 @@\n 9.6.15.1Warum sollten Sie die Task-Ausf\u00fchrung \u00e4ndern wollen? . . . . . . . . . . . . 564\n 9.6.15.2Ein Diagramm: task, interp, iocontrol, UI (??) . . . . . . . . . . . . . . . . 564\n 9.6.16Modelle der Aufgaben (engl. task) -Ausf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . 564\n 9.6.16.1Traditionelle Ausf\u00fchrung von iocontrol/iocontrolv2 . . . . . . . . . . . . 564\n 9.6.16.2IO-Verfahren neu definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 9.6.16.3Python-Prozeduren zur Ausf\u00fchrungszeit . . . . . . . . . . . . . . . . . . . . . 564\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxviii\n \n 9.6.17Eine kurze \u00dcbersicht \u00fcber die LinuxCNC-Programmausf\u00fchrung . . . . . . . . . . . 564\n 9.6.17.1Zustand des Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 9.6.17.2Task and Interpreter interaction, Queuing and Read-Ahead . . . . . . . . . 565\n 9.6.17.3Predicting the machine position . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n@@ -2129,15 +2129,15 @@\n 9.9.4 Related HAL Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n 9.9.4.1 eoffset_per_angle.comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n 9.9.5 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579\n 9.9.6 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579\n 9.9.6.1 eoffsets.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579\n 9.9.6.2 jwp_z.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxix\n \n 9.9.6.3 dynamische_offsets.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580\n 9.9.6.4 opa.ini (eoffset_per_angle)\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580\n@@ -2191,15 +2191,15 @@\n 10.1.8Manueller Werkzeugwechsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604\n 10.1.9Python modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604\n 10.1.10\n Using AXIS in Lathe Mode\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxx\n \n 10.1.11\n Verwendung von AXIS im Modus Schaumstoffschneiden (engl. foam cutting mode) 608\n 10.1.12\n Erweiterte Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n@@ -2274,15 +2274,15 @@\n 10.2GMOCCAPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621\n 10.2.1Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621\n 10.2.2Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622\n 10.2.3How to Get GMOCCAPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622\n 10.2.4Basiseinstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623\n 10.2.4.1Die DISPLAY-Sektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxi\n \n 10.2.4.2Der TRAJ Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625\n 10.2.4.3Makro-Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626\n 10.2.4.4Embedded Tabs and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628\n 10.2.4.5User Created Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631\n@@ -2329,15 +2329,15 @@\n 10.2.11.2\n Simulierte Jog-Wheels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.2.11.3\n Einstellungen Seite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.2.11.4\n Simulierte Hardware-Taste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxii\n \n 10.2.11.5\n Benutzer-Registerkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.2.11.6\n Videos zur Werkzeugvermessung . . . . . . . . . . . . . . . . . . . . . . . . . 663\n@@ -2380,15 +2380,15 @@\n 10.5.2.2Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686\n 10.5.2.3Protokollierung (engl. logging) . . . . . . . . . . . . . . . . . . . . . . . . . . . 686\n 10.5.2.4Override-Kontrollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686\n 10.5.2.5Spindelsteuerungen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiii\n \n 10.5.2.6Jogging-Inkremente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n 10.5.2.7Jog-Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n 10.5.2.8Dialogsystem f\u00fcr Benutzermeldungen\n \n@@ -2472,15 +2472,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711\n \n 10.5.17.3\n Registerkarte \u201dOffsets\u201d\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiv\n \n 10.5.17.4\n Registerkarte \u201dWerkzeug\u201d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711\n 10.5.17.5\n Registerkarte \u201dStatus\u201d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711\n@@ -2536,15 +2536,15 @@\n 10.6.8Erstellen eines Unterprogramms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735\n 10.7TkLinuxCNC GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736\n 10.7.1Einf\u00fchrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736\n 10.7.2Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736\n 10.7.2.1Eine typische Sitzung mit TkLinuxCNC . . . . . . . . . . . . . . . . . . . . . . 736\n 10.7.3Elemente des TkLinuxCNC-Fensters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxv\n \n 10.7.3.1Die wichtigsten Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737\n 10.7.3.2Statusleiste der Offset-Anzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . 738\n 10.7.3.3Koordinatenanzeigebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738\n 10.7.3.4TkLinuxCNC Interpreter / Automatic Program Control . . . . . . . . . . . . 738\n@@ -2587,15 +2587,15 @@\n 10.8.7.2Contact Bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760\n 10.8.7.3Contact Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760\n 10.8.7.4Desktop-Starthilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761\n 10.8.7.5QtPlasmaC Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762\n 10.8.7.6INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763\n 10.8.8QtPlasmaC GUI \u00dcberblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvi\n \n 10.8.8.1Beenden von QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764\n 10.8.8.2HAUPT (engl. main)-Registerkarte (engl. tab) . . . . . . . . . . . . . . . . . . 765\n 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771\n 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771\n@@ -2653,15 +2653,15 @@\n 10.8.9.29\n Mesh Mode (Expanded Metal Cutting) . . . . . . . . . . . . . . . . . . . . . . 805\n 10.8.9.30\n Ignore Arc OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805\n 10.8.9.31\n Cut Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvii\n \n 10.8.9.32\n Run From Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807\n 10.8.9.33\n Scribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808\n@@ -2736,15 +2736,15 @@\n 10.8.15.8\n Zero Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839\n 10.8.15.9\n Tuning Void Sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839\n 10.8.15.10\n Max Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxviii\n \n 10.8.15.11\n Enable Tabs During Automated Motion . . . . . . . . . . . . . . . . . . . . . . 840\n 10.8.15.12\n Override Jog Inhibit Via Z+ Jog . . . . . . . . . . . . . . . . . . . . . . . . . . . 840\n@@ -2803,15 +2803,15 @@\n 11.1.3Koordinatensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859\n 11.1.4M2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.1.4.1Beispielprogramm mit G52-Offsets . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.2Tool Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.2.1Touch-Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.2.1.1Verwendung von G10 L1/L10/L11 . . . . . . . . . . . . . . . . . . . . . . . . . 866\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxix\n \n 11.2.2Werkzeugtabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867\n 11.2.2.1Werkzeugtabellen-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867\n 11.2.2.2Tool IO\n \n@@ -2862,15 +2862,15 @@\n 11.4.13\n Modal Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894\n 11.4.14\n Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n 11.4.15\n Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xl\n \n 11.4.16\n Probe Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897\n 11.4.17\n Protokollierung (engl. logging) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897\n@@ -2942,15 +2942,15 @@\n 11.5.21\n G30, G30.1 Go/Set Predefined Position . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.5.22\n G33 Spindle Synchronized Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.5.23\n G33.1 Rigid Tapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xli\n \n 11.5.24\n G38.n Straight Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921\n 11.5.25\n G40 Compensation Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922\n@@ -3029,15 +3029,15 @@\n G87 Back Boring Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.5.52G88 Boring Cycle, Spindle Stop, Manual Out . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.5.53G89 Boring Cycle, Dwell, Feed Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.5.54G90, G91 Distance Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n 11.5.55\n G90.1, G91.1 Arc Distance Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlii\n \n 11.5.56\n G92 Coordinate System Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n 11.5.57G92.1, G92.2 Reset G92 Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948\n 11.5.58\n@@ -3099,15 +3099,15 @@\n \n 11.7O Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963\n 11.7.1Verwendung von O-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963\n 11.7.2Nummerierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964\n 11.7.3Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964\n 11.7.4Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliii\n \n 11.7.4.1 Fanuc-Style Numbered Programs . . . . . . . . . . . . . . . . . . . . . . . . . 965\n 11.7.5 Looping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967\n 11.7.6 Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968\n 11.7.7 Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968\n@@ -3164,15 +3164,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978\n \n 11.10.4.10\n Abtastmuster (engl. scan pattern) . . . . . . . . . . . . . . . . . . . . . . . . . 978\n 11.10.4.11\n Scanrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliv\n \n 11.10.4.12\n Tiefe (engl. depth) (Einheiten) . . . . . . . . . . . . . . . . . . . . . . . . . . . 979\n 11.10.4.13\n Schrittweite (engl. step over) (Pixel) . . . . . . . . . . . . . . . . . . . . . . . 979\n@@ -3225,15 +3225,15 @@\n 12.2.2Schwebende (engl. floating) Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008\n 12.2.3Beispiel f\u00fcr Jog-Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008\n 12.2.3.1Erstellen der Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009\n 12.2.3.2Verbindungen herstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011\n 12.2.4Port-Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012\n 12.2.5GS2-Drehzahlmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlv\n \n 12.2.5.1Das Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015\n 12.2.5.2Die Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017\n 12.2.6Referenzfahrt im Eilgang Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017\n 12.3GladeVCP: Glade Virtual Control Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019\n@@ -3286,15 +3286,15 @@\n 12.3.6.16\n Bars (engl. f\u00fcr Balken) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044\n 12.3.6.17\n Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045\n 12.3.6.18\n HAL_Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvi\n \n 12.3.6.19\n Gremlin tool path preview for NGC files . . . . . . . . . . . . . . . . . . . . . 1047\n 12.3.6.20\n HAL_Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049\n@@ -3354,15 +3354,15 @@\n 12.3.8.13\n Manuelle Bearbeitung von INI-Dateien (.ini) . . . . . . . . . . . . . . . . . . . 1078\n 12.3.8.14\n Hinzuf\u00fcgen von HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078\n 12.3.8.15\n Hinzuf\u00fcgen von Timern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvii\n \n 12.3.8.16\n HAL-Widget-Eigenschaften programmatisch einstellen . . . . . . . . . . . . 1079\n 12.3.8.17\n Value-changed callback with hal_glib . . . . . . . . . . . . . . . . . . . . . . . 1079\n@@ -3408,15 +3408,15 @@\n 12.5.5.2IMPORT Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.5.5.3Abschnitt INSTANTIATE BIBRARIES . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.5.5.4HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.5.5.5INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115\n 12.5.5.6Abschnitt zu BESONDEREN FUNKTIONEN . . . . . . . . . . . . . . . . . . . 1116\n Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlviii\n \n 12.5.5.7STATUS CALLBACKS Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.5.5.8CALLBACKS FROM FORM Abschnitt . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.5.5.9GENERAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.5.5.10\n@@ -3460,15 +3460,15 @@\n \n . . . . . . . . . . . . . . . . . 1138\n \n 12.7QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139\n 12.7.1Nur HAL-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140\n 12.7.1.1XEmbed - Widget zum Einbetten von Programmen . . . . . . . . . . . . . . . 1140\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlix\n \n 12.7.1.2Slider - HAL-Pin-Wert-Anpassungs-Widget . . . . . . . . . . . . . . . . . . . 1140\n 12.7.1.3LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140\n 12.7.1.4CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141\n 12.7.1.5RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141\n@@ -3534,15 +3534,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . 1174\n \n 12.7.2.21\n MDILine - MDI-Befehlszeileneingabe-Widget . . . . . . . . . . . . . . . . . . . 1176\n 12.7.2.22\n MDIHistory - MDI-Befehlsverlaufs-Widget . . . . . . . . . . . . . . . . . . . . 1177\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n l\n \n 12.7.2.23\n MDITouchy - Touchscreen-MDI-Eingabe-Widget . . . . . . . . . . . . . . . . . 1178\n 12.7.2.24\n OriginOffsetView - Ursprungsansicht und Einstellungs-Widget . . . . . . 1180\n@@ -3601,15 +3601,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203\n \n 12.7.6.3Facing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203\n 12.7.6.4Loch-Kreis (engl. hole circle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203\n 12.7.6.5Qt NGCGUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204\n 12.7.6.6Qt PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n li\n \n 12.7.6.7Qt Vismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n 12.8QtVCP Libraries modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205\n 12.8.1Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206\n 12.8.1.1Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206\n@@ -3653,15 +3653,15 @@\n 12.8.12.2\n Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222\n 12.8.12.3\n Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222\n 12.8.13\n Virtuelle Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lii\n \n 12.8.14\n Toolbar Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223\n 12.8.14.1\n Aktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223\n@@ -3727,15 +3727,15 @@\n 12.10.1.4\n Aufr\u00e4um-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 12.10.2\n Custom HAL Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 12.10.3\n Benutzerdefinierte Controller-Widgets mit STATUS . . . . . . . . . . . . . . . . . . . . 1240\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liii\n \n 12.10.3.1\n In The Imports Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241\n 12.10.3.2\n Im Abschnitt Bibliotheken instanziieren . . . . . . . . . . . . . . . . . . . . . 1242\n@@ -3816,15 +3816,15 @@\n 12.12.5\n Idiosyncrasies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1270\n 12.12.5.1\n Error Code Collecting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1270\n 12.12.5.2\n Jog Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liv\n \n 12.12.5.3\n Keybinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271\n 12.12.5.4\n Preference File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271\n@@ -3873,15 +3873,15 @@\n 13.4.2Beispiel f\u00fcr einen GStat-Code\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300\n \n 13.4.2.1Codemuster f\u00fcr HAL-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 1300\n 13.4.2.2GladeVCP Python-Erweiterung Code-Muster . . . . . . . . . . . . . . . . . . 1300\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lv\n \n 13.4.2.3QtVCP Python-Erweiterungscode-Muster\n \n . . . . . . . . . . . . . . . . . . . . 1301\n \n@@ -3927,23 +3927,23 @@\n \n 1330\n \n 17.1Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1330\n 17.1.1Namens\u00e4nderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331\n 17.1.2Zus\u00e4tzliche Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1 / 1331\n \n Teil I\n \n Erste Schritte & Konfiguration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 2 / 1331\n \n Kapitel 1\n \n Erste Schritte mit LinuxCNC\n 1.1 About LinuxCNC\n@@ -3965,15 +3965,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3 / 1331\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@@ -4002,15 +4002,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 / 1331\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@@ -4043,15 +4043,15 @@\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 LinuxCNC 2.8 or later from the Live CD expects a 64-bit capable system.\n \u2022 512 MB of RAM, 4 GB with GUI to avoid surprises\n \u2022 No hard disk for Live CD, 8 GB or more for permanent installation\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5 / 1331\n \n \u2022 Graphics card capable of at least 1024x768 resolution, which is not using the NVidia or ATI fglrx\n proprietary drivers. Modern onboard graphic chipsets seem to generally be OK.\n \u2022 Internet connection (not strictly needed, but very useful for updates and for communicating with\n the LinuxCNC community)\n@@ -4086,15 +4086,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6 / 1331\n \n 1.2.2.4 RTAI mit linuxcnc-uspace-Paket\n It is also possible to run LinuxCNC with RTAI in user-space mode. As with Xenomai you will need to\n compile from source to do this.\n \n@@ -4126,15 +4126,15 @@\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 1.3.1 Das Festplattenabbild (engl. kurz image) herunterladen\n This section describes some methods for downloading the Live/Install image.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 7 / 1331\n \n 1.3.1.1 Normales Herunterladen\n Software for LinuxCNC to download is presented on the project\u2019s Downloads page. Most users will aim\n for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n@@ -4171,15 +4171,15 @@\n md5sum: 4547e8a72433efb033f0a5cf166a5cd2\n sha256sum: ff3ba9b8dfb93baf1e2232746655f8521a606bc0fab91bffc04ba74cc3be6bf0\n \n \u00dcberpr\u00fcfen Sie md5sum auf Windows oder Mac Windows und Mac OS X werden nicht mit einem\n md5sum-Programm ausgeliefert, aber es gibt Alternativen. Weitere Informationen finden Sie unter:\n How To MD5SUM\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8 / 1331\n \n 1.3.2 Schreiben des Abbilds auf ein bootf\u00e4higes Ger\u00e4t\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n@@ -4211,15 +4211,15 @@\n \n 4. Transfer the data with dd, as for Linux above. Note that the disk name has an added \u201dr\u201d at the\n begining\n sudo dd if=/linuxcnc_2.9.2-amd64.hybrid.iso of=/dev/rdiskN bs=1m\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9 / 1331\n \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 2. Suchen Sie das heruntergeladene Bild im Dateibrowser.\n@@ -4251,15 +4251,15 @@\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 Um festzustellen, ob Ihr Computer f\u00fcr die Erzeugung von Software-Schrittimpulsen geeignet ist, f\u00fchren Sie den Latenztest wie folgt aus: here.\n At the time of writing the Live Image is only available with the preempt-rt kernel and a matching\n LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental\n version available using the RTAI realtime kernel which will often give better latency.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 10 / 1331\n \n 1.3.4 LinuxCNC installieren\n To install LinuxCNC from the Live CD select Install (Graphical) at bootup.\n \n 1.3.5 Updates to LinuxCNC\n@@ -4347,15 +4347,15 @@\n Maschinensteuerung\n und -simulation\n Maschinensteuerung\n und -simulation\n machine control\n simulation ONLY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11 / 1331\n \n Preempt-RT-Kernel The Preempt-rt kernels are available for Debian from the regular debian.org\n archive. The package is called linux-image-rt-*. Simply install the package in the same way as any\n other package from the Synaptic Package manager or with apt-get at the command-line.\n RTAI-Kernel Die RTAI-Kernel stehen im linuxcnc.org-Debian-Archiv zum Download bereit. Die aptQuelle ist:\n@@ -4386,15 +4386,15 @@\n 1. Install the Preempt-RT kernel and modules\n sudo apt-get install linux-image-rt-amd64\n \n 2. Re-boot, and select the Linux 6.1.0-10-rt-amd64 kernel. The exact kernel version might be different, look for the \u201d-rt\u201d suffix. This might be hidden in the \u201dAdvanced options for Debian Bookworm\u201d sub-menu in Grub. When you log in, verify that \u0300PREEMPT RT \u0300is reported by the following\n command.\n uname -v\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12 / 1331\n \n 3. \u00d6ffnen Sie Men\u00fc Anwendungen > System > Synaptic Package Manager, suchen Sie nach linuximage und klicken Sie mit der rechten Maustaste auf das urspr\u00fcngliche Nicht-rt und w\u00e4hlen\n Sie \u201dZur vollst\u00e4ndigen Entfernung markieren\u201d. Neu starten. Damit wird das System gezwungen,\n vom RT-Kernel zu booten. Wenn Sie es vorziehen, beide Kernel beizubehalten, m\u00fcssen die anderen Kernel nicht gel\u00f6scht werden, aber es sind \u00c4nderungen an der Grub-Boot-Konfiguration\n erforderlich, die den Rahmen dieses Dokuments sprengen.\n@@ -4424,15 +4424,15 @@\n \n 1.4 Running 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 CNC aus.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13 / 1331\n \n 1.4.2 Configuration Launcher\n Beim Starten von LinuxCNC (aus dem CNC-Men\u00fc oder von der Kommandozeile ohne Angabe einer\n INI-Datei) startet der Dialog Kofigurations-Auswahl.\n Im Dialogfeld \u201dKonfigurationsauswahl\u201d kann der Benutzer eine seiner vorhandenen Konfigurationen\n@@ -4464,15 +4464,15 @@\n \u2022 tklinuxcnc - Keyboard and Mouse GUI (no longer maintained)\n \u2022 touchy - Touchscreen-GUI\n \u2022 woodpecker - Touch Screen GUI A GUI configuration directory may contain subdirectories with\n configurations that illustrate special situations or the embedding of other applications.\n Die by_interface-Konfigurationen sind um g\u00e4ngige, unterst\u00fctzte Schnittstellen herum organisiert:\n \u2022 allgemeine Mechatronik\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 14 / 1331\n \n \u2022 mesa\n \u2022 parport\n \u2022 pico\n \u2022 pluto\n@@ -4504,15 +4504,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 15 / 1331\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@@ -4527,15 +4527,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 16 / 1331\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@@ -4570,15 +4570,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 17 / 1331\n \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 mehr von LinuxCNC unterst\u00fctzt wird (es war EOL im Jahr 2013).\n To upgrade major versions like 2.8 to 2.9 when you have a network connection at the machine you need\n@@ -4618,15 +4618,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 18 / 1331\n \n Tabelle 1.2: Tabular overview on variants of the Operating\n System and the corresponding configuration of the repository. The configuration can be performed in the GUI of\n the package manager or in the file /etc/apt/sources.list.\n OS / Realtime Version\n@@ -4639,29 +4639,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 19 / 1331\n \n Abbildung 1.2: Figure with a screenshot of the repository configuration of the synaptic package manager.\n \u2022 Klicken Sie im Fenster \u201dSoftwarequellen\u201d auf \u201dQuelle hinzuf\u00fcgen\u201d und dann auf \u201dSchlie\u00dfen\u201d. Wenn\n ein Fenster angezeigt wird, das Sie dar\u00fcber informiert, dass die Informationen \u00fcber die verf\u00fcgbare\n Software veraltet sind, klicken Sie auf die Schaltfl\u00e4che \u201dNeu laden\u201d.\n 1.5.1.2 Upgrade auf die neue Version\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 uses the Synaptic Package Manager.\n \u2022 \u00d6ffnen Sie Synaptic gem\u00e4\u00df den Anweisungen in Festlegen der apt sources oben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 20 / 1331\n \n \u2022 Klicken Sie auf die Schaltfl\u00e4che \u201dNeu laden\u201d.\n \u2022 Verwenden Sie die Suchfunktion, um nach linuxcnc zu suchen.\n \u2022 Das Paket hei\u00dft \u201elinuxcnc\u201c f\u00fcr RTAI-Kernel und \u201elinuxcnc-uspace\u201c f\u00fcr preempt-rt.\n \u2022 Click the check box to mark the new linuxcnc and linuxcnc-doc-* packages for upgrade. The package\n@@ -4697,15 +4697,15 @@\n sudo dpkg -i linuxcnc_2.9.2.deb\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 21 / 1331\n \n A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting.\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 Since 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@@ -4736,15 +4736,15 @@\n 1.5.5.1 Non-Realtime\n \n mdro mqtt-publisher pi500_vfd pmx485-test qtplasmac-cfg2prefs qtplasmac-materials qtplasmac-plasmac2q\n qtplasmac-setup sim-torch svd-ps_vfd\n 1.5.5.2 Echtzeit\n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_sums tof ton\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 22 / 1331\n \n 1.5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n@@ -4771,15 +4771,15 @@\n Wenn Sie LinuxCNC mit der Ubuntu LiveCD installieren, ist die Voreinstellung, dass Sie sich jedes Mal\n anmelden m\u00fcssen, wenn Sie den Computer einschalten. Um die automatische Anmeldung zu aktivieren, gehen Sie zu System > Administration > Login Window. Wenn es sich um eine Neuinstallation\n handelt, kann es eine oder drei Sekunden dauern, bis das Anmeldefenster erscheint. Sie ben\u00f6tigen Ihr\n Passwort, das Sie bei der Installation verwendet haben, um Zugang zum Fenster \u201dEinstellungen f\u00fcr\n das Anmeldefenster\u201d zu erhalten. Aktivieren Sie auf der Registerkarte Sicherheit das Kontrollk\u00e4stchen Automatische Anmeldung aktivieren und w\u00e4hlen Sie einen Benutzernamen aus der Liste (das\n w\u00e4ren Sie).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 23 / 1331\n \n 1.6.2 Automatisches Starten\n Um LinuxCNC automatisch mit Ihrer Konfiguration nach dem Einschalten des Computers starten zu\n lassen, gehen Sie zu System > Preferences > Sessions > Startup Applications, klicken Sie auf Add.\n Navigieren Sie zu Ihrer Konfiguration und w\u00e4hlen Sie die .ini-Datei aus. Wenn sich der Dateiauswahldialog schlie\u00dft, f\u00fcgen Sie linuxcnc und ein Leerzeichen vor dem Pfad zu Ihrer .ini-Datei hinzu.\n@@ -4817,15 +4817,15 @@\n Wenn Sie die Ausgabe von lsmod in eine Textdatei in einem Terminalfenster senden wollen, geben Sie\n ein:\n lsmod > mymod.txt\n \n Die resultierende Textdatei befindet sich im Home-Verzeichnis, wenn Sie beim \u00d6ffnen des TerminalFensters das Verzeichnis nicht gewechselt haben, und tr\u00e4gt den Namen mymod.txt oder den von Ihnen\n gew\u00e4hlten Namen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 24 / 1331\n \n 1.6.6 Bearbeiten einer root-Datei\n Wenn Sie den Dateibrowser \u00f6ffnen und sehen, dass der Eigent\u00fcmer der Datei root ist, m\u00fcssen Sie zus\u00e4tzliche Schritte unternehmen, um diese Datei zu bearbeiten. Die Bearbeitung einiger root-Dateien\n kann zu schlechten Ergebnissen f\u00fchren. Seien Sie vorsichtig, wenn Sie root-Dateien bearbeiten. Im\n Allgemeinen k\u00f6nnen Sie die meisten root-Dateien \u00f6ffnen und anzeigen, aber sie bleiben schreibgesch\u00fctzt.\n@@ -4855,15 +4855,15 @@\n Um das Arbeitsverzeichnis in das eine Ebene h\u00f6her liegende Verzeichnis, d.h. das \u00fcbergeordnete\n Verzeichnis, zu wechseln, geben Sie im Terminalfenster ein:\n cd ..\n \n Um im Terminalfenster eine Ebene h\u00f6her zu gehen, geben Sie ein:\n cd ../..\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 25 / 1331\n \n Um direkt in Ihr Heimatverzeichnis zu wechseln, geben Sie im Terminalfenster den Befehl cd ohne\n Argumente ein:\n cd\n \n@@ -4902,15 +4902,15 @@\n \n Dies findet alle Dateien, die den zu suchenden Text enthalten, im aktuellen Verzeichnis und allen Unterverzeichnissen darunter, wobei die Gro\u00df- und Kleinschreibung ignoriert wird. Die Option -i steht\n f\u00fcr Ignorieren der Gro\u00df- und Kleinschreibung und die Option -r f\u00fcr Rekursiv (schlie\u00dft alle Unterverzeichnisse in die Suche ein). Die Option -l gibt eine Liste der Dateinamen zur\u00fcck, wenn Sie die Option\n -l auslassen, erhalten Sie auch den Text, in dem jedes Vorkommen des zu suchenden Textes gefunden\n wird. Der * ist ein Platzhalter f\u00fcr die Suche in allen Dateien. Weitere Informationen finden Sie in der\n Manpage zu grep.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26 / 1331\n \n 1.6.7.6 Diagnosemeldungen\n Um die Diagnosemeldungen anzuzeigen, verwenden Sie \u201ddmesg\u201d im Befehlsfenster. Um die Diagnosemeldungen in einer Datei zu speichern, verwenden Sie den Umleitungsoperator >, etwa so:\n dmesg > bootmsg.txt\n \n@@ -4941,29 +4941,29 @@\n lspci -v\n \n 1.6.9.2 Monitor-Aufl\u00f6sung\n W\u00e4hrend der Installation versucht Ubuntu, die Monitoreinstellungen zu erkennen. Wenn dies fehlschl\u00e4gt, wird ein allgemeiner Monitor mit einer maximalen Aufl\u00f6sung von 800x600 verwendet.\n Eine Anleitung zur Behebung dieses Problems finden Sie hier:\n https://help.ubuntu.com/community/FixVideoResolutionHowto\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 27 / 1331\n \n 1.6.10 Pfade\n Relative Pfade Relative Pfade basieren auf dem Startverzeichnis, d.h. das Verzeichnis mit der INIDatei. Die Verwendung relativer Pfade kann das Verschieben von Konfigurationen erleichtern, erfordert aber ein gutes Verst\u00e4ndnis der Linux-Pfadangaben.\n ./f0 ist dasselbe wie f0, z. B. eine Datei namens f0 im Startverzeichnis\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 28 / 1331\n \n Kapitel 2\n \n Allgemeine Benutzerinformationen\n 2.1 User Foreword\n@@ -4993,15 +4993,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 29 / 1331\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@@ -5039,15 +5039,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 30 / 1331\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@@ -5069,15 +5069,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 31 / 1331\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@@ -5104,85 +5104,85 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 32 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n 33 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 34 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 35 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 36 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 37 / 1331\n \n Abbildung 2.7: TkLinuxCNC graphical interface\n \n QtDragon\n QtDragon, a touch screen GUI based on QtVCP using the PyQt5 library. It comes in two versions\n QtDragon and QtDragon_hd. They are very similar in features but QtDragon_hd is made for larger\n monitors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 38 / 1331\n \n Abbildung 2.8: QtDragon, a touch screen GUI based on QtVCP\n \n QtPlasmaC\n QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP using the PyQt5 library. It comes\n in three aspect ratios, 16:9, 4:3, and 9:16.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 39 / 1331\n \n Abbildung 2.9: QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP\n \n 2.2.4 Benutzerschnittstellen\n These User interfaces are a way to interact with LinuxCNC outside of the graphical user interfaces.\n@@ -5196,41 +5196,41 @@\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 PyVCP\n PyVCP, a Python-based virtual control panel that can be added to the AXIS GUI. PyVCP only\n utilises virtual signals contained within the Hardware Abstraction Layer, such as the spindle-atspeed indicator or the Emergency Stop output signal, and has a simple no-frills appearance. This\n makes it an excellent choice if the user wants to add a Virtual Control Panel with minimal fuss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 40 / 1331\n \n Abbildung 2.10: PyVCP Example Embedded Into AXIS GUI\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 41 / 1331\n \n Abbildung 2.11: GladeVCP Example Embedded Into AXIS GUI\n \n QtVCP\n QtVCP, a PyQt5-based virtual control panel that can be added to most GUIs or run as a standalone\n panel. QtVCP has the advantage over PyVCP in that it is not limited to the display or control of\n HAL virtual signals, but can include other external interfaces outside LinuxCNC such as window\n or network events by extending with python code. QtVCP is also more flexible in how it may be\n configured to appear on the GUI with many special widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 42 / 1331\n \n Abbildung 2.12: QtVCP Example Embedded Into QtDragon GUI\n \n 2.2.6 Sprachen\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -5246,15 +5246,15 @@\n lessons learned. A beautiful finish, tight tolerances and caution during the work are evidence of lessons\n learned. No machine nor program can replace human experience.\n Now that you start working with the LinuxCNC software, you have to put yourself in the shoes of an\n operator. You must be in the role of someone in charge of a machine. It\u2019s a machine that will wait\n for your commands and then execute the orders that you will give it. In these pages, we will give the\n explanations which will help you to become a good CNC operator with LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 43 / 1331\n \n 2.2.8 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@@ -5296,15 +5296,15 @@\n in your G-code can cause your machine to slow down and speed up for the longer moves if the naive\n cam detector is not employed with G64 Pn.\n The basic acceleration and deceleration described above is not complex and there is no compromise\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 44 / 1331\n \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 \u2022 Es kann genau an den Koordinaten der Kurve bis zum Stillstand abbremsen und dann in die neue\n@@ -5344,15 +5344,15 @@\n that a specification of G64 P0 has the same effect as G64 alone (above), which is necessary for\n backward compatibility for old G-code programs. See the G64 section of the G-code chapter.\n Blending without tolerance\n The controlled point will touch each specified movement at at least one point. The machine will\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 45 / 1331\n \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@@ -5387,15 +5387,15 @@\n the feed rate in units per second, the acceleration time is ta = F/A and the acceleration distance is\n da = F*ta /2. The deceleration time and distance are the same, making the critical distance d = da +\n dd = 2 * da = F2 /A.\n For example, for a feed rate of 1 inch per second and an acceleration of 10 inches/sec2 , the critical\n distance is 12 /10 = 1/10 = 0.1 inches.\n For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 46 / 1331\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@@ -5427,15 +5427,15 @@\n There are several options when doing manual tool changes. See the [EMCIO] section for information\n on configuration of these options. Also see the G28 and G30 section of the G-code chapter.\n \n 2.3.5 Koordinatensysteme\n The Coordinate Systems can be confusing at first. Before running a CNC machine you must understand the basics of the coordinate systems used by LinuxCNC. In depth information on the LinuxCNC\n Coordinate Systems is in the Coordinate System section of this manual.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 47 / 1331\n \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@@ -5467,22 +5467,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 48 / 1331\n \n Abbildung 2.14: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 2.15: 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] [<INI-file>]\n@@ -5497,15 +5497,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 INI file\n \n 49 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 50 / 1331\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -r: Disable redirection of stdout and stderr to ~/linuxcnc_print.txt and\n@@ -5531,15 +5531,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 51 / 1331\n \n 2.5 CNC Machine Overview\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@@ -5548,15 +5548,15 @@\n Interpreter interagieren, wie z. B. die Jog Buttons/ Tipptasten, werden hier nicht beschrieben, auch\n wenn sie die Steuerung beeinflussen.\n 2.5.1.1 Axes\n Jede CNC-Maschine hat eine oder mehrere Achsen. Verschiedene Arten von CNC-Maschinen haben\n unterschiedliche Kombinationen. Eine \u201d4-Achsen-Fr\u00e4smaschine\u201d kann zum Beispiel XYZA- oder XYZBAchsen haben. Eine Drehmaschine hat normalerweise XZ-Achsen. Eine Schaumstoffschneidemaschine kann XYUV-Achsen haben. In LinuxCNC, der Fall eines XYYZ \u201dGantry\u201d-Maschine mit zwei Motoren\n f\u00fcr eine Achse ist besser durch Kinematik als durch eine zweite lineare Achse behandelt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 52 / 1331\n \n Anmerkung\n Wenn die Bewegung der mechanischen Komponenten nicht unabh\u00e4ngig ist, wie z. B. bei HexapodMaschinen, k\u00f6nnen die RS274/NGC-Sprache und die kanonischen Bearbeitungsfunktionen immer\n noch verwendet werden, solange die unteren Steuerungsebenen wissen, wie die tats\u00e4chlichen Mechanismen zu steuern sind, um die gleiche relative Bewegung von Werkzeug und Werkst\u00fcck zu erzeugen, wie sie von unabh\u00e4ngigen Achsen erzeugt w\u00fcrde. Dies wird als \u201dKinematik\u201d bezeichnet.\n \n@@ -5583,15 +5583,15 @@\n Bearbeitung einen bestimmten Prozentsatz der programmierten Geschwindigkeit betr\u00e4gt.\n 2.5.1.5 Schalter zum L\u00f6schen von Bl\u00f6cken\n Eine CNC-Maschine kann einen Schalter zum L\u00f6schen von Bl\u00f6cken haben. Siehe den Abschnitt BlockL\u00f6sch-Schalter (engl. block delete switch).\n 2.5.1.6 Optionaler Programm-Stopp-Schalter\n Eine CNC-Maschine kann mit einem optionalen Programmstoppschalter ausgestattet sein. Siehe den\n Abschnitt Optionaler Programmstopp.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 53 / 1331\n \n 2.5.2 Steuerungs- und Datenkomponenten\n 2.5.2.1 Lineare Achsen\n Die X-, Y- und Z-Achse bilden ein standardm\u00e4\u00dfiges rechtsh\u00e4ndiges Koordinatensystem mit orthogonalen linearen Achsen. Die Positionen der drei linearen Bewegungsmechanismen werden durch Koordinaten auf diesen Achsen ausgedr\u00fcckt.\n Die Achsen U, V und W bilden ebenfalls ein standardm\u00e4\u00dfiges rechtsh\u00e4ndiges Koordinatensystem. X\n@@ -5622,15 +5622,15 @@\n Um ein Werkzeug entlang einer bestimmten Bahn zu bewegen, muss ein Bearbeitungszentrum h\u00e4ufig\n die Bewegung mehrerer Achsen koordinieren. Wir verwenden den Begriff \u201dkoordinierte lineare Bewegung\u201d, um die Situation zu beschreiben, in der sich nominell jede Achse mit konstanter Geschwindigkeit bewegt und sich alle Achsen gleichzeitig von ihren Startpositionen zu ihren Endpositionen\n bewegen. Wenn sich nur die X-, Y- und Z-Achse (oder eine oder zwei von ihnen) bewegen, f\u00fchrt dies zu\n einer geradlinigen Bewegung, daher das Wort \u201dlinear\u201d in dem Begriff. Bei tats\u00e4chlichen Bewegungen\n ist es oft nicht m\u00f6glich, eine konstante Geschwindigkeit beizubehalten, da am Anfang und/oder am\n Ende der Bewegung eine Beschleunigung oder Verz\u00f6gerung erforderlich ist. Es ist jedoch m\u00f6glich,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 54 / 1331\n \n die Achsen so zu steuern, dass jede Achse zu jedem Zeitpunkt den gleichen Teil ihrer erforderlichen\n Bewegung ausgef\u00fchrt hat wie die anderen Achsen. Dadurch wird das Werkzeug auf demselben Weg\n bewegt, und wir nennen diese Art der Bewegung auch koordinierte lineare Bewegung.\n Koordinierte lineare Bewegungen k\u00f6nnen entweder mit der vorherrschenden Vorschubgeschwindigkeit oder mit der Verfahrgeschwindigkeit ausgef\u00fchrt werden oder sie k\u00f6nnen mit der Spindelrotation synchronisiert werden. Wenn die gew\u00fcnschte Geschwindigkeit aufgrund physikalischer Grenzen\n@@ -5657,15 +5657,15 @@\n Die Einheiten f\u00fcr Abst\u00e4nde entlang der X-, Y- und Z-Achse k\u00f6nnen in Millimetern oder Zoll gemessen\n werden. Die Einheiten f\u00fcr alle anderen an der Maschinensteuerung beteiligten Gr\u00f6\u00dfen k\u00f6nnen nicht\n ge\u00e4ndert werden. Verschiedene Gr\u00f6\u00dfen verwenden unterschiedliche spezifische Einheiten. Die Spindeldrehzahl wird in Umdrehungen pro Minute gemessen. Die Positionen der Rotationsachsen werden\n in Grad gemessen. Vorschubgeschwindigkeiten werden in aktuellen L\u00e4ngeneinheiten pro Minute oder\n Grad pro Minute oder L\u00e4ngeneinheiten pro Spindelumdrehung ausgedr\u00fcckt, wie in Abschnitt G93 G94\n G95 beschrieben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 55 / 1331\n \n 2.5.2.9 Aktuelle Position\n Der kontrollierte Punkt befindet sich immer an einer Stelle, die als \u201daktuelle Position\u201d bezeichnet wird,\n und der Controller wei\u00df immer, wo sich diese befindet. Die dargestellte aktuelle Position muss angepasst werden, selbst wenn keine Achsenbewegung stattfindet, wenn eines von mehreren Ereignissen\n eintritt:\n@@ -5696,15 +5696,15 @@\n verlangsamt oder stoppt bei Bedarf an scharfen Ecken des Weges.\n kontinuierlicher Modus (continuous mode)\n Im kontinuierlichen Modus k\u00f6nnen scharfe Ecken der Bahn leicht abgerundet werden, damit die\n Vorschubgeschwindigkeit beibehalten werden kann (aber ohne Verletzung der Toleranzgrenzen,\n falls angegeben).\n Siehe Abschnitte G61 und G64.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 56 / 1331\n \n 2.5.3 Interpreter-Interaktion mit Schaltern\n Der Interpreter interagiert mit mehreren Schaltern. In diesem Abschnitt werden die Interaktionen\n genauer beschrieben. In keinem Fall wei\u00df der Interpreter, wie die Einstellung eines dieser Schalter\n ist.\n@@ -5738,15 +5738,15 @@\n TOOL_TABLE = acme_300.tbl\n \n oder:\n TOOL_TABLE = EMC-AXIS-SIM.tbl\n \n Weitere Informationen zu den Besonderheiten des Formats der Werkzeugtabelle finden Sie im Abschnitt Werkzeugtabellen-Format.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 57 / 1331\n \n 2.5.5 Parameter\n In der RS274/NGC-Sprachansicht verwaltet ein Bearbeitungszentrum eine Reihe von numerischen\n Parametern, die durch eine Systemdefinition (RS274NGC_MAX_PARAMETERS) festgelegt sind. Viele\n von ihnen haben spezifische Verwendungen, insbesondere bei der Definition von Koordinatensystemen. Die Anzahl der numerischen Parameter kann sich erh\u00f6hen, wenn die Entwicklung die Unterst\u00fctzung f\u00fcr neue Parameter hinzuf\u00fcgt. Das Parameter-Array bleibt \u00fcber die Zeit erhalten, auch wenn das\n@@ -5790,15 +5790,15 @@\n (engl. home)\n \n Siehe den Abschnitt zu Parametern f\u00fcr weitere Informationen.\n \n 2.6 Lathe User Information\n Dieses Kapitel enth\u00e4lt Informationen speziell f\u00fcr Drehmaschinen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 58 / 1331\n \n 2.6.1 Drehbank-Modus\n Wenn Ihre CNC-Maschine eine Drehmaschine ist, gibt es einige spezifische \u00c4nderungen, die Sie wahrscheinlich an Ihrer INI-Datei vornehmen m\u00f6chten, um die besten Ergebnisse von LinuxCNC zu erzielen.\n Wenn Sie das AXIS-Display verwenden, m\u00fcssen Sie daf\u00fcr sorgen, dass AXIS Ihre Drehwerkzeuge\n richtig anzeigt. Siehe den Abschnitt INI Konfiguration f\u00fcr weitere Details.\n@@ -5829,25 +5829,25 @@\n of the tool table format, see the Tool Table Section.\n \n 2.6.3 Lathe Tool Orientation\n Die folgende Abbildung zeigt die Ausrichtungen der Drehmei\u00dfel mit dem Winkel der Mittellinie jeder\n Ausrichtung und Informationen zu VORDERWINKEL und HINTERWINKEL.\n FRONTANGLE und BACKANGLE sind im Uhrzeigersinn beginnend an einer Linie parallel zu Z+.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 59 / 1331\n \n Abbildung 2.16: 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 Werkzeugpositionen 5, 6, 7 & 8Werkzeugpositionen 567 & 8 67 & 8 7 & 8\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 60 / 1331\n \n 2.6.4 Werkzeug Touch Off\n When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off\n window. If you have a tool turret you normally have Touch off to fixture selected when setting up your\n turret. When setting the material Z zero you have Touch off to material selected. For more information\n@@ -5873,15 +5873,15 @@\n Hinweis: Wenn Sie sich im Radiusmodus befinden, m\u00fcssen Sie den Radius und nicht den Durchmesser\n eingeben.\n 2.6.4.2 Z Touch-Off\n Die Vers\u00e4tze der Z-Achse k\u00f6nnen anfangs etwas verwirrend sein, da der Z-Versatz aus zwei Elementen\n besteht. Es gibt den Werkzeugtischversatz und den Maschinenkoordinatenversatz. Zun\u00e4chst werden\n wir uns mit den Vers\u00e4tzen auf dem Werkzeugtisch befassen. Eine Methode besteht darin, einen festen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 61 / 1331\n \n Punkt auf Ihrer Drehmaschine zu verwenden und den Z-Versatz f\u00fcr alle Werkzeuge von diesem Punkt\n aus einzustellen. Manche verwenden die Spindelnase oder die Futterfl\u00e4che. Auf diese Weise k\u00f6nnen\n Sie zu einem neuen Werkzeug wechseln und dessen Z-Versatz einstellen, ohne alle Werkzeuge neu\n einstellen zu m\u00fcssen.\n@@ -5913,15 +5913,15 @@\n \n 2.6.5 Spindelsynchronisierte Bewegung\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 Gewinde-Drehen (engl. threading) Der Gewindeschneidzyklus G76 wird sowohl f\u00fcr Innen- als auch\n f\u00fcr Au\u00dfengewinde verwendet. Weitere Informationen finden Sie im Abschnitt G76.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 62 / 1331\n \n Konstante Oberfl\u00e4chengeschwindigkeit CSS or Constant Surface Speed uses the machine X origin\n modified by the tool X offset to compute the spindle speed in RPM. CSS will track changes in tool\n offsets. The X machine origin should be when the reference tool (the one with zero offset) is at the\n center of rotation. For more information see the G96 Section.\n@@ -5956,15 +5956,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 63 / 1331\n \n Abbildung 2.17: Kontrollpunkt\n \n 2.6.7.2 Schneidwinkel ohne Fr\u00e4ser Compensation\n Now imagine we program a ramp without cutter comp. The programmed path is shown in the following\n@@ -5972,29 +5972,29 @@\n same as long as we are moving in an X or Z direction only.\n \n Abbildung 2.18: Rampe Eingang\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 64 / 1331\n \n Abbildung 2.19: 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 2.6.7.3 Schneiden eines 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 Abbildung 2.20: Turning Cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 65 / 1331\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@@ -6002,15 +6002,15 @@\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 Abbildung 2.22: Radiusschnitt\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 66 / 1331\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 Abbildung 2.23: Face Cut\n@@ -6031,15 +6031,15 @@\n processes use this plasma to transfer an electrical arc to the workpiece. The metal to be cut or removed is melted by the heat of the arc and then blown away. While the goal of plasma arc cutting is\n the separation of the material, plasma arc gouging is used to remove metals to a controlled depth and\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 67 / 1331\n \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@@ -6054,15 +6054,15 @@\n with the material is required), they are unsuited for CNC applications..\n 2.7.2.1 Hochfrequenzstart\n This start type is widely employed, and has been around the longest. Although it is older technology, it\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 68 / 1331\n \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 2.7.2.2 Blowback Start\n@@ -6087,15 +6087,15 @@\n unknown state of the sheet makes it impossible to generate G-code that will cater for these variances\n in the material.\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 Torch to work distance can impact edge bevel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 69 / 1331\n \n \u2022 Negative cut angle: torch too low, increase torch to work distance.\n \u2022 Positive cut angle: torch too high, decrease torch to work distance.\n Anmerkung\n Eine leichte Abweichung der Schnittwinkel kann normal sein, solange sie innerhalb der Toleranz liegt.\n@@ -6119,15 +6119,15 @@\n choose a suitable plasma machine. Failure to do this is likely to cause hours and hours of fruitless\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 70 / 1331\n \n \u2022 Ein Maschinenbrenner wird bevorzugt, aber viele haben auch Handbrenner verwendet.\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@@ -6165,15 +6165,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 71 / 1331\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@@ -6213,15 +6213,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 72 / 1331\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@@ -6252,15 +6252,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 73 / 1331\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@@ -6272,15 +6272,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 74 / 1331\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@@ -6315,15 +6315,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 75 / 1331\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@@ -6353,15 +6353,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 76 / 1331\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@@ -6399,15 +6399,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 77 / 1331\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@@ -6437,15 +6437,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<nn> so it can be\n controlled in G-code by M62/M63/M64/M65.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 78 / 1331\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@@ -6481,15 +6481,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 79 / 1331\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@@ -6534,15 +6534,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_<letter>]\n Section of the INI file document and External Axis Offsets in the LinuxCNC documentation.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 80 / 1331\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@@ -6584,15 +6584,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 81 / 1331\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@@ -6625,15 +6625,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 82 / 1331\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@@ -6680,15 +6680,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 83 / 1331\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@@ -6727,15 +6727,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 non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 84 / 1331\n \n The combination of a slow baud rate used by Hypertherm and the non-realtime 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@@ -6755,15 +6755,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 85 / 1331\n \n Kapitel 3\n \n Konfigurationsassistenten\n 3.1 Stepper Configuration Wizard\n@@ -6774,15 +6774,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 86 / 1331\n \n 3.1.2 Startseite\n \n Abbildung 3.1: StepConf Einstiegsseite\n Die ersten drei Optionsfelder sind selbsterkl\u00e4rend:\n@@ -6794,15 +6794,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 87 / 1331\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@@ -6812,15 +6812,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 Machine Name - Choose a name for your machine. Use only uppercase letters, lowercase letters,\n digits, - and _.\n \u2022 Axis Configuration - Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 88 / 1331\n \n \u2022 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 \u2022 Driver Type - If you have one of the stepper drivers listed in the pull down box, choose it. Otherwise,\n@@ -6856,15 +6856,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 89 / 1331\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@@ -6882,15 +6882,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 90 / 1331\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@@ -6899,15 +6899,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 91 / 1331\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@@ -6920,15 +6920,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 92 / 1331\n \n 3.1.7 Konfiguration der Achsen\n \n Abbildung 3.6: Achsenkonfiguration am Bildschirm\n \u2022 Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many\n@@ -6939,15 +6939,15 @@\n If not, enter 1:1.\n \u2022 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 \u2022 Maximum Velocity - Enter the maximum velocity for the axis in units per second.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 93 / 1331\n \n \u2022 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 \u2022 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@@ -6976,15 +6976,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 \u2022 Axis SCALE - Die Zahl, die in der INI-Datei [SCALE] Einstellung verwendet wird. Die Anzahl Schritte\n pro Benutzereinheit.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 94 / 1331\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@@ -7007,15 +7007,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 95 / 1331\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@@ -7025,15 +7025,15 @@\n 3.1.7.2 Finding Maximum Acceleration\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 96 / 1331\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@@ -7044,15 +7044,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 97 / 1331\n \n 3.1.8.2 Spindle-synchronized motion\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@@ -7095,28 +7095,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 98 / 1331\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 <cha:classicladder,ClassicLadder>>.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 99 / 1331\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 Complete Machine Configuration\n@@ -7136,15 +7136,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 100 / 1331\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@@ -7169,15 +7169,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 101 / 1331\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@@ -7188,15 +7188,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 102 / 1331\n \n It can configure closed loop servo systems or hardware stepper systems. It uses a similar wizard\n approach as StepConf (used for software stepping, parallel port driven systems).\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@@ -7207,15 +7207,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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 103 / 1331\n \n 3.2.1 Schritt f\u00fcr Schritt Anleitung\n \n Abbildung 3.13: PnCconf Startfenster\n \n@@ -7227,15 +7227,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 104 / 1331\n \n 3.2.3 Grundlegende Informationen zur Maschine\n \n Abbildung 3.14: PnCconf Basic\n \n@@ -7247,15 +7247,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 The servo period sets the heart beat of the system. Latency refers to the amount of time the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 105 / 1331\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@@ -7302,15 +7302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 106 / 1331\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@@ -7340,15 +7340,15 @@\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 \u2022 Maus-/Tastaturbedienung oder Touchscreen-Bedienung\n \u2022 keine VCP-Integration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 107 / 1331\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@@ -7358,15 +7358,15 @@\n a pulse generator (MPG) or switches (such as a rotary dial). External buttons might be used with a\n switch based OEM joystick.\n Joystick-Joggen\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 \u2022 Suche nach Ger\u00e4teregeln durchsucht das System nach Regeln. Sie k\u00f6nnen diese Funktion verwenden, um den Namen von Ger\u00e4ten zu finden, die Sie bereits mit PnCconf erstellt haben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 108 / 1331\n \n \u2022 Mit Add a device rule k\u00f6nnen Sie ein neues Ger\u00e4t konfigurieren, indem Sie den Aufforderungen\n folgen. Sie m\u00fcssen Ihr Ger\u00e4t zur Verf\u00fcgung haben.\n \u2022 Mit test device k\u00f6nnen Sie ein Ger\u00e4t laden, dessen Pin-Namen sehen und seine Funktionen mit\n halmeter \u00fcberpr\u00fcfen.\n@@ -7384,15 +7384,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 109 / 1331\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@@ -7403,15 +7403,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 110 / 1331\n \n QtPlasmaC-Optionen sind spezifisch f\u00fcr QtPlasmac, alle allgemeinen Optionen, die nicht ben\u00f6tigt werden, sind deaktiviert. Wenn QtPlasmac ausgew\u00e4hlt wird, ist der folgende Bildschirm ein Bildschirm\n zur Einstellung der Benutzertasten, der spezifisch f\u00fcr QtPlasmaC ist, und die VCP-Optionen sind nicht\n verf\u00fcgbar.\n VCP Optionen\n@@ -7447,15 +7447,15 @@\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 k\u00f6nnen Sie je nach Front-End-Bildschirm ausw\u00e4hlen, wo das Panel angezeigt werden soll.\n Bei AXIS kann er in der Mitte oder auf der rechten Seite stehen, bei Touchy in der Mitte.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 111 / 1331\n \n Standardeinstellungen und Optionen\n \u2022 Referenzfahrt vor Manueller Dateneingabe / Ausf\u00fchrung erforderlich machen\n \u2013 Wenn Sie m\u00f6chten, dass die Maschine vor der Referenzfahrt bewegt werden kann, deaktivieren Sie dieses Kontrollk\u00e4stchen.\n \u2022 Popup-Tool-Eingabeaufforderung\n@@ -7471,15 +7471,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 112 / 1331\n \n Abbildung 3.17: Mesa Board Konfiguration\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@@ -7489,15 +7489,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 Wichtig\n Es ist wichtig, diese zu beachten, um Sch\u00e4den zu vermeiden und die beste Leistung zu erzielen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 113 / 1331\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@@ -7521,48 +7521,48 @@\n After choosing all these options press the Accept Component Changes button and PnCconf will update\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-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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 114 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 115 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 116 / 1331\n \n Abbildung 3.20: Mesa I/O C4 Einrichtung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 117 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 118 / 1331\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@@ -7575,15 +7575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 119 / 1331\n \n Warnung\n Wenn Motor und Encoder die Z\u00e4hlrichtung nicht \u00fcbereinstimmen, l\u00e4uft das Servo bei PIDRegelung weg.\n \n Da die PID-Einstellungen derzeit nicht in PnCconf getestet werden k\u00f6nnen, sind die Einstellungen\n@@ -7624,15 +7624,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 120 / 1331\n \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 f\u00fcr den Regler verwendet werden.\n MAX OUTPUT\n@@ -7652,25 +7652,25 @@\n speed.\n B\u00fcrstenlose Motorsteuerung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 121 / 1331\n \n Abbildung 3.22: Berechnung der Achsenskala\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 122 / 1331\n \n Abbildung 3.23: Konfiguration der Achsen\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@@ -7681,15 +7681,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 123 / 1331\n \n \u2022 Wenn sich der KOPF nach oben bewegt, ist das die positive Z-Richtung\n Bei einer typischen Drehmaschine\n \u2022 wenn sich das WERKZEUG nach rechts, weg vom Futter, bewegt\n \u2022 das ist die positive Z-Richtung\n@@ -7733,15 +7733,15 @@\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 Verfahrwege ist. Bewegen Sie den Tisch an das andere Ende des Verfahrwegs. Messen Sie die\n Markierungen erneut. Das ist der andere Verfahrweg. Wenn sich der URSPRUNG an einer der\n Begrenzungen befindet, ist dieser Verfahrweg gleich Null.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 124 / 1331\n \n (Maschinen-)URSPRUNG\n Der Ursprung ist der MASCHINENNullpunkt. (nicht der Nullpunkt Sie Ihre Cutter / Material auf).\n LinuxCNC verwendet diesen Punkt, um alles andere von Referenz. Es sollte innerhalb der Software Grenzen sein. LinuxCNC verwendet die Referenzpunkt (engl. home)-Schalter-Position, um\n die Ursprungs-Position zu bestimmen (bei Verwendung von Home-Schalter oder muss manuell\n@@ -7783,29 +7783,29 @@\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<sub:ini:sec:axis-letter,Achsen-Abschnitt>> des INI Kapitels.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 125 / 1331\n \n Verwenden des Umkehrspiel-Ausgleichs\n Erm\u00f6glicht die Einstellung einer einfachen Kompensation des Umkehrspiels. Kann nicht mit Kompensationsdatei verwendet werden. Siehe den <sub:ini:sec:axis-letter,Achsen-Abschnitt>> des\n INI Kapitels.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 126 / 1331\n \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 3.2.10 Spindel-Konfiguration\n@@ -7815,15 +7815,15 @@\n Option ausgew\u00e4hlt wurde!\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 127 / 1331\n \n \u2022 Es gibt keine Unterst\u00fctzung f\u00fcr Gangschaltungen oder Bereiche.\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@@ -7840,26 +7840,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 <cha:classicladder,ClassicLadder>> im Handbuch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 128 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 129 / 1331\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@@ -7867,15 +7867,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 130 / 1331\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@@ -7901,15 +7901,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 131 / 1331\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@@ -7928,15 +7928,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 132 / 1331\n \n Kapitel 4\n \n Konfiguration\n 4.1 Integrator-Konzepte\n@@ -7955,15 +7955,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 133 / 1331\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@@ -7995,15 +7995,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 134 / 1331\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@@ -8039,15 +8039,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 135 / 1331\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@@ -8062,15 +8062,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 136 / 1331\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@@ -8090,15 +8090,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 137 / 1331\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@@ -8125,15 +8125,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 138 / 1331\n \n 4.2 Latency Testing\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@@ -8167,15 +8167,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 139 / 1331\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@@ -8196,15 +8196,15 @@\n ist kein guter Kandidat f\u00fcr LinuxCNC, unabh\u00e4ngig davon, ob Sie Software-Stepping verwenden oder\n nicht.\n Anmerkung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 140 / 1331\n \n Weitere Informationen zum Stepper-Tuning finden Sie im Kapitel Stepper Tuning.\n Additional command line tools are available for examining latency when LinuxCNC is not\n running.\n 4.2.2.2 Latency Plot\n@@ -8228,15 +8228,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 141 / 1331\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@@ -8259,15 +8259,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 142 / 1331\n \n A primary goal in tuning the system for LinuxCNC is to reserve a CPU for the exclusive use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not interfere\n with LinuxCNC\u2019s access to that CPU.\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@@ -8298,15 +8298,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 143 / 1331\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@@ -8339,15 +8339,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 144 / 1331\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@@ -8383,15 +8383,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 145 / 1331\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@@ -8434,15 +8434,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 146 / 1331\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@@ -8484,15 +8484,15 @@\n \n Kommentare\n \n A comment line is started with a ; or a # mark. When the INI reader sees either of these marks at the\n start a line, the rest of the line is ignored by the software. Comments can be used to describe what an\n INI element will do.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 147 / 1331\n \n ; Dies ist die Konfigurationsdatei meiner Fr\u00e4smaschine\n # Ich habe sie am 12. Januar 2012 eingerichtet.\n \n Comments can also be used to turn off a variable. This makes it easier to pick between different\n@@ -8527,15 +8527,15 @@\n \u2022 [APPLICATIONS] Other applications to be started by LinuxCNC\n \u2022 [TRAJ] additional settings used by the real time motion controller\n \u2022 [JOINT_n] individual joint variables\n \u2022 [AXIS_l] individual axis variables\n \u2022 [KINS] kinematics variables\n \u2022 [EMCIO] settings used by the I/O Controller\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.1.3\n \n 148 / 1331\n \n Variablen\n \n@@ -8586,15 +8586,15 @@\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 149 / 1331\n \n setp offset.1.offset [PROBE]Z_OFFSET\n setp stepgen.0.position-scale [JOINT_0]SCALE\n \n Anmerkung\n@@ -8631,15 +8631,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2\n \n INI File Sections\n \n 4.4.2.1\n \n@@ -8679,15 +8679,15 @@\n value.\n \u2022 CONE_BASESIZE = .25 - Override the default cone/tool base size of .5 in the graphics display.\n \u2022 MAX_FEED_OVERRIDE = 1.2 - The maximum feed override the user may select. 1.2 means 120% of\n the programmed feed rate.\n \u2022 MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means 50%\n of the programmed spindle speed. (This is used to set the minimum spindle speed.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 151 / 1331\n \n \u2022 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@@ -8720,15 +8720,15 @@\n (0.1 s) is a common setting though a range of 50 - 200 ms (.05 - .2 s) may be useable. An under\n powered CPU may see improvement with a longer setting. Usually the default is fine.\n \u2022 PREVIEW_TIMEOUT = 5 - Timeout (in seconds) for loading graphical preview of G-code. Currently\n AXIS only.\n Anmerkung\n Die folgenden [DISPLAY]-Elemente werden von GladeVCP und PyVCP verwendet, siehe den embedding a tab Abschnitt des GladeVCP Kapitels oder das PyVCP Kapitel f\u00fcr weitere Informationen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 152 / 1331\n \n \u2022 EMBED_TAB_NAME = GladeVCP demo\n \n \u2022 EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\\} -u ./glad\n ./gladevcp/manual-example.ui\n@@ -8766,15 +8766,15 @@\n \u2022 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 \u2022 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 \u2022 FOAM = 1 - Any non-empty value (including \u201d0\u201d) causes axis to change the display for foam-cutter\n mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 153 / 1331\n \n \u2022 GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of a\n sequence of axis letters and control characters, optionally preceded with a \u201d-\u201d sign:\n 1. Die Buchstaben X, Y, Z geben die Verschiebung entlang der genannten Koordinate an.\n 2. Die Buchstaben A, B, C bezeichnen die Drehung um die entsprechenden Achsen X, Y, Z.\n@@ -8815,15 +8815,15 @@\n \u2022 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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 154 / 1331\n \n Anmerkung\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@@ -8863,15 +8863,15 @@\n \n Anmerkung\n Die Programmdatei, die mit einer Erweiterung verkn\u00fcpft ist, muss entweder den vollst\u00e4ndigen Pfad\n zum Programm enthalten oder sich in einem Verzeichnis befinden, das sich im Systempfad befindet.\n \n Es ist auch m\u00f6glich, einen Interpreter anzugeben:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 155 / 1331\n \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@@ -8916,15 +8916,15 @@\n \n [RS274NGC] Section\n \n \u2022 PARAMETER_FILE = myfile.var - The file located in the same directory as the INI file which contains\n the parameters used by the interpreter (saved between runs).\n \u2022 ORIENT_OFFSET = 0 - A float value added to the R word parameter of an M19 Orient Spindle operation. Used to define an arbitrary zero position regardless of encoder mount orientation.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 156 / 1331\n \n \u2022 RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 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 \u2022 SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:)\n@@ -8977,15 +8977,15 @@\n Preserve case in O-word names within comments if set, enables reading of mixed-case HAL items\n in structured comments like (debug, #<_hal[MixedCaseItem]).\n \u2022 OWORD_WARNONLY = 0 (Default: 0)\n Warn rather than error in case of errors in O-word subroutines.\n \u2022 DISABLE_G92_PERSISTENCE = 0 (Default: 0) Allow to clear the G92 offset automatically when config\n start-up.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 157 / 1331\n \n \u2022 DISABLE_FANUC_STYLE_SUB = 0 (Default: 0) If there is reason to disable Fanuc subroutines set it to\n 1.\n Anmerkung\n The above six options were controlled by the FEATURES bitmask in versions of LinuxCNC prior to 2.8.\n@@ -9021,15 +9021,15 @@\n \u2022 TRAJ_PERIOD = 100000 - This is the Trajectory Planner task period in nanoseconds.\n \u2022 COMM_TIMEOUT = 1.0 - Number of seconds to wait for Motion (the realtime part of the motion controller) to acknowledge receipt of messages from Task (the non-realtime part of the motion controller).\n \u2022 HOMEMOD = alternate_homing_module [home_parms=value] The HOMEMOD variable is optional. If\n specified, use a specified (user-built) module instead of the default (homemod). Module parameters\n (home_parms) may be included if supported by the named module. The setting may be overridden\n from the command line using the -m option ($ linuxcnc -h).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.6\n \n 158 / 1331\n \n [TASK] Section\n \n@@ -9071,15 +9071,15 @@\n HALFILE items specify files that loadrt HAL components and make signal connections between component pins. Common mistakes are\n 1. omission of the addf statement needed to add a component\u2019s function(s) to a thread,\n 2. incomplete signal (net) specifiers.\n Omission of required addf statements is almost always an error. Signals usually include one or more\n input connections and a single output (but both are not strictly required). A system library file is\n provided to make checks for these conditions and report to stdout and in a pop-up GUI:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 159 / 1331\n \n HALFILE = LIB:halcheck.tcl [nopopup]\n \n Anmerkung\n Die Zeile LIB:halcheck.tcl sollte die letzte [HAL]HALFILE sein. Geben Sie die Option nopopup an, um\n@@ -9121,15 +9121,15 @@\n \n LinuxCNC kann andere Anwendungen starten, bevor die angegebene Benutzeroberfl\u00e4che gestartet\n wird. Die Anwendungen k\u00f6nnen nach einer bestimmten Verz\u00f6gerung gestartet werden, um GUIabh\u00e4ngige Aktionen zu erm\u00f6glichen (wie das Erstellen von GUI-spezifischen HAL-Pins).\n \u2022 DELAY = value - seconds to wait before starting other applications. A delay may be needed if an\n application has dependencies on [HAL]POSTGUI_HALFILE actions or GUI-created HAL pins (default\n DELAY=0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 160 / 1331\n \n \u2022 \u201aAPP = \u0300 appname [arg1 [arg2 \u2026]]\u2018 - 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 (first character is / or ~), a relative filename (first characters of filename are ./), or as a file in the\n INI file directory. If no executable file is found using these names, then the user search PATH is\n@@ -9174,15 +9174,15 @@\n # n = v_max / (2.0 * a_max * t_c)\n # wobei:\n # n = Optimierungstiefe\n # v_max = maximale Achsengeschwindigkeit (UU / sec)\n # a_max = maximale Achsenbeschleunigung (UU / sec)\n # t_c = Servo-Periode (Sekunden)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 161 / 1331\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 Segmente, um immer die maximale Geschwindigkeit entlang der\n schnellsten Achse zu erreichen.\n@@ -9224,15 +9224,15 @@\n # a_max = maximale Achsenbeschleunigung\n # f = Grenzfrequenz aus INI\n \n For the aforementioned machine, the ripple for a 20 Hz cutoff frequency is 100 / (4 * 20) = 1.25 IPS.\n This seems high, but keep in mind that it is only a worst-case estimate. In reality, the trapezoidal\n motion profile is limited by other factors, such as normal acceleration or requested velocity, and so\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 162 / 1331\n \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 in\n the range 20 Hz to 200 Hz should be reasonable to start.\n Und schlie\u00dflich k\u00f6nnen Sie einen Werkzeugweg mit vielen kleinen, engen Kurven nicht beschleunigen,\n@@ -9274,15 +9274,15 @@\n \n Warnung\n LinuxCNC will not know your joint travel limits when using NO_FORCE_HOMING = 1.\n \n \u2022 HOME = 0 0 0 0 0 0 0 0 0 - World home position needed for kinematics modules that compute\n world coordinates using kinematicsForward() when switching from joint to teleop mode. Up to nine\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 163 / 1331\n \n coordinate values (X Y Z A B C U V W) may be specified, unused trailing items may be omitted.\n This value is only used for machines with nontrivial kinematics. On machines with trivial kinematics\n (mill, lathe, gantry types) this value is ignored. Note: The sim hexapod config requires a non-zero\n value for the Z coordinate.\n@@ -9328,15 +9328,15 @@\n axis <letter>. In this example, the joint is 4 which would correspond to the B axis for a XYZAB\n system with trivkins (identity) kinematics. When set, a G0 move for this axis will initiate an unlock\n with the joint.4.unlock pin then wait for the joint.4.is-unlocked pin then move the joint at\n the rapid rate for that joint. After the move the joint.4.unlock will be false and motion will wait\n for joint.4.is-unlocked to go false. Moving with other joints is not allowed when moving a locked\n rotary joint. To create the unlock pins, use the motmod parameter:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 164 / 1331\n \n unlock_joints_mask=jointmask\n \n Die Bits der Jointmaske sind: (LSB)0:joint0, 1:joint1, 2:joint2, \u2026\n Example: loadrt motmod ... unlock_joints_mask=0x38 creates unlock-pins for joints 3,4,5.\n@@ -9373,15 +9373,15 @@\n kins).\n \u2022 TYPE = LINEAR - The type of joint, either LINEAR or ANGULAR.\n \n \u2022 UNITS = INCH - If specified, this setting overrides the related [TRAJ] UNITS setting, e.g., [TRAJ]LINEAR_UN\n if the TYPE of this joint is LINEAR, [TRAJ]ANGULAR_UNITS if the TYPE of this joint is ANGULAR.\n \u2022 MAX_VELOCITY = 1.2 - Maximum velocity for this joint in machine units per second.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 165 / 1331\n \n \u2022 MAX_ACCELERATION = 20.0 - Maximum acceleration for this joint in machine units per second squared.\n \u2022 BACKLASH = 0.0000 - Backlash in machine units. Backlash compensation value can be used to\n make up for small deficiencies in the hardware used to drive an joint. If backlash is added to an\n joint and you are using steppers the STEPGEN_MAXACCEL must be increased to 1.5 to 2 times the\n@@ -9417,15 +9417,15 @@\n \u2022 MAX_LIMIT = 1000 - The maximum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having no MAX_LIMIT\n for that joint in the [JOINT_N] section a the value 1e99 is used.\n Anmerkung\n For identity kinematics, the [JOINT_N]MIN_LIMIT/MAX_LIMIT settings must equal or exceed the\n corresponding (one-to-one identity) [AXIS_L] limits. These settings are verified at startup when the\n trivkins kinematics modules is specified.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 166 / 1331\n \n Anmerkung\n The [JOINT_N]MIN_LIMIT/MAX_LIMIT settings are enforced while jogging in joint mode prior to homing. After homing, [AXIS_L]MIN_LIMIT/MAX_LIMIT coordinate limits are used as constraints for axis\n (coordinate letter) jogging and by the trajectory planning used for G-code moves (programs and MDI\n commands). The trajectory planner works in Cartesian space (XYZABCUVW) and has no information\n@@ -9465,15 +9465,15 @@\n provision for this signal you may set it to yes. When it is yes, it will affect the kind of home pattern\n used. Currently, you can\u2019t home to index with steppers unless you\u2019re using StepGen in velocity mode\n and PID.\n \u2022 HOME_INDEX_NO_ENCODER_RESET = NO - Use YES if the encoder used for this joint does not reset\n its counter when an index pulse is detected after assertion of the joint index_enable HAL pin.\n Applicable only for HOME_USE_INDEX = YES.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 167 / 1331\n \n \u2022 HOME_IGNORE_LIMITS = NO - When you use the limit switch as a home switch and the limit switch\n this should be set to YES. When set to YES the limit switch for this joint is ignored when homing.\n You must configure your homing so that at the end of your home move the home/limit switch is not\n in the toggled state you will get a limit switch error after the home move.\n@@ -9511,15 +9511,15 @@\n begrenzen, wenn Sie k\u00f6nnen.\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 Example of calculating machine units per encoder pulse to use in deciding DEADBAND value:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 168 / 1331\n \n \u2022 BIAS = 0.000 - This is used by hm2-servo and some others. Bias is a constant amount that is added\n to the output. In most cases it should be left at zero. However, it can sometimes be useful to compensate for offsets in servo amplifiers, or to balance the weight of an object that moves vertically.\n Bias is turned off when the PID loop is disabled, just like all other components of the output.\n \u2022 P = 50 - The proportional gain for the joint servo. This value multiplies the error between commanded and actual position in machine units, resulting in a contribution to the computed voltage for\n@@ -9548,15 +9548,15 @@\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 The value for scale can be obtained analytically by doing a unit analysis, i.e., units are [output\n SI 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 169 / 1331\n \n Note that the units of the offset are in machine units, e.g. mm/s, and they are pre-subtracted from\n the sensor readings. The value for this offset is obtained by finding the value of your output which\n yields 0.0 for the actuator output. If the DAC is linearized, this offset is normally 0.0.\n Skalierung und Offset k\u00f6nnen auch zur Linearisierung des DAC verwendet werden. Diese Werte spigeln dann die kombinierten Auswirkungen von Verst\u00e4rkung, Nicht-Linearit\u00e4t des DAC, DACEinheiten usw. wider.\n@@ -9598,15 +9598,15 @@\n section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular\n joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is ignored. For\n example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we\n have:\n \n Diese Parameter sind relevant f\u00fcr Gelenke, die von Schrittmotoren gesteuert werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 170 / 1331\n \n Warnung\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 and meant only to put all the\n settings in one place. For more information on custom INI file entries see the Custom Sections\n@@ -9647,15 +9647,15 @@\n The <num> specifies the spindle number 0 \u2026 (num_spindles-1)\n The value of num_spindles is set by [TRAJ]SPINDLES= .\n By default maximum velocity of the spindle in forward and reverse is approximately 2147483000 RPM.\n By default minimum velocity of the spindle in forward and reverse is 0 RPM.\n By default the increment is 100 RPM.\n You change these default by setting the following INI variables:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 171 / 1331\n \n Anmerkung\n These settings are for the motion controller component. Control screens can limit these settings\n further.\n \u2022 MAX_FORWARD_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle.\n@@ -9697,15 +9697,15 @@\n \u2022 TOOL_CHANGE_QUILL_UP = 1 - The Z axis will be moved to machine zero prior to the tool change\n when the value is 1. This is the same as issuing a G0 G53 Z0.\n \u2022 TOOL_CHANGE_AT_G30 = 1 - The machine is moved to reference point defined by parameters 51815186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30-G30.1.\n \u2022 RANDOM_TOOLCHANGER = 1 - This is for machines that cannot place the tool back into the pocket it\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 172 / 1331\n \n 4.5 Konfiguration der Referenzfahrt (engl. homing)\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@@ -9741,15 +9741,15 @@\n \u2022 If using a separate homing switch, it is possible to start homing on the wrong side of the home\n switch, which combined with HOME_IGNORE_LIMITS option will lead to a hard crash. You can\n avoid this by making the home switch toggle its state when the trip dog is on a particular side until\n it returns passed the trip point again. Said another way, the home switch state must represent the\n position of the dog relative to the switch (ie before or after the switch), and must stay that way even\n if the dog coasts past the switch in the same direction.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 173 / 1331\n \n Anmerkung\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@@ -9767,15 +9767,15 @@\n \u2022 A<->B ist die negative weiche Grenze (MIN_LIMITS) = -3 Einheiten\n \u2022 B<->C ist der Home_Offset (HOME_OFFSET) = -2,3 Einheiten\n \u2022 B<->D ist die positive weiche Grenze (MAX_LIMITS) = 7 Einheiten\n \u2022 A<->D ist der gesamte Weg = 10 Einheiten\n \u2022 Der Abstand zwischen den Endschaltern und Soft Limits (-L<->A und D<-+L) wird in diesem Beispiel vergr\u00f6\u00dfert\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 174 / 1331\n \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@@ -9796,32 +9796,32 @@\n \u2022 B<->C ist der Home_Offset (HOME_OFFSET) = -0,7 Einheiten.\n \u2022 B<->D ist die positive weiche Grenze (MAX_LIMITS) 10 Einheiten.\n \u2022 A<->D ist der gesamte Weg = 10 Einheiten.\n \u2022 Der Abstand zwischen den Endschaltern und den Soft Limits (-L<->A und D<->+L) wird in diesem\n Beispiel vergr\u00f6\u00dfert.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 175 / 1331\n \n 4.5.5 Referenzfahrt Abfolge\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 176 / 1331\n \n Abbildung 4.8: Referenzfahrt-Abl\u00e4ufe\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 177 / 1331\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@@ -9879,15 +9879,15 @@\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 maximale Gelenkgeschwindigkeit verwendet, um diese Bewegung zu machen. Der Wert muss eine\n positive Zahl sein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 178 / 1331\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@@ -9919,15 +9919,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 179 / 1331\n \n Anmerkung\n Der Unterschied zwischen HOME_OFFSET und HOME besteht darin, dass HOME_OFFSET zun\u00e4chst die\n Ursprungsposition und den Ma\u00dfstab auf der Maschine festlegt, indem der HOME_OFFSET -Wert auf\n die Position angewendet wird, an der die Ausgangsposition gefunden wurde, und dann HOME angibt,\n@@ -9962,15 +9962,15 @@\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 Abschluss der letzten g\u00fcltigen Sequenznummer.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 180 / 1331\n \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 Eine negative HOME_SEQUENCE gilt auch f\u00fcr das Ausf\u00fchren einer Referenzfahrt eines einzelnen\n Gelenks. Wenn der HOME_SEQUENCE-Wert negativ ist, werden alle Gelenke, die den gleichen absoluten Wert dieser HOME_SEQUENCE haben, gemeinsam mit einer synchronisierten Endbewegung freigesetzt. Wenn der HOME_SEQUENCE-Wert Null oder positiv ist, wird nur das angegebene\n@@ -10013,15 +10013,15 @@\n If this setting is true, this joint becomes unhomed whenever the machine transitions into the OFF\n state. This is appropriate for any joint that does not maintain position when the joint drive is off. Some\n stepper drives, especially microstep drives, may need this.\n 4.5.6.13 LOCKING_INDEXER\n Handelt es sich bei diesem Gelenk um einen verriegelnden Drehindexer, wird es vor der Referenzfahrt\n entriegelt und danach verriegelt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 181 / 1331\n \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@@ -10064,15 +10064,15 @@\n net home_seq_s32 => ini.1.home_sequence\n ...\n # allow_jjog: von einem virtuellen Bedienfeld oder Hardware-Schalter erzeugter Pin\n net hsequence_select <= allow_jog\n net hsequence_select => home_sequence_mux.sel\n net hsequence_select => motion.homing-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 182 / 1331\n \n Anmerkung\n INI HAL-Pins (wie ini.N.home_sequence) sind nicht verf\u00fcgbar, bis milltask startet, so dass die Ausf\u00fchrung der oben genannten HAL-Befehle mit Hilfe einer postgui HAL-Datei oder eines verz\u00f6gerten\n [APPLICATION]APP=-Skripts verschoben werden sollte.\n \n@@ -10102,15 +10102,15 @@\n wird ein Handshake erwartet, um zuverl\u00e4ssige Signalisierung zu gew\u00e4hrleisten, und optional lockstep Verhalten zu erzwingen. Handshaking ist optional und kann in HAL \u00fcberbr\u00fcckt werden, wenn\n es nicht ben\u00f6tigt wird.\n \u2022 R\u00fcckw\u00e4rtskompatibilit\u00e4t: Ein Werkzeugwechsler, der die iocontrol emc-abort-Zeile ignoriert und an\n der alten Handhabung festh\u00e4lt, wird \u201dweiterhin funktionieren\u201d (vorbehaltlich einer Race Condition)\n Wenn Sie strenge Zeitvorgaben haben oder einfach mehr E/A ben\u00f6tigen, sollten Sie stattdessen die\n Echtzeit-E/A verwenden, die von motion bereitgestellt wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 183 / 1331\n \n 4.6.2 Anwendung\n INI-Datei Optionen:\n [EMCIO] Abschnitt\n PROTOCOL_VERSION = 2\n@@ -10141,15 +10141,15 @@\n \u2022 iocontrol.0.tool-number (s32, out) Current tool number\n \u2022 iocontrol.0.tool-prep-number (s32, out) The number of the next tool, from the RS274NGC T-word\n \u2022 iocontrol.0.tool-prep-pocket (s32, out) This is the pocket number (location in the tool storage mechanism) of the tool requested by the most recent T-word.\n \u2022 iocontrol.0.tool-prepare (bit, out) TRUE when a Tn tool prepare is requested.\n \u2022 iocontrol.0.tool-prepared (bit, in) Should be driven TRUE when a tool prepare is completed.\n \u2022 iocontrol.0.user-enable-out (bit, out) FALSE when an internal E-stop condition exists\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 184 / 1331\n \n \u2022 iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-stop be cleared\n Zus\u00e4tzliche Pins hinzugef\u00fcgt durch I/O Control V2\n \u2022 emc-abort: (bit, out) signals emc-originated abort to toolchanger.\n \u2022 emc-abort-ack: (bit, in) Acknowledge line from toolchanger for previous signal, or jumpered to aborttool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until emcabort-ack is raised.\n@@ -10182,15 +10182,15 @@\n die Abort-Handshake-Funktion nicht ben\u00f6tigen, jumpen Sie sie wie folgt:\n net emc-abort-ack iocontrol.0.emc-abort iocontrol.0.emc-abort-ack\n \n Der emc-reason-Pin wird als g\u00fcltig angesehen, wenn emc-abort TRUE ist.\n Die Ausl\u00f6ser-Codes sind wie folgt f\u00fcr LinuxCNC intern generiert Abbr\u00fcche (siehe emc.hh ca Zeile\n 321):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 185 / 1331\n \n \u2022 EMC_ABORT_TASK_EXEC_ERROR = 1,\n \u2022 EMC_ABORT_AUX_ESTOP = 2,\n \u2022 EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n \u2022 EMC_ABORT_TASK_STATE_OFF = 4,\n@@ -10221,15 +10221,15 @@\n die Standardebene zu \u00e4ndern, f\u00fcgen Sie die folgende Zeile in die INI-Datei im Abschnitt RS274NGC\n ein.\n RS274NGC_STARTUP_CODE = G18\n \n Die obigen Angaben k\u00f6nnen in einem G-Code-Programm \u00fcberschrieben werden, daher sollten Sie\n wichtige Dinge immer in der Pr\u00e4ambel der G-Code-Datei festlegen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 186 / 1331\n \n 4.7.2 INI-Einstellungen\n Die folgenden INI-Einstellungen werden f\u00fcr den Drehmaschinenmodus in Axis zus\u00e4tzlich zu den normalen Einstellungen in der INI-Datei ben\u00f6tigt oder ersetzen diese. Diese historischen Einstellungen\n verwenden die Identit\u00e4tskinematik (trivkins) und drei Gelenke (0,1,2) entsprechend den Koordinaten\n x, y, z. Das Gelenk 1 f\u00fcr die unbenutzte y-Achse ist erforderlich, wird aber in diesen historischen Konfigurationen nicht verwendet. Simulierte Drehmaschinen-Konfigurationen k\u00f6nnen diese historischen\n@@ -10271,15 +10271,15 @@\n [JOINT_1]\n ...\n [AXIS_X]\n ...\n [AXIS_Z]\n ...\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 187 / 1331\n \n 4.8 Stepper Schnellstart\n This section assumes you have done a standard install from the Live CD. After installation it is recommended that you connect the computer to the Internet and wait for the update manager to pop up\n and get the latest updates for LinuxCNC and Ubuntu before continuing.\n \n@@ -10339,15 +10339,15 @@\n 10\n \n Typ.\n Wenn UnterFunktion\n schiedlich\n X End/Referenzschalter\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 188 / 1331\n \n AusgangsPin\n 2\n \n Typ.\n@@ -10432,15 +10432,15 @@\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 Das Nettoergebnis, nach dem Sie suchen, ist die Anzahl der CNC-Ausgabeschritte, die erforderlich\n sind, um eine Benutzereinheit (Zoll oder mm) zu bewegen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 189 / 1331\n \n Beispiel 4.1 Einheiten Zoll\n Stepper = 200 Schritte pro Umdrehung\n Antrieb = 10 Mikroschritte pro Schritt\n Motorverzahnung = 20\n@@ -10468,15 +10468,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 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 abgew\u00fcrgt werden oder Schritte verlieren.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 190 / 1331\n \n 4.9.2 Maximale Schrittgeschwindigkeit\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@@ -10514,15 +10514,15 @@\n loadrt hal_parport cfg=\u201d0x0378\u201d\n #\n # als n\u00e4chstes die Parport-Funktionen mit den Threads verbinden\n # lese zuerst die Eing\u00e4nge\n addf parport.0.read base-thread 1\n # Ausgaben zuletzt schreiben\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 191 / 1331\n \n addf parport.0.write base-thread -1\n #\n # schlie\u00dflich physische Pins mit den Signalen verbinden Netz\n net Xstep => parport.0.pin-03-out\n@@ -10571,15 +10571,15 @@\n ### Beispiel f\u00fcr separate Endschalter auf der X-Achse (Achse 0)\n ###\n # net X-neg-limit parport.0.pin-11-in => joint.0.neg-lim-sw-in\n # net X-pos-limit parport.0.pin-12-in => joint.0.pos-lim-sw-in\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 192 / 1331\n \n ###\n ### Genau wie beim Beispiel der gemeinsamen Referenzschalter k\u00f6nnen Sie auch\n ### Endschalter miteinander verbinden. Achten Sie darauf, wenn Sie einen ausl\u00f6sen, wird \u2190LinuxCNC stoppen,\n ### kann Ihnen aber nicht sagen, welche Schalter/Achse verantwortlich ist. Seien Sie \u2190vorsichtig, wenn die den Betrieb\n@@ -10612,15 +10612,15 @@\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 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 4 The fastest thread in the LinuxCNC setup, usually the code gets executed every few tens of microseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 193 / 1331\n \n 4.9.3.5 Hinzuf\u00fcgen einer PWM-Spindeldrehzahlregelung\n Wenn Ihre Spindel durch ein PWM-Signal gesteuert werden kann, verwenden Sie die Komponente\n \u201epwmgen\u201c, um das Signal zu erzeugen:\n loadrt pwmgen output_type=0\n@@ -10657,15 +10657,15 @@\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 r\u00fcckw\u00e4rts\u201d abwechselnd dr\u00fccken und der Schrittmotor sich jedes Mal um einen Schritt und in dieselbe\n Richtung bewegt, haben Sie einen Anhaltspunkt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 194 / 1331\n \n 4.10.1.2 Keine Stepper bewegen sich\n Viele Laufwerke haben einen Freigabe-Pin oder ben\u00f6tigen eine Ladungspumpe, um den Ausgang zu\n aktivieren.\n 4.10.1.3 Abstand nicht korrekt\n@@ -10701,15 +10701,15 @@\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 and adjust the Base Period Maximum Jitter on the Basic Machine Information page. You might have to\n leave the test running for an extended period of time to find out if some hardware causes intermittent\n problems.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 195 / 1331\n \n LinuxCNC verfolgt die Anzahl der CPU-Zyklen zwischen den Aufrufen des Echtzeit-Threads. Wenn ein\n Element Ihrer Hardware verursacht Verz\u00f6gerungen oder Ihre Echtzeit-Threads zu schnell eingestellt\n sind, werden Sie diesen Fehler erhalten.\n Anmerkung\n@@ -10753,15 +10753,15 @@\n #1000 = [#1000 - 1]\n o101 endwhile\n ( msg, Done...Z sollte genau .5\u201d \u00fcber dem Tisch liegen )\n M2\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 196 / 1331\n \n 4.11 Filter-Programme\n 4.11.1 Einf\u00fchrung\n Die meisten Bildschirme von LinuxCNC haben die M\u00f6glichkeit, geladene Dateien durch ein \u201dFilterprogramm\u201d zu senden oder das Filterprogramm zu verwenden, um G-Code zu machen. Ein solcher Filter\n kann jede gew\u00fcnschte Aufgabe erledigen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit\n@@ -10782,15 +10782,15 @@\n Es ist auch m\u00f6glich, einen Interpreter anzugeben:\n PROGRAM_EXTENSION = .py Python Script\n py = python\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 197 / 1331\n \n Abbildung 4.9: Kreisf\u00f6rmige L\u00f6cher\n Wenn das Filterprogramm Zeilen in der folgenden Form an stderr sendet:\n FILTER_PROGRESS=10\n \n@@ -10810,15 +10810,15 @@\n time.sleep(.1)\n # Ausgabe einer Zeile G-Code\n print(\u2019G0 X1\u2019, file=sys.stdout)\n # Fortschritt aktualisieren\n print(\u2019FILTER_PROGRESS={}\u2019.format(i), file=sys.stderr)\n except:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 198 / 1331\n \n # Dies f\u00fchrt zu einer Fehlermeldung\n print(\u2019Fehler; Aber das war nur ein Test\u2019, file=sys.stderr)\n raise SystemExit(1)\n \n@@ -10860,15 +10860,15 @@\n print(\u2019You asked to cancel before finished.\u2019, file=sys.stderr)\n raise SystemExit(1)\n def process(self):\n try:\n # n\u00e4chste Codezeile erhalten\n codeLine = self.temp[self.line]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 199 / 1331\n \n # die Zeile irgendwie verarbeiten\n # Verarbeiteten Code ausgeben\n print(codeLine, file=sys.stdout)\n self.line +=1\n@@ -10891,15 +10891,15 @@\n else:\n path = None\n app = QApplication(sys.argv)\n w = CustomDialog(path=path)\n w.show()\n sys.exit( app.exec_() )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 200 / 1331\n \n Kapitel 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL Introduction\n@@ -10923,15 +10923,15 @@\n of what CNC machines need to do, or space craft.\n Any machine controller needs to know:\n \u2022 about its internal state and how this maps to the environment (machine coordinates, state of switches/regulators),\n \u2022 how actuators are expected to change that state,\n \u2022 how allow for updates of the internal state by sensors (encoders, probes).\n The HAL layer consists of parts (referred to as \u201dcomponents\u201d) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 201 / 1331\n \n \u2022 are connected with each other, e.g., to update position data or have the planning algorithm tell the\n motors about the next step.\n \u2022 may know how to communicate with hardware,\n \u2022 may simply process incoming data and provide data outputs to other components,\n@@ -10964,15 +10964,15 @@\n \u2022 from within C/C++ programs,\n but none of these interfaces are HAL itself.\n HAL itself is not a program, it consists of one or more lists of loaded programs (the components) that\n are periodically executed (in strict sequence), and an area of shared-memory that these components\n use to interchange data. The main HAL script runs only once at machine startup, setting up the realtime threads and the shared-memory locations, loading the components and setting up the data links\n between them (the \u201dsignals\u201d and \u201dpins\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 202 / 1331\n \n In principle multiple machines could share a common HAL to allow them to inter-operate, however\n the current implementation of LinuxCNC is limited to a single interpreter and a single Task module.\n Currently this is almost always a G-code interpreter and \u201dmilltask\u201d (which was found to also work well\n for lathes and adequately for robots) but these modules are selectable at load-time. With an increasing\n@@ -11013,15 +11013,15 @@\n number of components that know a lot about CNC and present that information via pins. There are\n pins representing\n \u2022 static information about the machine\n \u2022 the current state of the machine\n \u2013 end switches\n \u2013 positions counted by steppers or as measured by encoders\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 203 / 1331\n \n \u2022 recipients for instructions\n \u2013 manual control of machine position (\u201djogging\u201d)\n \u2013 positions that stepper motors should take next\n In a analogy to electronic cables, pins can be wired, so the value changing in one pin serves as input to\n@@ -11063,15 +11063,15 @@\n \u2013 developing over time.\n \n 5.1.3 HAL System Design\n HAL basiert auf traditionellen Systementwurfstechniken. HAL is based on the same principles\n that are used to design hardware circuits and systems, so it is useful to examine those principles first.\n Any system, including a CNC machine, consists of interconnected components. For the CNC machine,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 204 / 1331\n \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 aselect, mount and wire these pieces together to make a complete system.\n \n@@ -11093,15 +11093,15 @@\n black boxes. During the design stage, he decides which parts he is going to use - steppers or servos,\n which brand of servo amp, what kind of limit switches and how many, etc. The integrator\u2019s decisions\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 205 / 1331\n \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 5.1.3.2 Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n@@ -11127,15 +11127,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.3.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 206 / 1331\n \n Abbildung 5.2: Remote-Start-Beispiel (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@@ -11160,15 +11160,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 Komponente\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 207 / 1331\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. + + Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be meant to\n be connected to a physical pin on the device to communicate with it, hence the names. But most\n often this is not the case. Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements\n@@ -11208,15 +11208,15 @@\n Both pins and signals have types, and signals can only be connected to pins of ffvthe same type.\n Currently there are 4 types, as follows:\n \u2022 bit - ein einzelner TRUE/FALSE- oder ON/OFF-Wert\n \u2022 float - eine 64-Bit-Flie\u00dfkommazahl mit einer Aufl\u00f6sung von etwa 53 Bit und einem Dynamikbereich von \u00fcber 1000 Bit.\n \u2022 u32 - eine 32-Bit-Ganzzahl ohne Vorzeichen, zul\u00e4ssige Werte sind 0 bis 4.294.967.295\n \u2022 s32 - eine 32-Bit-Ganzzahl mit Vorzeichen, zul\u00e4ssige Werte sind -2.147.483.647 bis +2.147.483.647\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 208 / 1331\n \n Funktion\n Real hardware components tend to act immediately on their inputs. For example, if the input\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@@ -11258,15 +11258,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 209 / 1331\n \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@@ -11280,15 +11280,15 @@\n 5.2.1 HAL Commands\n Ausf\u00fchrlichere Informationen finden Sie in der Manpage f\u00fcr halcmd: f\u00fchren Sie man halcmd in einem\n Terminalfenster aus.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 210 / 1331\n \n Abbildung 5.3: HAL-Konfigurationsfenster\n \n 5.2.1.1\n \n@@ -11308,15 +11308,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. A negative position\n indicates the position with respect to the end of the thread. For example 1 is start of thread, -1 is the\n end of the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 211 / 1331\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@@ -11387,15 +11387,15 @@\n ausgegangen, dass die Komponente denselben Namen hat wie das erste\n Argument des Befehls.\n um auf die Komponente zu warten, die den angegebenen <Name> haben wird.\n Dies gilt nur, wenn die Komponente eine Namensoption hat.\n um zu warten, bis das Programm beendet wird\n um den R\u00fcckgabewert des Programms zu ignorieren (mit -w)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n -n\n \n 212 / 1331\n \n Benennt eine Komponente, sofern dies eine zul\u00e4ssige Option f\u00fcr diese\n Komponente ist.\n@@ -11427,15 +11427,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 213 / 1331\n \n Abbildung 5.4: Signalrichtung (engl. 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\n the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -11462,15 +11462,15 @@\n \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 Syntax and Examples of setp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 214 / 1331\n \n setp <pin/parameter-name> <value>\n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6\n@@ -11513,15 +11513,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 <signame> and the data type of <type>.\n Type must be bit, s32, u32 or float. Error if <signame> already exists.\n Syntax and Examples of newsig\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 215 / 1331\n \n newsig <signame> <type>\n newsig Xstep bit\n \n Weitere Informationen finden Sie im HAL-Handbuch oder in den Man Pages f\u00fcr halrun.\n@@ -11561,15 +11561,15 @@\n ge\u00e4ndert werden, wenn Sie den Stepper-Konfigurationsassistenten verwendet haben.\n \u2022 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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 216 / 1331\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@@ -11620,15 +11620,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.2\n \n 217 / 1331\n \n not\n \n@@ -11684,15 +11684,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.4\n \n 218 / 1331\n \n xor2\n \n@@ -11747,15 +11747,15 @@\n \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 Syntax for loading component weighted_sum\n loadrt weighted_sum wsum_sizes=size[,size,...]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 219 / 1331\n \n Creates groups of \u0300 \u0300weighted_sum \u0300 \u0300s, each with the given number of input bits (size).\n Um die \u201dweighted_sum\u201d zu aktualisieren, muss der \u201dprocess_wsums\u201d an einen Thread angeh\u00e4ngt\n werden.\n Add process_wsums to servo thread\n@@ -11845,15 +11845,15 @@\n loadrt and2 count=3\n \n Configurations are more readable if you specify with the names= option for components where it is\n supported, e.g.:\n Example load command resulting in explicitly named components aa, ab, ac.\n loadrt and2 names=aa,ab,ac\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 220 / 1331\n \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@@ -11889,15 +11889,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 221 / 1331\n \n loadrt ddt names=xvel,yvel,zvel\n ...\n loadrt ddt names=xaccel,yaccel,zaccel\n \n@@ -11939,15 +11939,15 @@\n 5.3.3 Ausschlie\u00dfen von HAL-Dateien\n TWOPASS processing converts .hal files to equivalent .tcl files and uses haltcl to find loadrt and addf\n commands in order to accumulate and consolidate their usage. Loadrt parameters that conform to\n the simple names= (or count=) parameters accepted by the HAL Component Generator (halcompile)\n are expected. More complex parameter items included in specialized LinuxCNC components may not\n be handled properly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 222 / 1331\n \n A .hal file may be excluded from TWOPASS processing by including a magic comment line anywhere in\n the .hal file. The magic comment line must begin with the string: #NOTWOPASS. Files specified with this\n magic comment are sourced by halcmd using the -k (keep going if failure) and -v (verbose) options.\n Diese Ausschlussbestimmung kann verwendet werden, um Probleme zu isolieren oder um spezielle\n@@ -11982,15 +11982,15 @@\n \n 5.4 HAL Tutorial\n 5.4.1 Einf\u00fchrung\n Die Konfiguration geht von der Theorie zum Ger\u00e4t \u00fcber - dem HAL-Ger\u00e4t. F\u00fcr diejenigen, die nur ein\n wenig Erfahrung mit Computerprogrammierung haben, ist dieser Abschnitt das \u201dHello World\u201d des\n HAL.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 223 / 1331\n \n halrun kann verwendet werden, um ein funktionierendes System zu erstellen. Es ist ein Kommandozeilenoder Textdateiwerkzeug f\u00fcr Konfiguration und Tuning.\n \n 5.4.2 Halcmd\n halcmd ist ein Befehlszeilentool zum Manipulieren von HAL. Eine vollst\u00e4ndigere Manpage existiert\n@@ -12030,15 +12030,15 @@\n Linux. Unfortunately, each RTOS does things a little differently.\n Um diese Unterschiede zu beseitigen, hat das LinuxCNC-Team die RTAPI entwickelt, die einen einheitlichen Weg f\u00fcr Programme bietet, um mit dem RTOS zu kommunizieren. Wenn Sie ein Programmierer\n sind, der an den Interna von LinuxCNC arbeiten will, sollten Sie vielleicht linuxcnc/src/rtapi/rtapi.h\n studieren, um die API zu verstehen. Aber wenn Sie eine normale Person sind, ist alles, was Sie \u00fcber\n RTAPI wissen m\u00fcssen, dass es (und das RTOS) in den Speicher Ihres Computers geladen werden muss,\n bevor Sie etwas mit HAL machen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 224 / 1331\n \n 5.4.3 Ein einfaches Beispiel\n 5.4.3.1 Laden einer Komponente\n F\u00fcr dieses Tutorial gehen wir davon aus, dass Sie die Live-CD erfolgreich installiert haben und, falls\n Sie eine RIP footnote: [Run In Place, wenn die Quelldateien in ein Benutzerverzeichnis heruntergeladen wurden und direkt von dort aus kompiliert und ausgef\u00fchrt werden] Installation verwenden, das\n@@ -12087,15 +12087,15 @@\n halcmd at the same time (in different terminal windows for example), so the PID is added to the end of\n the name to make it unique. The list also shows the siggen component that we installed in the previous\n step. The RT under Type indicates that siggen is a realtime component. The User under Type indicates\n it is a non-realtime component.\n Next, let\u2019s see what pins siggen makes available:\n Pins anzeigen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 225 / 1331\n \n halcmd: show pin\n Component Pins:\n Owner\n Type\n@@ -12190,15 +12190,15 @@\n to any threads, so users is zero 1 .\n 5.4.3.3 Echtzeitcode zum Laufen bringen\n To actually run the code contained in the function siggen.0.update, we need a realtime thread. The\n component called threads that is used to create a new thread. Lets create a thread called \u201dtest-thread\u201d\n with a period of 1 ms (1,000 \u00b5s or 1,000,000 ns):\n 1 CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 226 / 1331\n \n halcmd: loadrt threads name1=test-thread period1=1000000\n \n Mal sehen, ob das funktioniert:\n Threads anzeigen\n@@ -12293,15 +12293,15 @@\n Owner\n Type Dir\n \n Value\n \n Name\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12414,15 +12414,15 @@\n Das meiste, was wir bisher mit halcmd gemacht haben, war einfach das Anzeigen von Dingen mit dem\n show-Befehl. Zwei der Befehle haben jedoch tats\u00e4chlich Dinge ver\u00e4ndert. Wenn wir komplexere Systeme mit HAL entwerfen, werden wir viele Befehle verwenden, um die Dinge genau so zu konfigurieren,\n wie wir sie haben wollen. HAL hat ein Ged\u00e4chtnis wie ein Elefant und beh\u00e4lt diese Konfiguration bei,\n bis wir es abschalten. Aber was ist beim n\u00e4chsten Mal? Wir wollen nicht jedes Mal, wenn wir das\n System benutzen wollen, eine Reihe von Befehlen manuell eingeben.\n Saving the configuration of the entire HAL with a single command.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 228 / 1331\n \n halcmd: save\n # Komponenten\n loadrt threads name1=test-thread period1=1000000\n loadrt siggen\n@@ -12458,15 +12458,15 @@\n file saved.hal to add it there).\n 5.4.3.8 HAL aus dem Speicher entfernen\n Wenn eine HAL-Sitzung unerwartet beendet wird, m\u00fcssen Sie m\u00f6glicherweise HAL entladen, bevor\n eine neue Sitzung beginnen kann. Geben Sie dazu den folgenden Befehl in ein Terminalfenster ein.\n Removing HAL\n halrun -U\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.4.4\n \n 229 / 1331\n \n Halmeter\n \n@@ -12504,27 +12504,27 @@\n halcmd: start\n halcmd: setp siggen.0.amplitude 5\n \n At this point we have the siggen component loaded and running. It\u2019s time to start halmeter.\n Halmeter starten\n halcmd: loadusr halmeter\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 230 / 1331\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 231 / 1331\n \n Abbildung 5.6: Halmeter-Fenster\n To change what the meter displays press the \u201dSelect\u201d button which brings back the \u201dSelect Item to\n Probe\u201d window.\n Sie sollten sehen, wie sich der Wert \u00e4ndert, wenn siggen seine Kosinuswelle erzeugt. Das Halmeter\n@@ -12554,15 +12554,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 232 / 1331\n \n halcmd: show pin\n Component Pins:\n Owner\n Type Dir\n@@ -12744,15 +12744,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 233 / 1331\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@@ -12810,15 +12810,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 234 / 1331\n \n halcmd: show funct\n Exported Functions:\n Owner\n CodeAddr Arg\n@@ -12902,15 +12902,15 @@\n (\n slow (\n \n Time, Max-Time )\n 0,\n 0 )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 49849\n \n NO\n \n 1 siggen.0.update\n 2 stepgen.update-freq\n@@ -12961,39 +12961,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 236 / 1331\n \n Halscope has two parts - a realtime part that reads the HAL signals, and a non-realtime part that\n provides the GUI and display. However, you don\u2019t need to worry about this because the non-realtime\n part will automatically load the realtime part when needed.\n With LinuxCNC running in a terminal you can start halscope with the following command.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 237 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 238 / 1331\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@@ -13005,34 +13005,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 239 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 240 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 241 / 1331\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@@ -13042,15 +13042,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 242 / 1331\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@@ -13059,30 +13059,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 243 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 244 / 1331\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@@ -13091,15 +13091,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 245 / 1331\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@@ -13108,15 +13108,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 246 / 1331\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@@ -13125,15 +13125,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 247 / 1331\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@@ -13147,15 +13147,15 @@\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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 248 / 1331\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 Verbinden von zwei Ausg\u00e4ngen\n@@ -13217,15 +13217,15 @@\n pin. From the direction arrow you can see that the button is and output and the or2.0.in0 is an input.\n The output from or2 goes to the input of the LED.\n \n 5.5.2 Manueller Werkzeugwechsel\n In this example it is assumed that you\u2019re rolling your own configuration and wish to add the HAL\n Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 249 / 1331\n \n tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is\n best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to\n 1. load the hal_manualtoolchange component,\n 2. then send the iocontrol tool change to the hal_manualtoolchange change and\n@@ -13265,15 +13265,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 250 / 1331\n \n In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per\n minute (IPM) that we get from the ddt.0.out.\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@@ -13286,15 +13286,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 this example we have a servo motor driving a lathe spindle. If we just used the commanded\n spindle speeds on the servo it will try to go from present speed to commanded speed as fast as it\n can. This could cause a problem or damage the drive. To slow the rate of change we can send the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 251 / 1331\n \n spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to\n new settings more slowly.\n Die drei eingebauten Komponenten, die ein Signal begrenzen, sind:\n \u2022 limit2 begrenzt den Bereich und die erste Ableitung eines Signals.\n@@ -13334,15 +13334,15 @@\n Signals tab. Repeat for channels 2-4 and add lowpass, limit2, and limit3.\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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 252 / 1331\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@@ -13356,15 +13356,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 Im folgenden Beispiel haben wir ein einfaches GladeVCP-Panel mit einem Schrittmotor.\n Grundlegende (engl. basic) Syntax\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 253 / 1331\n \n # L\u00e4dt die GUI winder.glade und nennt diese winder\n loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade\n # load Echtzeit-Komponenten\n loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000\n@@ -13401,15 +13401,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 254 / 1331\n \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 num_dio=[\u20191-64\u2019] num_aio=[\u20191-16\u2019] unlock_joints_mask=[\u20190xNN\u2019]\n num_spindles=[\u20191-8\u2019]\n@@ -13446,15 +13446,15 @@\n Diese Pins, Parameter und Funktionen werden durch das Echtzeitmodul motmod angelegt.\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 umgekehrter Richtung.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 255 / 1331\n \n \u2022 motion.analog-in-00 - (float, in) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden von\n M66 gesteuert.\n \u2022 motion.analog-out-00 - (float, out) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden\n von M67 oder M68 gesteuert.\n@@ -13493,15 +13493,15 @@\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 um die Geschwindigkeits- und Beschleunigungsgrenzen der Maschine zu ber\u00fccksichtigen. Der Wert\n an diesem Pin spiegelt nicht den Vorschub-Override oder andere Anpassungen wider.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 256 / 1331\n \n \u2022 motion.teleop-mode - (bit, out) TRUE wenn die Bewegung im teleop mode (Fernsteuerungs-Modus)\n ist, im Gegensatz zum coordinated mode (Koordinaten-Modus)\n \u2022 motion.tooloffset.x \u2026 motion.tooloffset.w - (float, out, einer pro Achse) zeigt den aktuellen Werkzeugversatz an; er kann aus der Werkzeugtabelle (G43 aktiv) oder aus dem G-Code (G43.1 aktiv)\n stammen\n@@ -13533,15 +13533,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 257 / 1331\n \n 5.6.1.4 Funktionen\n Im Allgemeinen werden diese beiden Funktionen in der angegebenen Reihenfolge zum Servo-Thread\n hinzugef\u00fcgt.\n \u2022 motion-command-handler - Receives and processes motion commands\n@@ -13576,15 +13576,15 @@\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 \u2022 spindle.N.speed-out - (float, out) Befohlene Spindeldrehzahl in Umdrehungen pro Minute. Positiv\n f\u00fcr Spindel vorw\u00e4rts (M3), negativ f\u00fcr Spindel r\u00fcckw\u00e4rts (M4).\n \u2022 spindle.N.speed-out-abs - (Float, out) Geforderte Spindeldrehzahl in Umdrehungen pro Minute. Dies\n ist immer eine positive Zahl.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 258 / 1331\n \n \u2022 spindle.N.speed-out-rps - (float, out) Geforderte Spindeldrehzahl in Umdrehungen pro Sekunde.\n Positiv f\u00fcr Spindel vorw\u00e4rts (M3), negativ f\u00fcr Spindel r\u00fcckw\u00e4rts (M4).\n \u2022 spindle.N.speed-out-rps-abs - (float, out) Befohlene Spindeldrehzahl in Umdrehungen pro Sekunde.\n Dies ist immer eine positive Zahl.\n@@ -13617,15 +13617,15 @@\n Au\u00dferdem kann jeder der Befehle M3, M4 oder M5 entweder den Modus Suche nach gew\u00fcnschter\n Orientierung oder Orientierung abgeschlossen abbrechen. Dies wird durch das Deassertieren der Pins\n spindle-orient und spindle-locked angezeigt.\n Der Pin \u201dspindle-orient-mode\u201d spiegelt das M19 P-Wort wider und ist wie folgt zu interpretieren:\n \u2022 0: Drehen im oder gegen den Uhrzeigersinn f\u00fcr kleinste Winkelbewegung\n \u2022 1: immer rot\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 259 / 1331\n \n \u2022 2: immer gegen den Uhrzeigersinn drehen\n Sie kann mit der HAL-Komponente \u201dorient\u201d verwendet werden, die einen PID-Befehlswert auf der\n Grundlage der Spindelgeberposition, des spindle-orient-angle (\u201dSpindelorientierungswinkel\u201d) and\n spindle-orient-mode (\u201dSpindelorientierungsmodus\u201d) liefert.\n@@ -13654,15 +13654,15 @@\n \u2022 iocontrol.0.tool-prepared (bit, in) Should be driven TRUE when a tool prepare is completed.\n \u2022 iocontrol.0.user-enable-out (bit, out) FALSE when an internal E-Stop condition exists.\n \u2022 iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-Stop be cleared.\n \n 5.6.5 INI-Einstellungen\n Eine Reihe von INI-Einstellungen werden als HAL Eingangspins zur Verf\u00fcgung gestellt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 260 / 1331\n \n 5.6.5.1 Pins )\n N bezieht sich auf eine Gelenknummer, L auf einen Achsenbuchstaben.\n \u2022 \u201dini.N.ferror\u2019 - (float, in) [JOINT_N]FERROR\n \u2022 ini.N.min_ferror - (float, in) [JOINT_N]MIN_FERROR\n@@ -13694,15 +13694,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 \u2022 ini.traj_default_acceleration - (float, in) [TRAJ]DEFAULT_ACCELERATION\n \u2022 ini.traj_default_velocity - (float, in) [TRAJ]DEFAULT_VELOCITY\n \u2022 ini.traj_max_acceleration - (float, in) [TRAJ]MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 261 / 1331\n \n 5.7 HAL Component List\n 5.7.1 Komponenten\n Most of the commands in the following list have their own dedicated man pages. Some will have\n expanded descriptions, some will have limited descriptions. From this list you know what components\n@@ -13767,15 +13767,15 @@\n Vismach Virtuelle Maschine GUI\n Vismach Virtuelle Maschine GUI\n Vismach Virtuelle Maschine GUI\n Vismach Virtuelle Maschine GUI\n hexagui - Vismach Virtual Machine-GUI\n hexagui - Vismach Virtual Machine-GUI\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n puma560gui\n pumagui\n rotarydelta\n scaragui\n xyzac-trtgui\n xyzbc-trtgui\n@@ -13852,15 +13852,15 @@\n 5.7.1.4 Mesa und andere I/O-Karten (Echtzeit)\n hal_ppmc\n hal_bb_gpio\n \n Pico Systems Treiber f\u00fcr analoge Servo-, PWM- und Stepper-Controller\n Treiber f\u00fcr Beaglebone GPIO-Pins\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 263 / 1331\n \n hal_parport\n \n Realtime HAL component to communicate with one or more PC parallel\n ports\n@@ -13940,15 +13940,15 @@\n latencyPlottet Histogramm der Maschinenlatenz\n histogram\n latency-plot Eine weitere M\u00f6glichkeit, Latenzzahlen anzuzeigen\n latency-test Testen der Latenzzeit des Echtzeitsystems\n pncconf\n Konfigurationsassistent f\u00fcr Mesa-Karten\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n setsserial\n \n sim_pin\n stepconf\n \n 264 / 1331\n@@ -14039,15 +14039,15 @@\n Verwendet einen Parameter, um den Wert eines Pins festzulegen\n Counts input pulses (deprecated). Use the encoder component.\n Berechnet die Ableitung der Eingangsfunktion.\n Gibt den Mittelpunkt zur\u00fcck, wenn er sich innerhalb des Schwellenwerts\n befindet.\n Quotient of two floating point inputs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 265 / 1331\n \n hypot\n Rechner f\u00fcr die Hypotenuse (euklidischer Abstand) mit drei Eingaben.\n ilowpass\n Tiefpassfilter mit ganzzahligen Ein- und Ausg\u00e4ngen\n@@ -14125,15 +14125,15 @@\n conv_u32_s32 Konvertiert von u32 nach s32\n gray2bin\n Konvertiert Gray-Code-Eingabe in Bin\u00e4rformat\n 2 Wenn der Eingang eine Position ist, bedeutet dies, dass die Position begrenzt ist.\n 3 When the input is a position, this means that position and velocity are limited.\n 4 When the input is a position, this means that the position, velocity, and acceleration are limited.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 266 / 1331\n \n 5.7.1.7 Kinematiken (Echtzeit)\n corexy_by_hal CoreXY-Kinematiken\n differential\n Kinematik f\u00fcr ein Differentialgetriebe\n@@ -14206,15 +14206,15 @@\n Software-Schrittimpulsgenerierung, siehe Beschreibung.\n \n 5.7.1.10 Sonstiges (Echtzeit)\n comp\n \n Erstellen, kompilieren und installieren Sie LinuxCNC HAL Komponenten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 267 / 1331\n \n classicladder Echtzeit-Software-SPS (engl. PLC), die auf Kontaktplan-Logik basiert.\n Siehe Kapitel ClassicLadder f\u00fcr weitere Informationen.\n threads\n Erzeugt harte Echtzeit-HAL-Threads.\n@@ -14278,15 +14278,15 @@\n hal_param_u32_newf.3hal\n hal_parport.3hal\n hal_pin_bit_new.3hal\n hal_pin_bit_newf.3hal\n hal_pin_float_new.3hal\n hal_pin_float_newf.3hal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n hal_pin_new.3hal\n hal_pin_s32_new.3hal\n hal_pin_s32_newf.3hal\n hal_pin_u32_new.3hal\n hal_pin_u32_newf.3hal\n hal_ready.3hal\n@@ -14337,15 +14337,15 @@\n rtapi_print.3rtap\n rtapi_prio.3rtapi\n rtapi_prio_highest.3rtapi\n rtapi_prio_lowest.3rtapi\n \n 268 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 269 / 1331\n \n rtapi_prio_next_higher.3rtapi\n rtapi_prio_next_lower.3rtapi\n rtapi_region.3rtapi\n rtapi_release_region.3rtapi\n@@ -14374,21 +14374,21 @@\n velocity mode, it drives a motor at the commanded speed, while obeying velocity and acceleration limits. It is a realtime component only, and depending on CPU speed, etc., is capable of maximum step\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 5.19: Schrittimpulsgenerator-Blockdiagramm Positionsmodus\n \n 270 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 271 / 1331\n \n Laden der Komponente stepgen\n halcmd: loadrt stepgen step_type=<type-array> [ctrl_type=<ctrl_array>]\n \n <type-array>\n@@ -14437,15 +14437,15 @@\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-C \u0300 - Phase C output (step types 3-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-D \u0300 - Phase D output (step types 5-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-E \u0300 - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 272 / 1331\n \n 5.8.1.2 Parameter\n \u2022 (float) stepgen. \u0300\n __<chan>__.position-scale \u0300 - Steps per position unit. This parameter is used for\n both output and feedback.\n@@ -14494,15 +14494,15 @@\n 1 ns, but the automatic rounding takes effect the first time the code runs. Since one step requires\n steplen ns high and stepspace ns low, the maximum frequency is 1,000,000,000 divided by (steplen\n + stepspace)\u2019. If maxfreq is set higher than that limit, it will be lowered automatically. If maxfreq is\n zero, it will remain zero, but the output 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 273 / 1331\n \n Abbildung 5.20: Schritt- und Richtungs-Timing (engl. step and direction timing)\n Schritt Typ 1 (step type 1) Step type 1 has two outputs, up and down. Pulses appear on one or the\n other, depending on the direction of travel. Each pulse is steplen ns long, and the pulses are separated\n by at least stepspace ns. The maximum frequency is the same as for step type 0. If maxfreq is set higher\n@@ -14513,33 +14513,33 @@\n Do not use the parport reset function with step types 2 - 14. Unexpected results can happen.\n \n Schritt Typen 2 - 14 (engl. step type 2-14) Step types 2 through 14 are state based, and have from\n two to five outputs. On each step, a state counter is incremented or decremented. The Two-and-ThreePhase, Four-Phase, and Five-Phase show the output patterns as a function of the state counter. The\n maximum frequency is 1,000,000,000 divided by steplen, and as in the other modes, maxfreq will be\n lowered if it is above the limit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 5.21: Zwei- und dreiphasige Schritttypen\n \n 274 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 5.22: Vierphasige Schritttypen\n \n 275 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 5.23: F\u00fcnf-Phasen-Schritttypen\n \n 276 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 277 / 1331\n \n 5.8.1.4 Funktionen\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 \u2022 (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point).\n@@ -14574,15 +14574,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 <config-array> is not not specified, no PWM generator will be installed. The maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator\n is independent, but all are updated by the same function(s), at the same time. In the descriptions that\n follow, <chan> is the number of specific generators. The numbering of PWM generators starts at 0.\n Entfernen (engl. hier unloading) von PWMgen\n unloadrt pwmgen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 278 / 1331\n \n 5.8.2.1 Ausgangstypen (engl. output types)\n Der PWM-Generator unterst\u00fctzt drei verschiedene \u201dAusgangstypen\u201d.\n \u2022 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@@ -14626,15 +14626,15 @@\n to zero when disabled, regardless of this setting).\n \u2022 (float) pwmgen. \u0300\n __<chan>__.max-dc \u0300 - Maximum duty cycle, between 0.0 and 1.0.\n \u2022 (float) pwmgen. \u0300\n __<chan>__.curr-dc \u0300 - Current duty cycle - after all limiting and rounding (read\n only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 279 / 1331\n \n 5.8.2.4 Funktionen\n Die Komponente exportiert zwei Funktionen. Jede Funktion wirkt auf alle PWM-Generatoren - die\n Ausf\u00fchrung verschiedener Generatoren in verschiedenen Threads wird nicht unterst\u00fctzt.\n \u2022 (funct) pwmgen.make-pulses - High speed function to generate PWM waveforms (no floating point).\n@@ -14655,15 +14655,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 Das Blockdiagramm des Encoderz\u00e4hlers ist ein Blockdiagramm eines Kanals eines Encoderz\u00e4hlers.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 280 / 1331\n \n Abbildung 5.24: Encoderz\u00e4hler-Blockdiagramm\n Laden des Encoders\n halcmd: loadrt encoder [num_chan=<counters>]\n \n@@ -14677,15 +14677,15 @@\n \n 5.8.3.1 Pins\n \u2022 encoder._<chan>_.counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true,\n the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is\n useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in\n quadrature mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 281 / 1331\n \n \u2022 encoder._<chan>_.missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index.\n This allows a single IO pin to provide both position and index information. If the encoder wheel has\n 58 teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then\n the position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should\n@@ -14724,15 +14724,15 @@\n pulse.\n \u2022 encoder._<chan>_.reset (bit, In) - When True, force counts and position to zero immediately.\n \u2022 encoder._<chan>_.velocity (float, Out) - Velocity in scaled units per second. encoder uses an\n 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 is\n 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 282 / 1331\n \n \u2022 encoder._<chan>_.x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it only\n counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for\n some jogwheels.\n 5.8.3.2 Parameter\n@@ -14748,15 +14748,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 283 / 1331\n \n Abbildung 5.25: PID-Regelkreis-Blockdiagramm\n PID laden\n halcmd: loadrt pid [num_chan=<loops>] [debug=1]\n \n@@ -14768,15 +14768,15 @@\n cluttering the pin list.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 284 / 1331\n \n \u2022 (float) pid. \u0300\n __<loopnum>__.command \u0300 - The desired position, as commanded by another system\n component.\n \u2022 (float) pid. \u0300\n@@ -14813,15 +14813,15 @@\n \u2022 (float) pid. <loopnum>. FF2 - Feedforward zweiter Ordnung - Ausgabe proportional zur 2. Ableitung\n des Befehls (Beschleunigung).\n \u2022 (float) pid.<loopnum>.deadband - Betrag des Fehlers, der ignoriert wird\n \u2022 (float) pid. <loopnum>.maxerror - Fehlerbegrenzung\n \u2022 (float) pid. <loopnum>.maxerrorI - Limit f\u00fcr Fehlerintegrator\n \u2022 (float) pid. <loopnum>.maxerrorD - Limit f\u00fcr Fehlerableitung\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 285 / 1331\n \n \u2022 (float) pid.<loopnum>.maxcmdD - Begrenzung der Befehlsableitung\n \u2022 (float) pid.<loopnum>.maxcmdDD - Begrenzung der 2. Ableitung des Befehls\n \u2022 (float) pid. <loopnum>.maxoutput - Grenzwert f\u00fcr Ausgangswert\n Alle max*-Grenzwerte sind so implementiert, dass es keinen Grenzwert gibt, wenn der Wert dieses\n@@ -14858,15 +14858,15 @@\n __<chan-num>__.phase-A \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-B \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-Z \u0300 - Index pulse output.\n When .speed is positive, .phase-A leads .phase-B.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 286 / 1331\n \n 5.8.5.2 Parameter\n \u2022 (u32) sim-encoder. \u0300\n __<chan-num>__.ppr \u0300 - Pulses Per Revolution.\n \u2022 (float) sim-encoder. \u0300\n@@ -14903,15 +14903,15 @@\n 5.8.6.1 Pins\n Jeder einzelne Filter hat zwei Pins.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.in \u0300 - Input of filter <F> in group <G>.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.out \u0300 - Output of filter <F> in group <G>.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 287 / 1331\n \n 5.8.6.2 Parameter\n Each group of filters has one parameter5 .\n \u2022 (s32) debounce. \u0300\n __<G>__.delay \u0300 - Filter delay for all filters in group <G>.\n@@ -14949,15 +14949,15 @@\n \u2022 (float) siggen. \u0300\n __<chan>__.triangle \u0300 - Triangle wave output.\n \u2022 (float) siggen. \u0300\n __<chan>__.square \u0300 - Square wave output.\n 5 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 288 / 1331\n \n Alle f\u00fcnf Ausg\u00e4nge haben die gleiche Frequenz, Amplitude und Offset.\n Zus\u00e4tzlich zu den Ausgangspins gibt es drei Steuerpins:\n \u2022 (float) siggen. \u0300\n __<chan>__.frequency \u0300 - Sets the frequency in Hertz, default value is 1 Hz.\n@@ -15035,15 +15035,15 @@\n 0\n \n Ausgabe\n \n 6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 289 / 1331\n \n Tabelle 5.22: (continued)\n Bit 4\n 0\n 0\n@@ -15226,15 +15226,15 @@\n function is 0xa. The hexadecimal prefix is 0x.\n \n 5.9 HAL Component Generator\n 5.9.1 Einf\u00fchrung\n This section introduces to the compilation HAL components, i.e. the addition of some machinists\u2019\n knowledge on how to deal with the machine. It should be noted that such components do not ne-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 290 / 1331\n \n cessarily deal with the hardware directly. They often do, but not necessarily, e.g. there could be a\n component to convert between imperial and metric scales, so this section does not require to dive\n into the interaction with hardware.\n Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions\n@@ -15274,15 +15274,15 @@\n loadrt threads name1=servo-thread period1=1000000\n loadrt ddt\n addf ddt.0 servo-thread\n \n More information on loadrt and addf can be found in the HAL Grundlagen.\n Um Ihre Komponente zu testen, k\u00f6nnen Sie den Beispielen im HAL Tutorial folgen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 291 / 1331\n \n 5.9.4 Definitionen\n \u2022 component - A component is a single real-time module, which is loaded with halcmd loadrt. One\n .comp file specifies one component. The component name and file name must match.\n \u2022 instance - A component can have zero or more instances. Each instance of a component is created\n@@ -15317,15 +15317,15 @@\n \u2022 option OPT (VALUE);\n \u2022 variable CTYPE STARREDNAME ([SIZE]);\n \u2022 description DOC;\n \u2022 examples DOC;\n \u2022 notes DOC;\n \u2022 see_also DOC;\u2019\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 292 / 1331\n \n \u2022 license LICENSE;\n \u2022 author AUTHOR;\n \u2022 include HEADERFILE;\n Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate\n@@ -15376,15 +15376,15 @@\n \u2022 SIZE - Eine Zahl, um die Gr\u00f6\u00dfe eines Arrays anzugeben. Die Array-Elemente sind von 0 bis SIZE-1\n nummeriert.\n \u2022 MAXSIZE : CONDSIZE - A number that gives the maximum size of the array, followed by an expression involving the variable personality and which always evaluates to less than MAXSIZE. When the\n array is created its size will be CONDSIZE.\n \u2022 DOC - Eine Zeichenfolge, die das Element dokumentiert. Die Zeichenfolge kann eine \u201ddoppelt in\n Anf\u00fchrungszeichen\u201d gesetzte Zeichenfolge im C-Stil sein, z. B.:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 293 / 1331\n \n \u201dW\u00e4hlt die gew\u00fcnschte Flanke aus: TRUE bedeutet fallend, FALSE bedeutet steigend\u201d\n \n oder eine \u201ddreifach in Anf\u00fchrungszeichen\u201d gesetzte Zeichenfolge im Python-Stil, die eingebettete\n Zeilenumbr\u00fcche und Anf\u00fchrungszeichen enthalten kann, z. B.:\n@@ -15422,15 +15422,15 @@\n 5.9.7.2 Optionen\n Die derzeit definierten Optionen sind:\n \u2022 option singleton yes - (default: no) Do not create a count module parameter, and always create a single instance. With singleton, items are named component-name.item-name and without singleton,\n items for numbered instances are named component-name.<num>.item-name.\n \u2022 option default_count number\u2019 - (Standardwert: 1) Normalerweise ist der Modulparameter count auf\n 1 voreingestellt. Ist er angegeben, so wird count stattdessen auf diesen Wert gesetzt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 294 / 1331\n \n \u2022 option count_function yes - (Voreinstellung: no) Normalerweise wird die Anzahl der zu erstellenden\n Instanzen im Modulparameter count angegeben; wenn count_function angegeben ist, wird stattdessen der von der Funktion int get_count(void) zur\u00fcckgegebene Wert verwendet, und der Modulparameter count ist nicht definiert.\n \u2022 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@@ -15471,15 +15471,15 @@\n above) is set to no. When compiling a non-realtime component, the arguments given are inserted\n in the compiler command line. If the input file is a .c file this option can be set in the halcompile\n command-line with --extra-compile-args=\u201d-I\u2026..\u201d. This alternative provides a way to set extra flags\n in cases where the input file is a .c file rather than a .comp file.\n \u2022 option homemod yes - (default: no)\n Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename .\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 295 / 1331\n \n \u2022 option tpmod yes - (default: no)\n Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename .\n Wenn der VALUE (engl. f\u00fcr Wert) einer Option nicht angegeben wird, ist dies gleichbedeutend mit der\n Angabe von option \u2026 yes.\n@@ -15513,15 +15513,15 @@\n Einzeilige Kommentare im C++-Stil (//...) und mehrzeilige Kommentare im C-Stil (/* ... */) werden beide im Deklarationsabschnitt unterst\u00fctzt.\n \n 5.9.8 Einschr\u00e4nkungen\n Obwohl HAL erlaubt, dass ein Pin, ein Parameter und eine Funktion denselben Namen haben k\u00f6nnen,\n ist dies bei halcompile nicht der Fall.\n Zu den Variablen- und Funktionsnamen, die nicht verwendet werden k\u00f6nnen oder zu Problemen f\u00fchren k\u00f6nnen, geh\u00f6ren:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 296 / 1331\n \n \u2022 Alles, was mit _comp beginnt.\n \u2022 comp_id\n \u2022 fperiod\n \u2022 rtapi_app_main\n@@ -15561,15 +15561,15 @@\n they do in realtime functions.\n \n 5.9.10 Komponenten mit einer Funktion\n If a component has only one function and the string \u201dFUNCTION\u201d does not appear anywhere after ;;,\n then the portion after ;; is all taken to be the body of the component\u2019s single function. See the Simple\n Comp for an example of this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 297 / 1331\n \n 5.9.11 Komponenten-Pers\u00f6nlichkeit\n Wenn eine Komponente Pins oder Parameter mit einer \u201dif-Bedingung\u201d oder \u201d[maxsize : condsize]\u201d hat,\n wird sie als Komponente mit \u201dPers\u00f6nlichkeit\u201d bezeichnet. Die \u201dPers\u00f6nlichkeit\u201d jeder Instanz wird beim\n Laden des Moduls festgelegt. Die \u201dPers\u00f6nlichkeit\u201d kann verwendet werden, um Pins nur bei Bedarf\n@@ -15606,15 +15606,15 @@\n Anmerkung\n sudo (f\u00fcr Root-Rechte) wird ben\u00f6tigt, wenn Sie LinuxCNC aus einem Deb-Paket installieren. Wenn Sie\n einen Run-In-Place (RIP) Build verwenden, sollten Root-Rechte nicht erforderlich sein.\n \n Oder es kann in einem Schritt verarbeitet und kompiliert werden, wobei example.ko (oder example.so\n f\u00fcr den Simulator) im aktuellen Verzeichnis verbleibt:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 298 / 1331\n \n halcompile --compile rtexample.comp\n \n Oder es kann einfach verarbeitet werden, wobei die Datei \u201dexample.c\u201d im aktuellen Verzeichnis verbleibt:\n halcompile rtexample.comp\n@@ -15656,15 +15656,15 @@\n pin out float out;\n param r float value = 1.0;\n function _;\n license \u201dGPL\u201d; // bedeutet GPL v2 oder h\u00f6her\n ;;\n FUNCTION(_) { out = value; }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 299 / 1331\n \n 5.9.15.2 sincos\n This component computes the sine and cosine of an input angle in radians. It has different capabilities\n than the \u201dsine\u201d and \u201dcosine\u201d outputs of siggen, because the input is an angle, rather than running\n freely based on a \u201dfrequency\u201d parameter.\n@@ -15710,15 +15710,15 @@\n // Setze diesen I/O-Port auf 0, damit EXTRA_CLEANUP die IO-Ports nicht freigibt,\n // die nie angefordert wurden.\n io[extra_arg] = 0;\n return -EBUSY;\n }\n ioaddr = io[extra_arg];\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 300 / 1331\n \n return 0;\n }\n EXTRA_CLEANUP() {\n int i;\n@@ -15760,15 +15760,15 @@\n ;;\n #include <unistd.h>\n void user_mainloop(void) {\n while(1) {\n usleep(1000);\n FOR_ALL_INSTS() out = drand48();\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 301 / 1331\n \n }\n }\n \n 5.9.15.7 logic\n@@ -15812,15 +15812,15 @@\n Dieses Beispiel zeigt, wie man Funktionen von der Hauptfunktion aus aufruft. Es zeigt auch, wie die\n Referenz von HAL-Pins an diese Funktionen \u00fcbergeben werden kann.\n component example;\n pin in s32 in;\n pin out bit out1;\n pin out bit out2;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 302 / 1331\n \n function _;\n license \u201dGPL\u201d;\n ;;\n // allgemeine Pin Set True Funktion\n@@ -15865,15 +15865,15 @@\n The .tcl extension is understood by the main script (linuxcnc) that processes INI files. Haltcl files are\n identified in the the HAL section of INI files (just like HAL files).\n Beispiel\n [HAL]\n HALFILE = conventional_file.hal\n HALFILE = tcl_based_file.tcl\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 303 / 1331\n \n Bei entsprechender Sorgfalt k\u00f6nnen HAL- und Tcl-Dateien miteinander vermischt werden.\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@@ -15917,15 +15917,15 @@\n Die gleichen Werte der INI-Datei sind in Tcl-Dateien in Form einer globalen Tcl-Array-Variable zug\u00e4nglich:\n $::SECTION(ITEM)\n \n Zum Beispiel, ein INI-Datei Element wie:\n [JOINT_0]\n MAX_VELOCITY = 4\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 304 / 1331\n \n is expressed as [JOINT_0]MAX_VELOCITY in HAL files for halcmd\n and as $::JOINT_0(MAX_VELOCITY) in Tcl files for 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@@ -15971,15 +15971,15 @@\n Beispiel\n # Verst\u00e4rkung f\u00fcr die Umrechnung von Grad/Sekunde in Einheiten/Minute f\u00fcr den\n JOINT_0-Radius festlegen\n setp scale.0.gain 6.28/360.0*$::JOINT_0(radius)*60.0\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 305 / 1331\n \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@@ -16023,15 +16023,15 @@\n \n 5.10.7 Haltcl Interaktiv\n The halrun command recognizes haltcl files. With the -T option, haltcl can be run interaactively as a\n Tcl interpreter. This capability is useful for testing and for standalone HAL applications.\n Beispiel\n $ halrun -T haltclfile.tcl\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 306 / 1331\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@@ -16072,15 +16072,15 @@\n halui.mdi-command-00 <= pyvcp.quillup\n net reference-pos halui.mdi-command-01 <= pyvcp.referencepos\n net call-mysub\n halui.mdi-command-02 <= pyvcp.callmysub\n \n Netze zum Verbinden der von halui bereitgestellten halui.mdi-command-NN-Pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 307 / 1331\n \n $ halcmd show pin halui.mdi\n Component Pins:\n Owner Type Dir Value Name\n 10 bit\n@@ -16118,15 +16118,15 @@\n \u2022 halui.feed-override.reset (bit, in) - Pin zum Zur\u00fccksetzen des FO (scale=1.0)\n \u2022 halui.feed-override.direct-value (bit, in) - falsch, wenn der Encoder verwendet wird, um die Anzahl\n zu \u00e4ndern, wahr, wenn die Anzahl direkt eingestellt wird.\n \u2022 halui.feed-override.scale (float, in) - Pin zum Einstellen der Skala f\u00fcr die Erh\u00f6hung und Verringerung\n des feed-override.\n \u2022 halui.feed-override.value (float, out) - aktueller FO-Wert\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 308 / 1331\n \n 5.11.4.4 Nebel (engl. mist)\n \u2022 halui.mist.is-on (bit, out) - zeigt an, dass Nebel eingeschaltet ist\n \u2022 halui.mist.off (bit, in) - Pin zum Anfordern von Nebel\n \u2022 halui.mist.on\u2019 (bit, in) - Pin zur Abfrage von Nebel ein\n@@ -16153,15 +16153,15 @@\n \u2022 halui.max-velocity.count-enable (bit, in) - muss true sein, damit counts oder direct-value funktionieren.\n \u2022 halui.max-velocity.counts (s32, in) - counts * scale = MV percentage. Kann mit einem Encoder oder\n direct-value verwendet werden.\n \u2022 halui.max-velocity.direct-value (bit, in) - false bei Verwendung des Encoders zum \u00c4ndern der Anzahl,\n true beim direkten Festlegen von Z\u00e4hlungen.\n \u2022 halui.max-velocity.decrease (bit, in) - Pin zur Verringerung der maximalen Geschwindigkeit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 309 / 1331\n \n \u2022 halui.max-velocity.increase (bit, in) - Pin zur Erh\u00f6hung der maximalen Geschwindigkeit\n \u2022 halui.max-velocity.scale (float, in) - der Betrag, der auf die aktuelle maximale Geschwindigkeit bei\n jedem \u00dcbergang von Aus zu Ein des An- oder Abnahmestiftes in Maschineneinheiten pro Sekunde\n angewendet wird.\n@@ -16191,15 +16191,15 @@\n \u2022 halui.joint.selected (u32 out) - ausgew\u00e4hlte Gelenknummer (0 \u2026 num_joints-1\n \u2022 halui.joint.selected.has-fault (bit out) - Status-Pin ausgew\u00e4hltes Gelenk ist fehlerhaft\n \u2022 halui.joint.selected.home (Bit in) - Pin f\u00fcr das Homing des ausgew\u00e4hlten Gelenks\n \u2022 halui.joint.s selected.is-homed (bit out) - Status-Pin, der angibt, dass das ausgew\u00e4hlte Gelenk referenziert ist\n \u2022 halui.joint.selected.on-hard-max-limit (bit out) - Status-Pin, der anzeigt, dass sich das ausgew\u00e4hlte\n Gelenk auf dem positiven Hardware-Limit befindet\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 310 / 1331\n \n \u2022 halui.joint.selected.on-hard-min-limit (bit out) - Status-Pin, der anzeigt, dass sich das ausgew\u00e4hlte\n Gelenk am negativen Hardware-Limit befindet\n \u2022 halui.joint.s selected.on-soft-max-limit (bit out) - Status-Pin, der angibt, dass sich das ausgew\u00e4hlte\n Gelenk auf der positiven Softwaregrenze befindet\n@@ -16226,15 +16226,15 @@\n \u2022 halui.joint.selected.increment-plus\u2019 (Bit in) - eine steigende Flanke bewirkt, dass das ausgew\u00e4hlte\n Gelenk um den Betrag des Inkrements in die positive Richtung bewegt wird\n \u2022 halui.joint.selected.minus\u2019 (bit in) - Pin zum Joggen des ausgew\u00e4hlten Gelenks in negativer Richtung\n mit der halui.joint.jog-speed Geschwindigkeit\n \u2022 halui.joint.selected.plus\u2019 (bit in) - Pin f\u00fcr das Joggen des ausgew\u00e4hlten Gelenks in positiver Richtung\n mit der halui.joint.jog-speed Geschwindigkeit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 311 / 1331\n \n 5.11.4.13 Achse\n L = Buchstabe der Achse (xyzabcuvw)\n \u2022 halui.axis.L.select (Bit) - Pin zur Auswahl der Achse anhand des Buchstaben\n \u2022 halui.axis.L.is-selected (Bit out) - Status-Pin, dass die Achse L ausgew\u00e4hlt ist\n@@ -16263,15 +16263,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 312 / 1331\n \n 5.11.4.15 Modus\n \u2022 halui.mode.auto (bit, in) - Pin zum Anfordern des automatischen Modus\n \u2022 halui.mode.is-auto (bit, out) - zeigt an, dass der Auto-Modus eingeschaltet ist\n \u2022 halui.mode.is-joint (bit, out) - zeigt an, dass der Gelenk-f\u00fcr-Gelenk (engl. joint by joint)-JoggingModus eingeschaltet ist\n@@ -16296,15 +16296,15 @@\n ist\n \u2022 halui.program.pause (bit, in) - Pin zum Anhalten eines Programms\n \u2022 halui.program.resume (bit, in) - Pin zum Fortsetzen eines pausierten Programms\n \u2022 halui.program.run (bit, in) - Pin zum Ausf\u00fchren eines Programms\n \u2022 halui.program.step (bit, in) - Pin f\u00fcr das Steppen eines Programms\n \u2022 halui.program.stop (bit, in) - Pin zum Stoppen eines Programms\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 313 / 1331\n \n 5.11.4.17 Eilgang-Override (engl. rapid override)\n \u2022 halui.rapid-override.count-enable\u2019 (Bit in (Standard: TRUE)) - Wenn TRUE, wird Rapid Override\n ge\u00e4ndert, wenn sich die Z\u00e4hlerst\u00e4nde \u00e4ndern.\n \u2022 halui.rapid-override.counts\u2019 (s32 in) - counts X scale = Rapid Override Prozentsatz. Kann mit einem\n@@ -16335,15 +16335,15 @@\n \u2022 halui.spindle.N.is-on (bit, out) - zeigt an, dass die Spindel eingeschaltet ist (in beide Richtungen)\n \u2022 halui.spindle.N.reverse (bit, in)- startet die Spindel mit einer Bewegung gegen den Uhrzeigersinn\n \u2022 halui.spindle.N.runs-backward (bit, out) - zeigt an, dass die Spindel eingeschaltet ist und umgekehrt\n \u2022 halui.spindle.N.runs-forward (bit, out) - zeigt an, dass die Spindel eingeschaltet und vorw\u00e4rts l\u00e4uft\n \u2022 halui.spindle.N.start (bit, in) - startet die Spindel\n \u2022 halui.spindle.N.stop (bit, in) - stoppt die Spindel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 314 / 1331\n \n 5.11.4.20 Werkzeug\n \u2022 halui.tool.length-offset.a (float out) - aktuell angewendeter Werkzeugl\u00e4ngenversatz f\u00fcr die A-Achse\n \u2022 halui.tool.length-offset.b (float out) - aktuell angewendeter Werkzeugl\u00e4ngenversatz f\u00fcr die B-Achse\n \u2022 halui.tool.length-offset.c (float out) \u2013 aktuell angewendeter Werkzeugl\u00e4ngenversatz f\u00fcr die C-Achse\n@@ -16365,15 +16365,15 @@\n Um einen Fernstartknopf mit LinuxCNC zu verbinden, benutzen Sie den halui.program.run Pin\n und den halui.mode.auto Pin. Sie m\u00fcssen sicherstellen, dass es OK ist, zuerst zu laufen, indem\n Sie die halui.mode.is-auto Pin. Dies geschieht mit einer and2 Komponente. Die folgende Abbildung zeigt, wie das gemacht wird. Wenn der Fernbedienungsknopf gedr\u00fcckt wird, ist er sowohl mit\n halui.mode.auto als auch mit and2.0.in0 verbunden. Wenn der Automodus OK ist, wird der Pin\n halui.mode.is-auto eingeschaltet. Wenn beide Eing\u00e4nge an der Komponente and2.0 eingeschaltet\n sind, wird and2.0.out eingeschaltet und das Programm gestartet.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 315 / 1331\n \n Abbildung 5.26: Beispiel f\u00fcr Fernstart\n Die f\u00fcr das Vorstehende erforderlichen HAL-Befehle sind:\n net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin>\n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -16394,15 +16394,15 @@\n the program pause or to resume when the external system wants LinuxCNC to continue.\n net ispaused halui.program.is paused => \u201dDein output (Ausgabe) Pin\u201d\n net resume halui.program.resume <= \u201dyour input (Eingabe) Pin\u201d\n \n Ihre Eingangs- und Ausgangspins sind mit den Pins verbunden, die mit dem anderen Controller verdrahtet sind. Dabei kann es sich um Pins des Parallelports oder andere E/A-Pins handeln, auf die Sie\n Zugriff haben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 316 / 1331\n \n Dieses System funktioniert auf folgende Weise. Wrid ein M0 in Ihrem G-Code erreicht, so wird das\n Signal \u201dhalui.program.is-paused\u201d wahr. Dies schaltet auf Ihrem Ausgangspin, so dass die externe\n Steuerung wei\u00df, dass LinuxCNC pausiert ist.\n Um die LinuxCNC G-Code-Programm fortzusetzen, wenn die externe Steuerung bereit ist, wird es\n@@ -16447,15 +16447,15 @@\n 03\n float OUT\n \n Wert Name\n 0 passthrough.in\n 0 passthrough.out\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 317 / 1331\n \n halcmd: setp passthrough.in 3.14\n halcmd: show pin\n Komponenten-Pins:\n Owner Typ\n@@ -16514,15 +16514,15 @@\n h.ready()\n \n Sobald alle Pins und Parameter erstellt wurden, rufen Sie die Methode .ready() auf.\n 5.13.3.1 \u00c4ndern des Pr\u00e4fixes\n Das Pr\u00e4fix kann durch den Aufruf der Methode .setprefix() ge\u00e4ndert werden. Das aktuelle Pr\u00e4fix kann\n durch den Aufruf der Methode .getprefix() abgefragt werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 318 / 1331\n \n 5.13.4 Lesen und Schreiben von Pins und Parametern\n Bei Pins und Parametern, die auch echte Python-Bezeichner sind, kann der Wert unter Verwendung\n der Attributsyntax aufgerufen oder gesetzt werden:\n h.out = h.in\n@@ -16556,15 +16556,15 @@\n 5.13.6 Hilfreiche Funktionen\n See Python HAL Interface for an overview of available functions.\n \n 5.13.7 Konstanten\n Verwenden Sie diese, um Details zu spezifizieren, und nicht den Wert, den sie enthalten.\n \u2022 HAL_BIT\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 319 / 1331\n \n \u2022 HAL_FLOAT\n \u2022 HAL_S32\n \u2022 HAL_U32\n \u2022 HAL_IN\n@@ -16592,15 +16592,15 @@\n Note that only the _<io-type>_ and _<specific-name>_ fields are defined for a canonical device. The\n _<device-name>, _<device-num>_, and _<chan-num>_ fields are set based on the characteristics of\n the real device.\n \n 5.14.2 Digital Input\n Der kanonische Digitaleingang (E/A-Typfeld: \u201ddigin\u201d) ist recht einfach.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 320 / 1331\n \n 5.14.2.1 Pins\n \n (bit) in\n Zustand des Hardware-Eingangs.\n@@ -16627,15 +16627,15 @@\n \n (funct) write\n Lesen Sie out und invert und stellen Sie die Hardwareausgabe entsprechend ein.\n \n 5.14.4 Analog Input\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 321 / 1331\n \n 5.14.4.1 Pins\n \n (float) Wert\n Der Hardware-Messwert, skaliert gem\u00e4\u00df den Parametern Skala und Offset.\n@@ -16665,15 +16665,15 @@\n \n (float) Wert\n Der zu schreibende Wert. Der tats\u00e4chliche Wert, der an die Hardware ausgegeben wird, h\u00e4ngt\n von den Parametern Skala und Offset ab.\n (bit) aktivieren (engl. enable)\n Wenn false, dann wird 0 an die Hardware ausgegeben, unabh\u00e4ngig vom value Pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 322 / 1331\n \n 5.14.5.2 Parameter\n \n (float) Offset\n Dies wird zu dem Wert (engl. value) hinzugef\u00fcgt, bevor die Hardware aktualisiert wird.\n@@ -16710,15 +16710,15 @@\n cd toplevel_directory_for_rip_build\n . scripts/rip-environment\n man halcmd\n \n Das HAL Tutorial enth\u00e4lt eine Reihe von Beispielen f\u00fcr die Verwendung von halcmd und ist ein gutes\n Tutorial f\u00fcr halcmd.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 323 / 1331\n \n 5.15.2 Halmeter\n Halmeter is a voltmeter for the HAL. It lets you look at a pin, signal, or parameter, and displays the\n current value of that item. It is pretty simple to use. Start it by typing halmeter in an X windows shell.\n Halmeter is a GUI application. It will pop up a small window, with two buttons labeled \u201dSelect\u201d and\n@@ -16743,23 +16743,23 @@\n displays the value. Multiple \u0300 \u0300halmeter \u0300 \u0300s can be open at the same time. If you use a script to open\n multiple \u0300 \u0300halmeter \u0300 \u0300s you can set the position of each one with -g X Y relative to the upper left corner\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 5.27: Halmeter-Auswahlfenster\n \n Abbildung 5.28: Halmeter-Watch Fenster\n \n 324 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 325 / 1331\n \n 5.15.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@@ -16775,15 +16775,15 @@\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.29: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 326 / 1331\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 Einzeiliges Watchfile-Beispiel\n pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop\n@@ -16829,15 +16829,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 327 / 1331\n \n HAL item types bit,s32,u32,float are supported.\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@@ -16861,15 +16861,15 @@\n Abbildung 5.30: sim_pin-Fenster\n \n 5.15.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 328 / 1331\n \n Abbildung 5.31: Fenster simulieren_probe\n \n 5.15.7 HAL Histogramm\n hal-histogram ist ein Kommandozeilenprogramm zur Anzeige von Histogrammen f\u00fcr HAL-Pins.\n@@ -16918,15 +16918,15 @@\n \n Anmerkungen:\n 1. LinuxCNC (oder eine andere HAL-Anwendung) muss laufen.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 329 / 1331\n \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 Abbildung 5.32: hal-histogram-Fenster\n@@ -16937,15 +16937,15 @@\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 4. Non-realtime component pins having non-ordered functions.\n 5. Identifizierung von unbekannten Funktionen f\u00fcr nicht behandelte Komponenten.\n 6. Signals with no output.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 330 / 1331\n \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@@ -17019,15 +17019,15 @@\n h.00.velocity-cmd\n hm2_7i92.0.write\n (=hm2_7i92.0.stepgen.00.velocity-cmd)\n \n servo-thread 004\n servo-thread 008\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 331 / 1331\n \n Im obigen Beispiel verwendet die HALFILE halcmd-Aliase, um die Pin-Namen f\u00fcr ein hostmot2-FPGABoard mit Befehlen wie diesen zu vereinfachen:\n alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb\n \n Anmerkung\n@@ -17042,15 +17042,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 332 / 1331\n \n Kapitel 6\n \n Hardware-Treiber\n 6.1 Parallelport-Treiber\n@@ -17080,15 +17080,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 333 / 1331\n \n 6.1.1 Laden\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 the configuration string does not describe at least one port, it is an error.\n@@ -17115,15 +17115,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 <config-string> does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 334 / 1331\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@@ -17183,15 +17183,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 335 / 1331\n \n Tabelle 6.1: (continued)\n Pin\n 14\n 15\n@@ -17252,15 +17252,15 @@\n I/O ports at cc00 [size=16]\n \n From experimentation, I\u2019ve found the first port (the on-card port) uses the third address listed (c000),\n and the second port (the one that attaches with a ribbon cable) uses the first address listed (b800).\n The following example shows the onboard parallel port and a PCI parallel port using the default out\n direction.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 336 / 1331\n \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 get under the hood and re-arrange\n@@ -17307,15 +17307,15 @@\n \u2022 parport. \u0300\n __<p>__.reset \u0300 (funct) Waits until reset-time has elapsed since the associated write,\n then resets pins to values indicated by -out-invert and -out-invert settings. reset must be later\n in the same thread as write. If -reset is TRUE, then the reset function will set the pin to the value\n of -out-invert. This can be used in conjunction with stepgen\u2019s doublefreq to produce one step per\n period. The stepgen stepspace for that pin must be set to 0 to enable doublefreq.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 337 / 1331\n \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@@ -17356,15 +17356,15 @@\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 Der Linux-Kernel gibt eine Meldung \u00e4hnlich der folgenden aus:\n parport: PnPBIOS parport erkannt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 338 / 1331\n \n Dann wird die Verwendung dieses Moduls wahrscheinlich notwendig sein.\n Schlie\u00dflich sollten die HAL-Parport-Komponenten geladen werden:\n loadrt probe_parport\n loadrt hal_parport ...\n@@ -17395,15 +17395,15 @@\n F\u00fcr jeden Pin ist <boardnum> die Platinen-Nummer (beginnt bei Null) und <pinnum> 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 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-<pinnum>-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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 339 / 1331\n \n 6.2.3 Parameter\n \u2022 (bit) ax5214.<boardnum>.out-<pinnum>-invert \u2014 Invertiert einen Ausgangspin.\n Der Parameter -invert bestimmt, ob ein Ausgangspin aktiv high oder aktiv low ist. Wenn -invert auf\n FALSE steht, wird der physikalische Pin durch das Setzen von HAL out- pin TRUE auf low gesetzt,\n@@ -17424,27 +17424,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 340 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 341 / 1331\n \n Abbildung 6.2: GM6-PCI-Kartenanschl\u00fcsse und LEDs\n \n 6.3.1 I/O-Anschl\u00fcsse\n \n@@ -17476,15 +17476,15 @@\n \n 4\n IOx/2\n \n 2\n IOx/0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 342 / 1331\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.<card_no>.gpio.<gpio_con_no>\n@@ -17533,15 +17533,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 343 / 1331\n \n 6.3.2 Achsen-Anschl\u00fcsse\n \n Abbildung 6.4: Pin-Nummerierung der Achsenverbinder\n Tabelle 6.6: Belegung der Achsanschl\u00fcsse\n@@ -17571,15 +17571,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 344 / 1331\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@@ -17593,15 +17593,15 @@\n \n wobei <axis_no> 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.<card_no>.read\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 345 / 1331\n \n Tabelle 6.7: Encoder-Pins\n Pins\n .reset\n \n@@ -17681,15 +17681,15 @@\n Kanal-A-Eingangs in die durch Kanal-B\n bestimmte Richtung. Dies ist n\u00fctzlich\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 346 / 1331\n \n Tabelle 6.8: (continued)\n Parameter\n \n .index-mode\n@@ -17760,15 +17760,15 @@\n Skala in Z\u00e4hlungen pro L\u00e4ngeneinheit.\n .position=.counts/.position-scale.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 347 / 1331\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@@ -17822,15 +17822,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 348 / 1331\n \n Tabelle 6.10: StepGen-Modul-Parameter\n Parameter\n \n .step-type\n@@ -17903,15 +17903,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 349 / 1331\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@@ -17928,15 +17928,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n setp gm.0.stepgen.0.stepspace1000\n setp gm.0.stepgen.0.dirdelay 2000\n \n 350 / 1331\n \n # 1000 ns = 1 \u00b5s\n@@ -17978,15 +17978,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.<card_no>.dac.<axis_no>\n \n wobei <axis_no> zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.dac.0.value auf die Ausgangsspannung des DAC-Moduls der Achse 0.\n HAL Pins werden durch Funktion aktualisiert:\n gm.<card_no>.write\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 351 / 1331\n \n Tabelle 6.12: Achsen DAC-Pins\n Pins\n .enable\n \n@@ -18055,15 +18055,15 @@\n Jeder CAN-Pin- und Parametername beginnt wie folgt:\n gm.<card_no>.can-gm.<axis_no>\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 352 / 1331\n \n gm.<card_no>.write\n \n 6.3.3.1 Pins\n Tabelle 6.14: CAN-Modul-Pins\n@@ -18118,15 +18118,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 353 / 1331\n \n 6.3.4.2 Parameter\n Tabelle 6.17: Watchdog-Parameter\n Parameter\n \n@@ -18184,15 +18184,15 @@\n 6/End+\n ing\n ing\n ing\n 2\n (Ext.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26\n \n 24\n \n GND\n \n@@ -18279,15 +18279,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 355 / 1331\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@@ -18312,15 +18312,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 356 / 1331\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@@ -18344,15 +18344,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.<card_no>.rs485.<module ID>\n \n wobei <Modul-ID> zwischen 00 und 15 liegt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 357 / 1331\n \n Tabelle 6.22: Pins des Relaisausgangsmoduls\n Pins\n .relay-<0-7>\n \n@@ -18425,15 +18425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 358 / 1331\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.<card_no>.rs485\n@@ -18509,15 +18509,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 359 / 1331\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.<card_no>.rs485\n@@ -18599,15 +18599,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 360 / 1331\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@@ -18641,15 +18641,15 @@\n \u2022 -t or --target <n> (default: 1) Set MODBUS target (slave) number. This must match the device\n number you set on the GS2.\n \u2022 -v oder --verbose Schaltet Debug-Meldungen ein.\n \u2022 -A oder --accel-seconds <n> (Voreinstellung: 10.0) Sekunden um die Spindel von 0 auf max. U/min\n (engl. RPM) zu beschleunigen.\n 1 In Europe the equivalent can be found under the brand name Omron.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 361 / 1331\n \n \u2022 -D or --decel-seconds <n> (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 \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@@ -18683,15 +18683,15 @@\n \u2022 <name>.spindle-on (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS an VFD gesendet\n \u2022 <name>.status-1 (s32, out) Antriebsstatus des VFD (siehe GS2-Handbuch)\n \u2022 <name>.status-2 (s32, out) Laufwerksstatus des Frequenzumrichters (siehe GS2-Handbuch)\n Anmerkung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 362 / 1331\n \n 6.4.3 Parameter\n Dabei ist <name> gs2_vfd oder der Name, der beim Laden mit der Option -n angegeben wurde:\n \u2022 <name>.error-count (s32, RW)\n \u2022 <name>.loop-time (float, RW) wie oft der Modbus abgefragt wird (Standard: 0.1)\n@@ -18717,15 +18717,15 @@\n The \u201ddir\u201d mask determines whether the pins are inputs and outputs, the exclude mask prevents the\n driver from using the pins (and so allows them to be used for their normal RPi purposes such as SPI\n or UART).\n The mask can be in decimal or hexadecimal (hex may be easier as there will be no carries).\n To determine the value of the masks, add up the hex/decimal values for all pins that should be configured as output, and analogously for all pins that should be excluded according to the following\n table.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 363 / 1331\n \n Tabelle 6.29: GPIO masks - mapping of GPIO numbers\n (leftmost column) to physical pin numbers as printed on\n the Raspberry Pi board (rightmost column) and the decimal/hexadecimal values that contribute to the value of\n the mask.\n@@ -18851,15 +18851,15 @@\n \u2022 hal_pi_gpio.pin-NN-out\n \u2022 hal_pi_gpio.pin-NN-in\n Depending on the dir and exclude masks.\n \n 6.5.4 Parameter\n Only the standard timing parameters which are created for all components exist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 364 / 1331\n \n *hal_pi_gpio.read.tmax *hal_pi_gpio.read.tmax-increased *hal_pi_gpio.write.tmax *hal_pi_gpio.write.tmaxincreased\n For unknown reasons the driver also creates HAL pins to indicate timing\n *hal_pi_gpio.read.time *hal_pi_gpio.write.time\n \n@@ -18890,15 +18890,15 @@\n This driver has been tested on the Raspberry Pi, and should also work on Banana Pi, BeagleBone,\n Pine64 (et al.) and other single board computers, and potentially on other platforms.\n \n 6.6.1 Purpose\n This driver allows the use of GPIO pins in a way analogous to the parallel port driver on x86 PCs. It\n can use the same step generators, encoder counters and similar components.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 365 / 1331\n \n 6.6.2 Anwendung\n loadrt hal_gpio inputs=GPIO5,GPIO6,GPIO12,GPIO13,GPIO16,GPIO17,GPIO18,GPIO19 \\\n outputs=GPIO20,GPIO21,GPIO22,GPIO23,GPIO24,GPIO25,GPIO26, \u2190GPIO27 \\\n invert=GPIO20,GPIO27 \\\n@@ -19040,15 +19040,15 @@\n and must be in the same thread. The behaviour of this function is equivalent to the same\n function in the hal_parport driver, and it allows a step pulse every thread cycle. If the\n hal_gpio.reset_ns time is set longer than 1/4 of the period of the thread that it is added to,\n then the value will be reduced to 1/4 the thread period. There is a lower limit to how long\n the pulse can be. With 8 pins in the output list the pulse width can not reduce lower than\n 5000 ns on an RPi4, for example.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 366 / 1331\n \n The following functions are accepted in all versions, but are only effective if a version of libgpiod_dev\n >= 1.6 is installed. They should be used in the same way as the parameters described above, and will\n alter the electrical parameters of the GPIO pins if this is supported by the hardware.\n opendrain\n@@ -19078,15 +19078,15 @@\n \n 6.6.6 Pin Identification\n Use the pin names returned by the gpioinfo utility. This uses the device-tree data. If the installed OS\n does not have a device-tree database then the pins will all be called \u201dunnamed\u201d (or similar) and this\n driver can not be used.\n A further update to this driver might allow access by index number, but this is not currently supported.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 367 / 1331\n \n 6.6.7 Troubleshooting permissions problems.\n If \u201daccess denied\u201d messages are returned on loading the driver, try the following recipe: (Should not\n be needed for Raspbian, and will need to be modified to match the actual GPIO chip name on non-Pi\n platforms)\n@@ -19121,15 +19121,15 @@\n 6.7.1 Einf\u00fchrung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 368 / 1331\n \n 6.7.2 Firmware-Bin\u00e4rdateien\n 50 Pin Header FPGA-Karten Several pre-compiled HostMot2 firmware binaries are available for\n the different Anything I/O boards. This list is incomplete, check the hostmot2-firmware distribution\n for up-to-date firmware lists.\n@@ -19166,15 +19166,15 @@\n denen die HostMot2-Firmware l\u00e4uft. Die Low-Level-I/O-Treiber stellen diesen Zugang zur Verf\u00fcgung.\n Die Low-Level-I/O-Treiber werden mit Befehlen wie diesem geladen:\n loadrt hm2_pci config=\u201dfirmware=hm2/5i20/SVST8_4.BIT\n num_encoders=3 num_pwmgens=3 num_stepgens=1\u201d\n \n Die Konfigurationsparameter sind in der Manpage zu hostmot2 beschrieben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 369 / 1331\n \n 6.7.5 Watchdog\n Die HostMot2-Firmware kann ein Watchdog-Modul enthalten; wenn dies der Fall ist, wird es vom\n Hostmot2-Treiber verwendet.\n Der Watchdog muss von Zeit zu Zeit von LinuxCNC gestreichelt werden, sonst bei\u00dft er. Die hm2\n@@ -19204,15 +19204,15 @@\n Die obigen Funktionen read_gpio und write_gpio sollten normalerweise nicht ben\u00f6tigt werden, da die\n GPIO-Bits zusammen mit allem anderen in den obigen Standardfunktionen read und write gelesen\n und geschrieben werden, die normalerweise im Servo-Thread ausgef\u00fchrt werden.\n Die Funktionen read_gpio und write_gpio wurden f\u00fcr den Fall bereitgestellt, dass eine sehr schnelle\n (h\u00e4ufig aktualisierte) E/A ben\u00f6tigt wird. Diese Funktionen sollten im Basis-Thread ausgef\u00fchrt werden.\n Wenn Sie dies ben\u00f6tigen, senden Sie uns bitte eine E-Mail und teilen Sie uns mit, um welche Anwendung es sich handelt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 370 / 1331\n \n 6.7.7 Pinbelegungen\n Der hostmot2-Treiber hat keine bestimmte Pinbelegung. Die Pinbelegung ergibt sich aus der Firmware, die der hostmot2-Treiber an die Anything I/O-Karte sendet. Jede Firmware hat eine andere\n Pinbelegung, und die Pinbelegung h\u00e4ngt davon ab, wie viele der verf\u00fcgbaren Encoder, pwmgens und\n stepgens verwendet werden. Um eine Pinout-Liste f\u00fcr Ihre Konfiguration nach dem Laden von LinuxCNC im Terminalfenster zu erhalten, geben Sie ein:\n@@ -19260,15 +19260,15 @@\n [ 1141.053619] hm2/hm2_5i20.0: IO Pin 068 (P4-41): IOPort\n [ 1141.053621] hm2/hm2_5i20.0: IO Pin 069 (P4-43): IOPort\n [ 1141.053624] hm2/hm2_5i20.0: IO Pin 070 (P4-45): IOPort\n [ 1141.053627] hm2/hm2_5i20.0: IO Pin 071 (P4-47): IOPort\n [ 1141.053811] hm2/hm2_5i20.0: registered\n [ 1141.053815] hm2_5i20.0: initialized AnyIO board at 0000:02:02.0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 371 / 1331\n \n Anmerkung\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.7.8 PIN-Dateien\n@@ -19282,15 +19282,15 @@\n Konfiguration finden Sie im Abschnitt Konfigurationen.\n \n 6.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 372 / 1331\n \n Abbildung 6.9: 5i20 HAL-Pins\n \n 6.7.11 Konfigurationen\n Die Hostmot2-Firmware gibt es in verschiedenen Versionen, je nachdem, was Sie erreichen wollen.\n@@ -19307,15 +19307,15 @@\n 7I47). So in this way we can save two ports (48 bits) for GPIO.\n Hier sind Tabellen mit den in den offiziellen Paketen verf\u00fcgbaren Firmwares. Es kann zus\u00e4tzliche\n Firmwares auf der Mesanet.com Website, die noch nicht in die LinuxCNC offiziellen Firmware-Pakete\n geschafft haben, daher schauen Sie auch dort nach.\n 3x20 (verschiedene 6 Anschl\u00fcsse) Standardkonfigurationen (3x20 ist in den Versionen mit 1M, 1,5M\n und 2M Gatter erh\u00e4ltlich. Bislang ist die gesamte Firmware in allen Gate-Gr\u00f6\u00dfen verf\u00fcgbar.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19528,15 +19528,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19639,15 +19639,15 @@\n 6.7.12.1 Pins\n \u2022 in - (Bit, Out) Normaler Zustand des Hardware-Eingangs-Pins. Sowohl volle GPIO-Pins als auch\n I/O-Pins, die von aktiven Modulinstanzen als Eing\u00e4nge verwendet werden, haben diesen Pin.\n \u2022 in_not - (Bit, Out) Invertierter Zustand des Hardware-Eingangs-Pins. Sowohl volle GPIO-Pins als\n auch I/O-Pins, die von aktiven Modulinstanzen als Eing\u00e4nge verwendet werden, haben diesen Pin.\n \u2022 out - (Bit, In) Wert, der (m\u00f6glicherweise invertiert) an den Hardware-Ausgangspin geschrieben werden soll. Nur volle GPIO-Pins haben diesen Pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 375 / 1331\n \n 6.7.12.2 Parameter\n \u2022 invert_output - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter is_output\n wahr ist. Wenn dieser Parameter wahr ist, wird der Ausgangswert des GPIOs der Inverse des Wertes\n am out HAL-Pin sein. Nur vollst\u00e4ndige GPIO-Pins und I/O-Pins, die von aktiven Modulinstanzen als\n@@ -19680,15 +19680,15 @@\n \u2022 control-type - (Bit, In) Schaltet zwischen Lageregelungsmodus (engl. position control mode) (0)\n und Geschwindigkeitsregelungsmodus (engl. velocity control mode) (1) um. Standardm\u00e4\u00dfig ist die\n Lageregelung (0) eingestellt.\n \u2022 counts - (s32, Out) R\u00fcckmeldung der Position in counts (Anzahl der Schritte).\n \u2022 enable - (Bit, In) Aktiviert Schritte am Ausgang. Wenn false, werden keine Schritte erzeugt.\n \u2022 position-cmd - (Float, In) Zielposition der Stepperbewegung, in benutzerdefinierten Positionseinheiten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 376 / 1331\n \n \u2022 position-fb - (Float, Out) Positionsr\u00fcckmeldung in benutzerdefinierten Positionseinheiten (counts /\n position_scale).\n \u2022 velocity-cmd - (Float, In) Zielgeschwindigkeit der Schrittmotorbewegung, in benutzerdefinierten\n Positionseinheiten pro Sekunde. Dieser Pin wird nur verwendet, wenn sich der Stepgen im Geschwindigkeitsregelungsmodus befindet (control-type=1).\n@@ -19719,15 +19719,15 @@\n Ausgangspin: der I/O-Pin am Anschluss wird auf den durch den out HAL-Pin spezifizierten Wert gesteuert (m\u00f6glicherweise invertiert). Wenn dieser Parameter true ist, verh\u00e4lt sich der GPIO wie ein\n Open-Drain-Pin. Das Schreiben von 0 an den out HAL-Pin treibt den I/O-Pin auf low, das Schreiben\n von 1 an den out HAL-Pin versetzt den I/O-Pin in einen hochohmigen Zustand. In diesem hochohmigen Zustand schwebt der I/O-Pin (schwach hochgezogen), und andere Ger\u00e4te k\u00f6nnen den Wert\n treiben; der resultierende Wert am I/O-Pin ist an den in und in_not Pins verf\u00fcgbar. Nur vollst\u00e4ndige\n GPIO-Pins und I/O-Pins, die von aktiven Modulinstanzen als Ausg\u00e4nge verwendet werden, haben\n diesen Parameter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 377 / 1331\n \n 6.7.14 PWMGen\n PWMgens haben Namen wie hm2_<BoardType>.<BoardNum>.pwmgen.<Instance>. Instance ist eine zweistellige Nummer, die der HostMot2 pwmgen Instanznummer entspricht. Es gibt num_pwmgens\n Instanzen, beginnend mit 00.\n In HM2 verwendet jedes pwmgen drei Ausgangs-E/A-Pins: Not-Enable, Out0, und Out1. Um einen\n@@ -19765,15 +19765,15 @@\n Its effective range is from 1 Hz up to 193 kHz. Note that the max frequency is determined by the\n ClockHigh frequency of the Anything I/O board; the 5i20 and 7i43 both have a 100 MHz clock,\n resulting in a 193 kHz max PWM frequency. Other boards may have different clocks, resulting in\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 378 / 1331\n \n 6.7.14.3 Ausgangsparameter\n Die Ausgangspins der einzelnen PWMGen haben zwei zus\u00e4tzliche Parameter. Um herauszufinden,\n welcher E/A-Pin zu welchem Ausgang geh\u00f6rt, f\u00fchren Sie dmesg wie oben beschrieben aus.\n \u2022 invert_output - (Bit, RW) This parameter only has an effect if the is_output parameter is true. If\n@@ -19810,15 +19810,15 @@\n FALSE zur\u00fcck, nachdem er die Z\u00e4hlung auf 0 gesetzt hat, das ist Aufgabe des Benutzers.\n \u2022 velocity - (Float, Out) Gesch\u00e4tzte Encoder-Geschwindigkeit in Positionseinheiten pro Sekunde.\n 6.7.15.2 Parameter\n \u2022 counter-mode - (Bit, RW) Auf False (Standard) f\u00fcr Quadratur gesetzt. Auf True gesetzt f\u00fcr Up/Down\n oder f\u00fcr einen einzelnen Eingang an Phase A. Kann f\u00fcr einen Frequenz/Geschwindigkeits-Wandler\n mit einem einzelnen Eingang an Phase A verwendet werden, wenn auf True gesetzt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 379 / 1331\n \n \u2022 filter - (Bit, RW) If set to True (the default), the quadrature counter needs 15 clocks to register\n a change on any of the three input lines (any pulse shorter than this is rejected as noise). If set to\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@@ -19857,15 +19857,15 @@\n \n 5I25 + 7I77 Karte\n # den generischen Treiber laden\n loadrt hostmot2\n # Laden Sie den PCI-Treiber und konfigurieren Sie ihn\n loadrt hm2_pci config=\u201dnum_encoders=6 num_pwmgens=6 sserial_port_0=0XXX\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 380 / 1331\n \n 6.7.16.3 SSERIAL-Konfiguration\n Die Konfigurationszeichenfolge sserial_port_0=0XXX legt einige Optionen f\u00fcr die intelligente serielle Tochterkarte fest. Diese Optionen sind spezifisch f\u00fcr jede Tochterkarte. Weitere Informationen \u00fcber\n die genaue Verwendung finden Sie im Mesa-Handbuch (normalerweise im Abschnitt SOFTWARE PROCESS DATA MODES) oder auf der Handbuchseite des Links:../man/man9/sserial.9.html[SSERIAL(9)].\n 6.7.16.4 7I77 Grenzwerte\n@@ -19898,15 +19898,15 @@\n \n 6.8 MB2HAL\n 6.8.1 Einf\u00fchrung\n MB2HAL is a generic non-realtime HAL component to communicate with one or more Modbus devices.\n So far, there are two options to communicate with a Modbus device:\n 1. One option is to create a HAL component as a driver see VFD Modbus.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 381 / 1331\n \n 2. Another option is to use Classic Ladder which has Modbus built in, see ClassicLadder.\n 3. Jetzt gibt es eine dritte Option, die aus einem \u201dgenerischen\u201d Treiber besteht, der per Textdatei\n konfiguriert wird, dieser hei\u00dft MB2HAL.\n Why MB2HAL? Consider using MB2HAL if:\n@@ -19956,15 +19956,15 @@\n (engl.\n string)\n \n Version number in the format N.N[NN]. Defaults to 1.0.\n \n HAL module (component) name. Defaults to \u201dmb2hal\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 382 / 1331\n \n Wert\n SLOWDOWN\n \n Typ\n@@ -20060,15 +20060,15 @@\n A list of element names. These names will be used for the\n nicht\n pin names, e.g. mb2hal.plcin.cycle_start.\n NELEMENTS NOTE: There must be no white space characters in the list.\n angegeben Example: PIN_NAMES=cycle_start,stop,feed_hold\n ist\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Wert\n MB_TX_CODE\n \n Typ\n ErforderlichBeschreibung\n Zeichenfolge\n@@ -20143,15 +20143,15 @@\n \u2022 0x04 - SLAVE_DEVICE_FAILURE - SLAVE (or MASTER) device unrecoverable FAILURE while attempting to perform the requested action.\n \u2022 0x04 - SERVER_FAILURE - (see above).\n \u2022 0x05 - ACKNOWLEDGE - This response is returned to PREVENT A TIMEOUT in the master. A long\n duration of time is required to process the request in the slave.\n \u2022 0x06 - SLAVE_DEVICE_BUSY - The slave (or server) is BUSY. Retransmit the request later.\n \u2022 0x06 - SERVER_BUSY - (see above).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 384 / 1331\n \n \u2022 0x07 - NEGATIVE_ACKNOWLEDGE - Unsuccessful programming request using function code 13 or\n 14.\n \u2022 0x08 - MEMORY_PARITY_ERROR - SLAVE parity error in MEMORY.\n \u2022 0x0A (-10) - GATEWAY_PROBLEM_PATH - Gateway path(s) not available.\n@@ -20190,15 +20190,15 @@\n VERSION=1.1\n #OPTIONAL: HAL module (component) name. Defaults to \u201dmb2hal\u201d.\n HAL_MODULE_NAME=mb2hal\n #OPTIONAL: Insert a delay of \u201dFLOAT seconds\u201d between transactions in order\n #to not to have a lot of logging and facilitate the debugging.\n #Useful when using DEBUG=3 (NOT INIT_DEBUG=3)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 385 / 1331\n \n #It affects ALL transactions.\n #Use \u201d0.0\u201d for normal activity.\n SLOWDOWN=0.0\n #REQUIRED: The number of total Modbus transactions. There is no maximum.\n@@ -20243,15 +20243,15 @@\n #if LINK_TYPE=serial then OPTIONAL:\n #if LINK_TYPE=tcp then IGNORED\n #Serial port delay between for this transaction only.\n #In ms. Defaults to 0.\n SERIAL_DELAY_MS=10\n #REQUIRED (only 1st time).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 386 / 1331\n \n #Modbus slave number.\n MB_SLAVE_ID=1\n #REQUIRED: The first element address (decimal integer).\n FIRST_ELEMENT=0\n@@ -20340,15 +20340,15 @@\n #\n mb2hal.TxName.01.<type> (HAL_TX_NAME=TxName, second register=01 (00 is the first \u2190one))\n MB_TX_CODE=fnct_03_read_holding_registers\n #OPTIONAL: Response timeout for this transaction. In INTEGER ms. Defaults to 500 ms.\n #This is how much to wait for 1st byte before raise an error.\n MB_RESPONSE_TIMEOUT_MS=500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 387 / 1331\n \n #OPTIONAL: Byte timeout for this transaction. In INTEGER ms. Defaults to 500 ms.\n #This is how much to wait from byte to byte before raise an error.\n MB_BYTE_TIMEOUT_MS=500\n #OPTIONAL: Instead of giving the transaction number, use a name.\n@@ -20412,15 +20412,15 @@\n MB_TX_CODE=fnct_01_read_coils\n FIRST_ELEMENT=1024\n NELEMENTS=24\n HAL_TX_NAME=remoteIOin\n MAX_UPDATE_RATE=0.0\n DEBUG=1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n [TRANSACTION_02]\n MB_TX_CODE=fnct_02_read_discrete_inputs\n FIRST_ELEMENT=1280\n NELEMENTS=8\n HAL_TX_NAME=readStatus\n MAX_UPDATE_RATE=0.0\n@@ -20471,15 +20471,15 @@\n NELEMENTS=8\n HAL_TX_NAME=XDrive04\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n \n 388 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 389 / 1331\n \n 6.8.5 Pins\n Anmerkung\n Yellow = New in MB2HAL 1.1 (LinuxCNC 2.9) To use these new features you have to set VERSION =\n 1.1.\n@@ -20506,15 +20506,15 @@\n NELEMENTS muss 1 sein oder PIN_NAMES darf nur einen Namen enthalten.\n 6.8.5.6 fnct_06_write_single_register\n \u2022 mb2hal.m.n.float float in\n \u2022 mb2hal.m.n.int s32 in\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name. Both pin values are added and\n limited to 65535 (UINT16_MAX). Use one and let the other open (read as 0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 390 / 1331\n \n 6.8.5.7 fnct_15_write_multiple_coils\n \u2022 mb2hal.m.n.bit bit in\n 6.8.5.8 fnct_16_write_multiple_registers\n \u2022 mb2hal.m.n.float float in\n@@ -20546,15 +20546,15 @@\n \u2022 -b oder --baud <rate> : die Baudrate einstellen - muss f\u00fcr alle vernetzten VFDs gleich sein\n \u2022 -p oder --port <device path> : legt den zu verwendenden Anschluss fest, z. B. /dev/ttyUSB0\n \u2022 <name>=<slave#> : setzt den Namen der HAL-Komponente/des Pins und die Slave-Nummer.\n Das Debugging kann durch Setzen des Debug-Pins auf true umgeschaltet werden.\n Anmerkung\n Das Einschalten der Fehlersuche (engl. debugging) f\u00fchrt zu einer Flut von Text im Terminal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 391 / 1331\n \n 6.9.2 Pins\n Dabei steht <n> f\u00fcr mitsub_vfd oder den beim Laden vergebenen Namen.\n \u2022 <n>.fwd (bit, in) True setzt Bewegung vorw\u00e4rts, False setzt Bewegung r\u00fcckw\u00e4rts.\n \u2022 <n>.run (bit, in) True setzt den VFD basierend auf dem .fwd-Pin in Bewegung.\n@@ -20592,15 +20592,15 @@\n # cmd skaliert auf RPM\n setp spindel.scale-cmd .135\n # R\u00fcckmeldung erfolgt in U/min\n setp spindel.scale-fb 7.411\n # erm\u00f6glicht es uns, den Status zu sehen\n setp spindel.monitor 1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n net spindle-speed-indicator spindle.motor-fb\n \n 392 / 1331\n \n gladevcp.spindle-speed\n \n@@ -20640,15 +20640,15 @@\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 \u2022 PR 121 set to 1-10 -if 10 (maximum) COM errors then VFD faults.\n \u2022 PR 122 getestet mit 9999 \u2019-wenn die Kommunikation verloren geht, hat der VFD keinen Fehler \u2019\n \u2022 PR 123 auf 9999 eingestellt -dem seriellen Datenrahmen wird keine Wartezeit hinzugef\u00fcgt.\n \u2022 PR 124 auf 0 gesetzt -kein Zeilenumbruch am Ende der Zeile.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 393 / 1331\n \n 6.10 Motenc Treiber\n Vital Systems Moenc-100 und Moenc-LITE\n Die Vital Systems Motenc-100 und Motenc-LITE sind 8- und 4-Kanal-Servokontrollkarten. Die Motenc100 bietet 8 Quadratur-Encoder-Z\u00e4hler, 8 analoge Eing\u00e4nge, 8 analoge Ausg\u00e4nge, 64 (68?) digitale\n Eing\u00e4nge und 32 digitale Ausg\u00e4nge. Die Motenc-LITE hat nur 4 Encoderz\u00e4hler, 32 digitale Eing\u00e4nge\n@@ -20680,15 +20680,15 @@\n kanonischer Digitaleingang.\n \u2022 (bit) motenc.<board>.out-<channel> - Wert, der in den digitalen Ausgang geschrieben werden soll,\n siehe kanonischer digitaler Ausgang.\n \u2022 (bit) motenc.<board>.estop-in - Separater Notaus-Eingang, weitere Details erforderlich.\n \u2022 (bit) motenc.<board>.estop-in-not - Invertierter Zustand des dedizierten Notaus-Eingangs.\n \u2022 (bit) motenc.<board>.watchdog-reset - Bidirektional, - TRUE setzen, um Watchdog einmal zur\u00fcckzusetzen, wird automatisch gel\u00f6scht.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 394 / 1331\n \n 6.10.2 Parameter\n \u2022 (float) motenc.<board>.enc-<channel>-scale - Die Anzahl der Z\u00e4hlungen / Benutzereinheit (zur\n Umrechnung von Z\u00e4hlungen in Einheiten).\n \u2022 (float) motenc.<board>.dac-<channel>-offset - Setzt den DAC-Offset.\n@@ -20733,15 +20733,15 @@\n \u2022 (funct) motenc.<board>.dac-write - Schreibt die Spannungen an die DACs.\n \u2022 (funct) motenc.<board>.digital-out-write - Schreibt die digitalen Ausg\u00e4nge.\n \u2022 (funct) motenc.<board>.misc-update - Aktualisiert verschiedene Dinge.\n \n 6.11 Opto22 Treiber\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 395 / 1331\n \n 6.11.1 Die Adapterkarte\n Dies ist eine Karte von Opto22 f\u00fcr die Anpassung des PCI-Ports an Solid-State-Relais-Racks wie die\n Standard- oder G4-Serie. Sie hat 2 Ports, die jeweils bis zu 24 Punkte steuern k\u00f6nnen, und verf\u00fcgt \u00fcber\n 4 LEDs auf der Karte. Die Ports sind mit 50-poligen Anschl\u00fcssen ausgestattet, die denen der MesaKarten entsprechen. Alle Relais-Racks/Breakout-Boards, die mit Mesa-Karten funktionieren, sollten\n@@ -20778,15 +20778,15 @@\n BOARDNUMBER kann 0-3 sein PORTNUMBER kann 0 oder 1 sein. Anschluss 0 liegt am n\u00e4chsten an\n der Kartenhalterung.\n \n 6.11.4 Parameter\n \u2022 opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit - Bei TRUE wird\n die Bedeutung des entsprechenden -out-Pins invertiert, so dass TRUE LOW und FALSE HIGH ergibt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 396 / 1331\n \n 6.11.5 FUNKTIONEN\n \u2022 opto_ac5.0.digital-read - F\u00fcgen Sie dies zu einem Thread hinzu, um alle Eingabepunkte zu lesen.\n \u2022 opto_ac5.0.digital-write - F\u00fcgen Sie dies zu einem Thread hinzu, um alle Ausgangspunkte und LEDs\n zu schreiben.\n@@ -20824,15 +20824,15 @@\n Hier sind die 24 Bits in einer BIN\u00c4REN Zahl dargestellt. Bit 1 ist die ganz rechte Zahl:\n 16 Nullen f\u00fcr die 16 Eing\u00e4nge und 8 Einsen f\u00fcr die 8 Ausg\u00e4nge\n 000000000000000011111111\n \n Das wird auf dem Taschenrechner in FF umgewandelt, so dass 0xff die Nummer ist, die beim Laden\n des Treibers f\u00fcr portconfig0 und/oder portconfig1 zu verwenden ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 397 / 1331\n \n 6.11.7 Pin-Nummerierung\n Der HAL-Pin 00 entspricht dem Bit 1 (ganz rechts), das die Position 0 auf einem Opto22-Relaisgestell\n darstellt. HAL-Pin 01 entspricht Bit 2 (eine Stelle links vom rechten Rand), das die Position 1 auf\n einem Opto22-Relaismodul darstellt. HAL-Pin 23 entspricht Bit 24 (ganz links), das die Position 23\n@@ -20868,15 +20868,15 @@\n In der Befehlszeile von loadrt k\u00f6nnen mehrere Optionen angegeben werden. Erstens kann bei USC\n und UPC ein 8-Bit-DAC f\u00fcr die Spindeldrehzahlsteuerung und \u00e4hnliche Funktionen hinzugef\u00fcgt werden. Dies kann mit dem Parameter extradac=0xnn[,0xmm] angegeben werden. Mit dem in [ ] eingeschlossenen Teil k\u00f6nnen Sie diese Option auf mehr als einer Platine des Systems angeben. Die erste\n Hexadezimalziffer gibt an, auf welchen EPP-Bus Bezug genommen wird; sie entspricht der Reihenfolge der Portadressen im Parameter port_addr, wobei <addr1> hier Null w\u00e4re. F\u00fcr den ersten EPP-Bus\n w\u00fcrde die erste USC- oder UPC-Platine also mit 0x00 beschrieben, die zweite USC- oder UPC-Platine\n auf demselben Bus w\u00e4re 0x02. (Beachten Sie, dass jede USC- oder UPC-Platine zwei Adressen belegt,\n wenn also eine auf 00 steht, m\u00fcsste die n\u00e4chste 02 sein.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 398 / 1331\n \n Alternativ k\u00f6nnen die 8 digitalen Ausgangspins als zus\u00e4tzliche digitale Ausg\u00e4nge verwendet werden,\n es funktioniert genauso wie oben mit der Syntax : extradout=0xnn\u2019. Die Extradac- und ExtradoutOptionen schlie\u00dfen sich auf jedem Board gegenseitig aus, Sie k\u00f6nnen nur eine angeben.\n Die Encoderplatinen UPC und PPMC k\u00f6nnen das Eintreffen von Encoderz\u00e4hlungen mit einem Zeitstempel versehen, um die Ableitung der Achsengeschwindigkeit zu verfeinern. Diese abgeleitete Geschwindigkeit kann in die PID hal-Komponente eingespeist werden, um eine glattere D-Term-Reaktion\n zu erzeugen. Die Syntax lautet: timestamp=0xnn[,0xmm], dies funktioniert auf die gleiche Weise\n@@ -20914,15 +20914,15 @@\n ist. Option bedeutet, dass dieser Pin nur exportiert wird, wenn diese Option durch einen optionalen\n Parameter im loadrt HAL-Befehl aktiviert ist. Diese Optionen setzen voraus, dass die Platine einen\n ausreichenden Revisionsstand hat, um die Funktion zu unterst\u00fctzen.\n \u2022 (Alle s32-Ausgaben) ppmc.<port>.encoder.<channel>.count - Encoder-Position in Z\u00e4hlwerten.\n \u2022 (Alle s32-Ausgaben) ppmc.<port>.encoder.<channel>.delta \u2013 \u00c4nderung der Z\u00e4hlwerte seit dem\n letzten Lesen, in rohen Encoder-Z\u00e4hleinheiten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 399 / 1331\n \n \u2022 (Alles Float-Ausgaben) \u2019ppmc.<port>.encoder.<channel>.velocity - Geschwindigkeit skaliert in Benutzereinheiten pro Sekunde. Auf PPMC und USC wird dies von den rohen Encoder-Z\u00e4hlungen pro\n Servoperiode abgeleitet und wird daher von der Encoder-Granularit\u00e4t beeinflusst. Auf UPC-Platinen\n mit der Firmware 8/21/09 und sp\u00e4ter kann die Geschwindigkeitssch\u00e4tzung durch Zeitstempelung\n der Encoderz\u00e4hlungen verwendet werden, um die Glattheit dieser Geschwindigkeitsausgabe zu verbessern. Dies kann in die PID-HAL-Komponente eingespeist werden, um eine stabilere Servoreaktion zu erzeugen. Diese Funktion muss in der HAL-Kommandozeile, die den PPMC-Treiber startet,\n@@ -20949,15 +20949,15 @@\n angeschlossen sein sollte. 0 entspricht null Volt, 255 entspricht 10 Volt. Die Polarit\u00e4t des Ausgangs\n kann auf immer Minus, immer Plus eingestellt werden oder durch den Zustand von SSR1 (Plus,\n wenn eingeschaltet) und SSR2 (Minus, wenn eingeschaltet) gesteuert werden. Sie m\u00fcssen extradac\n = 0x00 in der HAL-Befehlszeile angeben, die den PPMC-Treiber l\u00e4dt, um diese Funktion auf der ersten USC ur UPC-Platine zu aktivieren.\n \u2022 (Option bit input) ppmc.<port>.dout.<channel>.out - Wert, der an einen der 8 zus\u00e4tzlichen digitalen Ausgangspins an J8 geschrieben werden soll. Sie m\u00fcssen extradout = 0x00 in der HALBefehlszeile angeben, die den ppmc-Treiber l\u00e4dt, um diese Funktion auf der ersten USC- oder UPCPlatine zu aktivieren. extradac und extradout schlie\u00dfen sich gegenseitig aus, da sie dieselben Signalleitungen f\u00fcr unterschiedliche Zwecke verwenden. Diese Ausgangspins werden nach den digitalen\n Standardausg\u00e4ngen der Karte aufgez\u00e4hlt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 400 / 1331\n \n 6.12.3 Parameter\n \u2022 (All float) ppmc.<port>.encoder.<channel>.scale - Die Anzahl der Z\u00e4hlungen / Benutzereinheit (zur\n Umrechnung von Z\u00e4hlungen in Einheiten).\n \u2022 (UPC float) ppmc.<port>.pwm.<channel-range>.freq - Die PWM-Tr\u00e4gerfrequenz, in Hz. Gilt f\u00fcr\n@@ -20990,15 +20990,15 @@\n gekappt.)\n \u2022 (USC float) ppmc.<port>.stepgen.<channel>.frequency - Tats\u00e4chliche Schrittimpulsfrequenz in Hz\n (wird meist zur Fehlersuche verwendet.)\n \u2022 (Option float) ppmc. <port>. DAC8. <channel>.scale - Legt die Skalierung des zus\u00e4tzlichen DACAusgangs so fest, dass ein der Skalierung entsprechender Ausgangswert eine Gr\u00f6\u00dfe von 10,0 V\n ergibt. (Das Vorzeichen des Ausgangs wird durch Jumper und/oder andere digitale Ausg\u00e4nge gesetzt.)\n \u2022 (Optionsbit) ppmc.<Port>.dout.<Kanal>.invert - Invertiert einen digitalen Ausgang, siehe kanonischer digitaler Ausgang.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 401 / 1331\n \n \u2022 (Optionsbit) ppmc. .<port>dout. <channel>.invert - Invertiert einen digitalen Ausgangspin von J8,\n siehe Kanonischer Digitalausgang.\n \n 6.12.4 Funktionen\n@@ -21026,15 +21026,15 @@\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 keinen standardm\u00e4\u00dfigen 12-poligen IDC-Stecker zu geben, aber einige der Stifte eines 16-poligen\n Steckers k\u00f6nnen von der Platine neben QA3/QZ3 herunterh\u00e4ngen.\n \u2022 Der untere und der rechte Anschluss befinden sich auf demselben .1\u201d-Raster, der linke Anschluss jedoch nicht. Wenn OUT2\u2026OUT9 nicht ben\u00f6tigt werden, kann ein einzelner IDC-Stecker den unteren\n Stecker und die unteren beiden Reihen des rechten Steckers \u00fcberbr\u00fccken.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 402 / 1331\n \n 6.13.1.3 Physikalische Stifte (engl.+ inzwischen auch deutsch: pins)\n \u2022 Lesen Sie das ACEX1K-Datenblatt f\u00fcr Informationen \u00fcber Eingangs- und Ausgangsspannungsschwellenwerte. Die Pins sind alle im LVTTL/LVCMOS Modus konfiguriert und sind generell mit 5V TTLLogik kompatibel.\n \u2022 Vor der Konfiguration und nach dem ordnungsgem\u00e4\u00dfen Verlassen von LinuxCNC werden alle PlutoP-Pins mit schwachen Pull-ups (20 k\u03a9 min, 50 k\u03a9 max) tristiert. Wenn der Watchdog-Timer aktiviert\n ist (Standardeinstellung), werden diese Pins auch nach einer Unterbrechung der Kommunikation\n@@ -21063,15 +21063,15 @@\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 \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.13.1.6 PC-Schnittstelle\n \u2022 Es wird nur eine einzige pluto_servo oder pluto_step Karte unterst\u00fctzt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 403 / 1331\n \n 6.13.1.7 Neuerstellung der FPGA-Firmware\n Die Unterverzeichnisse \u201dsrc/hal/drivers/pluto_servo_firmware/\u201d und \u201dsrc/hal/drivers/pluto_step_firmware/\u201d\n enthalten den Verilog-Quellcode sowie zus\u00e4tzliche Dateien, die von Quartus f\u00fcr die FPGA-Firmware\n verwendet werden. Die Quartus II Software von Altera ist erforderlich, um die FPGA-Firmware neu\n@@ -21102,15 +21102,15 @@\n 6.13.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 \u2022 DNx - Das down- (Aufw\u00e4rts/Abw\u00e4rts-Modus) oder Richtungs-Signal (PWM+direction-Modus) vom\n PWM-Generator X. Kann als digitaler Ausgang verwendet werden, wenn der entsprechende PWMKanal unbenutzt ist oder der Ausgang des Kanals nie negativ ist. Der entsprechende digitale Ausgang kann auf TRUE gesetzt werden, damit DNx aktiv low statt aktiv high ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 404 / 1331\n \n \u2022 QAx, QBx - Die A- und B-Signale f\u00fcr Quadraturz\u00e4hler X. Kann als digitaler Eingang verwendet werden, wenn der entsprechende Quadraturkanal nicht verwendet wird.\n \u2022 QZx - Das Z-Signal (Index) f\u00fcr Quadraturz\u00e4hler X. Kann als digitaler Eingang verwendet werden,\n wenn die Indexfunktion des entsprechenden Quadraturkanals nicht verwendet wird.\n \u2022 INx - Dedizierter digitaler Eingang#x\n@@ -21151,15 +21151,15 @@\n Pin der PWM-Ausgang\n geXORt mit UP1 oder\n PWM1\n Wenn pwm-2-pwmdir\n TRUE ist, dann ist dieser\n Pin der PWM-Ausgang\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 405 / 1331\n \n Tabelle 6.41: (continued)\n Prim\u00e4re Funktion\n \n Alternative Funktion\n@@ -21262,15 +21262,15 @@\n 6.13.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 geteilt werden.\n \u2022 Die digitalen Eing\u00e4nge IN0 bis IN19 werden alle gleichzeitig gehalten (engl. latched).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 406 / 1331\n \n \u2022 Die Quadraturpositionen werden f\u00fcr jeden Kanal zu unterschiedlichen Zeiten gespeichert.\n 6.13.2.3 HAL-Funktionen, Pins und Parameter\n Eine Liste aller loadrt-Argumente, HAL-Funktionsnamen, Pin-Namen und Parameter-Namen befindet\n sich in der Manpage zu pluto_servo.9.\n@@ -21296,15 +21296,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 407 / 1331\n \n Abbildung 6.11: Pluto-Step Pinout\n \n 6.13.3.2 Input-Latching und Output-Aktualisierung\n \u2022 Die Schrittfrequenzen f\u00fcr jeden Kanal werden zu unterschiedlichen Zeiten aktualisiert.\n@@ -21312,15 +21312,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.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 408 / 1331\n \n Abbildung 6.12: Pluto-Step-Timings\n \n 6.13.3.4 HAL-Funktionen, Pins und Parameter\n Eine Liste aller loadrt-Argumente, HAL-Funktionsnamen, Pin-Namen und Parameter-Namen findet\n@@ -21336,15 +21336,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 409 / 1331\n \n 6.14.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@@ -21375,15 +21375,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.14.3 Referenz:\n \u2022 Hypertherm Anwendungshinweis #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serielles Kommunikationsprotokoll\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 410 / 1331\n \n 6.15 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@@ -21420,15 +21420,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.15.2 Pins\n \u2022 stg.<channel>.counts - (s32) Folgt den gez\u00e4hlten Encoder-Ticks.\n \u2022 stg.<channel>.position - (float) Gibt eine konvertierte Position aus.\n \u2022 stg.<channel>.dac-value - (float) Steuert die Spannung f\u00fcr den entsprechenden DAC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 411 / 1331\n \n \u2022 stg.<channel>.adc-value - (float) Folgt die gemessene Spannung vom entsprechenden ADC.\n \u2022 stg.in-<pinnum> - (bit) Folgt einen physischen Eingangspin.\n \u2022 stg.in-<pinnum>-not - (bit) Folgt einem physischen Eingangspin, aber invertiert.\n \u2022 stg.out-<pinnum> - (Bit) Treibt einen physischen Ausgangspin an\n@@ -21454,15 +21454,15 @@\n \u2022 stg.capture-position - Liest die Encoder-Z\u00e4hler von der Achse <channel>.\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-<pinnum> und In- nicht\n <pinnum>Pins.\n \u2022 stg.do-write - Liest alle HAL out-<pinnum> Pins und aktualisiert alle physischen Ausgangspins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 412 / 1331\n \n 6.16 Shuttle\n 6.16.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@@ -21494,15 +21494,15 @@\n \n 6.16.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 <Prefix>.button-<ButtonNumber> (bit out)\n Diese Pins sind wahr (1) wenn die Schaltfl\u00e4che gedr\u00fcckt wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 413 / 1331\n \n <Prefix>.button-<ButtonNumber>-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 <Prefix>.counts (s32 out)\n@@ -21538,15 +21538,15 @@\n Debugging can be toggled by sending a USR1 signal to the vfs11_vfd process. Modbus debugging can\n be toggled by sending a USR2 signal to vfs11_vfd process (example: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 414 / 1331\n \n 6.17.2 Pins\n Dabei steht <n> f\u00fcr vfs11_vfd oder den beim Laden mit der Option -n angegebenen Namen.\n \u2022 <n>.acceleration-pattern (bit, in) when true, set acceleration and deceleration times as defined\n in registers F500 and F501 respectively. Used in PID loops to choose shorter ramp times to avoid\n@@ -21582,15 +21582,15 @@\n \u2022 <n>.output-voltage-percentage (float, out) vom VFD\n \u2022 <n>.output-voltage (float, out) vom VFD\n \u2022 <n>.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 \u2022 <n>.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 <n>.spindle-on (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS an den VFD gesendet, nur bei Betrieb eingeschaltet\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 415 / 1331\n \n \u2022 <n>.spindle-rev (bit, in) 1 f\u00fcr EIN und 0 f\u00fcr AUS, nur bei Betrieb eingeschaltet\n \u2022 <n>.jog-mode (bit, in) 1 for ON and 0 for OFF, enables the VF-S11 jog mode. Speed control is\n disabled, and the output frequency is determined by register F262 (preset to 5 Hz). This might be\n useful for spindle orientation. In normal mode, the VFD shuts off if the frequency drops below 12\n@@ -21625,15 +21625,15 @@\n # TCP-Server - Warten Sie auf eingehende Verbindung\n TYP=tcpserver\n # tcp portnumber f\u00fcr TYPE=tcpserver oder tcpclient\n PORT=1502\n # TCP-Client - aktive ausgehende Verbindung\n TYPE=tcpclient\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n # Ziel, zu dem eine Verbindung aufgebaut werden soll if TYPE=tcpclient\n TCPDEST=192.168.1.1\n ---------- nur sinnvoll, wenn TYPE=rtu ------# serial device detail\n # 5 6 7 8\n BITS= 5\n # even odd none\n@@ -21675,15 +21675,15 @@\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 net vfs11-run spindle-vfd.spindle-on <= spindle.0.on\n \n 416 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 417 / 1331\n \n # Verbinden des VF-S11-auf-Geschwindigkeit-Pins\n net vfs11-at-speed spindle.0.at-speed <= spindle-vfd.at-speed\n # Verbinden der Spindeldrehzahl-Pins\n net vfs11-RPM spindle-vfd.speed-command <= spindle.0.speed-out\n@@ -21722,15 +21722,15 @@\n 6.17.8 Konfigurieren des VFS11 VFD f\u00fcr die Modbus-Nutzung\n 6.17.8.1 Anschlie\u00dfen der seriellen Schnittstelle\n The VF-S11 has an RJ-45 jack for serial communication. Unfortunately, it does not have a standard\n RS-232 plug and logic levels. The Toshiba-recommended way is: connect the USB001Z USB-to-serial\n conversion unit to the drive, and plug the USB port into the PC. A cheaper alternative is a homebrew\n interface ( hints from Toshiba support, circuit diagram).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 418 / 1331\n \n Hinweis: Der 24-V-Ausgang des VFD hat keinen Kurzschlussschutz.\n Die Werkseinstellungen f\u00fcr die serielle Schnittstelle sind 9600/8/1/gerade, das Protokoll ist standardm\u00e4\u00dfig das propriet\u00e4re Toshiba Inverter Protocol\u201d.\n 6.17.8.2 Modbus-Einrichtung\n Several parameters need setting before the VF-S11 will talk to this module. This can either be done\n@@ -21750,15 +21750,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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 419 / 1331\n \n Kapitel 7\n \n Hardware-Beispiele\n 7.1 PCI-Parallelport\n@@ -21789,15 +21789,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 420 / 1331\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@@ -21836,15 +21836,15 @@\n \n 7.2.3 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 421 / 1331\n \n 7.2.4 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@@ -21882,15 +21882,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 422 / 1331\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@@ -21930,15 +21930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 423 / 1331\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@@ -21978,15 +21978,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 424 / 1331\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@@ -22032,15 +22032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 425 / 1331\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@@ -22089,15 +22089,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 426 / 1331\n \n net encoder-counts => axis.z.jog-counts\n \n 7.4 GS2 Spindel\n 7.4.1 Beispiel\n@@ -22134,15 +22134,15 @@\n \n \u2022 P4.00 (Quelle des Frequenzbefehls) muss auf \u201dFrequenz bestimmt durch RS232C/RS485-Kommunikations\n eingestellt werden, 05.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 427 / 1331\n \n Kapitel 8\n \n ClassicLadder\n 8.1 ClassicLadder Einf\u00fchrung\n@@ -22169,15 +22169,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 428 / 1331\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@@ -22208,15 +22208,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 429 / 1331\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@@ -22244,15 +22244,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 430 / 1331\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@@ -22291,15 +22291,15 @@\n 8.2.3.1 Dateien\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 Anmerkung\n Kontaktplan-Dateien (.clp) d\u00fcrfen keine Leerzeichen im Namen enthalten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 431 / 1331\n \n 8.2.3.2 Echtzeit-Modul\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@@ -22378,15 +22378,15 @@\n how many HAL signed integers (+- integer range) pins are available.\n Zum Beispiel (Sie brauchen nicht alle, nur einige wenige zu \u00e4ndern):\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 432 / 1331\n \n Um die Standardanzahl von Objekten zu laden:\n loadrt classicladder_rt\n \n 8.2.4 Loading the ClassicLadder non-realtime module\n@@ -22416,29 +22416,29 @@\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 In AXIS k\u00f6nnen Sie die GUI \u00fcber Datei/Kontaktplan-Editor\u2026 laden.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 433 / 1331\n \n 8.2.5.1 Sektions-Manager\n Wenn Sie ClassicLadder zum ersten Mal starten, sehen Sie ein leeres Fenster des Abschnittsmanagers.\n \n Abbildung 8.1: Sections Manager Standardfenster\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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 434 / 1331\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@@ -22455,15 +22455,15 @@\n 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 did not 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 435 / 1331\n \n 8.2.5.3 Die Variablenfenster\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@@ -22474,27 +22474,27 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 436 / 1331\n \n Abbildung 8.4: Schaufenster\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 437 / 1331\n \n 8.2.5.4 Symbol-Fenster\n \n Abbildung 8.5: Fenster mit Symbolnamen\n This is a list of symbol names to use instead of variable names to be displayed in the section window\n@@ -22502,30 +22502,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 438 / 1331\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 \u2022 Einf\u00fcgen (engl. insert) - f\u00fcgt eine Sprosse vor der ausgew\u00e4hlten Sprosse ein\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. Input, N.C. Input, Rising Edge Input, Falling Edge Input\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 439 / 1331\n \n \u2022 Horizontal Connection, Vertical Connection, Long Horizontal Connection\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@@ -22556,21 +22556,21 @@\n %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, e.g. %W2=7\n or %W1=%W2. ASSIGNMENT functions can only be placed at the right most side of the section display.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 440 / 1331\n \n Abbildung 8.7: Konfigurationsfenster\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 441 / 1331\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, e.g. %I2,\n@@ -22605,15 +22605,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 The time intervals can be set in multiples of 100&8239;ms, seconds, or minutes.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 442 / 1331\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 milliseconds, seconds, or minutes.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 443 / 1331\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@@ -22673,15 +22673,15 @@\n \u2022 +, -, *, /, = (standard math symbols)\n \u2022 < (less than), > (greater than), <= (less or equal), >= (greater or equal), <> (not equal)\n \u2022 (, ) separate into groups example %IF1=2,&%IF2<5 in pseudo code translates to if %IF1 is equal to\n 2 and %IF2 is less than 5 then the comparison is true. Note the comma separating the two groups\n of comparisons.\n \u2022 ^ (exponent), % (modulus), & (and), | (or),. \u2022 ABS (absolute), MOY (French for average), AVG (average)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 444 / 1331\n \n Zum Beispiel ABS(%W2)=1, MOY(%W1,%W2)<3.\n No spaces are allowed in the comparison equation. For example %C0.V>%C0.P is a valid comparison\n expression while %C0.V > %CO.P is not a valid expression.\n There is a list of Variables down the page that can be used for reading from and writing to ladder\n@@ -22713,23 +22713,23 @@\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\n 5 and when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will\n be set to True.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 445 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 446 / 1331\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@@ -22756,15 +22756,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 447 / 1331\n \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@@ -22805,15 +22805,15 @@\n \u2022 %TM \u0300\n __xxx__.V \u0300 - Timer xxx value (integer, read write)\n \u2022 %M \u0300\n __xx__.R \u0300 - Monostable xx running (Boolean)\n \u2022 %M \u0300\n __xx__.V \u0300 - Monostable xx current value (integer, user read only)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 448 / 1331\n \n \u2022 %M \u0300\n __xx__.P \u0300 - Monostable xx preset (integer)\n \u2022 %C \u0300\n __xx__.D \u0300 - Counter xx done (Boolean, user read only)\n@@ -22856,15 +22856,15 @@\n This is the SEQUENTIAL editor window. (Starting from the top left):\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 449 / 1331\n \n Link, Comment Box\n \n Abbildung 8.11: Fenster des Sequenzeditors\n \u2022 ORDINARY STEP - hat f\u00fcr jeden eine eindeutige Nummer\n@@ -22876,15 +22876,15 @@\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 \u2022 JUMP LINK - verbindet Schritte, die nicht untereinander liegen, z. B. das Verbinden des letzten\n Schritts mit dem ersten\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 450 / 1331\n \n \u2022 COMMENT BOX - wird verwendet, um Kommentare hinzuzuf\u00fcgen\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 %X \u0300\n@@ -22918,21 +22918,21 @@\n \u2022 6 - Einzelnes Register schreiben\n \u2022 8 - Echo-Test\n \u2022 15 - mehrere Spulen schreiben\n \u2022 16 - mehrere Register schreiben\n If you do not specify a --modmaster when loading the ClassicLadder non-realtime program this page\n will not be displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 8.12: Modbus I/O-Konfiguration\n \n 451 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 452 / 1331\n \n Abbildung 8.13: Modbus-Kommunikationskonfiguration\n \u2022 SERIAL PORT - For IP blank. For serial the location/name of serial driver, e.g., /dev/ttyS0 ( or /dev/ttyUSB0 for a USB-to-serial converter).\n \u2022 SERIAL SPEED - Sollte auf Geschwindigkeit eingestellt sein, f\u00fcr die der Slave eingestellt ist - 300,\n 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 werden unterst\u00fctzt.\n@@ -22944,15 +22944,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 453 / 1331\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@@ -22990,15 +22990,15 @@\n Schlie\u00dfen des Konfigurationsfensters werden die Werte \u00fcbernommen, die Radio-Buttons gelten jedoch\n sofort).\n To use the echo function select the echo function and add the slave number you wish to test. You don\u2019t\n need to specify any variables.\n The number 257 will be sent to the slave number you specified and the slave should send it back. You\n will need to have ClassicLadder running in a terminal to see the message.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 454 / 1331\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@@ -23029,15 +23029,15 @@\n Weitere Informationen zum Modbus-Protokoll finden Sie im Internet.\n https://www.modbus.org/\n 8.2.10.2 Kommunikationsfehler\n If there is a communication error, a warning window will pop up (if the GUI is running) and %E0 will\n be true. Modbus will continue to try to communicate. The %E0 could be used to make a decision based\n on the error. A timer could be used to stop the machine if timed out, etc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 455 / 1331\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@@ -23045,15 +23045,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 456 / 1331\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@@ -23079,15 +23079,15 @@\n (2\n 1 bis 125 (0x7D)\n Bytes)\n (2\n Automatisch\n Bytes) berechnet\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 457 / 1331\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 <Data-21 0 0 1 8E 36\n \n Slave address-1\n@@ -23138,15 +23138,15 @@\n \n (Slave address-1\n \n Function\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 458 / 1331\n \n \u2022 Slave-Nummer = 1 (0x1) = Slave-Adresse 1\n \u2022 Funktionscode = 131 (0x83) = Fehler beim Lesen des Holdingregisters\n \u2022 Fehlercode = 2 (0x2) = unzul\u00e4ssige Datenadresse angefordert\n \u2022 Pr\u00fcfsumme = (0x8E36)\n@@ -23200,15 +23200,15 @@\n \u2022 Wert des Lowbyte = 0 (0x0) = Wert des Highbyte der Adresse 8448 (0x2100)\n \u2022 Pr\u00fcfsumme = (0xB844)\n (High- und Low-Bytes werden zu einem 16-Bit-Wert kombiniert und dann an die ClassicLadder-Variable\n \u00fcbertragen). Leseregister k\u00f6nnen auf %W oder %QW (interner Speicher oder HAL-Out-Pins) abgebildet werden. Schreibregister k\u00f6nnen auf %W, %QW oder %IW (interner Speicher, HAL-Out-Pins oder\n HAL-In-Pins) abgebildet werden: Wenn mehrere Register in einem Lese-/Schreibvorgang angefordert\n werden, sind die Variablennummern nach der ersten fortlaufend.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 459 / 1331\n \n 8.2.11.4 MODBUS-Fehler\n \u2022 In Vergleichsbl\u00f6cken wird die Funktion %W=ABS(%W1-%W2) akzeptiert, aber nicht korrekt berechnet. Nur %W0=ABS(%W1) ist derzeit zul\u00e4ssig.\n \u2022 When loading a ladder program it will load Modbus info but will not tell ClassicLadder to initialize\n Modbus. You must initialize Modbus when you first load the GUI by adding --modmaster.\n@@ -23225,15 +23225,15 @@\n Abbildung 8.16: StepConf ClassicLadder\n \n 8.2.12.1 Hinzuf\u00fcgen der Module\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 460 / 1331\n \n Diese Zeile l\u00e4dt das Echtzeitmodul:\n loadrt classicladder_rt\n \n Diese Zeile f\u00fcgt dem Servo-Thread die Funktion ClassicLadder hinzu:\n@@ -23246,46 +23246,46 @@\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 Abbildung 8.17: Abschnitt Display mit Grid\n Now click on the N.O. input in the Editor Window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 461 / 1331\n \n Abbildung 8.18: Editor-Fenster\n Klicken Sie nun in das obere linke Raster, um den N.O.-Eingang in der Leiter zu platzieren.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 462 / 1331\n \n Abbildung 8.19: Abschnitt Display mit 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 463 / 1331\n \n Abbildung 8.20: Abschnittsanzeige mit Sprosse\n Klicken Sie nun im Editor-Fenster auf die Schaltfl\u00e4che OK. Jetzt sollte Ihre Abschnittsanzeige wie folgt\n aussehen:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 464 / 1331\n \n Abbildung 8.21: Abschnitt Anzeige Beendet\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 465 / 1331\n \n Abbildung 8.22: Speichern unter 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@@ -23296,15 +23296,15 @@\n \n 8.3 ClassicLadder Beispiele\n 8.3.1 Umlaufender (engl. wrapping) Z\u00e4hler\n Um einen Z\u00e4hler zu haben, der \u201dumspringt\u201d, m\u00fcssen Sie den Preset-Pin und den Reset-Pin verwenden.\n Wenn Sie den Z\u00e4hler erstellen, setzen Sie den Preset auf die Zahl, die Sie erreichen wollen, bevor Sie\n auf 0 umbrechen. Die Logik ist, wenn der Z\u00e4hlerwert \u00fcber dem Preset liegt, dann setzen Sie den\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 466 / 1331\n \n Z\u00e4hler zur\u00fcck und wenn der Unterlauf an ist, dann setzen Sie den Z\u00e4hlerwert auf den Preset-Wert.\n Wie Sie im Beispiel sehen k\u00f6nnen, wird der Z\u00e4hler zur\u00fcckgesetzt, wenn der Z\u00e4hlerwert gr\u00f6\u00dfer als der\n Vorwahlwert ist, und der Wert ist jetzt 0. Der Unterlaufausgang %Q2 setzt den Z\u00e4hlerwert auf den\n Vorwahlwert, wenn r\u00fcckw\u00e4rts gez\u00e4hlt wird.\n@@ -23315,15 +23315,15 @@\n Dieses Beispiel zeigt Ihnen, wie Sie zus\u00e4tzliche Impulse von einem Eingang zur\u00fcckweisen k\u00f6nnen.\n Nehmen wir an, der Eingangsimpuls %I0 hat die l\u00e4stige Angewohnheit, einen zus\u00e4tzlichen Impuls\n abzugeben, der unsere Logik st\u00f6rt. Der TOF (Timer Off Delay) verhindert, dass der zus\u00e4tzliche Impuls unseren bereinigten Ausgang %Q0 erreicht. Das funktioniert so: Wenn der Timer einen Eingang\n erh\u00e4lt, ist der Ausgang des Timers f\u00fcr die Dauer der eingestellten Zeit eingeschaltet. Mit Hilfe eines\n \u00d6ffnerkontakts %TM0.Q blockiert der Ausgang der Zeitschaltuhr alle weiteren Eing\u00e4nge, die unseren\n Ausgang erreichen, bis die Zeit abgelaufen ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 467 / 1331\n \n Abbildung 8.24: Extra-Impuls ablehnen\n \n 8.3.3 Externer Notaus\n Das Beispiel f\u00fcr den externen Notaus-Schalter befindet sich im Ordner /config/classicladder/cl-estop.\n@@ -23337,15 +23337,15 @@\n Als N\u00e4chstes f\u00fcgen wir ClassicLadder zu unserer Datei custom.hal hinzu, indem wir diese beiden\n Zeilen hinzuf\u00fcgen:\n loadrt classicladder_rt\n addf classicladder.0.refresh servo-thread\n \n Als N\u00e4chstes f\u00fchren wir unsere Konfiguration aus und erstellen die Leiter wie hier gezeigt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 468 / 1331\n \n Abbildung 8.25: Anzeige des Notaus-Bereichs\n Nach dem Erstellen der Leiter w\u00e4hlen Sie Speichern unter und speichern die Leiter als estop.clp\n F\u00fcgen Sie nun die folgende Zeile in Ihre Datei custom.hal ein.\n # Laden der Ladder\n@@ -23357,15 +23357,15 @@\n \u2022 %I2 = Eingang von LinuxCNC\u2019s Notaus Reset Impuls\n \u2022 %I3 = Eingang von der PyVCP-Panel-Reset-Taste\n \u2022 %Q0 = Ausgabe an LinuxCNC zur Freigabe\n \u2022 %Q1 = Ausgang zum Freigabe-Pin der externen Treiberkarte (verwenden Sie einen N/C-Ausgang,\n wenn Ihre Karte einen Deaktivierungs-Pin hat)\n Als n\u00e4chstes f\u00fcgen wir die folgenden Zeilen in die Datei custom_postgui.hal ein\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 469 / 1331\n \n # Beispiel f\u00fcr einen Notaus-Schalter mit PyVCP-Tasten zur Simulation externer Komponenten\n # Der PyVCP-Checkbutton simuliert einen normalerweise geschlossenen externen Notaus- \u2190Schalter.\n net ext-estop classicladder.0.in-00 <= pyvcp.py-estop\n # Anforderung der Notaus-Freigabe von LinuxCNC\n@@ -23399,36 +23399,36 @@\n <halpin>\u201dpy-reset\u201d</halpin>\n <text>\u201dReset\u201d</text>\n </button>\n </pyvcp>\n \n Starten Sie nun Ihre Konfiguration und sie sollte so aussehen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 470 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 471 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 472 / 1331\n \n Kapitel 9\n \n Fortgeschrittene Themen\n 9.1 Kinematik\n@@ -23451,15 +23451,15 @@\n X, joint 1 along axis Y, joint 2 along axis Z), and these machines are called Cartesian machines (or\n machines with Trivial Kinematics). These are the most common machines used in milling, but are not\n very common in other domains of machine control (e.g. welding: puma-typed robots).\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 Kinematics: a two way function to transform from Cartesian space to joint space.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 473 / 1331\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@@ -23510,15 +23510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 474 / 1331\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@@ -23539,15 +23539,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 475 / 1331\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@@ -23560,15 +23560,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 476 / 1331\n \n Wenn wir das eine von dem anderen abziehen, erhalten wir:\n \n und deshalb:\n \n@@ -23600,15 +23600,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 477 / 1331\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@@ -23643,15 +23643,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 478 / 1331\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@@ -23681,15 +23681,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 479 / 1331\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@@ -23724,15 +23724,15 @@\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 3. d : positive or negative length along Z (also in machine units)\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 480 / 1331\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@@ -23760,87 +23760,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 481 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 482 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 483 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 484 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 485 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 486 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 487 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 488 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 489 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 490 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 491 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 492 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 493 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 494 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 495 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 496 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 497 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 498 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 499 / 1331\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-Axis Kinematics\n@@ -23871,29 +23871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 500 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 501 / 1331\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@@ -23901,15 +23901,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 502 / 1331\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@@ -23919,46 +23919,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 503 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 504 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 505 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 506 / 1331\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@@ -23977,58 +23977,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 507 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 508 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 509 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 510 / 1331\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@@ -24047,42 +24047,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 511 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 512 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 513 / 1331\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@@ -24101,15 +24101,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 514 / 1331\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@@ -24145,15 +24145,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 515 / 1331\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@@ -24181,29 +24181,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9.3.8 Abbildungen\n \n Abbildung 9.10: Kipp-/Drehkonfiguration des Tisches\n \n 516 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 9.11: Spindel-/Tischkippkonfiguration\n \n 517 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 518 / 1331\n \n Abbildung 9.12: Kipp-/Drehkonfiguration der Spindel\n \n 9.3.9 VERWEISE\n 1. AXIS MACHINE TOOLS: Kinematics and Vismach Implementation in LinuxCNC, RJ du Preez,\n@@ -24219,15 +24219,15 @@\n 9.4 Schaltbare Kinematik (switchkins)\n 9.4.1 Einf\u00fchrung\n Eine Reihe von Kinematikmodulen unterst\u00fctzt die Umschaltung von Kinematikberechnungen. Diese Module unterst\u00fctzen eine Standard-Kinematikmethode (Typ0), eine zweite eingebaute Methode\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 519 / 1331\n \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 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@@ -24261,15 +24261,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 520 / 1331\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@@ -24302,15 +24302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 521 / 1331\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@@ -24347,15 +24347,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 522 / 1331\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@@ -24399,15 +24399,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 (Switch to identity type1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 523 / 1331\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@@ -24434,15 +24434,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 524 / 1331\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@@ -24468,15 +24468,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 525 / 1331\n \n 9.5 PID 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@@ -24510,15 +24510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 526 / 1331\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@@ -24556,15 +24556,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 527 / 1331\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@@ -24640,15 +24640,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 528 / 1331\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@@ -24684,15 +24684,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 529 / 1331\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@@ -24726,15 +24726,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 530 / 1331\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@@ -24769,15 +24769,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 531 / 1331\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@@ -24813,15 +24813,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 #<P> and #<Q>. The procedure may test whether the Q word was present with the EXISTS built\n in function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 532 / 1331\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@@ -24861,15 +24861,15 @@\n epilog=<Python function name>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 533 / 1331\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=<words> ngc=<procname> modalgroup=_<group>\n@@ -24908,15 +24908,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 534 / 1331\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@@ -24953,15 +24953,15 @@\n o<m400> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 535 / 1331\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<m410> sub\n@@ -25004,15 +25004,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 536 / 1331\n \n import sys\n import traceback\n from math import sin,cos\n from interpreter import *\n@@ -25055,15 +25055,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 537 / 1331\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=<path-to-toplevel-script>\n in the INI file.\n@@ -25104,15 +25104,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 538 / 1331\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@@ -25150,15 +25150,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 539 / 1331\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@@ -25208,15 +25208,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 540 / 1331\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@@ -25263,15 +25263,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 541 / 1331\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@@ -25305,15 +25305,15 @@\n \u2022 M6 (change_prolog): #<tool_in_spindle>, #<selected_tool>, #<current_pocket>, #<selected_pocket>\n \u2022 M61 (settool_prolog): #<tool> , #<pocket>\n \u2022 S (setspeed_prolog): #<speed>\n \u2022 F (setfeed_prolog): #<feed>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 542 / 1331\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@@ -25363,15 +25363,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 543 / 1331\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@@ -25419,15 +25419,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 544 / 1331\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@@ -25476,15 +25476,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 545 / 1331\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@@ -25518,15 +25518,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 546 / 1331\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@@ -25570,15 +25570,15 @@\n [PYTHON]\n TOPLEVEL = <filename>\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 = <directory>\n Dieses Verzeichnis dem PYTHON_PATH voranstellen. Eine sich wiederholende Gruppe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 547 / 1331\n \n PATH_APPEND = <directory>\n Dieses Verzeichnis an PYTHON_PATH anh\u00e4ngen. Eine sich wiederholende Gruppe.\n LOG_LEVEL = <integer>\n Log level of plugin-related actions. Increase this if you suspect problems. Can be very verbose.\n@@ -25616,15 +25616,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.<funct\n and remap.<function> Python calls are methods of this Interp class, although there is no explicit Python definition of this class (it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 548 / 1331\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@@ -25664,15 +25664,15 @@\n \u2013 when a comment like ;py,<Python statement> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 549 / 1331\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@@ -25710,15 +25710,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 550 / 1331\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n a message text\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25758,15 +25758,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 551 / 1331\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@@ -25808,15 +25808,15 @@\n return \u201dtestparam forgot to assign #<result>\u201d\n return INTERP_OK\n o<testparam> sub\n (debug, call_level=#<_call_level> myname=#<myname>)\n ; try commenting out the next line and run again\n #<result> = [#<myname> * 3]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 552 / 1331\n \n #1 = [#1 * 5]\n #2 = [#2 * 3]\n o<testparam> endsub\n m2\n@@ -25858,15 +25858,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 553 / 1331\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@@ -25903,15 +25903,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 #<Umfang> = [2 * #<Radius> * #<_pi>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 554 / 1331\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@@ -25943,15 +25943,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 #<tool> and #<pocket> 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(#<tool>) is executed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 555 / 1331\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@@ -25982,15 +25982,15 @@\n be preceding or following it with some other statements.\n \u2022 Otherwise, the #<selected_pocket> 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(#<selected_pocket>) is executed.\n \u2022 Die neuen Werkzeugparameter (Versatz, Durchmesser usw.) werden eingestellt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 556 / 1331\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@@ -26022,15 +26022,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 557 / 1331\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@@ -26089,15 +26089,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 558 / 1331\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@@ -26114,15 +26114,15 @@\n \n To cover the last two steps: the o<pydevd> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 559 / 1331\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@@ -26152,15 +26152,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 560 / 1331\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@@ -26238,15 +26238,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 561 / 1331\n \n Tabelle 9.8: Tabelle der zugewiesenen G-Codes 50-59\n #\n 30\n 31\n@@ -26330,15 +26330,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 562 / 1331\n \n Tabelle 9.11: (continued)\n #\n 62\n 63\n@@ -26420,15 +26420,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 563 / 1331\n \n Tabelle 9.14: (continued)\n #\n 94\n 95\n@@ -26581,15 +26581,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 564 / 1331\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@@ -26617,15 +26617,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 565 / 1331\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@@ -26670,15 +26670,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 it\n is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 566 / 1331\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@@ -26709,15 +26709,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 567 / 1331\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@@ -26751,15 +26751,15 @@\n Interpreter action on a Tx command\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 568 / 1331\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@@ -26793,15 +26793,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 569 / 1331\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@@ -26830,15 +26830,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 570 / 1331\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@@ -26876,15 +26876,15 @@\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 offsets are frozen and the waypoint-limit pin is asserted. This restriction applies regardless of the\n state of the backtrack-enable pin. An enabling pin must be deasserted to allow a return to the original\n (non-offset position).\n Backtracking durch Wegpunkte f\u00fchrt zu langsameren Bewegungsraten, da die Bewegungen Punktzu-Punkt unter Ber\u00fccksichtigung der Geschwindigkeits- und Beschleunigungseinstellungen erfolgen.\n Die Geschwindigkeits- und Beschleunigungsgrenzwerte k\u00f6nnen dynamisch verwaltet werden, um Vers\u00e4tze jederzeit zu kontrollieren.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 571 / 1331\n \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 die Komponente im Leerlauf befindet.\n@@ -26913,15 +26913,15 @@\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 Wenn die System-HAL-Datei (LIB:hookup_moveoff.tcl) ordnungsgem\u00e4\u00df in einer Konfigurations-INIDatei angegeben ist, wird sie:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 572 / 1331\n \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 3. Funktionen der Auszugskomponenten in der gew\u00fcnschten Reihenfolge hinzuf\u00fcgen (addf)\n@@ -26963,15 +26963,15 @@\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 1. Aktivieren/Deaktivieren von Offsets \u00fcber eine Umschalttaste (engl. togglebutton).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 573 / 1331\n \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 5. Anzeige des aktuellen Offset-Status (deaktiviert, aktiv, entfernt, etc.)\n@@ -27011,15 +27011,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 574 / 1331\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@@ -27068,15 +27068,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 575 / 1331\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@@ -27114,15 +27114,15 @@\n \n Befehl\n rs274 -g test.ngc -t test.tbl\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 576 / 1331\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@@ -27153,15 +27153,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 Anwendung\n The axis input HAL pins (enable,scale,counts) are similar to the pins used for wheel jogging.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 577 / 1331\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@@ -27197,15 +27197,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 578 / 1331\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@@ -27230,15 +27230,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 579 / 1331\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@@ -27278,15 +27278,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 580 / 1331\n \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 Signal e:<L>counts), eoffset-clear (\u00fcber Signal e:clearall)\n Ein Skript (eoffsets_monitor.tcl) wird verwendet, um die axis.L.counts-Pins beim Ausschalten der Maschine auf Null zu setzen.\n@@ -27314,15 +27314,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 581 / 1331\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@@ -27359,15 +27359,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 582 / 1331\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@@ -27402,15 +27402,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 583 / 1331\n \n #!/usr/bin/env python3\n from linuxcnc import command\n command().load_tool_table()\n \n@@ -27448,15 +27448,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n user_tools = list(...)\n \n 584 / 1331\n \n # list of available tool numbers\n \n@@ -27502,61 +27502,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 585 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 586 / 1331\n \n Teil II\n \n Anwendung\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 587 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 588 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 589 / 1331\n \n 10.1.2.1 INI-Einstellungen\n For more information on INI file settings that can change how AXIS works see the Display Section\n and the Axis Section of the INI Configuration Chapter.\n \u2022 CYCLE_TIME - Passen Sie die Antwortrate der GUI in Millisekunden an. Typisch 100, nutzbarer\n@@ -27589,15 +27589,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 590 / 1331\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@@ -27634,15 +27634,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 591 / 1331\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@@ -27675,15 +27675,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 592 / 1331\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@@ -27715,15 +27715,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 593 / 1331\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@@ -27763,15 +27763,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 594 / 1331\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@@ -27825,15 +27825,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022\n \n Vergr\u00f6\u00dfern (engl. zoom in)\n \n \u2022\n \n@@ -27887,15 +27887,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<n> (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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 596 / 1331\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@@ -27930,15 +27930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 597 / 1331\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@@ -27957,15 +27957,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 598 / 1331\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@@ -27993,15 +27993,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 599 / 1331\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@@ -28019,15 +28019,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 600 / 1331\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@@ -28042,15 +28042,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 601 / 1331\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@@ -28102,15 +28102,15 @@\n Jede (engl. any)\n Variiert\n Handbuch\n Handbuch\n Handbuch\n Handbuch\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 602 / 1331\n \n Tabelle 10.1: (continued)\n Tastenkombination\n I\n C\n@@ -28200,15 +28200,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 603 / 1331\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@@ -28225,15 +28225,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 604 / 1331\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@@ -28262,15 +28262,15 @@\n 10.1.9 Python modules\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 <Modulname> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 605 / 1331\n \n \u2022 rs274 bietet zus\u00e4tzliche Tools f\u00fcr die Arbeit mit RS274NGC-Dateien\n \u2022 hal allows the creation of non-realtime HAL components written in Python\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@@ -28280,44 +28280,44 @@\n k\u00f6nnen Sie dies mit \u201dscripts/rip-environment\u201d tun.\n \n 10.1.10 Using AXIS in Lathe Mode\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 606 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 607 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 608 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 609 / 1331\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@@ -28325,15 +28325,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=<Dateiname> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 610 / 1331\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@@ -28354,15 +28354,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 611 / 1331\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@@ -28398,15 +28398,15 @@\n Beispiel einer .axisrc-Datei\n root_window.bind(\u201d<Control-q>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 612 / 1331\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@@ -28441,15 +28441,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 613 / 1331\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@@ -28532,15 +28532,15 @@\n \n Dir\n IN\n \n Name\n axisui.resume-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 614 / 1331\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@@ -28576,15 +28576,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 615 / 1331\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<Control-Key-quoteleft>\u2019,lambda event: set_rapidrate(0))\n@@ -28626,15 +28626,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 616 / 1331\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@@ -28675,15 +28675,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 617 / 1331\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@@ -28722,15 +28722,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -28840,15 +28840,15 @@\n task_state\n = IntVar\n taskfile\n = StringVar\n \n 618 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n teleop_mode\n tool\n touch_off_system\n trajcoordinates\n tto_g11\n view_type\n@@ -28892,15 +28892,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 620 / 1331\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@@ -28931,15 +28931,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 621 / 1331\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@@ -28955,15 +28955,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 622 / 1331\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@@ -28976,15 +28976,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 623 / 1331\n \n Sie erhalten einen \u00e4hnlichen Bildschirm wie den folgenden (das Design kann je nach Ihrer Konfiguration variieren):\n \n 10.2.4 Basiseinstellung\n GMOCCAPY 3 unterst\u00fctzt die folgenden Befehlszeilenoptionen:\n@@ -28995,15 +28995,15 @@\n Es gibt eigentlich nicht viel zu konfigurieren, um GMOCCAPY auszuf\u00fchren, aber es gibt einige Punkte,\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 624 / 1331\n \n \u2022 lathe_configs/gmoccapy_lathe.ini\n \u2022 lathe_configs/gmoccapy_lathe_imperial.ini\n \u2022 gmoccapy_left_panel.ini\n \u2022 gmoccapy_right_panel.ini\n@@ -29040,15 +29040,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 <your_machinename>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 625 / 1331\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@@ -29077,15 +29077,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 626 / 1331\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@@ -29124,15 +29124,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 627 / 1331\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<go_to_position> sub\n G17\n@@ -29152,15 +29152,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 628 / 1331\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@@ -29174,15 +29174,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 629 / 1331\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 (as main tab, covering the complete screen)\n \u2013 ntb_preview (as tab on the preview side (1))\n \u2013 hbox_jog (will hide the jog buttons and introduce your glade file here (2))\n@@ -29217,29 +29217,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 630 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ntb_preview\n \n 631 / 1331\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -29260,15 +29260,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 <span background=\u201d#ff0000\u201d foreground=\u201d#ffffff\u201d>info-message</span \u2190> test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 632 / 1331\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>small</small>, <big>big</big>, <b>bold</b <i>italic</i>,\n@@ -29309,15 +29309,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 \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 633 / 1331\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 being applied to the GUI.\n@@ -29361,15 +29361,15 @@\n \n You can specify where to save the log file:\n [DISPLAY]\n LOG_FILE = gmoccapy.log\n \n If LOG_FILE is not set, logging happens to $HOME/<base_log_name>.log.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 634 / 1331\n \n 10.2.5 HAL-Pins\n GMOCCAPY exports several HAL pins to be able to react to hardware devices. The goal is to get a\n GUI that may be operated in a tool shop, completely/mostly without mouse or keyboard.\n Anmerkung\n@@ -29402,15 +29402,15 @@\n For the bottom (horizontal) buttons they are:\n \u2022 gmoccapy.h-button.button-0 (bit IN)\n \u2022 gmoccapy.h-button.button-1 (bit IN)\n \u2022 gmoccapy.h-button.button-2 (bit IN)\n \u2022 gmoccapy.h-button.button-3 (bit IN)\n \u2022 gmoccapy.h-button.button-4 (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 635 / 1331\n \n \u2022 gmoccapy.h-button.button-5 (bit IN)\n \u2022 gmoccapy.h-button.button-6 (bit IN)\n \u2022 gmoccapy.h-button.button-7 (bit IN)\n \u2022 gmoccapy.h-button.button-8 (bit IN)\n@@ -29516,15 +29516,15 @@\n \n set selected\n \n back\n \n back\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 636 / 1331\n \n Tabelle 10.5: Funktionelle Zuordnung der horizontalen\n Buttons (3)\n Pin\n Tool Mode\n@@ -29577,15 +29577,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 a touch panel, or protect it from\n excessive use by placing hardware buttons around the panel. They are available in a sample configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 637 / 1331\n \n 10.2.5.2 Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n Anmerkung\n For GMOCCAPY 3 some HAL pin names have changed when new controls have been implemented.\n@@ -29597,15 +29597,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 638 / 1331\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@@ -29635,15 +29635,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 639 / 1331\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@@ -29678,15 +29678,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 640 / 1331\n \n \u2022 gmoccapy.jog.axis.jog-z-minus (bit IN)\n Wenn Sie eine 4-Achsen-Konfiguration verwenden, gibt es zwei zus\u00e4tzliche Pins:\n \u2022 gmoccapy.jog.jog-<your fourth axis letter >-plus (bit IN)\n \u2022 gmoccapy.jog.jog-<your fourth axis letter >-minus (bit IN)\n@@ -29717,15 +29717,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 bietet auch einen HAL-Pin zur Ausgabe der gew\u00e4hlten Jog-Schrittweite:\n \u2022 gmoccapy.jog.jog-increment (float OUT)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 641 / 1331\n \n 10.2.5.6 Hardware-Entsperr-Pin\n Um einen Schl\u00fcsselschalter zum Entsperren der Einstellungsseite verwenden zu k\u00f6nnen, wird der\n folgende Pin exportiert:\n \u2022 gmoccapy.unlock-settings (bit IN) - The settings page is unlocked if the pin is high. To use this\n@@ -29754,15 +29754,15 @@\n Closing the message will reset the this pin.\n \u2022 gmoccapy.messages.yesnodialog-response (bit OUT) - This pin will change to 1 if the user clicks\n OK and in all other cases it will be 0. This pin will remain 1 until the dialog is called again.\n To add a user created message you need to add the message to the INI file in the DISPLAY section.\n See Configuration of User Created Messages.\n Beispiel f\u00fcr eine Benutzermeldung (INI-Datei)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 642 / 1331\n \n MESSAGE_TEXT = LUBE FAULT\n MESSAGE_TYPE = okdialog\n MESSAGE_PINNAME = lube-fault\n MESSAGE_TEXT = X SHEAR PIN BROKEN\n@@ -29790,15 +29790,15 @@\n Also loops will cause different values.\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 The information is taken from the tool table, so it is up to you what to display.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 643 / 1331\n \n Abbildung 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@@ -29814,15 +29814,15 @@\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 Abbildung 10.16: Tool information area\n \u2022 gmoccapy.tooloffset-x (float IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 644 / 1331\n \n \u2022 gmoccapy.tooloffset-z (float IN)\n Anmerkung\n Die Zeile \u201dtooloffset-x\u201d wird bei einer Fr\u00e4smaschine nicht ben\u00f6tigt und wird bei einer Fr\u00e4smaschine\n mit trivialer Kinematik nicht angezeigt.\n@@ -29853,15 +29853,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 645 / 1331\n \n Abbildung 10.17: Werkzeugmessung Daten\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 Anmerkung\n@@ -29877,15 +29877,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 INI File Modifications\n \u00c4ndern Sie Ihre INI-Datei so, dass sie die folgenden Abschnitte enth\u00e4lt.\n Der RS274NGC-Abschnitt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 646 / 1331\n \n [RS274NGC]\n # Unterfunktion wird aufgerufen, wenn ein Fehler beim Werkzeugwechsel auftritt, wird nicht\n bei jeder Maschinenkonfiguration ben\u00f6tigt\n ON_ABORT_COMMAND=O <on_abort> call\n@@ -29928,15 +29928,15 @@\n <Ihr_linuxcnc-dev_verzeichnis>/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 Von <Ihr_linuxcnc-dev_Verzeichnis>/configs/sim/gmoccapy/macros kopieren\n \u2022 on_abort.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 647 / 1331\n \n \u2022 change.ngc\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@@ -29971,15 +29971,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 648 / 1331\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@@ -29991,15 +29991,15 @@\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 Window decorated - Allows the title bar to be hidden. (default: title bar visible)\n \u2022 hide cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 649 / 1331\n \n \u2022 hide tooltips - Hides the tool tips.\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@@ -30025,15 +30025,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 650 / 1331\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@@ -30044,15 +30044,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 651 / 1331\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@@ -30090,15 +30090,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 652 / 1331\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@@ -30115,15 +30115,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 653 / 1331\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@@ -30139,15 +30139,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 654 / 1331\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@@ -30178,15 +30178,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 655 / 1331\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@@ -30200,15 +30200,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 656 / 1331\n \n 10.2.7.3 Erweiterte Einstellungen\n \n Werkzeugmessung Bitte pr\u00fcfen Sie Auto Tool Measurement\n Anmerkung\n@@ -30222,15 +30222,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 657 / 1331\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@@ -30263,15 +30263,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 658 / 1331\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@@ -30307,15 +30307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 659 / 1331\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -30358,28 +30358,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 660 / 1331\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 661 / 1331\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@@ -30390,15 +30390,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 662 / 1331\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@@ -30410,15 +30410,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 663 / 1331\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@@ -30437,15 +30437,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 664 / 1331\n \n 10.2.12.2 Nicht endendes Makro\n Wenn Sie ein Makro ohne Bewegung verwenden, wie dieses hier:\n o<zeroxy> sub\n G92.1\n@@ -30470,15 +30470,15 @@\n 10.3 The Touchy Graphical User Interface\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 665 / 1331\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=<Datein\n@@ -30492,15 +30492,15 @@\n (dem Verzeichnis, in dem sich Ihre INI-Datei befindet) erstellen. Aus Legacy-Gr\u00fcnden wird dies auch\n weiterhin funktionieren, aber INI-basierte Postgui-Dateien sind vorzuziehen.\n \n F\u00fcr weitere Informationen \u00fcber HAL-Dateien und den net-Befehl siehe HAL Basics.\n Touchy hat mehrere Ausgangspins, die mit dem Motion Controller verbunden werden sollen, um das\n Joggen der R\u00e4der zu steuern:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 666 / 1331\n \n \u2022 touchy.jog.wheel.increment, das mit dem Pin axis.N.jog-scale jeder Achse N verbunden werden soll.\n \u2022 touchy.jog.wheel.N, das f\u00fcr jede Achse N mit axis.N.jog-enable verbunden werden muss.\n Anmerkung\n N steht f\u00fcr die Achsennummer 0-8.\n@@ -30524,15 +30524,15 @@\n 10.3.1.2 Empfohlen f\u00fcr jede Einrichtung\n \u2022 Notaus-Button fest in der Notaus-Kette verdrahtet\n \n 10.3.2 Einrichtung\n 10.3.2.1 Touchy aktivieren\n Um Touchy zu verwenden, \u00e4ndern Sie im Abschnitt [DISPLAY] Ihrer INI-Datei die Zeile f\u00fcr die Anzeigeauswahl in DISPLAY = touchy.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 667 / 1331\n \n 10.3.2.2 Einstellungen\n Wenn Sie Touchy zum ersten Mal starten, \u00fcberpr\u00fcfen Sie die Registerkarte \u201dEinstellungen\u201d. Wenn\n Sie einen Touchscreen verwenden, w\u00e4hlen Sie die Option zum Ausblenden des Zeigers, um optimale\n Ergebnisse zu erzielen.\n@@ -30568,45 +30568,45 @@\n sind.\n \n 10.4 Gscreen\n 10.4.1 Einf\u00fchrung\n Gscreen is an infrastructure to display a custom screen to control LinuxCNC. Gscreen borrows heavily\n from GladeVCP. GladeVCP uses the GTK widget editor GLADE to build virtual control panels (VCP) by\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 668 / 1331\n \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 Abbildung 10.21: Gscreen Standardbildschirm\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.22: Gscreen Silverdragon-Bildschirm\n \n 669 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.23: Gscreen Spartan-Bildschirm\n \n 670 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.24: Gscreen Gaxis-Bildschirm\n \n 671 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 672 / 1331\n \n Abbildung 10.25: Gscreen Industrieller Bildschirm\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-Datei\n@@ -30614,15 +30614,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 is programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 673 / 1331\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@@ -30664,15 +30664,15 @@\n Themen Gscreen verwendet das PyGTK-Toolkit zur Anzeige des Bildschirms. PyGTK ist die PythonSprachbindung an GTK. GTK unterst\u00fctzt \u201dThemen\u201d. Themes sind eine M\u00f6glichkeit, das Aussehen der\n Widgets auf dem Bildschirm zu ver\u00e4ndern. Zum Beispiel kann die Farbe oder Gr\u00f6\u00dfe von Schaltfl\u00e4chen\n und Schiebereglern mit Themen ge\u00e4ndert werden. Es gibt viele GTK-Themen im Internet. Themes k\u00f6nnen auch angepasst werden, um das Erscheinungsbild bestimmter benannter Widgets zu ver\u00e4ndern.\n Dies bindet die Themendatei enger an die Glade-Datei. Einige der Beispielscreen-Skins erlauben es\n dem Benutzer, ein beliebiges Thema auf dem System auszuw\u00e4hlen. Das Beispiel gscreen ist ein Beispiel daf\u00fcr. Andere laden das Thema, das den gleichen Namen in der Konfigurationsdatei hat. Das\n Beispiel gscreen-gaxis ist ein Beispiel daf\u00fcr. Dazu wird der Theme-Ordner in den Konfigurationsordner mit den INI- und HAL-Dateien gelegt und benannt: SCREENNAME_theme (SCREENNAME ist der\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 674 / 1331\n \n Basisname der Dateien, z. B. gaxis_theme). Innerhalb dieses Ordners befindet sich ein weiterer Ordner namens gtk-2.0, in dem sich die Themadateien befinden. Wenn Sie diese Datei hinzuf\u00fcgen, wird\n Gscreen beim Starten standardm\u00e4\u00dfig dieses Thema verwenden. gscreen-gaxis enth\u00e4lt ein Beispiel f\u00fcr\n ein benutzerdefiniertes Thema, das nach bestimmten benannten Widgets sucht und das visuelle Verhalten dieser spezifischen Widgets \u00e4ndert. Die Schaltfl\u00e4chen \u201dEstop\u201d und \u201dMaschine ein\u201d verwenden\n andere Farben als die \u00fcbrigen Schaltfl\u00e4chen, damit sie sich abheben. Dies geschieht in der HandlerDatei, indem man ihnen bestimmte Namen gibt und indem man bestimmte Befehle in der gtkrc-Datei\n@@ -30702,15 +30702,15 @@\n Gscreen leverages GladeVCP widgets as much as possible, to avoid adding Python code. Learning\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 Denken Sie daran, wenn Sie eine benutzerdefinierte Bildschirmoption verwenden, sind SIE daf\u00fcr verantwortlich, diese zu reparieren (falls erforderlich), wenn Sie LinuxCNC aktualisieren.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 675 / 1331\n \n 10.4.3 Erstellen eines einfachen benutzerdefinierten Bildschirms\n \n Lassen Sie uns einen einfachen brauchbaren Bildschirm erstellen. Erstellen Sie diesen im Glade-Editor\n (wenn Sie ein RIP-Paket verwenden, f\u00fchren Sie ihn von einem Terminal aus, nachdem Sie . scripts/ripenvironment verwendet haben).\n@@ -30724,30 +30724,30 @@\n \u2022 Das Gremlin-Widget hat keine Standardgr\u00f6\u00dfe, daher ist die Angabe einer gew\u00fcnschten Gr\u00f6\u00dfe hilfreich (siehe unten).\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 done in the example.)\n \u2022 Die Schaltfl\u00e4chen werden sich ausdehnen, wenn das Fenster vergr\u00f6\u00dfert wird, was unsch\u00f6n ist, also\n werden wir das Feld, in dem sie sich befinden, so einstellen, dass es sich nicht ausdehnt (siehe\n unten).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 676 / 1331\n \n \u2022 Die zu verwendenden Button-Typen h\u00e4ngen von der verwendeten VCP_action ab -eg vcp_toggle_action\n erfordern in der Regel Toggle-Schaltfl\u00e4chen (folgen Sie zun\u00e4chst dem Beispiel).\n \u2022 Die Tasten in diesem Beispiel sind normale Tasten und keine HAL-Buttons. Wir brauchen die HALPins nicht.\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 and off when clicked. Under the general tab you can change the text of the button\u2019s label to describe\n its function. Do this for all the buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 677 / 1331\n \n W\u00e4hlen Sie das Gremlin-Widget aus, klicken Sie auf die Registerkarte Allgemein, setzen Sie die gew\u00fcnschte H\u00f6he auf 100 und klicken Sie auf das Kontrollk\u00e4stchen daneben.\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@@ -30788,15 +30788,15 @@\n \u2022 dialog_return(self,dialog_widget,displaytype,pinname): Use this to override any user message or\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.\n If you wish to incorporate some of those widgets then just call those functions directly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 678 / 1331\n \n Sie k\u00f6nnen auch eigene Funktionen hinzuf\u00fcgen, die in dieser Datei aufgerufen werden sollen. Normalerweise w\u00fcrden Sie einem Widget ein Signal hinzuf\u00fcgen, um Ihre Funktion aufzurufen.\n 10.4.4.1 Hinzuf\u00fcgen von Funktionen f\u00fcr Tastenkombinationen\n Unser Tester-Beispiel w\u00e4re n\u00fctzlicher, wenn es auf Tastaturbefehle reagieren w\u00fcrde. Es gibt eine\n Funktion namens keybindings(), die versucht, dies einzurichten. Man kann sie zwar komplett au\u00dfer\n@@ -30842,15 +30842,15 @@\n self.gscreen.on_halmeter()\n return True\n \n Dies f\u00fcgt eine Keybinding-Konvertierung hinzu, die gscreen anweist, wenn F4 gedr\u00fcckt wird on_keycall_HAL\n aufzurufen. Dann f\u00fcgen wir die Funktion zur Handle-Datei hinzu, um eine Gscreen-Builtin-Funktion\n zum Starten von Halmeter aufzurufen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 679 / 1331\n \n 10.4.4.2 LinuxCNC-Status Status\n Das Modul Gstat fragt den Zustand von LinuxCNC alle 100 ms ab und sendet Callback-Nachrichten an\n Benutzerfunktionen, wenn sich der Zustand \u00e4ndert. Sie k\u00f6nnen Nachrichten registrieren, um auf bestimmte Zustands\u00e4nderungen zu reagieren. Als Beispiel werden wir uns registrieren, um file-loadedMeldungen zu erhalten, wenn LinuxCNC eine neue Datei l\u00e4dt. Zuerst m\u00fcssen wir das Modul importieren und instanziieren: F\u00fcgen Sie in der Import-Sektion der Handler-Datei hinzu:\n from hal_glib import GStat\n@@ -30890,15 +30890,15 @@\n ypos bzw. zneg, zpos. F\u00fcgen Sie ein SpeedControl-Widget in die GLADE-Datei ein und nennen Sie es\n jog_speed.\n \n 10.4.5 Gscreen Start\n Gscreen ist wirklich nur eine Infrastruktur, um eine benutzerdefinierte GladeVCP-Datei zu laden und\n damit zu interagieren.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 680 / 1331\n \n 1. Gscreen liest die Optionen, mit denen es gestartet wurde.\n 2. Gscreen stellt den Debug-Modus ein und setzt den optionalen Skin-Namen.\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@@ -30929,15 +30929,15 @@\n oder verwendet die von Gscreen bereitgestellte Funktion.\n 25. Gscreen checks the handler file for pins function (initialize_pins(self)) or else use Gscreen stock\n one.\n \n 26. Gscreen pr\u00fcft die Handler-Datei auf die Funktion manual_toolchange (initialize_manual_toolchange(sel\n oder verwendet die regul\u00e4r von Gscreen zur Verf\u00fcgung gestellte.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 681 / 1331\n \n 27. Gscreen \u00fcberpr\u00fcft die Handler-Datei auf die Funktion connect_signals (initialize_connect_signals(self))\n oder verwendet andernfalls eine Standarddatei von Gscreen.\n 28. Gscreen pr\u00fcft die Handler-Datei f\u00fcr die Widgets-Funktion (initialize_widgets(self)) oder verwendet die regul\u00e4r von Gscreen zur Verf\u00fcgung gestellte.\n 29. Gscreen richtet die in der INI-Datei angegebenen Meldungen ein.\n@@ -30975,15 +30975,15 @@\n \u2022 Statusmeldungen\n \u2013 wird in der Statusleiste und im Benachrichtigungsdialog angezeigt,\n \u2013 erfordern keinen Benutzereingriff.\n \u2022 OK-Meldungen\n \u2013 den Benutzer auffordern, auf ok zu klicken, um den Dialog zu schlie\u00dfen.\n \u2013 have one HAL pin to launch the dialog and one to signify it is waiting for response.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 682 / 1331\n \n \u2022 Ja/Nein-Meldungen\n \u2013 den Benutzer auffordern, die Schaltfl\u00e4chen \u201dJa\u201d oder \u201dNein\u201d auszuw\u00e4hlen, um den Dialog zu\n schlie\u00dfen.\n \u2013 have three HAL pins:\n@@ -31035,15 +31035,15 @@\n Note: Using POSIX non-realtime\n Found file(lib): /home/chris/emc-dev/lib/hallib/sim_spindle_encoder.hal\n Found file(lib): /home/chris/emc-dev/lib/hallib/axis_manualtoolchange.hal\n Found file(lib): /home/chris/emc-dev/lib/hallib/simulated_home.hal\n **** GSCREEN WARNING: no audio alerts available - Is python-gst0.10 library installed?\n **** GSCREEN INFO ini: /home/chris/emc-dev/configs/sim/gscreen/gscreen_custom/ \u2190industrial_lathe.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 683 / 1331\n \n **** GSCREEN INFO: Skin name = industrial\n **** GSCREEN INFO: Using SKIN glade file from /home/chris/emc-dev/share/gscreen/skins/ \u2190industrial/industrial.glade ****\n **** GSCREEN INFO: No Screen 2 glade file present\n **** GSCREEN INFO: handler file path: [\u2019/home/chris/emc-dev/share/gscreen/skins/industrial/ \u2190industrial_handler.py\u2019]\n@@ -31063,26 +31063,26 @@\n Antasten von Werkzeugen und zum Antasten von Werkst\u00fccken. Sie k\u00f6nnen LinuxCNC\u2019s externe Offsets F\u00e4higkeit verwenden, um automatisch die Spindel w\u00e4hrend einer Pause zu erh\u00f6hen. Wenn Sie\n die VersaProbe-Option und Remap-Code k\u00f6nnen Sie automatische Werkzeugl\u00e4ngen-Abtastung beim\n Werkzeugwechsel hinzuzuf\u00fcgen.\n Anmerkung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 684 / 1331\n \n 10.5.1.1 QtDragon\n \n Abbildung 10.26: QtDragon - 3 or 4 axis sample (1440x860) in silver theme\n QtDragon ist von einer Aufl\u00f6sung von 1280x768 bis 1680x1200 gr\u00f6\u00dfenver\u00e4nderbar. Es funktioniert\n im Fenstermodus auf jedem Monitor mit h\u00f6herer Aufl\u00f6sung, aber nicht auf Monitoren mit niedrigerer\n Aufl\u00f6sung.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 685 / 1331\n \n 10.5.1.2 QtDragon_hd\n \n Abbildung 10.27: QtDragon_hd - 3 or 4 axis sample for larger monitors (1920x1056) in dark theme\n QtDragon_hd hat ein \u00e4hnliches Design wie QtDragon, wurde aber modifiziert, um den zus\u00e4tzlichen\n@@ -31097,15 +31097,15 @@\n Anmerkung\n You can only have one of each section (e.g., [HAL]) in the INI file. If you see in these docs multiple\n section options, place them all under the one appropriate section name.\n \n 10.5.2.1 Anzeige (engl. display)\n In the section [DISPLAY] change the DISPLAY = assignment to read:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 686 / 1331\n \n \u2022 qtdragon f\u00fcr eine kleine Version\n \u2022 qtdradon_hd f\u00fcr die gro\u00dfe Version.\n You can add -v, -d, -i, or -q for (respectably) verbose, debug, info or quiet output to the terminal.\n [DISPLAY]\n@@ -31143,15 +31143,15 @@\n [DISPLAY]\n DEFAULT_SPINDLE_0_SPEED = 500\n SPINDLE_INCREMENT = 200\n MIN_SPINDLE_0_SPEED = 100\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_POWER = 1500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 687 / 1331\n \n 10.5.2.6 Jogging-Inkremente\n Set selectable jogging increments.\n These increments can be user changed.\n [DISPLAY]\n@@ -31198,15 +31198,15 @@\n panel.\n If using stackedWidget_mainTab, a button labelled User will appear.\n Pressing this button will cycle through displaying all available panels (specified for this location) on\n the main tab area.\n Sample adding a builtin panel to the utilities tab, i.e., a graphical animated machine using\n the vismach library.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 688 / 1331\n \n [DISPLAY]\n EMBED_TAB_NAME = Vismach Demo\n EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz\n EMBED_TAB_LOCATION = tabWidget_utilities\n@@ -31230,15 +31230,15 @@\n ~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap- \u2190subroutines: \\\n ~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib\n \n QtVCP\u2019s NGCGUI program also need to know where to open for subroutine selection and pre-selection.\n NGCGUI_SUBFILE_PATH must point to an actual path on your system and also a path described in\n SUBROUTINE_PATHS.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 689 / 1331\n \n [DISPLAY]\n # NGCGUI subroutine path.\n # Thr path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n@@ -31280,15 +31280,15 @@\n jpg = image-to-gcode\n py = python\n \n 10.5.2.13 Sonden-/Touchplate-/Lasereinstellungen\n QtDragon has INI entries for two optional probing tab screens available. Comment/uncomment which\n ever you prefer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 690 / 1331\n \n \u2022 Versa probe is a QtVCP ported version of a popular GladeVCP probing panel.\n \u2022 Basic Probe is a QtVCP ported version based on the third party basic probe screen.\n Both perform similar probing routines, though Versa probe optionally handles auto tool measurement.\n [PROBE]\n@@ -31329,15 +31329,15 @@\n RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9\n \n 10.5.2.16 Makro-Buttons\n QtDragon has up to ten convenience buttons for calling macro actions.\n These could also call OWord routines if desired.\n In the sample configurations they are labelled for moving between current user system origin (zero\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 691 / 1331\n \n point) and Machine system origin.\n User origin is the first MDI command in the INI list, machine origin is the second.\n This example shows how to move Z axis up first. The commands are separated by the ;.\n The label is set after the comma. The symbols \\n adds a line break.\n@@ -31377,15 +31377,15 @@\n F1 - Estop ein/aus\n F2 - Maschine ein/aus\n F12 - Stil-Editor\n Home - Start aller Verbindungen der Maschine\n Escape - Abbruch der Bewegung\n Pause - Maschinenbewegung anhalten\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 692 / 1331\n \n 10.5.4 Buttons\n Buttons that are checkable will change their text colour when checked. This is controlled by the\n stylesheet/theme\n \n@@ -31433,15 +31433,15 @@\n qtdragon.spindle-fault\n qtdragon.spindle-volts\n \n This bit pin is an output to the spindle control to pause it.\n You would connect it to spindle.0.inhibit.\n qtdragon.spindle-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 693 / 1331\n \n QtDragon spindle speed display and spindle-at-speed LED require that spindle.0.speed-in be connected to spindle speed feedback.\n Encoder or VFD feedback could be used, as long as the feedback is in revolutions per second (RPS).\n If no feedback is available you can have the display show the requested speed by connecting pins like\n so:\n@@ -31497,15 +31497,15 @@\n <=\n <=\n \n iocontrol.0.tool-change\n iocontrol.0.tool-changed\n iocontrol.0.tool-prep-number\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 694 / 1331\n \n 10.5.9 Spindel\n The screen is intended to interface to a VFD, but will still work without it.\n There are a number of VFD drivers included in the LinuxCNC distribution.\n It is up to the end user to supply the appropriate driver and HAL file connections according to his own\n@@ -31550,15 +31550,15 @@\n QtDragon_hd kann mit dem externen Programm G-code Ripper so eingestellt werden, dass es H\u00f6hen\u00e4nderungen der Z-Ebene pr\u00fcft und ausgleicht.\n Anmerkung\n Diese Funktion ist nur in der Version QtDragon_hd verf\u00fcgbar.\n \n Z level compensation is a bed levelling/distortion correction function typically used in 3D printing\n or engraving. It uses a HAL non-realtime component which utilizes the external offsets feature of\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 695 / 1331\n \n LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of\n cubic, linear or nearest (0, 1, 2 respectively). If none is specified or if an invalid number is specified,\n the default is assumed to be cubic.\n When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must\n@@ -31575,15 +31575,15 @@\n G-code Ripper bietet viele Funktionen, auf die wir hier nicht n\u00e4her eingehen werden. Diese sind nur\n in der QtDragon_hd Version verf\u00fcgbar.\n \n \u2022 In qtdragon_hd, switch to the file tab and press the load G-code Ripper button.\n \u2022 Set origin to match the origin of the G-code file to be probed.\n \u2022 Under G-Code Operations, check Auto Probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 696 / 1331\n \n \u2022 Datei -> G-Code Datei \u00f6ffnen (Die Datei, die Sie nach der Kompensation ausf\u00fchren)\n \u2022 If necessary, make adjustments and press Recalculate.\n \u2022 Press Save G-Code File - Probe Only.\n \u2022 Save the generated file to the nc_files folder.\n@@ -31636,15 +31636,15 @@\n net ypos-cmd\n z_level_compensation.y-pos\n \n => logic-and.in-01\n <= axis.x.pos-cmd\n <= axis.y.pos-cmd\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n net zpos-cmd\n net z_compensation_on\n net eoffset-zlevel-count\n count\n \n z_level_compensation.z-pos\n@@ -31682,15 +31682,15 @@\n 1. how far above the table the probe trigger point is (tool setter height) and\n 2. how far above the table the top of the workpiece is.\n This operation has to be done every time the tool is changed as the tool length is not saved.\n For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0\n or use a probing routine, the height from table to top of workpiece parameter is not taken into account\n and can be ignored. It is only for the tool setter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 698 / 1331\n \n 10.5.12.1 Versa Probe\n \n Abbildung 10.29: QtDragon - Versa-Probe-Option\n Versa probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n@@ -31707,15 +31707,15 @@\n \u2022 SEARCH:: This is the feed rate at which the probe searches for the target workpiece in machine\n units per minute. The search speed should be slow enough to give an acceptable initial accuracy,\n but fast enough to not waste time waiting for movement. Recommendation: 200-500 mm/min.\n \u2022 PROBE:: Once initial contact has been made and the probe is retracted, it will wait for 0.5 seconds\n before performing the search again at a lower speed, the probe velocity. This lower speed ensures\n the machine can stop movement as quickly as possible on contact with the workpiece.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 699 / 1331\n \n \u2022 RAPID:: Axis movements not associated with searching are done at the speed defined by RAPID in\n machine units per minute.\n \u2022 SIDE/EDGE LENGTH:: This is the distance the probe will move at the rapid rate to the position\n where it will begin a search. If measuring a corner, it will move EDGE LENGTH units away from\n@@ -31735,15 +31735,15 @@\n CLEARANCE to 0.\n There are three toggle buttons:\n \u2022 Auto Zero This selects if after probing the relevant axis is set to zero in the current user system.\n \u2022 Auto Skew This selects if after probing, the system will be rotated or just display the calculated\n rotation.\n \u2022 Tool Measure This (if integrated) turns auto tool probing on and off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 700 / 1331\n \n 10.5.12.2 Basic probe\n \n Abbildung 10.30: QtDragon - Grundlegende Sondenoption\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles. The\n@@ -31756,15 +31756,15 @@\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 \u2022 Probe Diameter: the size of the probe tip\n \u2022 Probe Rapid: the speed of rapid moves in machine units\n \u2022 Probe Search: the speed of the first rough search in machine units\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 701 / 1331\n \n \u2022 Probe Feed: the speed of the second fine search in machine units\n \u2022 Step Off : back off and re-probe distance\n \u2022 Max XY Distance: the maximum distance the probe will search for in X and Y before failing with\n error\n@@ -31795,15 +31795,15 @@\n \u2022 EDGE WIDTH - distance along edge wall (away from corner) to start probing.\n Anmerkung\n These distance are always to be set in machine units (mm for metric machine, inch for imperial\n machine).\n \n Preset:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 702 / 1331\n \n \u2022 manual set probe at the intersection of the edges (ie corner) of material as described by the green\n bullseye on the button. Set it Z CLEARANCE above the top of material. These can be done by eye.\n \u2022 set EXTRA CLEARANCE to a value that you want the probe to go below the top of material. (So the\n probe will move from its start position down Z Clearance + Extra Clearance distance.)\n@@ -31819,15 +31819,15 @@\n 3. probe wall twice (rough and fine),\n 4. move diagonally to the other wall as set by EDGE WIDTH and XY CLEARANCE,\n 5. probe wall twice,\n 6. raise probe up by Z CLEARANCE + EXTRA DEPTH (returns to starting height),\n 7. rapid back to starting corner (now calculated using the probed walls),\n 8. if auto zero button is enabled, set X and Y of the current user system to zero.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 703 / 1331\n \n 10.5.13 Touch-Platte\n \n Abbildung 10.31: QtDragon Touch-Fl\u00e4che (engl. touch plate)\n You can use a conductive touch plate or equivalent to auto touch off (zero the user coordinate) for the\n@@ -31845,15 +31845,15 @@\n will probe down twice and the current user offset (G5X) will be zeroed at the bottom of the plate by\n calculation from the touchplate height setting.\n \n 10.5.14 Automatische Werkzeugmessung\n QtDragon kann so eingestellt werden, dass es eine integrierte automatische Werkzeugmessung mit\n dem Versa Probe Widget und Remap-Code durchf\u00fchrt. Um diese Funktion zu nutzen, m\u00fcssen Sie\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 704 / 1331\n \n einige zus\u00e4tzliche Einstellungen vornehmen und Sie k\u00f6nnen den angebotenen HAL-Pin verwenden,\n um Werte in Ihrer eigenen ngc-Remap-Prozedur zu erhalten.\n \n Wichtig\n@@ -31869,15 +31869,15 @@\n \u2022 Gehen Sie in den Automatikmodus und starten Sie Ihr Programm.\n Anmerkung\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it is easy to break a tool/probe. Abort will be honoured while the probe is in motion.\n \n Abbildung 10.32: Automatische Werkzeugvermessung\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 705 / 1331\n \n Beim ersten gegebenen Werkzeugwechsel wird das Werkzeug vermessen und der Versatz wird automatisch auf die Blockh\u00f6he eingestellt. Der Vorteil dieser Methode ist, dass Sie kein Referenzwerkzeug\n ben\u00f6tigen.\n Anmerkung\n Ihr Programm muss am Anfang einen Werkzeugwechsel enthalten. Das Werkzeug wird gemessen,\n@@ -31894,15 +31894,15 @@\n \u2022 Probe down in Z to maximum defined in the INI\u2019s [VERSA_TOOLSETTER] MAXPROBE\n \u2022 Return Z to position defined in the INI\u2019s [TOOL_CHANGE] Z\n Anmerkung\n The [TOOL_CHANGE] Z position should be high enough so the tool will not hit the tool probe when\n moving to the [VERSA_TOOLSETTER] X and Y position. MAXPROBE distance needs to be high enough\n for the tool to touch the probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 706 / 1331\n \n 10.5.14.1 Werkst\u00fcckh\u00f6he Antasten\n \n Abbildung 10.33: QtDragon_hd - Werkst\u00fcck H\u00f6henabtastung\n Dieses Programm tastet 2 benutzerdefinierte Positionen in der Z-Achse an und berechnet die H\u00f6hendifferenz.\n@@ -31915,15 +31915,15 @@\n sie auf den DROs angezeigt wird, ausf\u00fcllen.\n Automatische F\u00fcllung der Werkst\u00fcckh\u00f6he auf dem Hauptbildschirm\n \u2022 When checked, the calculated height is automatically transferred to the Workpiece Height field in\n the main screen.\n \u2022 Andernfalls ist der Hauptbildschirm nicht betroffen.\n Werkst\u00fccktaster bei\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 707 / 1331\n \n \u2022 die X-, Y- und Z-Koordinaten geben an, wo die erste Sondierungsroutine im aktuellen WCS beginnen\n soll\n Probenahme bei\n \u2022 die X-, Y- und Z-Koordinaten geben an, wo die zweite Sondierungsroutine beginnen soll, und zwar\n@@ -31949,15 +31949,15 @@\n \u2022 Units are irrelevant in this program. The probed values are not saved and only the difference is\n reported.\n \n Achtung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 708 / 1331\n \n 10.5.14.2 Werkzeugmess-Pins\n Versaprobe offers 5 output pins for tool measurement purpose. The pins are used to be read from a\n remap G-code subroutine, so the code can react to different values.\n \u2022 qtversaprobe.enable (HAL_BIT) measurement enabled or not tool. Reflects screen button state.\n@@ -31997,15 +31997,15 @@\n ON_ABORT_COMMAND=O <on_abort> Aufruf\n # Der Remap-Code f\u00fcr die automatische Werkzeugsonde von Z der Versaprobe von QtVCP\n REMAP=M6 modalgroup=6 prolog=change_prolog ngc=qt_auto_probe_tool epilog=change_epilog\n \n The position of the tool sensor and the start position of the probing movement.\n All values are absolute (G53) coordinates, except MAXPROBE, which is expressed in relative movement.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 709 / 1331\n \n All values are in machine native units.\n X,Y,Z set the tool setter probe location.\n auto probe action sequence (this could be changed with a modified ngc remap file):\n \n@@ -32044,15 +32044,15 @@\n situations. Some systems may need to use linuxcnc/nc_files/examples/ instead of linuxcnc/nc_files/.\n Custom entries pointing to modified file are possible.\n # The path start point for all remap searches, i.e. Python\u2019s sys.path.append()\n PATH_APPEND = ~/linuxcnc/nc_files/remap_lib/python-stdglue/python\n # path to the tremap\u2019s \u2019toplevel file\n TOPLEVEL = ~/linuxcnc/nc_files/remap_lib/python-stdglue/python/toplevel.py\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 710 / 1331\n \n 10.5.14.4 Required HAL Connections\n Stellen Sie sicher, dass der Messtastereingang in Ihrer HAL-Datei angeschlossen ist: Bei korrektem\n Anschluss sollten Sie in der Lage sein, die Taster-LED in QtDragon umzuschalten, wenn Sie den Tasterstift dr\u00fccken.\n net probe motion.probe-input <= <Ihr_input_pin>\n@@ -32086,15 +32086,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 711 / 1331\n \n 10.5.17.2 Registerkarte \u201dDatei\u201d\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 the G-code Ripper.\n 10.5.17.3 Registerkarte \u201dOffsets\u201d\n@@ -32126,15 +32126,15 @@\n Camview xscale = 100\n Camview yscale = 100\n Camview cam number = 0\n \n These are in percent, usually the range will be 100 - 200 in one axis.\n The preference file can only be edited when QtDragon is not running.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 712 / 1331\n \n 10.5.17.8 G-Codes Registrierkarte\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 10.5.17.9 Registerkarte \u201dEinstellungen\u201d\n@@ -32152,15 +32152,15 @@\n \u2022 The left arrow moves backward one HTML page.\n \u2022 The right arrow moves forward one HTML page.\n If you wish to include a custom default HTML page, name it default_setup.html and place it in your\n configuration folder.\n Custom QtVCP panels can be displayed in this tab by setting the EMBED_TAB_LOCATION option to\n tabWidget_setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 713 / 1331\n \n Abbildung 10.34: QtDragon - Beispiel f\u00fcr die Registerkarte Setup\n \n 10.5.17.10 Registerkarte \u201dEinstellungen\u201d\n Die Registerkarte \u201dEinstellungen\u201d dient zum Einstellen der Betriebsoptionen, der Offsets f\u00fcr Messtaster/Tastplatte/Laser/Kamera und zum Laden externer Debugging-Programme.\n@@ -32174,15 +32174,15 @@\n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_uti\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 714 / 1331\n \n 10.5.18 Stile\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@@ -32215,15 +32215,15 @@\n \n So \u00e4ndern Sie den Text der Schaltfl\u00e4che \u201dNebel\u201d in \u201dLuft\u201d (f\u00fcgen Sie diese Zeilen ein)\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 715 / 1331\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@@ -32273,15 +32273,15 @@\n qproperty-spindle_down_action: true;\n }\n \n 10.5.19.2 Qt Designer und 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 716 / 1331\n \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 for\n more information about QtVCP in general.\n QtDragon can also utilize QtVCP\u2019s rc file to do minor python code modifications without using a custom\n@@ -32289,30 +32289,30 @@\n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/qtdragonrc.py\n \n See Modifying Screens for more information about customization.\n \n Abbildung 10.36: QtDragon - Angepasster QtDragon\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 717 / 1331\n \n 10.6 NGCGUI\n \n Abbildung 10.37: NGCGUI eingebettet in AXIS\n \n 10.6.1 \u00dcbersicht\n \u2022 NGCGUI ist eine Tcl-Anwendung zur Arbeit mit Unterroutinen. Es erm\u00f6glicht Ihnen, eine Konversationsschnittstelle mit LinuxCNC zu haben. Sie k\u00f6nnen die Unterroutinen in der Reihenfolge organisieren, in der Sie sie ausf\u00fchren und die Unterroutinen in einer Datei f\u00fcr ein vollst\u00e4ndiges Teileprogramm verketten m\u00fcssen.\n \u2022 NGCGUI kann als eigenst\u00e4ndige Anwendung ausgef\u00fchrt oder in mehrere Registerkarten in der AXIS\n GUI eingebettet werden.\n \u2022 PyNGCGUI is an alternate, Python implementation of NGCGUI.\n \u2022 PyNGCGUI kann als eigenst\u00e4ndige Anwendung laufen oder als Registerkarte (mit einem eigenen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 718 / 1331\n \n Satz von mehreren Unterprogramm-Registerkarten) in jede GUI eingebettet werden, die eine Einbettung der GladeVCP-Anwendungen AXIS, Touchy, Gscreen und GMOCCAPY unterst\u00fctzt.\n NGCGUI oder PyNGCGUI verwenden:\n \u2022 F\u00fcr jedes in der INI-Datei angegebene Unterprogramm gibt es Registerkarten (engl. tabs).\n \u2022 Neue Subroutinen-Registerkarten k\u00f6nnen mit dem custom tab spontan hinzugef\u00fcgt werden.\n@@ -32343,15 +32343,15 @@\n Sample Configurations/sim/axis/ngcgui/ngcgui_gcmc\n Ein umfassendes Beispiel, das als GladeVCP-App eingebettet ist und gcmc verwendet, finden Sie unter:\n Sample Configurations/sim/gscreen/ngcgui/pyngcgui_gcmc\n \n Die Beispielsimulationskonfigurationen verwenden Bibliotheksdateien, die Beispiel-G-Code-Unterprogramm\n (.ngc) und G-Code-Meta-Compilerdateien (.gcmc) enthalten:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 719 / 1331\n \n \u2022 nc_files/ngcgui_lib\n \u2013 ngcgui.ngc - Ein leicht verst\u00e4ndliches Beispiel mit Unterroutinen\n \u2013 arc1.ngc - Kreisbogen mit Fr\u00e4serradiuskompensation\n \u2013 arc2.ngc - Bogen angegeben durch Zentrum, Offset, Breite, Winkel (ruft arc1 auf)\n@@ -32391,15 +32391,15 @@\n Wenn Sie die AXIS GUI verwenden, dr\u00fccken Sie auf \u201dNotaus\u201d (engl. E-Stop)\n chine Power\u201d\n \n und dann auf \u201dMa-\n \n und dann auf \u201dRefefernzierfahrt aller Achsen\u201d (engl. Home All). W\u00e4hlen Sie eine\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 720 / 1331\n \n NGCGUI-Registerkarte, f\u00fcllen Sie alle leeren Felder mit sinnvollen Werten aus und dr\u00fccken Sie auf\n \u201dFeature anlegen\u201d (engl. create feature) und dann auf \u201dFinalize\u201d. Dr\u00fccken Sie abschlie\u00dfend auf die\n Schaltfl\u00e4che \u201dAusf\u00fchren\u201d\n , um die Ausf\u00fchrung zu beobachten. Experimentieren Sie, indem Sie\n@@ -32432,15 +32432,15 @@\n = ../../nc_files/ngcgui_lib/mfiles\n \n Anmerkung\n Dabei handelt es sich um lange Zeilen (die nicht \u00fcber mehrere Zeilen fortgesetzt werden), in denen\n die in einem Suchfeld verwendeten Verzeichnisse angegeben werden. Die Verzeichnisnamen werden\n durch Doppelpunkte (:) getrennt. Zwischen den Verzeichnisnamen sollten keine Leerzeichen stehen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 721 / 1331\n \n Ein Benutzer kann neue Verzeichnisse f\u00fcr seine eigenen Unterprogramme und M-Dateien erstellen\n und sie zu den Suchpfaden hinzuf\u00fcgen.\n So k\u00f6nnte ein Benutzer beispielsweise Verzeichnisse vom Terminal aus mit den folgenden Befehlen\n erstellen:\n@@ -32488,15 +32488,15 @@\n [--font [big|small|fontspec]] (Voreinstellung: \u201dHelvetica -10 normal\u201d)\n [--horiz|--vert] (Voreinstellung: --horiz)\n [--cwidth comment_width] (Breite des Kommentarfeldes)\n [--vwidth varname_width] (Breite des Feldes varname)\n [--quiet] (weniger Kommentare in der Ausgabedatei)\n [--noiframe] (Voreinstellung: Rahmen zeigt Bild an)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 722 / 1331\n \n Anmerkung\n Als eigenst\u00e4ndige Anwendung bearbeitet NGCGUI eine einzelne Unterprogrammdatei, die mehrfach\n aufgerufen werden kann. Mehrere eigenst\u00e4ndige NGCGUI-Anwendungen k\u00f6nnen unabh\u00e4ngig voneinander gestartet werden.\n \n@@ -32547,15 +32547,15 @@\n 10.6.5 NGCGUI einbetten\n 10.6.5.1 NGCGUI in AXIS einbetten\n Die folgenden INI-Datei-Elemente geh\u00f6ren in den Abschnitt [DISPLAY]. (Siehe weitere Abschnitte\n unten f\u00fcr zus\u00e4tzlich ben\u00f6tigte Elemente)\n \u2022 TKPKG = Ngcgui 1.0 - das NGCGUI-Paket\n \u2022 TKPKG = Ngcguittt 1.0 - das True Type Tracer-Paket zum Generieren von Text f\u00fcr die Gravur (optional, muss TKPKG = Ngcgui folgen).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 723 / 1331\n \n \u2022 NGCGUI_FONT = Helvetica -12 normal - Legt die verwendete Schriftart fest\n \u2022 NGCGUI_PREAMBLE = in_std.ngc\u2019 - Die Pr\u00e4ambel-Datei, die am Anfang des Unterprogramms hinzugef\u00fcgt wird. Bei der Verkettung mehrerer Unterprogramme wird sie nur einmal hinzugef\u00fcgt.\n \u2022 NGCGUI_SUBFILE = simp.ngc - Erstellt eine Registerkarte aus der benannten Unterroutine.\n \u2022 NGCGUI_SUBFILE = \u201d\u201d - Erzeugt eine benutzerdefinierte Registerkarte\n@@ -32581,15 +32581,15 @@\n in AXIS eingebettet werden kann, ist die Integration vollst\u00e4ndiger, wenn NGCGUI verwendet wird (mit\n TKPKG = Ngcgui 1.0). Um die EMBED_TAB_LOCATION f\u00fcr andere GUIs festzulegen, vgl. den Abschnitt\n zu DISPLAY des INI-Konfigurationskapitels.\n \n Anmerkung\n Das Truetype Tracer GUI-Frontend ist derzeit nicht f\u00fcr GladeVCP-Anwendungen verf\u00fcgbar.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 724 / 1331\n \n 10.6.5.3 Zus\u00e4tzliche INI-Datei-Elemente, die f\u00fcr NGCGUI oder PyNGCGUI erforderlich sind\n Die folgenden INI-Datei-Elemente geh\u00f6ren in den Abschnitt [DISPLAY] f\u00fcr jede GUI, die entweder\n NGCGUI oder PyNGCGUI einbindet.\n \u2022 NGCGUI_FONT = Helvetica -12 normal\u2019 - gibt den Namen und die Gr\u00f6\u00dfe der Schriftart an, normal|fett (engl. bold)\n@@ -32626,15 +32626,15 @@\n SUBROUTINE_PATH\n USER_M_PATH\n [DISPLAY]\n \n = ../../nc_files/ngcgui_lib:../../ngcgui_lib/utilitysubs\n = ../../nc_files/ngcgui_lib/mfiles\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 725 / 1331\n \n TKPKG = Ngcgui 1.0\n TKPKG = Ngcguittt 1.0\n # Ngcgui muss vor Ngcguittt stehen\n NGCGUI_FONT\n@@ -32710,15 +32710,15 @@\n [DISPLAY]TTT = path_to_truetype-tracer\n Example: [DISPLAY]TTT = truetype-tracer\n Note:\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 in which case the user PATH environment will used to find the program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 726 / 1331\n \n Item:\n [DISPLAY]TTT_PREAMBLE = preamble_filename\n Example: [DISPLAY]TTT_PREAMBLE = in_std.ngc\n Note:\n@@ -32753,15 +32753,15 @@\n Dies ist eine lange Zeile, fahren Sie nicht in mehreren Zeilen fort. Wenn LinuxCNC und/oder NGCGUI\n nach Dateien suchen, wird die erste Datei, die bei der Suche gefunden wird, verwendet.\n LinuxCNC (und NGCGUI) muss in der Lage sein, alle Unterprogramme einschlie\u00dflich der Hilfsroutinen zu finden, die aus den NGCGUI Unterdateien aufgerufen werden. Es ist zweckm\u00e4\u00dfig, Utility-Subs\n in einem separaten Verzeichnis zu platzieren, wie im obigen Beispiel angegeben.\n Die Distribution enth\u00e4lt das Verzeichnis ngcgui_lib und Demodateien f\u00fcr Pr\u00e4ambeln, Subdateien,\n Postambeln und Hilfsdateien. Um das Verhalten der Dateien zu \u00e4ndern, k\u00f6nnen Sie eine beliebige\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 727 / 1331\n \n Datei kopieren und sie an einer fr\u00fcheren Stelle des Suchpfads platzieren. Das erste Verzeichnis, das\n durchsucht wird, ist [DISPLAY]PROGRAM_PREFIX. Sie k\u00f6nnen dieses Verzeichnis verwenden, aber es\n ist besser, eigene Verzeichnisse zu erstellen und sie an den Anfang des [RS274NGC]SUBROUTINE_PATH\n zu stellen.\n@@ -32803,15 +32803,15 @@\n Note: Required only for AXIS GUI embedding.\n Specifies loading of NGCGUI AXIS tab pages.\n [DISPLAY]NGCGUI_FONT = Schriftart_deskriptor\n Example: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal\n Note: Optional, font_descriptor is a tcl-compatible font specifier with items for fonttype -fontsize\n fontweight.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 728 / 1331\n \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 [ANZEIGE] NGCGUI_SUBFILE = subfile_filename\n@@ -32857,15 +32857,15 @@\n tab pages.\n \n [DISPLAY]GCMC_INCLUDE_PATH = dirname1:dirname2:\u2026\n Example: [DISPLAY]GCMC_INCLUDE_PATH = /home/myname/gcmc_includes:/home/myname/gcmc_incl\n Note: Optional, each directory will be included when gcmc is invoked using the option: --include\n dirname.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 729 / 1331\n \n 10.6.6 Dateianforderungen f\u00fcr NGCGUI-Kompatibilit\u00e4t\n 10.6.6.1 Anforderungen an eine G-code-Unterroutine (.ngc) in einer Datei\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@@ -32910,15 +32910,15 @@\n #<zparm> = #3 (=0.0 Z Start Einstellung)\n \n If a default_value is provided, it will be entered in the entry box for the parameter on startup. If\n comment_text is included, it will be used to identify the input instead of the parameter name.\n Globale benannte Parameter Hinweise zu globalen benannten Parametern und NGCGUI:\n (globale benannte Parameter haben einen f\u00fchrenden Unterstrich im Namen, wie #<_irgendeinglobalername>)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 730 / 1331\n \n As in many programming languages, use of globals is powerful but can often lead to unexpected\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 discouraged since such usage\n@@ -32964,15 +32964,15 @@\n Kommentar enthalten, so dass NGCGUI sie automatisch mit einer entsprechenden Meldung zur\u00fcckweist.\n (not_a_subfile)\n \n An optional image file (.png,.gif,.jpg,.pgm) can accompany a subfile. The image file can help clarify the\n parameters used by the subfile. The image file should be in the same directory as the subfile and have\n the same name with an appropriate image suffix, e.g. the subfile example.ngc could be accompanied\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 731 / 1331\n \n by an image file examp.png. NGCGUI attempts to resize large images by subsampling to a size with\n maximum width of 320 and maximum height of 240 pixels.\n Keine der Konventionen, die f\u00fcr die Herstellung einer NGCGUI-kompatiblen Subdatei erforderlich\n sind, schlie\u00dfen ihre Verwendung als allgemeine Subroutinendatei f\u00fcr LinuxCNC aus.\n@@ -33011,15 +33011,15 @@\n //ngcgui: xl = 0; //, x limit\n \n Eine Info-Zeile, die oben auf einer Registerkarte erscheint, kann optional mit einer Zeile mit der\n Kennzeichnung als:\n Info-Tag\n //ngcgui: info: text_to_appear_at_top_of_tab_page\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 732 / 1331\n \n Falls erforderlich, k\u00f6nnen Optionen mit einem Zeilen-Tag an den gcmc-Compiler \u00fcbergeben werden:\n Option line tag format\n //ngcgui: -option_name [ [=] option_value]\n \n@@ -33045,28 +33045,28 @@\n [DISPLAY]\n GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib\n \n 10.6.7 DB25 Beispiel\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Dieses Foto zeigt den Backplot der DB25-Subroutine.\n \n 733 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 734 / 1331\n \n Dieses Foto zeigt die Verwendung der neuen Schaltfl\u00e4che und der benutzerdefinierten Registerkarte\n zur Erstellung von drei DB25-Ausschnitten in einem Programm.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 735 / 1331\n \n 10.6.8 Erstellen eines Unterprogramms\n \u2022 Um ein Unterprogramm f\u00fcr die Verwendung mit NGCGUI zu erstellen, m\u00fcssen der Dateiname und\n der Name des Unterprogramms identisch sein.\n \u2022 Die Datei muss sich in dem Unterverzeichnis befinden, auf das in der INI-Datei verwiesen wird.\n@@ -33081,15 +33081,15 @@\n #<radius_b> = #2 (=0.4) ;Beispiel f\u00fcr einen Parameter ohne Kommentar\n #<feedrate> = #3 (Feedrate) ;Beispiel f\u00fcr einen Parameter ohne Voreinstellung\n g0x0y0z1\n g3 i#<ra> f#<feedrate>\n g3 i[0-#<Radius_b>]\n o<simp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 736 / 1331\n \n 10.7 TkLinuxCNC GUI\n 10.7.1 Einf\u00fchrung\n TkLinuxCNC ist eines der ersten grafischen Front-Ends f\u00fcr LinuxCNC. Es ist in Tcl geschrieben und\n verwendet das Tk-Toolkit f\u00fcr die Anzeige. Es ist in Tcl geschrieben und daher sehr portabel (es l\u00e4uft\n@@ -33103,15 +33103,15 @@\n DISPLAY = tklinuxcnc\n \n Dann starten Sie LinuxCNC und w\u00e4hlen Sie diese INI-Datei. Die Beispielkonfiguration sim/tklinuxcnc/tklinuxcnc.ini ist bereits konfiguriert, um TkLinuxCNC als Front-End zu verwenden.\n Nach dem Start von LinuxCNC wird das Fenster TKLinuxCNC ge\u00f6ffnet.\n 10.7.2.1 Eine typische Sitzung mit TkLinuxCNC\n 1. Starten Sie LinuxCNC und w\u00e4hlen Sie eine Konfigurationsdatei.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 737 / 1331\n \n 2. Beheben Sie den Notaus (engl. E-STOP)-Zustand und schalten Sie die Maschine ein (indem Sie\n F1 und dann F2 dr\u00fccken).\n 3. Referenzfahrt jeder Achse.\n 4. Laden Sie die zu fr\u00e4sende Datei.\n@@ -33144,15 +33144,15 @@\n \u2022 Spindeldrehzahl erh\u00f6hen\n \u2022 Abbrechen\n dann in der zweiten Zeile:\n \u2022 Betriebsart: MANUAL > MDI > AUTO\n \u2022 Flutk\u00fchlmittel ein-/ausschalten\n \u2022 Spindelbremse ein-/ausschalten\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 738 / 1331\n \n 10.7.3.2 Statusleiste der Offset-Anzeige\n Die Statusleiste der Versatzanzeige zeigt das aktuell ausgew\u00e4hlte Werkzeug (ausgew\u00e4hlt mit Txx M6),\n den Werkzeugl\u00e4ngenversatz (falls aktiv) und die Arbeitsvers\u00e4tze (eingestellt durch Rechtsklick auf die\n Koordinaten) an.\n@@ -33182,15 +33182,15 @@\n zu \u00fcberpr\u00fcfen, * Ausf\u00fchren (engl. run), um den eigentlichen Schneidevorgang zu starten, * Pause,\n um es w\u00e4hrend des Laufens anzuhalten, * Fortsetzen (engl. resume), um ein bereits angehaltenes\n Programm wieder aufzunehmen, * Schritt (engl. step), um eine Zeile im Programm voranzubringen\n und * Optional Stop zum Umschalten des optionalen Stop-Schalters (wenn die Schaltfl\u00e4che gr\u00fcn ist,\n wird die Programmausf\u00fchrung bei jedem M1-Ereignis angehalten).\n Anzeigebereich des Textprogramms Wenn das Programm l\u00e4uft, wird die Zeile, die gerade ausgef\u00fchrt wird, wei\u00df hervorgehoben. Die Textanzeige scrollt automatisch, um die aktuelle Zeile anzuzeigen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 739 / 1331\n \n 10.7.3.5 Manuelle Steuerung\n Steuerung mit der Tastatur TkLinuxCNC erm\u00f6glicht es Ihnen, die Maschine manuell zu bewegen.\n Diese Aktion wird als \u201dJogging\u201d bekannt. W\u00e4hlen Sie zun\u00e4chst die zu bewegende Achse aus, indem\n Sie sie anklicken. Klicken Sie dann auf die Schaltfl\u00e4che \u201d+\u201d oder \u201d-\u201d und halten Sie sie gedr\u00fcckt, je\n@@ -33215,15 +33215,15 @@\n der Benutzer die Drehgeschwindigkeit erh\u00f6hen oder verringern. Mit der Taste in der zweiten Reihe\n kann die Spindelbremse aktiviert oder deaktiviert werden. Je nach Maschinenkonfiguration haben\n m\u00f6glicherweise nicht alle Elemente in dieser Gruppe eine Wirkung.\n Die K\u00fchlmittelgruppe K\u00fchlmittel Mit den beiden Schaltfl\u00e4chen k\u00f6nnen die K\u00fchlmittel \u201dNebel\u201d\n und \u201dFlut\u201d ein- und ausgeschaltet werden. Je nach Konfiguration Ihres Ger\u00e4ts werden m\u00f6glicherweise\n nicht alle Elemente in dieser Gruppe angezeigt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 740 / 1331\n \n 10.7.3.6 Code-Eingabe\n \n Die manuelle Dateneingabe (auch MDI genannt) erm\u00f6glicht die manuelle Eingabe von G-Code-Programmen,\n eine Zeile nach der anderen. Wenn das Ger\u00e4t nicht eingeschaltet und nicht auf den MDI-Modus eingestellt ist, sind die Steuerelemente f\u00fcr die Codeeingabe nicht verf\u00fcgbar.\n@@ -33257,15 +33257,15 @@\n F1\n Notaus ein-/ausschalten\n F2\n Maschine ein-/ausschalten\n \u0300, 1 .. 9, 0\n Vorschub-Override von 0% bis 100% einstellen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 741 / 1331\n \n Tabelle 10.7: (continued)\n Tastenkombination\n Ergriffene Ma\u00dfnahmen\n X, \u0300\n@@ -33310,42 +33310,42 @@\n The QtPlasmaC GUI will run on any hardware that is supported by LinuxCNC v2.9 or later provided\n there are 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 742 / 1331\n \n Screenshot examples of QtPlasmaC are below:\n \n Abbildung 10.40: 16:9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 743 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 744 / 1331\n \n Abbildung 10.42: 4:3\n \n 10.8.4 LinuxCNC installieren\n Die bevorzugte Methode zur Installation von LinuxCNC ist \u00fcber ein ISO-Image, wie unten beschrieben.\n Anmerkung\n Es ist m\u00f6glich, LinuxCNC auf einer Vielzahl von Linux-Distributionen zu installieren und auszuf\u00fchren,\n was jedoch den Rahmen dieses Benutzerhandbuchs sprengen w\u00fcrde. Wenn der Benutzer m\u00f6chte eine\n Linux-Distribution andere als die empfohlenen zu installieren, m\u00fcssen sie zun\u00e4chst ihre bevorzugte\n Linux-Distribution zu installieren und dann installieren LinuxCNC v2.9 oder h\u00f6her zusammen mit allen\n erforderlichen Abh\u00e4ngigkeiten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 745 / 1331\n \n 10.8.4.1 Wenn der Benutzer kein Linux installiert hat\n Installation instructions are available from here.\n Following these instructions will yield a machine with the current stable branch of LinuxCNC (v2.9)\n on Debian 12 (Bookworm).\n@@ -33387,15 +33387,15 @@\n \n Wichtig\n If the plasma power source has an Arc OK (Transfer) output then it is recommended to use that\n for Arc OK rather than the soft (calculated) Arc OK provided by mode 0. It may also be possible\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 746 / 1331\n \n Anmerkung\n F\u00fcr die Feinabstimmung von Mode 0 Ark OK siehe Tuning Mode 0 Arc OK im Abschnitt Erweiterte\n Themen des Handbuchs.\n \n@@ -33470,15 +33470,15 @@\n the ohmic probe\u2019s power.\n Digital input; optional, see info below table:\n HAL pin name plasmac.breakaway\n Connected from a breakout board input to a torch breakaway\n detection switch.\n This signal senses if the torch has broken away from its cradle.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Brenner ein (engl.\n torch on)\n \n Modi\n 0, 1, 2\n@@ -33552,15 +33552,15 @@\n \u2022 [AXIS_Z] MIN_LIMIT should be just below top of the slats with allowances for float_switch_travel\n and over travel tolerance. For example, if the user\u2019s float switch takes 4 mm (0.157\u201d) to activate\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 748 / 1331\n \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 \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@@ -33595,47 +33595,47 @@\n Platine aus.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.43: PnCConf QtPlasmaC Options\n \n 749 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.44: StepConf QtPlasmaC Options\n \n 750 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 10.45: QtPlasmaC User Buttons\n \n 751 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 752 / 1331\n \n Abbildung 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 directory: ~/linuxcnc/configs/<machine_name>.\n The way the newly created QtPlasmaC configuration can be run from the terminal command line\n slightly differs depending the way LinuxCNC was installed:\n F\u00fcr eine Paketinstallation (Buildbot):\n linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 753 / 1331\n \n For a run in place installation:\n ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n Nach dem Ausf\u00fchren des obigen Befehls sollte LinuxCNC mit der QtPlasmaC GUI sichtbar sein.\n@@ -33658,25 +33658,25 @@\n \n Geben Sie f\u00fcr eine \u201drun in place\u201d-Installation den folgenden Befehl in ein Terminalfenster ein:\n ~/linuxcnc-dev/lib/python/qtvcp/designer/install_script\n \n 10.8.5.6 Erstmalige Einrichtung\n Das folgende H\u00f6hendiagramm soll dem Benutzer helfen, die verschiedenen H\u00f6hen beim Plasmaschneiden und deren Messung zu veranschaulichen:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 754 / 1331\n \n Click on the Parameters Tab to view the CONFIGURATION section which shows the user settable\n parameters. It is necessary to ensure every one of these settings is tailored to the machine.\n To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following\n steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on\n the Z axis position while running a G-code program. These steps simply allow the user to more easily\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 755 / 1331\n \n set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to\n Z axis MINIMUM_LIMIT.\n Anmerkung\n The user should be familiar with the recommended Z Axis Settings.\n@@ -33711,15 +33711,15 @@\n and the measured value.\n 8. After the adjustments to the \u201dFloat Travel\u201d have been made, repeat the process from #4 above\n until the measured distance between the material and the torch tip matches the Pierce Height\n of the currently selected material.\n 9. If the table has a laser or camera for sheet alignment, a scribe, or uses offset probing then the\n required offsets need to be applied by following the procedure described in Peripheral Offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 756 / 1331\n \n 10. CONGRATULATIONS! The user should now have a working QtPlasmaC Configuration.\n Anmerkung\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@@ -33751,15 +33751,15 @@\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-plasmac2qt\n \n The following screen will be displayed:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 757 / 1331\n \n Tabelle 10.10: Mandatory Settings\n Field\n Beschreibung\n INI-DATEI IN\n@@ -33783,15 +33783,15 @@\n 16:9\n ESTOP:1\n \n Optional Setting - This setting is not required unless the machine has a laser for sheet\n alignment. Leave this blank if it is not used/required. Lassen Sie dieses Feld leer, wenn es nicht\n verwendet/erforderlich ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Field\n Laser On\n HAL-Pins\n \n Beschreibung\n Schalten Sie ein Laserfadenkreuz f\u00fcr die\n@@ -33834,15 +33834,15 @@\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 759 / 1331\n \n Abbildung 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@@ -33856,15 +33856,15 @@\n file in the machine\u2019s configuration directory to add the appropriate cutoff frequency as measured in\n Hertz (Hz).\n Zum Beispiel:\n setp plasmac.lowpass-frequency 100\n \n The above example would give a cutoff frequency of 100Hz.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 760 / 1331\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@@ -33900,15 +33900,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 761 / 1331\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page VI of the finder General Technical\n Information document.\n Calculations:\n@@ -33946,15 +33946,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs/<machine_name>/<machine_name>.ini\u201d\n Type=Application\n Icon=/usr/share/pixmaps/linuxcncicon.png\n 1 In the US, the letter V is commonly used as a symbol (Voltage) and as a unit (Volt).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 762 / 1331\n \n Wenn der Benutzer ein Terminalfenster hinter dem GUI-Fenster \u00f6ffnen m\u00f6chte, \u00e4ndern Sie die TerminalZeile in:\n Terminal=true\n \n Die Anzeige eines Terminals kann f\u00fcr Fehler- und Informationsmeldungen n\u00fctzlich sein.\n@@ -34010,15 +34010,15 @@\n Anmerkung\n The configuration files (<machine_name>.ini and <machine_name>.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 Anmerkung\n The <machine_name>.prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 763 / 1331\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific <machine_name>.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@@ -34067,15 +34067,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 764 / 1331\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@@ -34114,15 +34114,15 @@\n 10.8.8.1 Beenden von QtPlasmaC\n Das Beenden oder Herunterfahren von QtPlasmaC erfolgt entweder durch:\n 1. Klicken Sie auf die Schaltfl\u00e4che zum Herunterfahren des Fensters in der Titelleiste des Fensters\n 2. Dr\u00fccken Sie lange auf die Taste POWER auf der Haupt-Registerkarte (engl. main).\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 765 / 1331\n \n 10.8.8.2 HAUPT (engl. main)-Registerkarte (engl. tab)\n Screenshot example of the QtPlasmaC MAIN Tab in 16:9 aspect ratio:\n \n Einige Funktionen/Merkmale werden nur f\u00fcr bestimmte Modi verwendet und werden nicht angezeigt,\n@@ -34138,15 +34138,15 @@\n Dropdown-Men\u00fc zu \u00f6ffnen. Es wird verwendet, um die aktuellen\n Materialschnittparameter manuell auszuw\u00e4hlen. Wenn in der\n Materialdatei keine Materialien vorhanden sind, wird nur das\n Standardmaterial angezeigt.\n Hier wird der tats\u00e4chliche Schnittvorschub angezeigt, mit dem sich der\n Tisch bewegt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 766 / 1331\n \n Tabelle 10.14: (continued)\n Name\n FR:\n PH:\n@@ -34216,15 +34216,15 @@\n Wenn ein Zyklus pausiert wird, zeigt dieser Button \u201dZYKLUS\n FORTSETZEN (engl. CYCLE RESUME) an und blinkt.\n Durch Dr\u00fccken von ZYKLUS FORTSETZEN wird der Zyklus fortgesetzt.\n \n ZYKLUSSTART\n ZYKLUSPAUSE\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 767 / 1331\n \n Tabelle 10.15: (continued)\n Name\n ZYKLUS STOP\n (engl. cycle stop)\n@@ -34300,15 +34300,15 @@\n Beschreibung\n Displays the actual arc voltage.\n Indicates the status of the Arc OK signal.\n Each press of this button will raise the target voltage by\n the THC Threshold voltage (The distance changed will be\n Height Per Volt * THC Threshold voltage).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 768 / 1331\n \n Tabelle 10.17: (continued)\n Name\n -\n \n@@ -34401,15 +34401,15 @@\n - Will not require an Arc OK signal be received before\n starting machine motion after the \u201dTorch On\u201d signal is\n given.\n - Will disable the THC.\n - Will not stop machine motion if the Arc OK signal is lost.\n For more information see Ignore Arc Ok.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 769 / 1331\n \n Tabelle 10.18: (continued)\n Name\n OHMIC PROBE\n \n@@ -34481,15 +34481,15 @@\n Beschreibung\n This drop down button will change the jog increment. Options are\n determined by the values in the [DISPLAY] section of the\n <machine_name>.ini file and begin with the label \u201dINCREMENTS =\u201d.\n This button will toggle between FAST which is the default linear velocity in\n the <machine_name>.ini file or SLOW which is 10% of the default value.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Y+\n YX+\n XZ+\n Z-\n \n@@ -34560,15 +34560,15 @@\n If a file is open, the default material will be selected.\n If no file is open, the preview will be reset to a top down full table view.\n The torch (T0) will be selected if it was not the active tool.\n Diese Schaltfl\u00e4che \u00f6ffnet ein DATEI-\u00d6FFNEN-Panel \u00fcber dem\n VORSCHAU-FENSTER.\n Diese Schaltfl\u00e4che l\u00e4dt die aktuell geladene G-Code-Datei neu.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 771 / 1331\n \n Tabelle 10.24: DRO\n Name\n HOME ALL\n WCS G54\n@@ -34610,30 +34610,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 772 / 1331\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 hide 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 773 / 1331\n \n Einige Funktionen/Merkmale werden nur f\u00fcr bestimmte Modi verwendet und werden nicht angezeigt,\n wenn sie f\u00fcr den gew\u00e4hlten QtPlasmaC-Modus nicht erforderlich sind.\n This tab is used to display configuration parameters that are modified infrequently.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n@@ -34655,15 +34655,15 @@\n Beschreibung\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 This sets the number of times QtPlasmaC will attempt to start\n the arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 774 / 1331\n \n Tabelle 10.25: (continued)\n Name\n Retry Delay\n \n@@ -34740,15 +34740,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 Anmerkung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 775 / 1331\n \n Tabelle 10.27: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34800,15 +34800,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 776 / 1331\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@@ -34896,15 +34896,15 @@\n Beschreibung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 777 / 1331\n \n Tabelle 10.32: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34966,15 +34966,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 778 / 1331\n \n Diese Registerkarte wird verwendet, um GUI-Konfigurationsparameter, Schaltfl\u00e4chentext und Herunterfahrtext anzuzeigen, die selten ge\u00e4ndert werden, sowie einige Dienstprogrammschaltfl\u00e4chen.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a\n HAL file using the following command:\n@@ -34989,15 +34989,15 @@\n Foreground\n Highlight\n \n Beschreibung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 779 / 1331\n \n Tabelle 10.33: (continued)\n Name\n LED\n Background\n@@ -35075,15 +35075,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 780 / 1331\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@@ -35123,15 +35123,15 @@\n where <machine_name> is the machine name entered in the configuration wizard, <version> is the\n current QtPlasmaC version the user is on, <date> is the current date (YY-MM-DD), and <time> is the\n current time (HH-MM-SS).\n Prior to the backup being made, the machine log will be saved to a file in the configuration directory named machine_log_<date>_<time>.txt where <date> and <time> are formatted as described\n above. This file along with up to five previous machine logs will also be included in the backup.\n These files are not required by QtPlasmaC and are safe to delete at any time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 781 / 1331\n \n 10.8.8.7 STATISTICS Tab\n The STATISTICS Tab provides statistics to allow for the tracking of consumable wear and job run times.\n These statistics are shown for the current job as well as the running total. Previous job statistics are\n reset once the next program is run. The total values may be reset either individually by clicking the\n@@ -35144,15 +35144,15 @@\n of the configuration from the SETTINGS Tab then the machine log is also included in the backup.\n \n 10.8.9 Using QtPlasmaC\n Once QtPlasmaC is successfully installed, no Z axis motion is required to be part of the G-code cut\n program. In fact, if any Z axis references are present in the cut program, the standard QtPlasmaC\n configuration will remove them during the program loading process.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 782 / 1331\n \n For reliable use of QtPlasmaC the user should NOT use any Z axis offsets other than the coordinate\n system offsets (G54-G59.3).\n QtPlasmaC f\u00fcgt am Anfang jedes G-Code-Programms automatisch eine Zeile G-Code ein, um die ZAchse auf die richtige H\u00f6he zu bringen.\n Version Information - QtPlasmaC will display versioning information in the title of the main window. The information will be displayed as followed \u201dQtPlasmaC vN.XXX.YYY - powered by QtVCP on\n@@ -35187,15 +35187,15 @@\n Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code\n syntax for QtPlasmaC to run a G-code program using a torch for cutting is M3 $0 S1 to begin a cut\n and M5 $0 to end a cut.\n For backwards compatibility it is permissible to use M3 S1 in lieu of M3 $0 S1 to begin a cutting job\n and M5 in lieu of M5 $0 to end a cutting job. Note, that this applies to cutting jobs only, for scribe and\n spotting jobs the $n tool identifier is mandatory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 783 / 1331\n \n 10.8.9.4 Koordinaten\n See recommended Z axis settings.\n Each time LinuxCNC (QtPlasmaC) is started Joint homing is required. This allows LinuxCNC (QtPlasmaC) to establish the known coordinates of each axis and set the soft limits to the values specified in\n the <machine_name>.ini file in order to prevent the machine from crashing into a hard stop during\n@@ -35230,15 +35230,15 @@\n QtPlasmaC does not require the use of a material file. Instead, the user could change the cut parameters manually from the MATERIAL section of the PARAMETERS Tab. It is also not required to use\n the automatic material changes. If the user does not wish to use this feature they can simply omit the\n material change codes from the G-code file.\n It is also possible to not use the material file and automatically load materials from within the G-code\n file.\n Die Materialnummern in der Materialdatei m\u00fcssen nicht fortlaufend sein und auch nicht in numerischer Reihenfolge stehen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 784 / 1331\n \n Die folgenden Variablen sind obligatorisch und eine Fehlermeldung wird angezeigt, wenn sie beim\n Laden der Materialdatei nicht gefunden werden.\n \u2022 PIERCE_HEIGHT\n \u2022 PIERCE_DELAY\n@@ -35289,15 +35289,15 @@\n PAUSE_AT_END\n = value\n GAS_PRESSURE\n = value (only used for PowerMax communications)\n CUT_MODE\n = value (only used for PowerMax communications)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 785 / 1331\n \n It is possible to add new material, delete material, or edit existing material from the PARAMETERS\n tab.. It is also possible to achieve this by using magic comments in a G-code file.\n The material file may be edited with a text editor while LinuxCNC is running. After any changes have\n been saved, press Reload in the MATERIAL section of the PARAMETERS Tab to reload the material\n@@ -35338,15 +35338,15 @@\n M66 P3 L3 Q1\n F#<_hal[plasmac.cut-feed-rate]>\n M3 $0 S1\n .\n .\n M5 $0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 786 / 1331\n \n Anmerkung\n Returning to the default material prior to the end of the program is possible with the code M190 P-1.\n \n 10.8.9.9 Material hinzuf\u00fcgen Via Magic Kommentare in G-Code\n@@ -35388,15 +35388,15 @@\n F\u00fcgt ein neues Material hinzu, wenn die angegebene Nummer nicht\n vorhanden ist.\n \u00dcberschreibt ein vorhandenes Material, wenn die angegebene Nummer\n existiert.\n F\u00fcgt ein neues Material hinzu, wenn die angegebene Nummer nicht\n vorhanden ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 787 / 1331\n \n Obligatorische Parameter sind:\n Name\n o\n nu\n@@ -35452,15 +35452,15 @@\n Fusion 360 tool tables do not have all of the required fields so the user will be prompted for missing\n parameters. The Fusion 360 tool file must be in the JSON format of Fusion 360.\n Wenn der Benutzer ein Format aus einer anderen CAM-Software hat, das er konvertiert haben m\u00f6chte, erstellen Sie ein Neues Thema im Abschnitt PlasmaC-Forum des LinuxCNC-Forum, um diese\n Erg\u00e4nzung zu beantragen.\n Der Materialkonverter kann mit einer der beiden folgenden Methoden von einem Terminal aus gestartet werden.\n Geben Sie f\u00fcr eine Paketinstallation (Buildbot) den folgenden Befehl in einem Terminalfenster ein:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 788 / 1331\n \n qtplasmac-materials\n \n Geben Sie f\u00fcr eine \u201drun in place\u201d-Installation die folgenden beiden Befehle in ein Terminalfenster ein:\n source ~/linuxcnc-dev/scripts/rip-environment\n@@ -35471,41 +35471,41 @@\n \u2022 Manual - to manually create a new material file.\n \n \u2022 SheetCam - to convert a SheetCam tool file.\n \n W\u00e4hlen Sie nur f\u00fcr SheetCam, ob der Benutzer eine metrische oder imperiale Ausgabedatei ben\u00f6tigt.\n \u2022 Fusion 360 - to convert a Fusion 360 tool file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 789 / 1331\n \n Um zu konvertieren:\n 1. W\u00e4hlen Sie die zu konvertierende Eingabedatei, dr\u00fccken Sie INPUT, um eine Dateiauswahl aufzurufen, oder geben Sie die Datei direkt in das Eingabefeld ein.\n 2. Select the Output File to write to, press OUTPUT to bring up a file selector or directly enter the\n file in the entry box. This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg.\n If necessary, the user could select a different file and hand edit the <machine_name>_material.cfg\n file.\n 3. Klicken Sie auf CREATE/CONVERT und die neue Materialdatei wird erstellt.\n Sowohl bei einer manuellen Erstellung als auch bei einer Fusion 360-Konvertierung wird ein Dialogfeld mit allen verf\u00fcgbaren Parametern angezeigt, die eingegeben werden k\u00f6nnen. Jeder mit *** markierte Eintrag ist obligatorisch, alle anderen Eintr\u00e4ge sind je nach den Konfigurationsanforderungen\n des Benutzers optional.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 790 / 1331\n \n Anmerkung\n If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it\n will be overwritten.\n \n 10.8.9.11 LASER\n QtPlasmaC has the ability to use a laser to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 791 / 1331\n \n are not parallel to the machine\u2019s X/Y axes. The LASER button will be enabled after the machine is\n homed.\n Um diese Funktion zu nutzen, muss der Benutzer den Versatz des Lasers von der Brennermitte einstellen, indem er das unter Peripherie-Offsets beschriebene Verfahren befolgt.\n To modify the offsets manually, the user could edit either or both the following options in the [LASER_OFFSET] section of the <machine_name>.prefs file:\n@@ -35543,15 +35543,15 @@\n 1. Dr\u00fccken Sie die Taste LASER und halten Sie sie l\u00e4nger als 750 mSek. gedr\u00fcckt.\n 2. LASER button label will change to LASER and the HAL pin named qtplasmac.laser_on will be\n turned off.\n 3. Release the LASER button.\n If an alignment laser has been set up then it is possible to use the laser during CUT RECOVERY for\n accurate positioning of the new start coordinates.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 792 / 1331\n \n 10.8.9.12 CAMERA\n \n QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n@@ -35563,15 +35563,15 @@\n X axis = n.n\n Y axis = n.n\n Camera port = 0\n \n wobei n.n der Abstand von der Mittellinie des Brenners zum Fadenkreuz der Kamera ist.\n To set the origin with zero rotation:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 793 / 1331\n \n 1. Bewegen Sie die Maus, bis sich das Fadenkreuz \u00fcber dem gew\u00fcnschten Ursprungspunkt befindet.\n 2. Dr\u00fccken Sie MARK EDGE. Die Beschriftung der Schaltfl\u00e4che MARK EDGE \u00e4ndert sich in SET\n ORIGIN und die Schaltfl\u00e4che GOTO ORIGIN wird deaktiviert.\n 3. Dr\u00fccken Sie Ursprung festlegen. Die Beschriftung der Schaltfl\u00e4che Herkunft festlegen \u00e4ndert sich in KANTE MARKIEREN und die Schaltfl\u00e4che Herkunft gehen wird aktiviert.\n@@ -35604,15 +35604,15 @@\n path tolerance to 0.1 mm. For a imperial config the command will be G64 P0.004.\n F\u00fcr metrisch:\n G64 P0.1\n \n F\u00fcr imperial:\n G64 P0.004\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 794 / 1331\n \n 10.8.9.14 Angehaltene Bewegung\n QtPlasmaC erm\u00f6glicht die Neupositionierung der X- und Y-Achse entlang des aktuellen Schnittpfades,\n w\u00e4hrend das G-Code-Programm pausiert.\n Um diese Funktion nutzen zu k\u00f6nnen, muss die adaptive Vorschubsteuerung (M52) von LinuxCNC\n@@ -35657,15 +35657,15 @@\n \u2022 M3 $0 S1 will select and start the plasma cutting tool.\n \u2022 M3 $1 S1 will select and start the scribe.\n \u2022 M3 $2 S1 will select and start the plasma spotting tool.\n \u2022 M5 $0 will stop the plasma cutting tool.\n \u2022 M5 $1 will stop the scribe.\n \u2022 M5 $2 will stop the plasma spotting tool.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 795 / 1331\n \n Es ist zul\u00e4ssig, M5 $-1 anstelle der obigen M5 $n-Codes zu verwenden, um alle Werkzeuge anzuhalten.\n In order to use a scribe, it is necessary for the user to add the X and Y axis offsets to the LinuxCNC tool\n table. Tool 0 is assigned to the Plasma Torch and Tool 1 is assigned to the scribe. Tools are selected\n with a Tn M6 command, and then a G43 H0 command is required to apply the offsets for the selected\n@@ -35701,15 +35701,15 @@\n THC calculations. This is not recommended as it is not a reliable way of implementing velocity\n based THC.\n \n Anmerkung\n All references to CutFeedRate refer to the Cut Feed Rate value displayed in the MATERIAL section\n of the PARAMETERS Tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 796 / 1331\n \n 10.8.9.18 THC (Brennerh\u00f6hensteuerung, engl. torch height controller)\n The THC can be enabled or disabled from the THC frame of the MAIN Tab.\n Die THC kann auch direkt \u00fcber das G-Code-Programm aktiviert oder deaktiviert werden.\n The THC does not become active until the velocity reaches 99.9% of the CutFeedRate and then the\n@@ -35746,15 +35746,15 @@\n Die geschwindigkeitsabh\u00e4ngige THC verhindert, dass die Brennerh\u00f6he ver\u00e4ndert wird, wenn die Geschwindigkeit f\u00fcr eine scharfe Ecke oder ein kleines Loch reduziert wird.\n It is important to note that Velocity Reduction affects the Velocity Based THC in the following ways:\n 1. Wenn die Geschwindigkeitsreduzierung in der Mitte des Schnitts aufgerufen wird, dann wird die\n THC gesperrt.\n 2. The THC will remain locked until the velocity reduction is canceled by returning it to a value that\n is above the VAD Threshold, and the torch actually reaches 99.9% of the CutFeedRate.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 797 / 1331\n \n 10.8.9.19 Fr\u00e4serkompensation\n LinuxCNC (QtPlasmaC) has the ability to automatically adjust the cut path of the current program by\n the amount specified in Kerf Width of the selected material\u2019s Cut Parameters. This is helpful if the\n G-code is programmed to the nominal cut path and the user will be running the program on different\n@@ -35790,15 +35790,15 @@\n Tab.\n QtPlasmaC can probe at the full Z axis velocity so long as the machine has enough movement in the\n float switch to absorb any overrun. If the machine\u2019s float switch travel is suitable, the user could set\n the Probe Height to near the Z axis MINIMUM_LIMIT and do all probing at full speed.\n Some float switches can exhibit a large switching hysteresis which shows up in the probing sequence\n as an excessive time to complete the final probe up.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 798 / 1331\n \n \u2022 This time may be decreased by changing the speed of the final probe up.\n \u2022 This speed defaults to 0.001 mm (0.000039\u201d) per servo cycle.\n \u2022 It is possible to increase this speed by up to a factor of 10 by adding the following line to the\n custom.hal file:\n@@ -35839,15 +35839,15 @@\n pin will be reset to false causing the probe to retract.\n The probe will begin moving to the offset position simultaneously with the Z axis moving down to the\n Probe Height, probing will not commence unless the deployment timer has completed. It is required\n that the Probe Height in the PROBING frame of the CONFIGURATION section of the PARAMETERS\n Tab is above the top of the material to ensure that the probe is fully offset to the correct X/Y position\n before the final vertical probe down movement.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 799 / 1331\n \n Wichtig\n PROBE HEIGHT NEEDS TO BE SET ABOVE THE TOP OF THE MATERIAL FOR OFFSET PROBING.\n \n 10.8.9.23 Cut Types\n@@ -35879,15 +35879,15 @@\n Anmerkung\n Wenn sowohl Arc Dwell als auch Over Cut gleichzeitig aktiv sind, hat Over Cut Vorrang.\n \n Wichtig\n OVER CUT IS NOT ABLE TO BE USED IF CUTTER COMPENSATION IS IN EFFECT; AN ERROR\n MESSAGE WILL BE DISPLAYED.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 800 / 1331\n \n 10.8.9.25 L\u00f6cher schneiden\n G-Code-Befehle k\u00f6nnen entweder von einem CAM-Postprozessor (PP) oder durch Handcodierung erstellt werden.\n Hole Cutting Velocity Reduction\n If cutting a hole requires a reduced velocity then the user would use the following command to set\n@@ -35930,15 +35930,15 @@\n motion command, the output changes will not occur. It is best practice to program a motion code\n (G0 or G1 for example) right after a M62 or M63.\n \u2022 M64 and M65 (Immediate) - These commands happen immediately as they are received by the motion\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 801 / 1331\n \n Sample code:\n G21 (metric)\n G64 P0.005\n M52 P1 (allow paused motion)\n@@ -35979,15 +35979,15 @@\n this value with the following command in a G-code file:\n \u2022 #<h_velocity> = nn - to set the percentage (nn) of the current feed rate required.\n Over cut If Hole Sensing modes 2 or 4 are active, QtPlasmaC will over cut the hole in addition to the\n velocity changes associated with modes 1 and 3.\n The default over cut length for QtPlasmaC hole sensing is 4 mm (0.157\u201d). It is possible to change this\n value with the following command in a G-code file:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 802 / 1331\n \n \u2022 #<oclength> = nn to specify an over cut length (nn) in the same units system as the rest of the\n G-code file.\n Arc Dwell (Pause At End) This feature can be used in addition to setting the desired hole sensing\n mode via the appropriate G-code parameter by setting the Pause At End parameter in the MATERIAL\n@@ -36015,15 +36015,15 @@\n to running a G-code program.\n The machine needs to be homed before commencing a single cut.\n A single cut will commence from the machine\u2019s current X/Y position.\n Automatic Single Cut\n This is the preferred method. The parameters for this method are entered in the following dialog box\n that is displayed after pressing a user button which has been coded to run single cut:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 803 / 1331\n \n 1. Jog to the required X/Y start position.\n 2. Set required appropriate material, or edit the Feed Rate for the default material in the PARAMETERS Tab.\n 3. Press the assigned single cut user button.\n 4. Enter the length of the cut along the X and/or Y axes.\n@@ -36038,15 +36038,15 @@\n 6. Wenn der Schnitt beendet ist, stoppen Sie die Spindel.\n 7. The torch will turn off and the Z axis will return to the starting position.\n Manual Single Cut\n Manual single cut requires that either keyboard shortcuts are enabled in the GUI SETTINGS section\n of the SETTINGS Tab, or a custom user button is specified as a manual cut button.\n If the user is using a custom user button then substitute F9 with User Button in the following description.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 804 / 1331\n \n 1. Jog to the required X/Y start position.\n 2. Start the procedure by pressing F9. The jog speed will be automatically set to the feed rate of the\n currently selected material. The jog label will blink to indicate that the jog speed is temporarily\n being overridden (jog speed manipulation will be disabled while a manual cut is active). CYCLE\n@@ -36084,15 +36084,15 @@\n the Pierce Height\n Setting for Puddle Jump are described in cut parameters\n The recommended option is to use Pierce Only due to it being able to utilise near end of life consumables.\n \n Wichtig\n PUDDLE JUMP IS DISABLED DURING CUT RECOVERY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 805 / 1331\n \n 10.8.9.29 Mesh Mode (Expanded Metal Cutting)\n QtPlasmaC is capable of cutting of expand (mesh) metal provided the machine has a pilot arc torch\n and it is capable of Constant Pilot Arc (CPA) mode.\n Mesh Mode disables the THC and also ignores a lost Arc OK signal during a cut. It can be selected\n@@ -36123,15 +36123,15 @@\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n This mode may also be used in conjunction with Mesh Mode if the user doesn\u2019t require an Arc OK\n signal to begin the cut.\n Both Mesh Mode and Ignore Arc OK can be enabled/disabled at any time during a job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 806 / 1331\n \n 10.8.9.31 Cut Recovery\n \n This feature will produce a CUT RECOVERY panel that will allow the torch to be moved away from\n the cut path during a paused motion event in order to position the torch over a scrap portion of the\n@@ -36155,15 +36155,15 @@\n JOGGING panel. It will not reset any REV or FWD motion.\n If an alignment laser has been set up then it is possible to use the laser during cut recovery for very\n accurate positioning of the new start coordinates. If either the X axis offset or Y axis offset for the\n laser would cause the machine to move out of bounds then an error message will be displayed.\n To use a laser for cut recovery when paused during a cut:\n 1. Klicken Sie auf die Schaltfl\u00e4che LASER.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 807 / 1331\n \n 2. LASER button will change to disabled, the HAL pin named qtplasmac.laser_on will be turned on\n and the X and Y axis will offset so that the laser cross hairs will indicate the starting coordinates\n of the cut when it is resumed.\n 3. Continue the cut recovery as described above.\n@@ -36191,15 +36191,15 @@\n subroutine and clicks \u201dSELECTED nn\u201d then an error message will be displayed that includes the\n O-code name of the subroutine.\n It is not possible to use Run From Line if previous G-code has set cutter compensation active. If the\n user selects a line while cutter compensation is active and clicks \u201dSELECTED nn\u201d then an error\n message will be displayed.\n It is possible to select a new line while Run From Line is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n USE LEADIN\n LEADIN LENGTH\n LEADIN ANGLE\n \n CANCEL\n@@ -36237,15 +36237,15 @@\n 3. Klicken auf RELOAD in der Kopfzeile des G-Code-Fensters - diese Methode bricht den Prozess\n \u201dRun From Line\u201d ab, wenn im Dialogfeld \u201dRun From Line\u201d auf LOAD geklickt wurde und \u201drfl.ngc\u201d\n als geladener Dateiname in der Kopfzeile des G-Code-Fensters angezeigt wird. Dadurch kehrt der\n Benutzer zur urspr\u00fcnglich geladenen Datei zur\u00fcck.\n 10.8.9.33 Scribe\n Zus\u00e4tzlich zum Plasmabrenner kann mit QtPlasmaC ein Ritzger\u00e4t betrieben werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 809 / 1331\n \n Using a scribe requires the use of the LinuxCNC tool table. Tool 0 is assigned to the plasma torch\n and Tool 1 is assigned to the scribe. The scribe X and Y axes offsets from the plasma torch need to be\n entered into the LinuxCNC tool table. This is done by editing the tool table via the main GUI, or by\n editing the tool.tbl file in the <machine_name> configuration directory. This will be done after the\n@@ -36291,15 +36291,15 @@\n The user can switch between the torch and the scribe any number of times during a program by using\n the appropriate G-codes.\n Issuing M3 S1 (without $n) will cause the machine to behave as if an M3 $0 S1 had been issued\n and issuing M5 (without $n) will cause the machine to behave as if an M5 $0 had been issued. This\n will control the torch firing by default in order to provide backward compatibility for previous G-code\n files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 810 / 1331\n \n Warnung\n If there is an existing manual tool change parameter set in the <machine_name>.hal file then\n QtPlasmaC will convert it to an automatic tool change.\n \n@@ -36340,15 +36340,15 @@\n Die hohe Vorschubgeschwindigkeit von 99999 soll sicherstellen, dass die Bewegung bei der\n h\u00f6chsten Vorschubgeschwindigkeit der Maschine erfolgt.\n \n Wichtig\n EINIGE PLASMA-CUTTER SIND F\u00dcR DIESE FUNKTION NICHT GEEIGNET.\n ES WIRD EMPFOHLEN, DASS DER BENUTZER EINIGE TESTFLECKEN DURCHF\u00dcHRT, UM SICHERZUSTELLEN, DASS DER PLASMA-CUTTER DIESE FUNKTION NUTZEN KANN.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 811 / 1331\n \n 10.8.9.35 Benutzerdefinierte Layouts f\u00fcr virtuelle Tastaturen\n Virtuelle Tastaturunterst\u00fctzung ist nur f\u00fcr die \u201dintegrierte\u201d Bildschirmtastatur verf\u00fcgbar. Wenn es\n sich noch nicht auf dem System befindet, kann es installiert werden, indem Sie Folgendes in ein\n Terminal eingeben:\n@@ -36356,15 +36356,15 @@\n \n Die folgenden beiden benutzerdefinierten Layouts werden f\u00fcr die Softkey-Unterst\u00fctzung verwendet:\n \n Abbildung 10.48: Number keypad - used for the CONVERSATIONAL Tab and the PARAMETERS Tab\n \n Abbildung 10.49: Alpha-numeric keypad - used for G-code editing and file management.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 812 / 1331\n \n If the virtual keyboard has been repositioned and on the next opening of a virtual keyboard it is not\n visible then clicking twice on the onboard icon in the system tray will reposition the virtual keyboard\n so the move handle is visible.\n 10.8.9.36 Tastat\u00fcrk\u00fcrzel\n@@ -36441,15 +36441,15 @@\n Jogs the Y axis positive.\n Jogs the Y axis negative.\n Jogs the Z axis positive.\n Joggt die Z-Achse negativ.\n Joggt die A-Achse positiv.\n Joggt die A-Achse negativ.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Keyboard\n Shortcut\n .\n ,\n SHIFT (+\n Jog-Taste)\n@@ -36476,15 +36476,15 @@\n die MDI in QtPlasmaC verwendet werden, um auf mehrere andere praktische Funktionen zuzugreifen. Der folgende Link umrei\u00dft die Funktionen und ihre Verwendung: Abschnitt 12.7.2.21[MDILine\n Widget]\n Anmerkung\n M3, M4 und M5 sind in der QtPlasmaC MDI nicht erlaubt.\n \n In addition, pressing RETURN (or ENTER) with no entry in the MDI will close the MDI window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 814 / 1331\n \n 10.8.10 Conversational Shape Library\n \n The Conversational Shape Library consists of several basic shapes and functions to assist the user\n with generating quick G-code at the machine to cut simple shapes quickly. This feature is found on\n@@ -36496,15 +36496,15 @@\n Erstellung des G-Codes verwendet. Wenn z.B. X Start leer gelassen wurde, wird die aktuelle Position\n der X-Achse verwendet.\n Alle An- und Ableitungen (engl. leadins und leadouts) sind B\u00f6gen, mit Ausnahme von Kreisen und\n Sternen:\n Circles:\n \u2022 Wenn der Kreis extern ist, dann ist jede Hin- oder R\u00fcckf\u00fchrung (leadin or leadout) ein Bogen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 815 / 1331\n \n \u2022 Wenn der Kreis innenliegend ist und ein kleines Loch hat, dann ist jeder leadin senkrecht und es\n gibt keinen Auslauf.\n \u2022 Wenn der Kreis intern und kein kleines Loch ist, dann ist jeder Leadin und Leadout ein Bogen.\n Wenn der Leadin eine L\u00e4nge von mehr als der H\u00e4lfte des Radius hat, wird der Leadin senkrecht\n@@ -36562,15 +36562,15 @@\n PREVIEW\n CONTINUE\n \n If there is a G-code file loaded in LinuxCNC (QtPlasmaC) when the CONVERSATIONAL Tab is selected,\n that code will be imported into the conversational as the first shape of the job. If this code is not\n required then it can be removed by pressing the NEW button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 816 / 1331\n \n If there is an added shape that is unsaved or unsent then it is not possible to switch tabs in the GUI.\n To re-enable switching tabs it is necessary to either SAVE the shape, SEND the shape, or press NEW\n to remove the shape.\n Wenn NEU gedr\u00fcckt wird, um eine hinzugef\u00fcgte Form zu entfernen, die nicht gespeichert oder gesendet wurde, wird ein Warndialog angezeigt.\n@@ -36599,15 +36599,15 @@\n Dadurch wird jeder Code in eine eigene Zeile gesetzt:\n G21\\nG40\\nG49\\nG64p0.1\\nG80\\nG90\\nG92.1\\nG94\\nG97\n \n Wenn Sie die Taste RELOAD dr\u00fccken, werden alle ge\u00e4nderten, aber nicht gespeicherten Einstellungen verworfen.\n Durch Dr\u00fccken der Taste SAVE werden alle Einstellungen wie angezeigt gespeichert.\n Wenn Sie die Taste EXIT dr\u00fccken, wird das Einstellungsfeld geschlossen und Sie kehren zur vorherigen Form zur\u00fcck.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 817 / 1331\n \n 10.8.10.2 Konversationslinien und B\u00f6gen\n \n Linien und B\u00f6gen haben eine zus\u00e4tzliche Option, indem sie aneinandergereiht werden k\u00f6nnen, um\n eine komplexe Form zu schaffen.\n@@ -36631,15 +36631,15 @@\n Wenn der Benutzer eine geschlossene Form erstellen m\u00f6chte, muss er alle erforderlichen Anf\u00e4nge\n als das erste Segment der Form erstellen. Wenn ein Auslauf erforderlich ist, muss dieser das letzte\n Segment der Form sein.\n Anmerkung\n In diesem Stadium gibt es keine automatische Option f\u00fcr die Erstellung eines Leadin/Leadout, wenn\n die Form geschlossen ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 818 / 1331\n \n 10.8.10.3 Conversational Single Shape\n Die folgenden Formen sind f\u00fcr die Erstellung verf\u00fcgbar:\n \n So erstellen Sie eine Form:\n@@ -36648,15 +36648,15 @@\n (00000) will be used.\n 3. Geben Sie die entsprechenden Werte ein und dr\u00fccken Sie PREVIEW, um die Form anzuzeigen.\n 4. Wenn die Form nicht korrekt ist, \u00e4ndern Sie die Werte und dr\u00fccken Sie VORSCHAU (engl. preview), damit die neue Form angezeigt wird. Wiederholen Sie den Vorgang, bis Sie mit der Form\n zufrieden sind.\n 5. Dr\u00fccken Sie ADD, um die Form zur G-Code-Datei hinzuzuf\u00fcgen.\n 6. Dr\u00fccken Sie SEND, um die G-Code-Datei zum Schneiden an LinuxCNC (QtPlasmaC) zu senden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 819 / 1331\n \n For CIRCLE, the OVER CUT button will become valid when a CUT TYPE of INTERNAL is selected\n and the value entered in the DIAMETER field is less than the Small Hole Diameter parameter in the\n Conversational SETTINGS section.\n For BOLT CIRCLE the OVER CUT button will become valid if the value entered in the HOLE DIA\n@@ -36680,15 +36680,15 @@\n 3. Wenn der Benutzer eine weitere Version der gleichen Form hinzuf\u00fcgen m\u00f6chte, bearbeiten Sie\n die erforderlichen Parameter und dr\u00fccken Sie ADD, wenn Sie mit der Form zufrieden sind.\n 4. Wenn der Benutzer eine andere Form hinzuf\u00fcgen m\u00f6chte, w\u00e4hlen Sie diese Form aus und erstellen Sie sie wie bei einer Einzelnen Form.\n 5. Wiederholen Sie diesen Vorgang, bis alle erforderlichen Formen zur Vervollst\u00e4ndigung der Gruppe hinzugef\u00fcgt wurden.\n 6. Dr\u00fccken Sie SEND, um die G-Code-Datei zum Schneiden an LinuxCNC (QtPlasmaC) zu senden.\n 10.8.10.5 Conversational Block\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 820 / 1331\n \n The Conversational Block feature allows block operations to be performed on the current shape or\n group of shapes displayed in the CONVERSATIONAL Tab. This can include a G-code file not created\n using the Conversational Shape Library that has been previously loaded from the MAIN Tab.\n A previously saved Block G-code file may also be loaded from the MAIN Tab and then have any of its\n@@ -36724,15 +36724,15 @@\n mirror the shape about its X coordinates within the result.\n FLIP\n flip the shape about its Y coordinates within the result.\n Wenn das Ergebnis ein Array von Formen ist, dann ist die Schnittreihenfolge des Ergebnisses von\n der linken Spalte zur rechten Spalte, beginnend mit der untersten Zeile und endend mit der obersten\n Zeile.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 821 / 1331\n \n 10.8.10.6 Conversational Saving A Job\n The current job displayed in the Preview Panel may be saved at any time by using the bottom SAVE\n button. If the G-code has been sent to LinuxCNC (QtPlasmaC) and the user has left the CONVERSATIONAL Tab, the user may still save the G-code file from the GUI. Alternatively, the user could click\n the CONVERSATIONAL Tab which will reload the job, at which time they can press the SAVE button.\n@@ -36768,15 +36768,15 @@\n of the error before proceeding.\n If the error was received during cutting then forward or reverse motion is allowed while the machine\n is paused to enable the user to reposition the machine prior to resuming the cut.\n When the error is cleared the program may be resumed.\n These errors indicate the corresponding sensor was activated during cutting:\n \u2022 breakaway switch activated, program is paused\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 822 / 1331\n \n \u2022 float switch activated, program is paused\n \u2022 ohmic probe activated, program is paused\n Diese Fehler deuten darauf hin, dass der entsprechende Sensor aktiviert wurde, bevor die Sondierung\n begann:\n@@ -36808,15 +36808,15 @@\n height during ohmic probing\n These errors indicate the move to pierce height would exceed the Z axis maximum safe height for the\n corresponding probe method:\n \u2022 pierce height would exceed Z axis maximum safe height condition found while float switch\n probing\n \u2022 pierce height would exceed Z axis maximum safe height condition found while ohmic probing\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 823 / 1331\n \n 10.8.11.4 Warning Messages\n Warning messages will not pause a running program and are informational only.\n These messages indicate the corresponding sensor was activated before a probe test commenced:\n \u2022 ohmic probe detected before probing probe test aborted\n@@ -36842,15 +36842,15 @@\n height during ohmic probe testing\n Dies zeigt an, dass die sichere H\u00f6he reduziert wurde, weil THC die Z-Achse w\u00e4hrend des Schneidens\n anhebt:\n \u2022 safe traverse height has been reduced\n This indicates that the value for the Arc Voltage was invalid (NAN or INF) when QtPlasmaC launched.\n \u2022 invalid arc-voltage-in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 824 / 1331\n \n 10.8.12 Updating QtPlasmaC\n 10.8.12.1 Standard Update\n QtPlasmaC update notices are posted at https://forum.linuxcnc.org/plasmac/37233-plasmac-updates\n .\n@@ -36888,15 +36888,15 @@\n the use of a custom stylesheet. This allows the user to change some GUI items such as color, border,\n size, etc. It cannot change the layout of the GUI.\n Information on Qt stylesheets is available here.\n There are two methods available to apply custom styles:\n 1. Add A Custom Style: use this for minor style changes.\n 2. Create A New Style use this for a complete style change.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 825 / 1331\n \n 10.8.14.1 Add A Custom Style\n Adding style changes to the default stylesheet is achieved by creating a file in the <machine_name>\n configuration directory. This file MUST be named qtplasmac_custom.qss. Any required style changes\n are then added to this file.\n@@ -36935,15 +36935,15 @@\n *****************************/\n \n The colors may be expressed in any valid stylesheet format.\n The above colors are used for the following widgets. So any custom styling will need to take these into\n account. The colors shown below are the defaults used in QtPlasmaC along with the color name from\n the SETTINGS Tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Farbe\n color1 (#ffee06)\n \n Parameter\n Foreground\n \n@@ -37004,15 +37004,15 @@\n \n 10.8.14.4 Custom Python Code\n It is possible to add custom Python code to change some existing functions or to add new ones. Custom\n code can be added in two different ways: a user command file or a user periodic file.\n A user command file is specified in the DISPLAY section of the <machine_name>.ini file and contains\n Python code that is processed only once during startup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 827 / 1331\n \n USER_COMMAND_FILE = my_custom_code.py\n \n A user periodic file must be named user_periodic.py and must be loaded in the machines config directory. This file is processed every cycle (usually 100 ms) and is used for functions that require regular\n updating.\n@@ -37052,15 +37052,15 @@\n return(data)\n self.old_method_name = new_method_name\n \n Anmerkung\n The existing filter code may be observed in the file /bin/qtplasmac_gcode.\n The file sim/qtplasmac/custom_filter.py has example skeleton code for custom filtering.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 828 / 1331\n \n 10.8.15 QtPlasmaC Fortgeschrittene Themen\n 10.8.15.1 Benutzerdefinierte Buttons\n The QtPlasmaC GUI offers user buttons that can be customized by adding commands in the USER\n BUTTON ENTRIES section of the SETTINGS Tab in the <machine_name>.prefs file.\n@@ -37094,15 +37094,15 @@\n 10. Change consumables\n 11. Load a G-code program\n 12. Pulse the torch on\n 13. Single unidirectional cut\n 14. Framing a job\n 15. Begin/End a manual cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 829 / 1331\n \n 16. Display/Hide an offsets viewer\n 17. Load the latest modified NGC file found in a directory\n 18. Display/Hide the online HTML user manual\n External Commands\n@@ -37142,15 +37142,15 @@\n Toggle HAL Pin\n The following code will allow the user to use a button to invert the current state of a HAL bit pin:\n n Code = toggle-halpin the-hal-pin-name\n \n This code is required to be used as a single command and may only control one HAL bit pin per button.\n The button colors will follow the state of the HAL pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 830 / 1331\n \n After setting the code, upon clicking, the button will invert colors and the HAL pin will invert pin\n state. The button will stay \u201dlatched\u201d until the button is clicked again, which will return the button to\n the original colors and the HAL pin to the original pin state.\n There are three External HAL Pins that are available to toggle as an output, the pin names are\n@@ -37193,15 +37193,15 @@\n After setting the code, upon clicking the button, the button will invert colors, the HAL pin will invert\n pin state, and the time remaining will be displayed on the button. The button color and the pin state\n will stay inverted until the pulse duration timer has completed, which will return the button to the\n original colors, the HAL pin to the original pin state, and the original button name.\n An active pulse can be canceled by clicking the button again.\n There are three External HAL Pins that are available to pulse as an output, the pin names are qtplasmac.ext_out_0, qtplasmac.ext_out_1, and qtplasmac.ext_out_2. HAL connections to these HAL pins\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 831 / 1331\n \n need to be specified in a postgui HAL file as the HAL pins are not available until the QtPlasmac GUI\n has loaded.\n Sonden-Test\n QtPlasmaC will begin a probe and when the material is detected, the Z axis will rise to the Pierce\n@@ -37243,15 +37243,15 @@\n coordinate for that axis will be used.\n Feed Rate (F) is optional, if it is missing or invalid then the feed rate of the current material will be\n used.\n There are three methods to return to the previous coordinates:\n 1. Press the Change Consumables button again - the torch will return to the original coordinates\n and the machine will wait in this position for the user to resume the program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 832 / 1331\n \n 2. Press CYCLE RESUME - the torch will return to the original coordinates and the program will\n resume.\n 3. Press CYCLE STOP - the torch will return to the original coordinates and the program will abort.\n n Code = change-consumables X10 Y10 F1000\n@@ -37290,15 +37290,15 @@\n from a pendant etc. HAL connections to this HAL pin needs to be specified in a postgui HAL file as\n the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n Single Cut\n Run a single unidirectional cut. This utilises the automatic Single Cut feature.\n n Code = single-cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 833 / 1331\n \n Framing\n Framing is the ability to move the torch around the perimeter of a rectangle that encompasses the\n bounds of the current job.\n The laser enable HAL pin (qtplasmac.laser_on) will be turned on during the framing moves and any X/Y\n@@ -37340,15 +37340,15 @@\n Manual Cut functions identically to the F9 button to begin or end a manual cut.\n n Code = manual-cut\n \n Offset Viewer\n This allows the showing/hiding of an offset viewing screen that displays all machine offsets. All relative\n offsets can be edited and the G54 ~ G59.3 work system coordinates are able to be given custom names.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 834 / 1331\n \n n Code = offsets-view\n \n Load Latest File\n This allows the loading of the last modified file in a directory. The directory name is optional and if\n@@ -37370,30 +37370,30 @@\n 5. Click the X0Y0 button to set the torch position to zero.\n 6. Make a mark on the material by one of:\n a. Jog the torch down to pierce height then pulse the torch on to make a dimple in the material.\n b. Place marking dye on the torch shield then jog the torch down to mark the material.\n 7. Click the appropriate button to activate the peripheral.\n 8. The Get Peripheral Offsets dialog will now be showing.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 835 / 1331\n \n 9. Raise the Z axis so the torch and peripheral are clear of the material.\n 10. Jog the X/Y axes so that the peripheral is centered in the mark from the torch.\n 11. Click the GET OFFSETS button to get the offsets and a confirmation dialog will open.\n \n 12. Click SET OFFSETS and the offsets will now be saved.\n Canceling may be done at any stage by pressing the CANCEL button which will close the dialog and\n no changes will be saved.\n If CAMERA was selected at item 7 above and more than one camera exists then a camera selection\n dialog will show. The appropriate camera needs to be selected before the Get Peripheral Offsets dialog\n will appear.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 836 / 1331\n \n If PROBE was selected at item 7 above then a delay dialog will show prior to the confirmation dialog\n at item 11. This is for the delay required for the probe to deploy to its working position.\n \n Anmerkung\n@@ -37450,15 +37450,15 @@\n LASER\n qtplasmac.ext_laser_toggle\n k.A.\n qtplasmac.ext_run_pause\n CYCLE START, CYCLE PAUSE,\n CYCLE RESUME in sequence\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 837 / 1331\n \n User Button Function\n Torch height override plus\n \n HAL Pin\n@@ -37567,15 +37567,15 @@\n qtplasmac.ext_ohmic\n qtplasmac.ext_consumables\n qtplasmac.ext_frame_job\n \n The following HAL bit output pins are always created and can be used by either the Toggle HAL Pin\n or Pulse HAL Pin custom user buttons to change the state of an output.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 838 / 1331\n \n HAL Pin\n qtplasmac.ext_out_0\n qtplasmac.ext_out_1\n qtplasmac.ext_out_2\n@@ -37611,15 +37611,15 @@\n \n These settings if used should be in the custom.hal file of the configuration.\n 10.8.15.7 Lost Arc Delay\n Some plasma power sources/machine configurations may lose the Arc OK signal either momentarily\n during a cut, or permanently near the end of a cut causing QtPlasmaC to pause the program and\n report a \u201dvalid arc lost\u201d error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 839 / 1331\n \n There is a HAL pin named plasmac.arc-lost-delay that may be used to set a delay (in seconds)\n that will prevent a paused program/error if the lost Arc OK signal is regained, or the M5 command is\n reached before the set delay period expires.\n It is important to note that the THC will be disabled and locked at the cutting height at the time the\n@@ -37657,15 +37657,15 @@\n Max Offset is the distance (in millimeters) away from the Z MAX_LIMIT that QtPlasmaC will allow the\n Z axis to travel while under machine control.\n The pin for adjusting this value is named plasmac.max-offset and the default value (in millimeters)\n is set to 5. To change this value, add the pin and the required value to the custom.hal file. It is not\n recommended to use values less than 5 mm as offset overrun may cause unforeseen issues.\n The following example would set the distance from Z MAX_LIMIT to 10 mm:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 840 / 1331\n \n setp plasmac.max-offset 10\n \n 10.8.15.11 Enable Tabs During Automated Motion\n By default, all tabs except the MAIN Tab are disabled during automated motion. It is possible for every\n@@ -37740,15 +37740,15 @@\n cutting in either mode 0 or mode 1\n cutting in mode 2\n pause motion at end of cut\n move to safe height\n move to maximum height\n end the current cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 841 / 1331\n \n Tabelle 10.48: (continued)\n Zustand\n Name\n Beschreibung\n@@ -37804,15 +37804,15 @@\n If the user is unsure of the name of the port, there is a Python script in the configuration directory\n that will show all available ports and can also be used to test communications with the plasma unit\n prior to enabling this feature in the QtPlasmaC GUI.\n To use the test script follow these instructions:\n Geben Sie f\u00fcr eine Paketinstallation (Buildbot) den folgenden Befehl in einem Terminalfenster ein:\n pmx485-test\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 842 / 1331\n \n Geben Sie f\u00fcr eine \u201drun in place\u201d-Installation die folgenden beiden Befehle in ein Terminalfenster ein:\n source ~/linuxcnc-dev/scripts/rip-environment\n pmx485-test\n \n@@ -37849,15 +37849,15 @@\n Im Folgenden wird davon ausgegangen, dass das LinuxCNC git-Verzeichnis ~/linuxcnc-dev ist.\n Alle Sprachdateien werden in ~/linuxcnc-dev/share/screens/qtplasmac/languages gespeichert.\n The qtplasmac.py file is a Python version of the GUI file used for translation purposes.\n Die .ts-Dateien sind die Quelldateien f\u00fcr die \u00dcbersetzungen. Dies sind die Dateien, die f\u00fcr jede Sprache\n erstellt/bearbeitet werden m\u00fcssen.\n Die .qm-Dateien sind die kompilierten \u00dcbersetzungsdateien, die von pyqt verwendet werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 843 / 1331\n \n The language is determined by an underscore plus the first two letters of the locale, for example if an\n Italian translation was being done then it would be _it. It will be referred to as _xx in this document,\n so qtplasmac_xx.ts in this document would actually be qtplasmac_it.ts for an Italian translation.\n The default locale for QtPlasmaC is _en which means that any translation files created as qtplasmac_en.*\n@@ -37907,15 +37907,15 @@\n \n QtPlasmaC wird beim n\u00e4chsten Start in die Sprache des aktuellen Gebietsschemas \u00fcbersetzt, solange\n eine .qm Datei in dieser Sprache existiert.\n Users are welcome to submit translation files for inclusion into QtPlasmac. The preferred method is\n to submit a pull request from the users GitHub account as described in the contributing to LinuxCNC\n documentation. The only files required to be committed are qtplasmac_xx.ts and qtplasmac_xx.qm.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 844 / 1331\n \n 10.8.17 Anhang\n 10.8.17.1 Beispielkonfigurationen\n Es gibt Beispielkonfigurationsdateien, um mit der QtPlasmaC-GUI Plasmaschneidmaschinen zu simulieren.\n They can be found in the LinuxCNC chooser under: Sample Configurations -> sim -> qtplasmac\n@@ -37964,15 +37964,15 @@\n M62 P1 (synchronized with motion)\n M64 P1 (immediate)\n M63 P1 (synchronized with motion)\n M65 P1 (immediate)\n M62 P2 (synchronized with motion)\n M64 P2 (immediate)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Beschreibung\n Enable THC\n Disable Torch\n Enable Torch\n Set velocity to a percentage of\n feed rate.\n@@ -38057,15 +38057,15 @@\n optional parameters:\n (kw=<nn>, th=<nn>, ca=<nn>, cv=<nn>, pe=<nn>,\n gp=<nn>, cm=<nn>, jh=<nn>, jd=<nn>)\n #<keep-z-motion> = 1\n \n 10.8.17.4 QtPlasmaC G-code Examples\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Beschreibung\n Select material and do a\n normal cut\n \n Set velocity to 100% of\n CutFeedRate\n@@ -38138,15 +38138,15 @@\n G3 X0.8 Y6.081 I10 (continue motion for 4 mm)\n M63 P3 (allow torch to be turned on)\n M67 E3 Q0 (restore feed rate to 100%)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 847 / 1331\n \n Beschreibung\n Schneiden Sie ein Loch mit\n \u00dcberschnitt mit dem Befehl\n #<holes>\n@@ -38217,15 +38217,15 @@\n Ritzens\n \n Hole center spotting.\n \n Create temporary default\n material\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Beschreibung\n Material bearbeiten, falls nicht\n vorhanden, ein neues Material\n anlegen\n \n 848 / 1331\n@@ -38278,15 +38278,15 @@\n \n Voltage Offset\n vo = z / d\n \n r = Teilerverh\u00e4ltnis (siehe unten).\n f = Skalenendwert vom Kalibrierungsaufkleber.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 849 / 1331\n \n z = 0 V value from calibration sticker.\n d = Wert von Jumper oben.\n v = full scale voltage of THCAD\n Teiler-Verh\u00e4ltnis THCAD-5 oder THCAD-10\n@@ -38324,22 +38324,22 @@\n 5 - GND (gr\u00fcn)\n \n Connection at Breakout Board\n ->RXD+\n ->RXD->T/R+\n ->T/R->GND\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n RS485-Schnittstellen, von denen bekannt ist, dass sie funktionieren:\n DTECH DT-5019 USB zu RS-485 Konverter Adapter:\n \n 850 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 851 / 1331\n \n Um eine serielle Verbindung der Hauptplatine oder eine serielle Karte (RS232) in RS485 umzuwandeln, sind folgende Schritte erforderlich:\n DTECH RS-232 zu RS-485 Konverter:\n \n Beispiel einer seriellen Karte (Sunnix SER5037A PCI-Karte mit Breakout Board):\n@@ -38348,33 +38348,33 @@\n Eine effektive und sehr zuverl\u00e4ssige Methode, um ein Lichtbogen-OK-Signal von einer Plasmaversorgung ohne CNC-Anschluss zu erhalten, besteht darin, ein Reed-Relais in einer nicht leitenden R\u00f6hre\n zu montieren und drei Windungen des Arbeitskabels um die R\u00f6hre zu wickeln und zu sichern.\n Diese Baugruppe fungiert nun als Relais, das sich einschaltet, wenn Strom durch die Arbeitsleitung\n flie\u00dft, was nur dann der Fall ist, wenn sich ein Lichtbogen gebildet hat.\n This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the QtPlasmaC\n Modes sections for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 852 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 853 / 1331\n \n 10.8.17.8 Schematische Darstellung der Kontaktbelastung\n \n A full description is at Contact Load.\n \n 10.8.18 Bekannte Probleme\n 10.8.18.1 Tastatur-Jogging\n There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and\n starting during jogging. This issue can be prevented by disabling the Operating System\u2019s autorepeat\n feature for all keys. QtPlasmaC uses this disabling feature by default for all keys only when the MAIN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 854 / 1331\n \n Tab is visible, with the following exceptions when autorepeat is allowed with the MAIN Tab visible: Gcode editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System\u2019s autorepeat\n feature will be enabled for all keys.\n If the user wishes to prevent QtPlasmaC from changing the Operating System\u2019s autorepeat settings,\n enter the following option in the [GUI_OPTIONS] section of the <machine_name>.prefs file:\n@@ -38399,15 +38399,15 @@\n Read Out (DRO) Skalen. Es bietet Funktionalit\u00e4t \u00e4hnlich wie ein normaler Maschinist DRO-Anzeige,\n so dass der Benutzer die DRO-Skalen auf der Maschine zu verwenden, wenn der Betrieb in einem\n manuellen-only (Hand-Kurbel) Modus. Sie ist besonders n\u00fctzlich f\u00fcr manuelle Maschinen, wie z. B.\n mit DRO ausgestattete Bridgeport-Fr\u00e4smaschinen, die auf CNC umger\u00fcstet wurden, aber noch \u00fcber\n manuelle Bedienelemente verf\u00fcgen.\n MDRO ist Maus- und Touchscreen-freundlich.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 855 / 1331\n \n Abbildung 10.50: MDRO Fenster\n \n 10.9.2 Erste Schritte\n Wenn Ihre Konfiguration derzeit nicht f\u00fcr die Verwendung von MDRO eingerichtet ist, k\u00f6nnen Sie dies\n@@ -38418,15 +38418,15 @@\n einer Drehmaschine mit DRO-Skalen f\u00fcr die X- und Z-Achse k\u00f6nnte GEOMETRY = XZ verwendet werden.\n Wenn MDRO gestartet wird, \u00f6ffnet sich ein Fenster wie das in der Abbildung Abbildung 10.50 oben.\n 10.9.2.1 INI-Datei Optionen\n Weitere Optionen, die im Abschnitt \u201d[DISPLAY]\u201d enthalten sein k\u00f6nnen, sind:\n \u2022 MDRO_VAR_FILE = <file.var> - Vorladen von G54 - G57 Koordinatensystemdaten.\n \u2013 Vorladen einer .var-Datei. Dies ist in der Regel die vom operativen Code verwendete .var-Datei.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 856 / 1331\n \n \u2022 POINT_SIZE = <n> - Setzt die Punktgr\u00f6\u00dfe des Textes.\n \u2013 Mit dieser Option wird die Gr\u00f6\u00dfe der verwendeten Schrift festgelegt, wodurch sich auch die Gesamtgr\u00f6\u00dfe des Fensters ergibt. Die Standardschriftgr\u00f6\u00dfe ist 20, typische Gr\u00f6\u00dfen sind 20 bis 30.\n \u2022 MM = 1 Stellen Sie dies ein, wenn die DRO-Skalen in Millimeter skalierte Daten liefern.\n 10.9.2.2 Kommandozeilen-Optionen\n@@ -38460,15 +38460,15 @@\n \u2013 der aktuelle Wert,\n \u2013 ein \u201dz\u201d-Button, der den Wert auf Null setzt\n \u2013 ein Button \u201d1/2\u201d, der den Wert halbiert\n \u2013 ein Eingabefeld, in dem ein benutzerdefinierter Wert eingegeben werden kann. Dieses Feld kann\n \u00fcber die Tastatur oder \u00fcber das Bildschirmtastenfeld eingestellt werden.\n \u2013 Ein \u201dI\u201d-Button, der einen Indexvorgang startet (siehe unten),\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 857 / 1331\n \n \u2022 ein Tastenfeld, mit dem \u00fcber eine Maus oder einen Touchscreen Werte in das Eingabefeld eingegeben werden k\u00f6nnen,\n \u2022 Koordinatensystem Auswahl Buttons:\n \u2013 Mit dem Button \u201dmcs\u201d wird das Maschinenkoordinatensystem ausgew\u00e4hlt. Dies sind die Rohwerte\n der an die Pins mdro.axis.__n__ angeschlossenen Messger\u00e4te.\n@@ -38486,15 +38486,15 @@\n Der einfachste Weg zu sehen, wie MDRO funktioniert, ist, es in einer Simulationsumgebung auszuprobieren. F\u00fcgen Sie diesen Abschnitt an das Ende Ihrer Simulations-HAL-Datei an, normalerweise\n \u201dhallib/core_sim.hal\u201d:\n loadusr -W mdro -l sim.var XYZ\n net x-pos-fb => mdro.axis.0\n net y-pos-fb => mdro.axis.1\n net z-pos-fb => mdro.axis.2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 858 / 1331\n \n Kapitel 11\n \n G-Code Programmierung\n 11.1 Koordinatensysteme\n@@ -38515,15 +38515,15 @@\n Beim Start von LinuxCNC ist jeweilige Positionen der einzelnen Achsen auch der Ursprung der Maschine. Sobald eine Achse referenziert ist, wird der Maschinenursprung f\u00fcr diese Achse auf die referenzierte Position gesetzt. Der Maschinenursprung ist das Maschinenkoordinatensystem, auf dem\n alle anderen Koordinatensysteme basieren. Der G-Code G53 kann verwendet werden, um sich im Maschinenkoordinatensystem zu bewegen.\n 11.1.2.1 Maschinenkoordinaten bewegen sich: G53\n Unabh\u00e4ngig von einem eventuell aktiven Offset weist ein G53 in einer Codezeile den Interpreter an,\n die angegebenen tats\u00e4chlichen Achsenpositionen (absolute Positionen) anzufahren. Zum Beispiel:\n G53 G0 X0 Y0 Z0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 859 / 1331\n \n f\u00e4hrt von der aktuellen Position zu der Position, an der die Maschinenkoordinaten der drei Achsen\n auf Null stehen. Sie k\u00f6nnen diesen Befehl verwenden, wenn Sie eine feste Position f\u00fcr den Werkzeugwechsel haben oder wenn Ihre Maschine \u00fcber einen automatischen Werkzeugwechsler verf\u00fcgt. Sie\n k\u00f6nnen diesen Befehl auch verwenden, um den Arbeitsbereich zu r\u00e4umen und auf das Werkst\u00fcck im\n Schraubstock zuzugreifen.\n@@ -38541,15 +38541,15 @@\n \u2022 G58 - Koordinatensystem 5 verwenden\n \u2022 G59 - Koordinatensystem 6 verwenden\n \u2022 G59.1 - Koordinatensystem 7 verwenden\n \u2022 G59.2 - Koordinatensystem 8 verwenden\n \u2022 G59.3 - Koordinatensystem 9 verwenden\n Koordinatensystem-Offsets werden verwendet, um das Koordinatensystem gegen\u00fcber dem Maschinenkoordinatensystem zu verschieben. Dadurch kann der G-Code f\u00fcr das Werkst\u00fcck unabh\u00e4ngig von\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 860 / 1331\n \n der Position des Werkst\u00fccks auf der Maschine programmiert werden. Die Verwendung von Koordinatensystem\n Offsets w\u00fcrde es Ihnen erm\u00f6glichen, Teile an mehreren Stellen mit demselben G-Code zu bearbeiten.\n Die Werte f\u00fcr die Offsets sind in der VAR-Datei, die von der INI-Datei w\u00e4hrend des Starts eines LinuxCNC angefordert wird gespeichert. Im folgenden Beispiel, das G55 verwendet, wird die Position\n jeder Achse f\u00fcr G55 Ursprung in einer nummerierten Variablen gespeichert.\n@@ -38615,15 +38615,15 @@\n G0 X0 Y0 Z0\n M2\n \n In diesem Beispiel verl\u00e4sst der G54 gegen Ende das G54-Koordinatensystem mit allen Nullpunktverschiebungen, so dass es einen Modalcode f\u00fcr die absoluten maschinenbasierten Achsenpositionen\n gibt. Dieses Programm geht davon aus, dass wir dies getan haben und verwendet den Endbefehl als\n einen Befehl zum Maschinennullpunkt. Es w\u00e4re m\u00f6glich gewesen, G53 zu verwenden und an dieselbe\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 861 / 1331\n \n Stelle zu gelangen, aber dieser Befehl w\u00e4re nicht modal gewesen, und alle danach erteilten Befehle\n h\u00e4tten wieder die G55-Offsets verwendet, da dieses Koordinatensystem noch in Kraft w\u00e4re.\n (((G54)))(((G55)))(((G56)))(((G57)))(((G58)))(((G59)))(((G59.1)))(((G59.2)))(((G59.3)))G54 \u2190uses parameters of coordinate system 1G55\n uses parameters of coordinate \u2190system 2G56\n@@ -38649,15 +38649,15 @@\n [CAUTION]\n Als tempor\u00e4re Offset, Set und Unset innerhalb der lokalisierten Umfang eines Teils Programm \u2190, in anderen G-Code-Interpreter \u2019G52\u2019 nicht nach Maschinen-Reset, \u2019M02\u2019 oder \u2019M30\u2019 \u2190persistieren. In LinuxCNC, \u2019G52\u2019 teilt Parameter mit \u2019G92\u2019, die, aus historischen \u2190Gr\u00fcnden, *persistieren*. Siehe <<sec:g92-persistence-cautions,G92 Persistence Cautions>> \u2190unten.\n [CAUTION]\n \u2019G52\u2019 und \u2019G92\u2019 teilen sich die gleichen Offset-Register. Daher \u00fcberschreibt die \u2190Einstellung von \u2019G52\u2019 jede fr\u00fchere Einstellung von \u2019G92\u2019, und \u2019G52\u2019 bleibt \u00fcber das\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 862 / 1331\n \n Zur\u00fccksetzen der Maschine hinaus erhalten, wenn die \u2019G92\u2019-Persistenz aktiviert ist. \u2190Diese Wechselwirkungen k\u00f6nnen zu unerwarteten Offsets f\u00fchren. Siehe <<ec:g92-g52- \u2190interaction-cautions, G92- und G52-Interaktionshinweise>> weiter unten.\n Durch die Programmierung von \u2019G52 X1 Y2\u2019 wird die X-Achse des aktuellen \u2190Werkst\u00fcckkoordinatensystems um 1 und die Y-Achse um 2 verschoben. Dementsprechend werden \u2190die X- und Y-Koordinaten der aktuellen Werkzeugposition um 1 bzw. 2 verringert. Achsen, \u2190die im Befehl nicht festgelegt wurden, wie z. B. die Z-Achse im vorigen Beispiel, \u2190bleiben unber\u00fchrt: Jede fr\u00fchere \u2019G52\u2019-Z-Verschiebung bleibt wirksam, und andernfalls ist \u2190die Z-Verschiebung Null.\n Der tempor\u00e4re lokale Offset kann mit \u2019G52 X0 Y0\u2019 gel\u00f6scht werden. Alle Achsen, die nicht\n explizit auf Null gesetzt wurden, behalten den vorherigen Offset bei.\n@@ -38681,15 +38681,15 @@\n * \u2019G92.2\u2019 - Dieser Befehl setzt die G92-Variablen au\u00dfer Kraft, setzt sie aber nicht auf \u2190Null.\n * \u2019G92.3\u2019 - Dieser Befehl wendet wieder Offset-Werte an, die zuvor ausgesetzt wurden.\n Als globale Verschiebung wird \u2019G92\u2019 verwendet, um alle Werkst\u00fcckkoordinatensysteme \u2019G54\u2019 \u2190bis \u2019G59.3\u2019 zu verschieben. Ein Beispiel f\u00fcr einen Anwendungsfall ist die Bearbeitung \u2190mehrerer identischer Teile in Aufspannungen mit bekannten Positionen auf einer Palette, \u2190aber die Position der Palette kann sich zwischen L\u00e4ufen oder zwischen Maschinen \u00e4ndern. \u2190Jede Verschiebung der Aufspannvorrichtung in Bezug auf einen Referenzpunkt auf der \u2190Palette wird in einem der Werkst\u00fcckkoordinatensysteme \u2019G54\u2019 bis \u2019G59.3\u2019 voreingestellt, \u2190und \u2019G92\u2019 wird verwendet, um den Referenzpunkt auf der Palette \u201danzutasten\u201d. Dann wird \u2190f\u00fcr jedes Teil das entsprechende Werkst\u00fcckkoordinatensystem ausgew\u00e4hlt und das \u2190Teileprogramm ausgef\u00fchrt.\n [NOTE]\n Die Drehung des Werkst\u00fcckkoordinatensystems \u2019G10 R-\u2019 ist spezifisch f\u00fcr den Interpreter \u2019 \u2190rs274ngc\u2019, und der Offset \u2019G92\u2019 wird \u2019nach\u2019 der Drehung angewendet. Wenn \u2019G92\u2019 als \u2190globaler Offset verwendet wird, kann die Drehung des Werkst\u00fcckkoordinatensystems zu \u2190unerwarteten Ergebnissen f\u00fchren.\n Als lokales Koordinatensystem wird \u2019G92\u2019 als tempor\u00e4rer Versatz innerhalb des \u2190Werkst\u00fcckkoordinatensystems verwendet. Ein Beispiel f\u00fcr einen Anwendungsfall ist die \u2190Bearbeitung eines Teils mit mehreren identischen Merkmalen an verschiedenen Stellen. F\u00fcr \u2190jedes Feature wird \u2019G92\u2019 verwendet, um einen lokalen Referenzpunkt zu setzen, und ein \u2190Unterprogramm wird aufgerufen, um das Feature ab diesem Punkt zu bearbeiten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 863 / 1331\n \n [NOTE]\n Von der Verwendung von \u2019G92\u2019 wird bei der Programmierung mit lokalen Koordinatensystemen in \u2190einem Teileprogramm abgeraten. Siehe stattdessen <<sec:g52,\u2019G52\u2019>>, ein lokaler \u2190Koordinatensystem-Offset, der intuitiver ist, wenn der gew\u00fcnschte Offset relativ zum \u2190Werkst\u00fcck bekannt ist, aber die aktuelle Werkzeugposition m\u00f6glicherweise nicht bekannt \u2190ist.\n Die Programmierung von \u2019G92 X0 Y0 Z0\u2019 setzt die aktuelle Werkzeugposition auf die \u2190Koordinaten X0, Y0 und Z0, ohne Bewegung. G92 arbeitet *nicht* mit absoluten \u2190Maschinenkoordinaten. Es arbeitet mit der *aktuellen Position*.\n \u2019G92\u2019 funktioniert auch vom aktuellen Standort aus, der durch alle anderen Offsets ge\u00e4ndert \u2190wird, die beim Aufruf des Befehls \u2019G92\u2019 wirksam sind. Beim Testen auf Unterschiede \u2190zwischen Arbeitsvers\u00e4tzen und tats\u00e4chlichen Offsets wurde festgestellt, dass ein \u201dG54\u201d- \u2190Offset einen \u201dG92\u201d aufheben und somit den Anschein erwecken k\u00f6nnte, dass keine Offsets \u2190in Kraft waren. Die \u201dG92\u201d war jedoch immer noch f\u00fcr alle Koordinaten in Kraft und \u2190erzeugte erwartete Arbeitsvers\u00e4tze f\u00fcr die anderen Koordinatensysteme.\n@@ -38711,15 +38711,15 @@\n [[sec:g92-persistence-cautions]]\n === G92 Persistenz-Vorsichtsma\u00dfnahmen\n Standardm\u00e4\u00dfig werden die Werte eines \u2019G92\u2019-Offsets in der VAR-Datei gespeichert und nach\n einem Neustart der Maschine oder einem Neustart wiederhergestellt.\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 864 / 1331\n \n Die G92-Parameter sind:\n * 5210 - Aktivieren/Deaktivieren der Flags (1.0/0.0)\n * 5211 - Versatz (engl. offset) der X-Achse\n * 5212 - Versatz der Y-Achse\n@@ -38749,15 +38749,15 @@\n \n \u2190\u2190-\n \n [source, {ngc}]\n \n G10 L2 P1 X0 Y0 Z0 (sicherstellen, dass G54 auf Maschine Null eingestellt ist) G0 X-0.1 Y0 Z0 G1 F1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 865 / 1331\n \n Z-0,25 G3 X-0.1 Y0 I0.1 J0 G0 Z0 M2\n Wir k\u00f6nnen eine Reihe von Befehlen erteilen, um Vers\u00e4tze f\u00fcr die vier anderen Kreise wie\n folgt zu erstellen.\n \n@@ -38796,15 +38796,15 @@\n \n 11.2 Tool Compensation\n 11.2.1 Touch-Off\n Mit dem Touch Off Screen in der AXIS Schnittstelle k\u00f6nnen Sie die Werkzeugtabelle automatisch\n aktualisieren.\n Typische Schritte zum Aktualisieren der Werkzeugtabelle:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 866 / 1331\n \n \u2022 Nach der Referenzfahrt laden Sie ein Werkzeug mit Tn M6, wobei n die Werkzeugnummer (engl.\n tool number) ist.\n \u2022 Fahren Sie das Werkzeug mit Hilfe einer Lehre auf einen festgelegten Punkt oder machen Sie einen\n Testschnitt und messen Sie.\n@@ -38824,15 +38824,15 @@\n details).\n \u2022 G10 L11 P__n__ - Set offset(s) so current position w/ fixture 9 becomes a value (see G10 L11 for\n details).\n Anmerkung\n Dies ist nur eine kurze Darstellung, genauere Erl\u00e4uterungen finden Sie im Referenzhandbuch des\n G-Codes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 867 / 1331\n \n 11.2.2 Werkzeugtabelle\n The Tool Table is a text file that contains information about each tool. The file is located in the same\n directory as your configuration and is called tool.tbl by default. A file name may be specified with the\n INI file [EMCIO]TOOL_TABLE setting. The tools might be in a tool changer or just changed manually.\n@@ -38939,15 +38939,15 @@\n One line may contain as many as 16 entries, but will likely contain much fewer. The entries for T (tool\n number) and P (pocket number) are required. The last entry (a remark or comment, preceded by a\n semicolon) is optional. It makes reading easier if the entries are arranged in columns, as shown in\n the table, but the only format requirement is that there be at least one space or tab after each of the\n entries on a line and a newline character at the end of each entry.\n Die Bedeutung der Eintr\u00e4ge und die Art der Daten, die sie enthalten, sind wie folgt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 868 / 1331\n \n Werkzeugnummer (erforderlich)\n The T column contains the number (unsigned integer) which represents a code number for the\n tool. The user may use any code for any tool, as long as the codes are unsigned integers.\n Taschen-Nummer (erforderlich)\n@@ -38987,15 +38987,15 @@\n Drehen, aber seit der 2.4.x Release, wird dasselbe Werkzeug-Tabellen-Format f\u00fcr alle Maschinen verwendet.\n \n 11.2.2.2 Tool IO\n The non-realtime program specified by [EMCIO]EMCIO = io is conventionally used for tool changer\n management (and other io functions for enabling LinuxCNC and the control of coolant/lube hardware).\n The HAL pins used for tool management are prefixed with iocontrol.0..\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 869 / 1331\n \n A G-code T command asserts the HAL output pin iocontrol.0.tool-prepare. The HAL input pin,\n iocontrol.0.tool-prepared, must be set by external HAL logic to complete tool preparation leading\n to a subsequent reset of the tool-prepare pin.\n A G-code M6 command asserts the HAL output pin iocontrol.0.tool-change. The related HAL input\n@@ -39028,15 +39028,15 @@\n 2. Die Taschennummer 0 ist speziell, da sie die Spindel anzeigt.\n 3. Die aktuelle Platznummer f\u00fcr Werkzeug n ist der Werkzeugdatenindex (idx) f\u00fcr Werkzeug n.\n 4. Bei G-Code Befehl Tn:\n a. iocontrol.0.tool-prep-index = tooldata index (idx) for tool n\n b. iocontrol.0.tool-prep-number = n\n c. iocontrol.0.tool-prep-pocket = pocket number for tool n\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 870 / 1331\n \n 5. At M-code M6 (following iocontrol.0.tool-changed pin 0-->1):\n a. iocontrol.0.tool-from-pocket = pocket number used to retrieve tool\n Anmerkung\n Beim Start ist iocontrol.0.tool-from-pocket = 0. Ein M61Qn (n!=0) Befehl \u00e4ndert\n@@ -39073,15 +39073,15 @@\n \n 11.2.3 Tool Length Compensation\n The tool length compensations are given as positive numbers in the tool table. A tool compensation\n is programmed using G43 H_n_, where n is the index number of the desired tool in the tool table.\n It is intended that all entries in the tool table are positive. The value of H is checked, it must be a\n non-negative integer when read. The interpreter behaves as follows:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 871 / 1331\n \n 1. If G43 H_n_ is programmed, a call to the function USE_TOOL_LENGTH_OFFSET( \u0300\n __length__) \u0300 is\n made (where length is the length difference, read from the tool table, of the indexed tool n),\n tool_length_offset is repositioned in the machine settings model and the value of current_z in\n@@ -39109,15 +39109,15 @@\n 11.2.4 Cutter Radius Compensation\n Cutter Compensation allows the programmer to program the tool path without knowing the exact tool\n diameter. The only caveat is the programmer must program the lead in move to be at least as long as\n the largest tool radius that might be used.\n There are two possible paths the cutter can take since the cutter compensation can be on to the left\n or right side of a line when facing the direction of cutter motion from behind the cutter. To visualize\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 872 / 1331\n \n this imagine you were standing on the part walking behind the tool as it progresses across the part.\n G41 is your left side of the line and G42 is the right side of the line.\n The end point of each move depends on the next move. If the next move creates an outside corner the\n move will be to the end point of the compensated cut line. If the next move creates in an inside corner\n@@ -39132,46 +39132,46 @@\n Any move that is long enough to perform the compensation will work as the entry move. The minimum\n length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are\n issued after a G41/42 only the last one will move the tool to the compensated position.\n In the following figure you can see that the entry move is compensated to the right of the line. This\n puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end\n is at X0 the resulting profile would leave a bump due to the offset of the entry move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 873 / 1331\n \n Abbildung 11.4: Eingangs-Bewegung (engl. entry move)\n Z axis motion may take place while the contour is being followed in the XY plane. Portions of the\n contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the\n next start point.\n Eilg\u00e4nge k\u00f6nnen programmiert werden, w\u00e4hrend die Kompensation eingeschaltet ist.\n Starten Sie ein Programm mit G40, um sicherzustellen, dass die Kompensation ausgeschaltet ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 874 / 1331\n \n 11.2.4.2 Beispiele\n \n Abbildung 11.5: \u00c4u\u00dferes Profil\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 875 / 1331\n \n Abbildung 11.6: Innenprofil\n \n 11.3 GUI zur Werkzeug-Bearbeitung\n 11.3.1 \u00dcbersicht\n Anmerkung\n The tooledit elements described here are available since version 2.5.1 and later. In version 2.5.0, the\n graphical interface interface does not allow these adjustments.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 876 / 1331\n \n Abbildung 11.7: Tool Edit GUI - \u00dcberblick\n Das Programm tooledit kann die Werkzeugtabellendatei mit bearbeiteten \u00c4nderungen aktualisieren,\n indem es die Schaltfl\u00e4che SaveFile verwendet. Die Schaltfl\u00e4che SaveFile aktualisiert die Systemdatei,\n aber eine separate Aktion ist erforderlich, um die Werkzeugtabelle Daten von einem laufenden LinuxCNC Instanz verwendet aktualisieren. Mit der AXIS GUI k\u00f6nnen sowohl die Datei als auch die aktuellen, von LinuxCNC verwendeten Werkzeugtabellendaten mit der Schaltfl\u00e4che ReloadTable aktualisiert\n@@ -39180,15 +39180,15 @@\n 11.3.2 Spaltensortierung\n Die Anzeige der Werkzeugtabelle kann nach jeder Spalte in aufsteigender Reihenfolge sortiert werden, indem Sie auf die Spalten\u00fcberschrift klicken. Ein zweiter Klick sortiert in absteigender Reihenfolge. Die Spaltensortierung erfordert, dass die Maschine mit der Standard-Tcl-Version >= 8.5 konfiguriert ist.\n \n Abbildung 11.8: Tool Edit GUI - Spaltensortierung\n In Ubuntu Lucid 10.04 ist Tcl/Tk8.4 standardm\u00e4\u00dfig installiert. Die Installation wird wie folgt durchgef\u00fchrt:\n sudo apt-get install tcl8.5 tk8.5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 877 / 1331\n \n Je nachdem, welche anderen Anwendungen auf dem System installiert sind, kann es notwendig sein,\n Tcl/Tk8.5 mit den Befehlen zu aktivieren:\n sudo update-alternatives --config tclsh\n sudo update-alternatives --config wish\n@@ -39215,15 +39215,15 @@\n Eigenst\u00e4ndig (engl. stand alone)\n tooledit\n Usage:\n tooledit filename\n tooledit [column_1 ... column_n] filename\n G\u00fcltige Spaltennamen sind: x y z a b c u v w diam front back orien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 878 / 1331\n \n Um eine eigenst\u00e4ndige tooledit mit einem laufenden LinuxCNC-Anwendung zu synchronisieren, muss\n der Dateiname auf die gleiche [EMCIO]TOOL_TABLE Dateiname in der LinuxCNC INI-Datei angegeben aufzul\u00f6sen.\n Wenn Sie das Programm tooledit verwenden, w\u00e4hrend LinuxCNC l\u00e4uft, k\u00f6nnen die Ausf\u00fchrung von\n G-Code-Befehlen oder andere Programme die Werkzeugtabellendaten und die Werkzeugtabellendatei\n@@ -39266,15 +39266,15 @@\n optional, wenn die Datei ein M2 oder M30 enth\u00e4lt, ist aber erforderlich, wenn nicht. Ein Fehler wird\n gemeldet, wenn eine Datei am Anfang, aber nicht am Ende eine Prozentzeile enth\u00e4lt. Der n\u00fctzliche\n Inhalt einer Datei, die durch Prozentzeichen abgegrenzt ist, h\u00f6rt nach der zweiten Prozentzeile auf.\n Alles, was danach kommt, wird ignoriert.\n Die LinuxCNC G-Code Sprache hat zwei Befehle (M2 oder M30), von denen jeder ein Programm beendet. Ein Programm kann vor dem Ende einer Datei enden. Zeilen einer Datei, die nach dem Ende\n eines Programms stehen, werden nicht ausgef\u00fchrt. Der Interpreter liest sie nicht einmal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 879 / 1331\n \n 11.4.2 Format einer Zeile\n Eine zul\u00e4ssige Eingabezeile besteht der Reihe nach aus den folgenden Zeichen, wobei die Anzahl der\n in einer Zeile zul\u00e4ssigen Zeichen begrenzt ist (derzeit 256).\n \u2022 ein optionales Blockl\u00f6schzeichen, das ein Schr\u00e4gstrich / ist.\n@@ -39305,15 +39305,15 @@\n Ein Wort ist ein Buchstabe au\u00dfer N, gefolgt von einer Gleitkommazahl.\n W\u00f6rter k\u00f6nnen mit jedem der in der folgenden Tabelle aufgef\u00fchrten Buchstaben beginnen. Die Tabelle\n enth\u00e4lt der Vollst\u00e4ndigkeit halber auch N, obwohl Zeilennummern, wie oben definiert, keine W\u00f6rter\n sind. Mehrere Buchstaben (I, J, K, L, P, R) k\u00f6nnen in verschiedenen Zusammenh\u00e4ngen unterschiedliche\n Bedeutungen haben. Buchstaben, die sich auf Achsennamen beziehen, gelten nicht f\u00fcr eine Maschine,\n die nicht \u00fcber die entsprechende Achse verf\u00fcgt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 880 / 1331\n \n Tabelle 11.3: W\u00f6rter und ihre Bedeutungen\n Buchstabe\n A\n B\n@@ -39379,15 +39379,15 @@\n 11.4.2.4 End of Line Marker\n This is any combination of carriage return or line feed.\n 11.4.2.5 Numbers\n Die folgenden Regeln werden f\u00fcr (explizite) Zahlen verwendet. In diesen Regeln ist eine Ziffer ein\n einzelnes Zeichen zwischen 0 und 9.\n \u2022 Eine Nummer besteht aus:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 881 / 1331\n \n \u2013 ein optionales Plus- oder Minuszeichen, gefolgt von\n \u2013 Null bis viele Ziffern, eventuell gefolgt von\n \u2013 eine Dezimalstelle, gefolgt von\n \u2013 Null bis viele Ziffern - vorausgesetzt, die Zahl enth\u00e4lt mindestens eine Ziffer.\n@@ -39421,15 +39421,15 @@\n \u2022 benannt local - #<lokaler Wert>\n \u2022 benannt global - #<_globalvalue>\n Geltungsbereich (engl. scope)\n Der Geltungsbereich eines Parameters ist entweder global oder lokal innerhalb eines Unterprogramms. Unterprogramm-Parameter und lokale benannte Variablen haben einen lokalen Geltungsbereich. Globale benannte Parameter und nummerierte Parameter ab der Nummer 31 haben einen globalen Geltungsbereich. RS274/NGC verwendet lexical scoping - in einer Subroutine\n sind nur die darin definierten lokalen Variablen und alle globalen Variablen sichtbar. Die lokalen\n Variablen einer aufrufenden Prozedur sind in einer aufgerufenen Prozedur nicht sichtbar.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 882 / 1331\n \n Verhalten nicht initialisierter Parameter\n \u2022 Nicht initialisierte globale Parameter und nicht verwendete Unterprogrammparameter geben\n den Wert Null zur\u00fcck, wenn sie in einem Ausdruck verwendet werden.\n \u2022 Uninitialisierte benannte Parameter signalisieren einen Fehler, wenn sie in einem Ausdruck\n@@ -39469,15 +39469,15 @@\n Beispiel bedeutet ##2 den Wert des Parameters, dessen Index der (ganzzahlige) Wert von Parameter\n 2 ist.\n 1 Der Bereich der persistenten Parameter kann sich mit fortschreitender Entwicklung \u00e4ndern. Dieser Bereich liegt derzeit\n zwischen 5161 und 5390. Er ist im Array _required_parameters in der Datei src/emc/rs274ngc/interp_array.cc definiert.\n 2 Der RS274/NGC-Interpreter verwaltet ein Array mit nummerierten Parametern. Seine Gr\u00f6\u00dfe wird durch das Symbol\n RS274NGC_MAX_PARAMETERS in der Datei src/emc/rs274ngc/interp_internal.hh) definiert. Diese Anzahl numerischer Parameter kann sich auch erh\u00f6hen, wenn die Entwicklung die Unterst\u00fctzung f\u00fcr neue Parameter hinzuf\u00fcgt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 883 / 1331\n \n \u2022 31-5000 - G-Code Benutzerparameter. Diese Parameter sind global in der G-Codedatei und f\u00fcr die\n allgemeine Verwendung verf\u00fcgbar. Fl\u00fcchtig.\n \u2022 5061-5069 - Koordinaten eines G38 Sondenergebnisses (X, Y, Z, A, B, C, U, V & W). Koordinaten\n befinden sich in dem Koordinatensystem, in dem die G38 stattfand. Fl\u00fcchtig.\n@@ -39510,15 +39510,15 @@\n den aktuellen Programmeinheiten f\u00fcr X, Y, Z, A, B, C, U, V & W, fl\u00fcchtig.\n \u2022 5599 - Flag zur Steuerung der Ausgabe von (DEBUG,)-Anweisungen. 1=Ausgabe, 0=keine Ausgabe;\n default=1. Fl\u00fcchtig.\n \u2022 5600 - Werkzeugwechsler-Fehleranzeige. Wird mit der Komponente iocontrol-v2 verwendet. 1: Werkzeugwechsler gest\u00f6rt, 0: normal. Fl\u00fcchtig.\n \u2022 5601 - Fehlercode des Werkzeugwechslers. Wird mit der Komponente iocontrol-v2 verwendet. Gibt\n den Wert des HAL-Pins toolchanger-reason wieder, wenn ein Fehler aufgetreten ist. Fl\u00fcchtig.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 884 / 1331\n \n Persistenz nummerierter Parameter Die Werte der Parameter im persistenten Bereich werden\n \u00fcber die Zeit beibehalten, auch wenn das Bearbeitungszentrum ausgeschaltet ist. LinuxCNC verwendet eine Parameterdatei, um die Persistenz zu gew\u00e4hrleisten. Sie wird vom Interpreter verwaltet. Der\n Interpreter liest die Datei, wenn er startet, und schreibt die Datei, wenn er beendet wird.\n Das Format einer Parameter-Datei ist in Tabelle Parameter-Datei-Format dargestellt.\n@@ -39554,15 +39554,15 @@\n Unterprogrammen aus zug\u00e4nglich und k\u00f6nnen Werte innerhalb von Unterprogrammen setzen, die f\u00fcr\n den Aufrufer zug\u00e4nglich sind. Was den Anwendungsbereich betrifft, verhalten sie sich wie normale\n numerische Parameter. Sie werden nicht in Dateien gespeichert.\n Beispiele:\n Deklaration einer benannten globalen Variablen\n #<_endmill_dia> = 0.049\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 885 / 1331\n \n Verweis auf eine zuvor deklarierte globale Variable\n #<_endmill_rad> = [#<_endmill_dia>/2.0]\n \n Gemischte literale und benannte Parameter\n@@ -39613,15 +39613,15 @@\n G80\n 800\n G81\n 810\n G82\n 820\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 886 / 1331\n \n Bewegungsmodus\n R\u00fcckgabewert\n G83\n 830\n@@ -39690,15 +39690,15 @@\n G56\n \n R\u00fcckgabewert\n 540\n 550\n 560\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 887 / 1331\n \n Modus\n G57\n G58\n G59\n@@ -39741,15 +39741,15 @@\n \u2022 #<_feed> - Gibt den aktuellen Wert von F zur\u00fcck, nicht den tats\u00e4chlichen Vorschub.\n \u2022 #<_rpm> - Gibt den aktuellen Wert von S zur\u00fcck, nicht die tats\u00e4chliche Spindeldrehzahl.\n \u2022 #<_x> - Gibt die aktuelle relative X-Koordinate einschlie\u00dflich aller Offsets zur\u00fcck. Dasselbe wie\n #5420. In einer Drehbank-Konfiguration wird immer der Radius zur\u00fcckgegeben.\n \u2022 #<_y> - Liefert die aktuelle relative Y-Koordinate einschlie\u00dflich aller Offsets. Dasselbe wie #5421.\n \u2022 #<_z> - Liefert die aktuelle relative Z-Koordinate einschlie\u00dflich aller Offsets. Dasselbe wie #5422.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 888 / 1331\n \n \u2022 #<_a> - Liefert die aktuelle relative A-Koordinate einschlie\u00dflich aller Offsets. Dasselbe wie #5423.\n \u2022 #<_b> - Gibt die aktuelle relative B-Koordinate einschlie\u00dflich aller Offsets zur\u00fcck. Dasselbe wie\n #5424.\n \u2022 #<_c> - Gibt die aktuelle relative C-Koordinate einschlie\u00dflich aller Offsets zur\u00fcck. Dasselbe wie\n@@ -39782,15 +39782,15 @@\n \n 11.4.4 HAL pins and INI values\n Wenn dies in der <sub:ini:sec:rs274ngc, INI-Datei>> aktiviert ist, hat der G-Code Zugriff auf die\n Werte der INI-Datei-Eintr\u00e4ge und HAL-Pins.\n \u2022 #<_ini[section]name> Gibt den Wert des entsprechenden Elements in der INI-Datei zur\u00fcck.\n Wenn die INI-Datei zum Beispiel so aussieht:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 889 / 1331\n \n [SETUP]\n XPOS = 3.145\n YPOS = 2.718\n \n@@ -39830,15 +39830,15 @@\n 11.4.5 Expressions\n Ein Ausdruck ist eine Reihe von Zeichen, die mit einer linken Klammer [ beginnen und mit einer\n ausgleichenden rechten Klammer ] enden. Zwischen den Klammern stehen Zahlen, Parameterwerte,\n mathematische Operationen und andere Ausdr\u00fccke. Ein Ausdruck wird ausgewertet, um eine Zahl\n zu erzeugen. Die Ausdr\u00fccke in einer Zeile werden ausgewertet, wenn die Zeile gelesen wird, bevor\n etwas in der Zeile ausgef\u00fchrt wird. Ein Beispiel f\u00fcr einen Ausdruck ist [1 + acos[0] - [#3 ** [4.0/2]]].\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 890 / 1331\n \n 11.4.6 Binary Operators\n Bin\u00e4re Operatoren erscheinen nur innerhalb von Ausdr\u00fccken. Es gibt vier grundlegende mathematische Operationen: Addition (+), Subtraktion (-), Multiplikation (*) und Division (/). Es gibt drei logische\n Operationen: nicht-exklusive oder (OR), exklusive oder (XOR) und logische und (AND). Die achte Operation ist die Modulusoperation (MOD). Die neunte Operation ist die Potenz -Operation (**), bei der\n die Zahl links von der Operation mit der Potenz rechts davon erh\u00f6ht wird. Die relationalen Operatoren sind Gleichheit (EQ), Ungleichheit (NE), streng gr\u00f6\u00dfer als (GT), gr\u00f6\u00dfer oder gleich (GE), streng\n@@ -39884,15 +39884,15 @@\n Four quadrant inverse tangent\n Absoluter Wert\n Inverser Kosinus\n Inverser Sinus\n Kosinus\n e in der angegebenen Potenz\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 891 / 1331\n \n Tabelle 11.10: (continued)\n Funktionsname\n FIX[arg]\n FUP[arg]\n@@ -39942,15 +39942,15 @@\n beginnt.\n Wird derselbe Parameter wiederholt in einer Zeile eingestellt, z. B. #3=15 #3=6, wird nur die letzte\n Einstellung wirksam. Es ist zwar etwas merkw\u00fcrdig unn\u00f6tig, aber nicht illegal, denselben Parameter\n zweimal in derselben Zeile zu setzen.\n Wenn mehr als ein Kommentar in einer Zeile erscheint, wird nur der letzte verwendet; jeder der anderen Kommentare wird gelesen und auf sein Format gepr\u00fcft, danach aber ignoriert. Es wird erwartet,\n dass mehr als ein Kommentar in einer Zeile sehr selten vorkommt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 892 / 1331\n \n 11.4.10 Artikelreihenfolge\n Die drei Arten von Elementen, deren Reihenfolge in einer Zeile variieren kann (wie am Anfang dieses\n Abschnitts angegeben), sind Wort, Parametereinstellung und Kommentar. Stellen Sie sich vor, dass\n diese drei Arten von Eintr\u00e4gen nach Typ in drei Gruppen unterteilt sind.\n@@ -39988,15 +39988,15 @@\n Im absoluten Modus beziehen sich Abstand und Winkel auf die XY-Nullposition, und der Winkel beginnt\n bei 0 auf der positiven X-Achse und nimmt im Gegenuhrzeigersinn um die Z-Achse zu. Der Code G1\n @1^90 ist der gleiche wie G1 Y1.\n Im relativen Modus werden Abstand und Winkel ebenfalls von der XY-Nullposition aus gemessen,\n jedoch kumulativ. Dies kann anfangs verwirrend sein, wie dies im inkrementellen Modus funktioniert.\n Wenn Sie zum Beispiel das folgende Programm haben, k\u00f6nnten Sie erwarten, dass es ein quadratisches Muster ist:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 893 / 1331\n \n F100 G1 @.5 ^90\n G91 @.5 ^90\n @.5 ^90\n @.5 ^90\n@@ -40015,15 +40015,15 @@\n ^90\n ^90\n G90 G0 X0 Y0 M2\n \n Wie Sie sehen k\u00f6nnen, ist der Endpunktabstand f\u00fcr jede Linie gleich, wenn Sie nur den Winkel um 90\n Grad erh\u00f6hen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 894 / 1331\n \n Abbildung 11.11: Polares Quadrat\n Es ist ein Fehler, wenn:\n \u2022 Eine inkrementelle Bewegung wird am Ursprung gestartet\n \u2022 Eine Mischung aus Polar und X- oder Y-W\u00f6rtern wird verwendet\n@@ -40045,15 +40045,15 @@\n Member-W\u00f6rter\n G4, G10 G28, G30, G52, G53, G92, G92.1,\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81 G82, G83, G84, G85, G86, G87, G88,\n G89\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 895 / 1331\n \n Tabelle 11.11: (continued)\n Bedeutung der\n Modalgruppe\n Auswahl der Ebene (Gruppe\n@@ -40120,15 +40120,15 @@\n M100-M199\n \n Bei mehreren modalen Gruppen muss ein Mitglied der Gruppe in Kraft sein, wenn ein Bearbeitungszentrum bereit ist, Befehle anzunehmen. F\u00fcr diese modalen Gruppen gibt es Standardeinstellungen.\n Wenn das Bearbeitungszentrum eingeschaltet oder anderweitig neu initialisiert wird, werden die Standardwerte automatisch \u00fcbernommen.\n Gruppe 1, die erste Gruppe auf der Tabelle, ist eine Gruppe von G-Codes f\u00fcr Bewegung. Einer von\n ihnen ist immer in Kraft. Dieser wird als der aktuelle Bewegungsmodus bezeichnet.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 896 / 1331\n \n Es ist ein Fehler, einen G-Code der Gruppe 1 und einen G-Code der Gruppe 0 auf dieselbe Zeile\n zu setzen, wenn beide Achsenw\u00f6rter verwenden. Wenn ein G-Code der Gruppe 1, der Achsenw\u00f6rter\n verwendet, implizit auf einer Zeile in Kraft ist (weil er auf einer fr\u00fcheren Zeile aktiviert wurde) und\n ein G-Code der Gruppe 0, der Achsenw\u00f6rter verwendet, auf der Zeile erscheint, wird die Aktivit\u00e4t des\n@@ -40162,15 +40162,15 @@\n \n 11.4.15 Nachrichten\n \u2022 (MSG,) - zeigt eine Meldung an, wenn MSG nach der linken Klammer und vor einem anderen Druckzeichen erscheint. Varianten von MSG, die Leerzeichen und Kleinbuchstaben enthalten, sind zul\u00e4ssig. Der Rest der Zeichen vor der rechten Klammer wird als Nachricht betrachtet. Meldungen sollten\n auf dem Meldungsanzeigeger\u00e4t der Benutzeroberfl\u00e4che angezeigt werden, falls vorhanden.\n Beispiel f\u00fcr eine Nachricht\n (MSG, Dies ist eine Nachricht)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 897 / 1331\n \n 11.4.16 Probe Logging\n \u2022 (PROBEOPEN dateiname.txt) - \u00f6ffnet dateiname.txt und speichert darin die 9-stellige Koordinate,\n bestehend aus XYZABCUVW, jeder erfolgreichen geraden Probe.\n \u2022 (PROBECLOSE) - schlie\u00dft die ge\u00f6ffnete Probelog-Datei.\n@@ -40204,15 +40204,15 @@\n \n Innerhalb der oben genannten Arten von Kommentaren werden Sequenzen wie \u201d#123\u201d durch den\n Wert des Parameters 123 ersetzt. Sequenzen wie \u201d#<benannter Parameter>\u201d werden durch den Wert\n des benannten Parameters ersetzt. Bei benannten Parametern wird das Leerzeichen entfernt. So wird\n #<Benannter Parameter> in #<Benannter Parameter> umgewandelt.\n Parameternummern k\u00f6nnen formatiert werden, z.B.:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 898 / 1331\n \n (DEBUG, Wert = %d#<some_value>)\n \n gibt den Wert gerundet auf eine ganze Zahl aus.\n \u2022 %lf ist Standard, wenn keine Formatierungszeichenfolge vorhanden ist.\n@@ -40244,15 +40244,15 @@\n Der Interpreter und die Task sind sorgf\u00e4ltig geschrieben, so dass die einzige Grenze f\u00fcr die Gr\u00f6\u00dfe des\n Teilprogramms die Festplattenkapazit\u00e4t ist. Die TkLinuxCNC- und Axis-Schnittstelle laden beide den\n Programmtext, um ihn dem Benutzer anzuzeigen, so dass der RAM-Speicher ein begrenzender Faktor\n wird. Da in Axis die Vorschau standardm\u00e4\u00dfig gezeichnet wird, ist die Zeit, die f\u00fcr das Neuzeichnen\n ben\u00f6tigt wird, auch eine praktische Grenze f\u00fcr die Programmgr\u00f6\u00dfe. Die Vorschau kann in Axis ausgeschaltet werden, um das Laden gro\u00dfer Teileprogramme zu beschleunigen. In Axis k\u00f6nnen Teile der\n Vorschau mit dem Kommentar preview control ausgeschaltet werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 899 / 1331\n \n 11.4.23 G-code Order of Execution\n Die Reihenfolge der Ausf\u00fchrung der Posten in einer Zeile wird nicht durch die Position der einzelnen\n Posten in der Zeile bestimmt, sondern durch die folgende Liste:\n \u2022 O-Wort-Befehle (optional gefolgt von einem Kommentar, aber keine anderen W\u00f6rter in der gleichen\n@@ -40280,15 +40280,15 @@\n \u2022 R\u00fcckzugsmodus einstellen (G98, G99).\n \u2022 Referenzpunkt anfahren (G28, G30) oder Koordinatensystemdaten \u00e4ndern (G10) oder Achsenoffsets\n einstellen (G52, G92, G92.1, G92.2, G94).\n \u2022 Bewegung ausf\u00fchren (G0 bis G3, G33, G38.n, G73, G76, G80 bis G89), eventuell modifiziert durch\n G53.\n \u2022 Stopp (M0, M1, M2, M30, M60).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 900 / 1331\n \n 11.4.24 G-code Best Practices\n Verwenden einer angemessenen Dezimalgenauigkeit Verwenden Sie mindestens 3 Nachkommastellen, wenn Sie in Millimetern fr\u00e4sen, und mindestens 4 Nachkommastellen, wenn Sie in Zoll fr\u00e4sen.\n Insbesondere werden Toleranzpr\u00fcfungen der B\u00f6gen f\u00fcr .001 und .0001 entsprechend den aktiven\n Einheiten durchgef\u00fchrt.\n@@ -40319,15 +40319,15 @@\n gew\u00fcnschten Materials zu erreichen.\n \n 11.4.25 Lineare und rotierende Achsen\n Da die Bedeutung eines F-Wortes im Vorschub-pro-Minute-Modus davon abh\u00e4ngt, welche Achsen zu\n bewegen sind, und da die Menge des abgetragenen Materials nicht nur von der Vorschubgeschwindigkeit abh\u00e4ngt, kann es einfacher sein, den G93-Modus f\u00fcr den inversen Zeitvorschub zu verwenden,\n um die gew\u00fcnschte Materialabtragsrate zu erreichen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 901 / 1331\n \n 11.4.26 H\u00e4ufige Fehlermeldungen\n \u2022 G-Code au\u00dferhalb des Bereichs\u2019 - Ein G-Code gr\u00f6\u00dfer als G99 wurde verwendet, der Umfang der\n G-Codes in LinuxCNC ist 0 - 99. Nicht jede Zahl zwischen 0 und 99 ist ein g\u00fcltiger G-Code.\n \u2022 Unbekannter G-Code verwendet\u2019 - Es wurde ein G-Code verwendet, der nicht Teil der LinuxCNC\n@@ -40364,15 +40364,15 @@\n Die Werte, die auf Buchstaben folgen, werden oft als explizite Zahlen angegeben. Sofern nicht anders\n angegeben, k\u00f6nnen die expliziten Zahlen reelle Werte sein. Zum Beispiel k\u00f6nnte \u201dG10 L2\u201d genauso\n gut als \u201dG[2*5] L[1+1]\u201d geschrieben werden. W\u00e4re der Wert des Parameters 100 gleich 2, w\u00fcrde \u201dG10\n L#100\u201d dasselbe bedeuten.\n Wenn \u201dL-\u201d in einem Prototyp geschrieben wird, so wird das \u201d-\u201d oft als \u201dL-Nummer\u201d bezeichnet, und\n so weiter f\u00fcr jeden anderen Buchstaben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 902 / 1331\n \n 11.5.2 G-Code Quick Reference Table\n Code\n G0\n G1\n@@ -40469,15 +40469,15 @@\n Gewindeschneidzyklus mit mehreren\n Durchg\u00e4ngen (Drehmaschine)\n Bewegungsmodi abbrechen\n Bohrzyklus\n Bohrzyklus mit Verweilzeit (engl. dwell)\n Bohrzyklus mit Peck\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Code\n G84\n G85\n G86\n G87\n G88\n@@ -40536,15 +40536,15 @@\n Abschnitt G53 f\u00fcr weitere Informationen.\n Die Bahn einer G0-Eilgangbewegung kann bei Richtungs\u00e4nderungen abgerundet werden und h\u00e4ngt\n von den Trajektions-Steuerung (engl. trajectory control)-Einstellungen und der maximalen Beschleunigung der Achsen ab.\n Es ist ein Fehler, wenn:\n \u2022 Ein Achsenbuchstabe ohne reellen (Gleitkommazahl) Wert angegeben wird.\n \u2022 Ein Achsenbuchstabe verwendet wird, der nicht konfiguriert ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 904 / 1331\n \n 11.5.4 G1 Linear Move\n G1-Achsen\n \n F\u00fcr eine lineare (geradlinige) Bewegung mit der programmierten Vorschubgeschwindigkeit (zum\n@@ -40586,15 +40586,15 @@\n Sie in der Ebene G17 sind, f\u00fcgen Sie ein Z-Wort ein. Dies bewirkt, dass sich die Z-Achse w\u00e4hrend der\n kreisf\u00f6rmigen XY-Bewegung auf den programmierten Wert bewegt.\n Um einen Bogen zu programmieren, der mehr als eine volle Umdrehung ergibt, verwenden Sie das\n Wort \u201dP\u201d, das die Anzahl der vollen Umdrehungen plus des programmierten Bogens angibt. Das P-Wort\n muss eine ganze Zahl sein. Wird P nicht angegeben, verh\u00e4lt es sich so, als ob P1 eingegeben wurde,\n d.h. es wird nur eine volle oder teilweise Umdrehung ausgef\u00fchrt. Wird z. B. ein Bogen von 180 Grad\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 905 / 1331\n \n mit P2 programmiert, betr\u00e4gt die resultierende Bewegung 1 1/2 Umdrehungen. F\u00fcr jedes P-Inkrement\n \u00fcber 1 wird dem programmierten Bogen ein zus\u00e4tzlicher Vollkreis hinzugef\u00fcgt. Spiralf\u00f6rmige/helikale\n Bewegungen mit mehreren Umdrehungen werden unterst\u00fctzt und erm\u00f6glichen Bewegungen, die zum\n Fr\u00e4sen von L\u00f6chern oder Gewinden n\u00fctzlich sind.\n@@ -40633,15 +40633,15 @@\n Absoluter Bogenabstands-Modus Bogenmittelpunktsverschiebungen sind der absolute Abstand\n von der aktuellen 0-Position der Achse.\n F\u00fcr B\u00f6gen unter 360 Grad m\u00fcssen ein oder mehrere Achsenw\u00f6rter und beide Offsets programmiert\n werden.\n F\u00fcr Vollkreise m\u00fcssen keine Achsenw\u00f6rter und ein oder mehrere Offsets programmiert werden. Das\n P-Wort ist standardm\u00e4\u00dfig auf 1 eingestellt und ist optional.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 906 / 1331\n \n Weitere Informationen zum Modus Absoluter Bogenabstand finden Sie im Abschnitt G90.1.\n XY-Ebene (G17)\n G2 or G3 <X- Y- Z- I- J- P->\n \n@@ -40672,15 +40672,15 @@\n Anfang:\n \u2022 start - die aktuelle Position\n \u2022 center - die Mittelposition, wie sie unter Verwendung der W\u00f6rter i, j oder k berechnet wird\n \u2022 end - der programmierte Endpunkt\n \u2022 r1 - Radius von der Startposition zum Zentrum\n \u2022 r2 - Radius von der Endposition zur Mitte\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 907 / 1331\n \n 11.5.5.2 Beispiele f\u00fcr Center-Formate\n Das Berechnen von B\u00f6gen von Hand kann manchmal schwierig sein. Eine M\u00f6glichkeit besteht darin, den Bogen mit einem CAD-Programm zu zeichnen, um die Koordinaten und Offsets zu erhalten.\n Denken Sie an die oben erw\u00e4hnte Toleranz, Sie m\u00fcssen m\u00f6glicherweise die Pr\u00e4zision Ihres CADProgramms \u00e4ndern, um die gew\u00fcnschten Ergebnisse zu erzielen. Eine weitere M\u00f6glichkeit besteht\n darin, die Koordinaten und den Versatz mithilfe von Formeln zu berechnen. Wie Sie in den folgenden\n@@ -40698,15 +40698,15 @@\n sie X0 Y1. Der Mittelpunkt des Bogens liegt f\u00fcr beide Bewegungen bei X1 Y0,5. Bei der G2-Bewegung\n betr\u00e4gt der J-Versatz 0,5 und bei der G3-Bewegung -0,5.\n G2-G3 Beispielzeile\n G0 X0 Y0\n G2 X0 Y1 I1 J0.5 F25 (Bogen im Uhrzeigersinn in der XY-Ebene)\n G3 X0 Y0 I1 J-0.5 F25 (Bogen im Gegenuhrzeigersinn in der XY-Ebene)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 908 / 1331\n \n Abbildung 11.13: G2-G3 Beispiel\n Im n\u00e4chsten Beispiel zeigen wir, wie der Bogen eine Helix in der Z-Achse bilden kann, indem wir das\n Z-Wort hinzuf\u00fcgen.\n G2 Beispiel Helix\n@@ -40725,15 +40725,15 @@\n \n \u2022 R - Radius von der aktuellen Position\n Es ist nicht ratsam, Radiusformatb\u00f6gen zu programmieren, die fast Vollkreise oder fast Halbkreise\n sind, da eine kleine \u00c4nderung der Position des Endpunkts eine viel gr\u00f6\u00dfere \u00c4nderung der Position des\n Kreismittelpunkts (und damit der Mitte des Bogens) bewirkt. Der Vergr\u00f6\u00dferungseffekt ist so gro\u00df,\n dass Rundungsfehler in einer Zahl zu Schnitten f\u00fchren k\u00f6nnen, die au\u00dferhalb der Toleranzen liegen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 909 / 1331\n \n So f\u00fchrt beispielsweise eine Verschiebung des Endpunkts eines 180-Grad-Bogens um 1 % zu einer\n Verschiebung des Punkts um 90 Grad entlang des Bogens um 7 %. Nahezu vollst\u00e4ndige Kreise sind\n noch schlimmer. B\u00f6gen anderer Gr\u00f6\u00dfe (im Bereich von winzig bis 165 Grad oder 195 bis 345 Grad)\n sind in Ordnung.\n@@ -40769,15 +40769,15 @@\n \n 11.5.7 G5 Cubic Spline\n G5 X- Y- <I- J-> P- Q-\n \n \u2022 I - X inkrementeller Offset vom Startpunkt zum ersten Kontrollpunkt\n \u2022 J - Y inkrementeller Versatz vom Startpunkt zum ersten Kontrollpunkt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 910 / 1331\n \n \u2022 P - X inkrementeller Offset vom Endpunkt zum zweiten Kontrollpunkt\n \u2022 Q - Y inkrementeller Offset vom Endpunkt zum zweiten Kontrollpunkt\n G5 erstellt einen kubischen B-Spline in der XY-Ebene nur mit den Achsen X und Y. P und Q m\u00fcssen\n f\u00fcr jeden G5-Befehl angegeben werden.\n@@ -40817,15 +40817,15 @@\n G5.1 X2 I2 J-8\n \n Es ist ein Fehler, wenn:\n \u2022 sowohl der I- als auch der J-Offset sind nicht spezifiziert oder Null\n \u2022 Eine andere Achse als X oder Y wird angegeben.\n \u2022 Die aktive Ebene ist nicht G17.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 911 / 1331\n \n 11.5.9 G5.2 G5.3 NURBS Block\n G5.2 <P-> <X- Y-> <L->\n X- Y- <P->\n ...\n@@ -40851,15 +40851,15 @@\n ; Die schnellen Bewegungen zeigen denselben Weg ohne den NURBS-Block\n G0 X0 Y1\n X2 Y2\n X2 Y0\n X0 Y0\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 912 / 1331\n \n Beispiel einer NURBS-Ausgabe\n Weitere Informationen \u00fcber NURBS finden Sie hier:\n https://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS\n \n@@ -40869,15 +40869,15 @@\n Programmieren Sie G7, um den Durchmessermodus f\u00fcr die Achse X auf einer Drehmaschine aufzurufen. Im Durchmessermodus entspricht die Bewegung der X-Achse auf einer Drehmaschine der H\u00e4lfte\n des Abstands zur Mitte der Drehmaschine. Zum Beispiel w\u00fcrde X1 den Fr\u00e4ser auf 0.500 Zoll von der\n Mitte der Drehmaschine bewegen, was einen Teil mit 1 Zoll Durchmesser ergibt.\n \n 11.5.11 G8 Lathe Radius Mode\n G8\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 913 / 1331\n \n Programmieren Sie G8, um den Radiusmodus f\u00fcr die Achse X auf einer Drehmaschine aufzurufen.\n Im Radiusmodus entspricht die Bewegung der X-Achse auf einer Drehmaschine dem Abstand von der\n Mitte. Ein Schnitt bei X1 w\u00fcrde also ein Teil mit einem Durchmesser von 2 Zoll ergeben. G8 ist die\n Standardeinstellung beim Einschalten.\n@@ -40913,15 +40913,15 @@\n \u2022 Fr\u00e4serkompensation ist aktiviert\n \u2022 Die P-Nummer ist nicht spezifiziert\n \u2022 Die P-Nummer ist keine g\u00fcltige Werkzeugnummer aus der Werkzeugtabelle\n \u2022 Die P-Nummer ist 0\n Weitere Informationen \u00fcber die Werkzeugausrichtung, die durch das Q-Wort beschrieben wird, finden\n Sie im Diagramm Drehmaschinen Werkzeug-Ausrichtung.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 914 / 1331\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- <Achsen R->\n \n \u2022 P - Koordinatensystem (0-9)\n@@ -40978,15 +40978,15 @@\n \u2022 Wenn ein G52 lokaler Offset oder ein G92-offset zum Ursprung vor \u201dG10 L2\u201d in Kraft war, bleibt er\n auch danach in Kraft.\n \u2022 Bei der Programmierung eines Koordinatensystems mit R wird jedes G52 oder G92 nach der Drehung angewendet.\n \u2022 Das Koordinatensystem, dessen Ursprung durch einen \u201dG10\u201d-Befehl gesetzt wird, kann zum Zeitpunkt der Ausf\u00fchrung des \u201dG10\u201d-Befehls aktiv oder inaktiv sein. Wenn es gerade aktiv ist, werden\n die neuen Koordinaten sofort wirksam.\n Es ist ein Fehler, wenn:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 915 / 1331\n \n \u2022 Die P-Nummer ergibt keine ganze Zahl im Bereich von 0 bis 9.\n \u2022 Es wird eine Achse programmiert, die nicht in der Konfiguration definiert ist.\n G10 L2 Beispielzeile\n G10 L2 P1 X3.5 Y17.2\n@@ -41022,15 +41022,15 @@\n \u2022 Weitere Informationen finden Sie in den Abschnitten T & M6, und G43/G43.1.\n Es ist ein Fehler, wenn:\n \u2022 Fr\u00e4serkompensation ist aktiviert\n \u2022 Die P-Nummer ist nicht spezifiziert\n \u2022 Die P-Nummer ist keine g\u00fcltige Werkzeugnummer aus der Werkzeugtabelle\n \u2022 Die P-Nummer ist 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 916 / 1331\n \n 11.5.16 G10 L11 Set Tool Table\n G10 L11 P- axes <R- I- J- Q->\n \n \u2022 P\u201d - Werkzeugnummer\n@@ -41059,15 +41059,15 @@\n G10 L20 Beispiel Zeile\n G10 L20 P1 X1.5 (setzt die aktuelle Position der X-Achse im Koordinatensystem 1 auf 1,5)\n \n Es ist ein Fehler, wenn:\n \u2022 Die P-Nummer ergibt keine ganze Zahl im Bereich von 0 bis 9.\n \u2022 Es wird eine Achse programmiert, die nicht in der Konfiguration definiert ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 917 / 1331\n \n 11.5.18 G17 - G19.1 Plane Select\n Diese Codes stellen die aktuelle Ebene wie folgt ein:\n \u2022 G17 - XY (Standard)\n \u2022 G18 - ZX\n@@ -41103,15 +41103,15 @@\n \u2022 G28.1 - speichert die aktuelle absolute Position in den Parametern 5161-5166.\n G28 Beispielzeile\n G28 Z2.5 (schnell auf Z2.5 und dann auf die in #5163 angegebene Z-Position)\n \n Es ist ein Fehler, wenn :\n \u2022 Fr\u00e4serausgleich (engl. cutter compensation) aktiviert ist\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 918 / 1331\n \n 11.5.21 G30, G30.1 Go/Set Predefined Position\n \n Warnung\n Verwenden Sie G30 nur, wenn Ihre Maschine auf eine wiederholbare Position ausgerichtet ist\n@@ -41146,15 +41146,15 @@\n erzeugt G33 Z-1 K.0625 eine Bewegung von 1 Zoll in Z \u00fcber 16 Umdrehungen der Spindel. Dieser\n Befehl k\u00f6nnte Teil eines Programms zur Herstellung eines 16TPI-Gewindes sein. Ein weiteres Beispiel\n im metrischen System: G33 Z-15 K1.5 erzeugt eine Bewegung von 15 mm, w\u00e4hrend sich die Spindel\n 10 Mal dreht, um ein Gewinde von 1,5 mm herzustellen.\n Das (optionale) Argument $ legt fest, mit welcher Spindel die Bewegung synchronisiert wird (Standard ist Null). Zum Beispiel bewegt G33 Z10 K1 $1 die Spindel synchron mit dem Wert des Pins\n spindle.N.revs HAL.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 919 / 1331\n \n Die spindelsynchronisierte Bewegung wartet auf den Spindelindex und die Spindel an den Drehzahlstiften, so dass mehrere Durchg\u00e4nge aneinandergereiht werden. G33 bewegt das Ende am programmierten Endpunkt. G33 kann zum Schneiden von kegelf\u00f6rmigen Gewinden oder einem Konus verwendet werden.\n Alle Achsenw\u00f6rter sind optional, au\u00dfer dass mindestens eines verwendet werden muss.\n Anmerkung\n K folgt der durch \u201dX- Y- Z-\u201d beschriebenen Antriebslinie. K ist nicht parallel zur Z-Achse, wenn X- oder\n@@ -41186,15 +41186,15 @@\n \n 11.5.23 G33.1 Rigid Tapping\n G33.1 X- Y- Z- K- I- $-\n \n \u2022 K - Weg pro Umdrehung\n \u2022 I\u201d - optionaler Multiplikator der Spindeldrehzahl f\u00fcr schnelleren R\u00fccklauf\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 920 / 1331\n \n \u2022 $ - optionaler Spindelselektor\n Warnung\n F\u00fcr reines Z-Gewindeschneiden positionieren Sie die XY-Position vor dem Aufruf von G33.1 und\n verwenden nur ein Z-Wort in G33.1. Wenn die angegebenen Koordinaten nicht die aktuellen\n@@ -41225,15 +41225,15 @@\n \n \u2022 Siehe G90 & G0 & M2 f\u00fcr weitere Informationen.\n Es ist ein Fehler, wenn:\n \u2022 Alle Achsenw\u00f6rter werden weggelassen.\n \u2022 Die Spindel dreht sich nicht, wenn dieser Befehl ausgef\u00fchrt wird.\n \u2022 Die angeforderte lineare Bewegung \u00fcberschreitet die Geschwindigkeitsgrenzen der Maschine aufgrund der Spindeldrehzahl.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 921 / 1331\n \n 11.5.24 G38.n Straight Probe\n G38.n Achsen\n \n \u2022 G38.2\u201d - Messtaster zum Werkst\u00fcck, Stopp bei Ber\u00fchrung, Signalfehler bei Ausfall\n@@ -41293,15 +41293,15 @@\n \n Nach erfolgreicher Antastung werden die Parameter #5061 bis #5069 auf die X-, Y-, Z-, A-, B-, C-, U-,\n V-, W-Koordinaten der Position des kontrollierten Punktes zum Zeitpunkt der Zustands\u00e4nderung des\n Messtasters (im aktuellen Arbeitskoordinatensystem) gesetzt. Nach erfolgloser Antastung werden sie\n auf die Koordinaten des programmierten Punktes gesetzt. Der Parameter 5070 wird auf 1 gesetzt,\n wenn die Antastung erfolgreich war, und auf 0, wenn die Antastung fehlgeschlagen ist. Wenn der\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 922 / 1331\n \n Antastvorgang fehlgeschlagen ist, signalisieren G38.2 und G38.4 einen Fehler, indem sie eine Meldung\n auf dem Bildschirm ausgeben, sofern die gew\u00e4hlte GUI dies unterst\u00fctzt. Und durch Anhalten der\n Programmausf\u00fchrung.\n Here is an example formula to probe tool height with conversion from a local coordinate system Z\n@@ -41339,15 +41339,15 @@\n M2 (Programm beenden)\n \n Siehe die Abschnitte G0 und M2 f\u00fcr weitere Informationen.\n Es ist ein Fehler, wenn:\n \u2022 Ein G2/G3-Bogenzug folgt direkt nach einem G40.\n \u2022 Die lineare Bewegung nach Ausschalten der Kompensation ist kleiner als der Werkzeugdurchmesser.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 923 / 1331\n \n 11.5.26 G41, G42 Cutter Compensation\n G41 <D-> (links vom programmierten Pfad)\n G42 <D-> (rechts vom programmierten Pfad)\n \n@@ -41385,15 +41385,15 @@\n \n 11.5.27 G41.1, G42.1 Dynamic Cutter Compensation\n G41.1 D- <L-> (links vom programmierten Pfad)\n G42.1 D- <L-> (rechts vom programmierten Pfad)\n \n \u2022 D - Fr\u00e4serdurchmesser\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 924 / 1331\n \n \u2022 L - Werkzeugausrichtung (siehe Drehmaschinen Werkzeugausrichtung)\n G41.1 & G42.1 funktionieren genauso wie G41 & G42 mit der zus\u00e4tzlichen M\u00f6glichkeit, den Werkzeugdurchmesser zu programmieren. Das L-Wort ist standardm\u00e4\u00dfig 0, wenn es nicht spezifiziert ist.\n Es ist ein Fehler, wenn:\n \u2022 Die YZ-Ebene ist aktiv.\n@@ -41421,15 +41421,15 @@\n \n Es ist ein Fehler, wenn:\n \u2022 die H-Nummer ist keine ganze Zahl, oder\n \u2022 die H-Zahl ist negativ, oder\n \u2022 die H-Nummer ist keine g\u00fcltige Werkzeugnummer (beachten Sie jedoch, dass 0 eine g\u00fcltige Werkzeugnummer auf Maschinen mit nicht-zuf\u00e4lligem Werkzeugwechsler ist, sie bedeutet \u201ddas aktuell\n in der Spindel befindliche Werkzeug\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 925 / 1331\n \n 11.5.29 G43.1 Dynamic Tool Length Offset\n G43.1-Achsen\n \n \u2022 G43.1-Achsen - \u00c4ndern Sie nachfolgende Bewegungen, indem Sie den/die aktuellen Offset(s) der\n@@ -41466,15 +41466,15 @@\n Es ist ein Fehler, wenn:\n \u2022 H ist nicht angegeben und es sind keine Achsen-Offsets angegeben.\n \u2022 H ist angegeben doch die angegebene Werkzeugnummer existiert nicht in der Werkzeugtabelle.\n \u2022 H wird angegeben und Achsen werden ebenfalls angegeben.\n Anmerkung\n G43.2 schreibt nicht in die Werkzeugtabelle.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 926 / 1331\n \n 11.5.31 G49 Cancel Tool Length Compensation\n \u2022 G49 - hebt die Werkzeugl\u00e4ngenkompensation auf\n Es ist in Ordnung, mit demselben bereits verwendeten Versatz zu programmieren. Es ist auch in\n Ordnung, ohne Werkzeugl\u00e4ngenkorrektur zu programmieren, wenn gerade keine verwendet wird.\n@@ -41510,15 +41510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 927 / 1331\n \n Die Koordinatensysteme speichern die Achsenwerte und den XY-Drehwinkel um die Z-Achse in den in\n der folgenden Tabelle aufgef\u00fchrten Parametern.\n Tabelle 11.16: Koordinatensystem-Parameter\n W\u00e4hlen\n@@ -41676,15 +41676,15 @@\n \n \u2022 P - Toleranz f\u00fcr Bewegungs-\u00dcberg\u00e4nge\n \u2022 Q - naive Nockentoleranz\n \u2022 G64 - bestm\u00f6gliche Geschwindigkeit. Ohne P bedeutet es, die bestm\u00f6gliche Geschwindigkeit zu\n halten, egal wie weit man vom programmierten Punkt entfernt ist.\n \u2022 G64 P-\u2019 - Abw\u00e4gung zwischen bester Geschwindigkeit und Abweichungstoleranz\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 928 / 1331\n \n \u2022 G64 P- <Q- > \u00dcberlagerung mit Toleranz. Es ist eine M\u00f6glichkeit, Ihr System fein abzustimmen,\n um den besten Kompromiss zwischen Geschwindigkeit und Genauigkeit zu erzielen. Die P-Toleranz\n bedeutet, dass der tats\u00e4chliche Pfad nicht mehr als P- vom programmierten Endpunkt entfernt ist.\n Die Geschwindigkeit wird bei Bedarf reduziert, um den Pfad beizubehalten. Wenn Sie Q auf einen\n@@ -41721,15 +41721,15 @@\n \u2013 Dann wird ein Eilgang an den Anfang des Profils ausgef\u00fchrt.\n \u2013 Der in Q- angegebene Pfad wird mit den Befehlen G1 und Abschnitt 11.5.5 verfolgt.\n \u2013 Wenn ein weiterer Durchgang erforderlich ist, erfolgt ein weiterer Eilgang zur Zwischenposition,\n bevor ein Eilgang zum Anfang des Profils durchgef\u00fchrt wird.\n \u2013 Nach dem letzten Durchgang bleibt das Werkzeug am Ende des Profils einschlie\u00dflich E- stehen.\n \u2022 Mehrere Durchg\u00e4nge. Der Abstand zwischen dem Durchgang und dem endg\u00fcltigen Profil ist (Durchgang1)*(D-E)/P+E. Dabei ist pass die Nummer des Durchgangs und D, E und P sind die Nummern D/E/P.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 929 / 1331\n \n \u2022 Der Abstand wird anhand der Startposition des Zyklus berechnet, wobei der Abstand zu diesem\n Punkt positiv ist.\n \u2022 Verrundungen und Fasen im Profil. Es ist m\u00f6glich, Verrundungen oder Fasen in das Profil einzuf\u00fcgen, siehe Abschnitt 11.5.39 f\u00fcr weitere Details.\n Es ist ein Fehler, wenn:\n@@ -41766,15 +41766,15 @@\n durch A angegebenen Radius eingef\u00fcgt; wenn dieser Radius zu gro\u00df ist, schl\u00e4gt der Algorithmus mit\n einem nicht monotonen Pfadfehler fehl. Es ist auch m\u00f6glich, die C-Nummer zu verwenden, wodurch\n eine Fase eingef\u00fcgt werden kann. Diese Fase hat die gleichen Endpunkte wie eine Verrundung mit\n den gleichen Abmessungen, aber es wird eine gerade Linie anstelle eines Bogens eingef\u00fcgt.\n Im absoluten Modus k\u00f6nnen U (f\u00fcr X) und W (f\u00fcr Z) als inkrementelle Verschiebungen verwendet\n werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 930 / 1331\n \n Die G7x.1-Zyklen schneiden keine Taschen. Die G7x.2-Zyklen schneiden nur nach der ersten Tasche\n und machen dort weiter, wo G7x.1 aufgeh\u00f6rt hat. Es ist ratsam, vor dem G7x.2-Zyklus etwas zus\u00e4tzliches Material zum Schneiden \u00fcbrig zu lassen. Wenn also G7x.1 einen D1.0-Zyklus verwendet hat,\n kann G7x.2 einen D0.5-Zyklus verwenden und 0,5 mm werden beim \u00dcbergang von einer Tasche zur\n n\u00e4chsten entfernt.\n@@ -41808,15 +41808,15 @@\n \u2022 Schnelles Aufsteigen (engl. rapid up) um 0,010 Zoll oder 0,254 mm.\n \u2022 Wiederholen der Schritte 2 und 3, bis die Z-Position bei Schritt 2 erreicht ist.\n \u2022 Die Z-Achse f\u00e4hrt im Eilgang in die R-Position.\n Es ist ein Fehler, wenn:\n \u2022 Die Q-Zahl ist negativ oder null.\n \u2022 die R-Nummer ist nicht angegeben\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 931 / 1331\n \n 11.5.41 G74 Left-hand Tapping Cycle with Dwell\n G74 (X- Y- Z-) oder (U- V- W-) R- L- P- $- F-\n \n \u2022 R- - Zur\u00fcckziehen der Position entlang der Z-Achse.\n@@ -41841,15 +41841,15 @@\n 8. Wiederherstellung der Vorschub- und Geschwindigkeitsneufestsetzung-Aktivierung in den vorherigen Zustand\n Die L\u00e4nge der Verweilzeit wird durch ein P--Wort im G74-Satz angegeben. Die Vorschubgeschwindigkeit F- ist die Spindeldrehzahl multipliziert mit dem Abstand pro Umdrehung (Gewindesteigung). Im\n Beispiel S100 mit 1,25mm pro Umdrehung Gewindesteigung ergibt einen Vorschub von F125.\n \n 11.5.42 G76 Threading Cycle\n G76 P- Z- I- J- R- K- Q- H- E- L- $-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 932 / 1331\n \n Abbildung 11.14: G76 Gewindeschneiden\n \u2022 Drive Line - Eine Linie durch die anf\u00e4ngliche X-Position parallel zum Z.\n \u2022 P- - Die Gewindesteigung in Abstand pro Umdrehung.\n \u2022 Z- - Die endg\u00fcltige Position von Windungen. Am Ende des Zyklus befindet sich das Werkzeug an\n@@ -41865,15 +41865,15 @@\n \u2022 \u2019 K-\u2019 - Ein positiver Wert, der die volle Gewindetiefe angibt. Der endg\u00fcltige Gewindeschnitt liegt K\n \u00fcber der Gewindespitzenposition.\n Optionale Einstellungen\n \u2022 $- - The spindle number to which the motion will be synchronised (default 0). For example if $1 is\n programmed then the motion will begin on the reset of spindle.1.index-enable and proceed in\n synchrony with the value of spindle.1.revs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 933 / 1331\n \n \u2022 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@@ -41909,15 +41909,15 @@\n w\u00e4hrend des Gewindeschneidens nicht ver\u00e4ndert wird.\n Die endg\u00fcltige Position des Werkzeugs befindet sich am Ende der \u201dAntriebslinie\u201d. Um das Werkzeug\n aus der Bohrung zu entfernen, ist eine sichere Z-Bewegung mit einem Innengewinde erforderlich.\n Es ist ein Fehler, wenn:\n \u2022 Die aktive Ebene ist nicht die ZX-Ebene.\n \u2022 Andere Achsenbezeichnungen wie X- oder Y- werden angegeben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 934 / 1331\n \n \u2022 Der R- Degressionswert ist kleiner als 1,0.\n \u2022 Es sind nicht alle erforderlichen Angaben enthalten.\n \u2022 \u201dP-\u201d, \u201dJ-\u201d, \u201dK-\u201d oder \u201dH-\u201d ist negativ.\n \u2022 \u201dE-\u201d ist gr\u00f6\u00dfer als die halbe L\u00e4nge der Antriebslinie.\n@@ -41938,15 +41938,15 @@\n 11.5.43 G80-G89 Canned Cycles\n In diesem Abschnitt werden die Festzyklen G81 bis G89 und der Festzyklusstopp G80 beschrieben.\n Alle Festzyklen werden in Bezug auf die aktuell gew\u00e4hlte Ebene ausgef\u00fchrt. Jede der neun Ebenen\n kann ausgew\u00e4hlt werden. In diesem Abschnitt wird bei den meisten Beschreibungen davon ausgegangen, dass die XY-Ebene ausgew\u00e4hlt wurde. Das Verhalten ist analog, wenn eine andere Ebene gew\u00e4hlt\n wird, und es m\u00fcssen die richtigen Worte verwendet werden. In der Ebene \u201dG17.1\u201d zum Beispiel verl\u00e4uft die Wirkung des Festzyklus entlang W, und die Positionen oder Inkremente werden mit U und V\n angegeben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 935 / 1331\n \n Drehachsenbegriffe sind in Festzyklen nicht erlaubt. Wenn die aktive Ebene zur XYZ-Familie geh\u00f6rt,\n sind die UVW-Achsenw\u00f6rter nicht erlaubt. Wenn die aktive Ebene zur UVW-Familie geh\u00f6rt, sind die\n XYZ-Achsenw\u00f6rter ebenfalls nicht erlaubt.\n 11.5.43.1 Gel\u00e4ufige Begriffe\n@@ -41979,15 +41979,15 @@\n urspr\u00fcngliche Z-Position (wenn diese \u00fcber der R-Position liegt und der R\u00fcckzugsmodus G98, OLD_Z,\n ist), oder andernfalls auf die R-Position. Siehe den Abschnitt G98 G99.\n 11.5.43.5 Canned Cycle Errors\n Es ist ein Fehler, wenn:\n \u2022 alle Achsenw\u00f6rter w\u00e4hrend eines Festzyklus fehlen,\n \u2022 Achsenw\u00f6rter aus verschiedenen Gruppen (XYZ) (UVW) zusammen verwendet werden,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 936 / 1331\n \n \u2022 eine P-Nummer erforderlich ist und eine negative P-Nummer verwendet wird,\n \u2022 eine L-Zahl verwendet wird, die nicht als positive ganze Zahl ausgewertet werden kann,\n \u2022 die Bewegung der Drehachse w\u00e4hrend eines Festzyklus verwendet wird,\n \u2022 w\u00e4hrend eines Festzyklus ist die inverse Zeitvorschubgeschwindigkeit aktiv ist,\n@@ -42024,15 +42024,15 @@\n N120 G91 G81 X1 Y0 Z-1 R1 L4 (Festbohrzyklus)\n N130 G90 G0 X0 Y1\n N140 Z0\n N150 G91 G81 X1 Y0 Z-0,5 R1 L4(Festbohrzyklus)\n N160 G80 (Ausschalten des Festzyklus)\n N170 M2 (Programmende)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 937 / 1331\n \n Das G98 in der zweiten Zeile oben bedeutet, dass der R\u00fccklauf auf den Z-Wert in der ersten Zeile\n erfolgt, da dieser h\u00f6her ist als der angegebene R-Wert.\n \n Zw\u00f6lf L\u00f6cher im Viereck Dieses Beispiel demonstriert die Verwendung des L Werts, um eine Reihe\n@@ -42046,15 +42046,15 @@\n N1050 X0 Y-1 L2 (Wiederholung)\n N1060 G80 (Ausschalten des Festzyklus)\n N1070 G90 G0 X0 (Eilgang nach Hause)\n N1080 Y0\n N1090 Z0\n N1100 M2 (Programmende)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 938 / 1331\n \n Der zweite Grund f\u00fcr die Verwendung eines festen Zyklus ist, dass alle diese Zyklen vorl\u00e4ufige Bewegungen und Ertr\u00e4ge erzeugen, die Sie unabh\u00e4ngig vom Startpunkt des festen Zyklus vorhersehen\n und kontrollieren k\u00f6nnen.\n \n 11.5.44 G80 Cancel Canned Cycle\n@@ -42073,15 +42073,15 @@\n G90 G81 X1 Y1 Z1.5 R2.8 (absoluter Abstand im Festzyklus)\n G0 X0 Y0 Z0 (Eilgang zum Koordinatenursprung)\n \n Der Vorteil des ersten Satzes ist, dass die G80-Zeile den G81-Festzyklus eindeutig ausschaltet. Mit\n dem ersten Satz von S\u00e4tzen muss der Programmierer die Bewegung mit G0 wieder einschalten, wie\n es in der n\u00e4chsten Zeile geschieht, oder mit einem anderen Bewegungsmodus-G-Wort.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 939 / 1331\n \n Wenn ein Festzyklus nicht mit G80 oder einem anderen Bewegungswort ausgeschaltet wird, versucht\n der Festzyklus, sich mit dem n\u00e4chsten Codesatz zu wiederholen, der ein X-, Y- oder Z-Wort enth\u00e4lt. Die\n folgende Datei bohrt (G81) einen Satz von acht L\u00f6chern, wie in der folgenden Beschriftung gezeigt.\n G80 Beispiel 1\n@@ -42115,15 +42115,15 @@\n \n Der G81-Zyklus ist f\u00fcr Bohrungen bestimmt.\n Der Zyklus funktioniert wie folgt:\n \u2022 Vorl\u00e4ufige Bewegung, wie im Abschnitt Preliminary and In-Between Motion beschrieben.\n \u2022 Fahren Sie die Z-Achse mit dem aktuellen Vorschub auf die Z-Position.\n \u2022 Die Z-Achse f\u00fchrt einen Eilgang aus, um \u00fcber Z den Weg freizumachen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 940 / 1331\n \n Abbildung 11.16: G81 Zyklus\n Beispiel 1 \u2013 Absolute Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n@@ -42137,15 +42137,15 @@\n \u2022 Der R-Wert und der klare (engl. clear) Z-Wert sind 2,8. OLD_Z ist 3.\n Die folgenden Bewegungen finden statt:\n \u2022 Im Eilgang parallel zur XY-Ebene nach (X4, Y5)\n \u2022 Im Eilgang parallel zur Z-Achse nach (Z2.8).\n \u2022 Fahrt parallel zur Z-Achse mit normalem Vorschub zu (Z1.5)\n \u2022 Im Eilgang parallel zur Z-Achse nach (Z3)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 941 / 1331\n \n Beispiel 2 \u2013 Relative Position G81\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n Angenommen, die aktuelle Position ist (X1, Y2, Z3) und die vorangehende Zeile des NC-Codes wird\n@@ -42164,30 +42164,30 @@\n \u2022 Im Eilgang parallel zur XY-Ebene zu (X9, Y12, Z4.8)\n \u2022 Fahrt parallel zur Z-Achse mit Vorschub-Geschwindigkeit auf (X9, Y12, Z4.2)\n \u2022 Eine schnelle Bewegung parallel zur Z-Achse zu (X9, Y12, Z4.8)\n Die dritte Wiederholung besteht aus 3 Z\u00fcgen. Die X-Position wird auf 13 (=9+4) und die Y-Position\n auf 17 (=12+5) zur\u00fcckgesetzt.\n \u2022 Im Eilgang parallel zur XY-Ebene nach (X13, Y17, Z4.8)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 942 / 1331\n \n \u2022 Verfahren parallel zur Z-Achse im Vorschub bis (X13, Y17, Z4.2)\n \u2022 Im Eilgang parallel zur Z-Achse nach (X13, Y17, Z4.8)\n \n Beispiel 3 - Relative Position G81\n G90 G98 G81 X4 Y5 Z1.5 R2.8\n \n Nehmen wir nun an, dass Sie den ersten G81-Codeblock ausf\u00fchren, aber nicht von (X1, Y2, Z3), sondern von (X0, Y0, Z0) aus.\n Da OLD_Z unter dem R-Wert liegt, f\u00fcgt es der Bewegung nichts hinzu, aber da der Anfangswert von\n Z kleiner als der in R angegebene Wert ist, wird es w\u00e4hrend der vorbereitenden Bewegungen eine\n anf\u00e4ngliche Z-Bewegung geben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 943 / 1331\n \n Beispiel 4 - Absolute G81 R > Z Dies ist eine Darstellung des Bewegungspfads f\u00fcr den zweiten\n g81-Codeblock.\n G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3\n \n@@ -42195,15 +42195,15 @@\n und bewegt sich schnell zu dieser Position. Nach dieser anf\u00e4nglichen Z-Bewegung funktioniert die\n Wiederholungsfunktion genauso wie in Beispiel 3, wobei die endg\u00fcltige Z-Tiefe 0,6 unter dem R-Wert\n liegt.\n \n Beispiel 5 - Relative Position R > Z\n G90 G98 G81 X4 Y5 Z-0.6 R1.8\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 944 / 1331\n \n Da diese Zeichnung mit (X0, Y0, Z0) beginnt, f\u00fcgt der Interpreter die anf\u00e4nglichen Z0 und R1.8 hinzu\n und bewegt sich schnell zu dieser Position wie in \u201dBeispiel 4\u201d. Nach dieser anf\u00e4nglichen Z-Bewegung\n wird die Eilgang-Bewegung nach X4 Y5 durchgef\u00fchrt. Die endg\u00fcltige Z-Tiefe liegt dann 0,6 unter dem\n R-Wert. Die Wiederholungsfunktion w\u00fcrde die Z-Bewegung an der gleichen Stelle wiederholen.\n@@ -42241,15 +42241,15 @@\n \u2022 Bewegen Sie sich im Eiltempo zur\u00fcck zum aktuellen Bohrungsgrund, abz\u00fcglich 0,254 mm oder\n 0,010 Zoll.\n \u2022 Wiederholen der Schritte 2, 3 und 4, bis die Z-Position bei Schritt 2 erreicht ist.\n \u2022 Die Z-Achse f\u00fchrt einen Eilgang aus, um \u00fcber Z den Weg freizumachen.\n Es ist ein Fehler, wenn:\n \u2022 Die Q-Zahl ist negativ oder null.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 945 / 1331\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- - Zur\u00fcckziehen der Position entlang der Z-Achse.\n@@ -42285,15 +42285,15 @@\n verwendet werden.\n \u2022 Vorl\u00e4ufige Bewegung, wie im Abschnitt Preliminary and In-Between Motion beschrieben.\n \u2022 Bewege die Z-Achse nur mit dem aktuellen Vorschub zur Z-Position.\n \u2022 R\u00fcckzug der Z-Achse mit dem aktuellen Vorschub in die R-Ebene, wenn dieser niedriger ist als der\n urspr\u00fcngliche Z-Wert.\n \u2022 Mit der Verfahrgeschwindigkeit einfahren, um Z zu l\u00f6schen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.50\n \n 946 / 1331\n \n G86 Boring Cycle, Spindle Stop, Rapid Move Out\n \n@@ -42330,15 +42330,15 @@\n Der Zyklus G89 ist f\u00fcr das Bohren vorgesehen. Dieser Zyklus verwendet eine P-Zahl, wobei P die\n Anzahl der zu verweilenden Sekunden angibt.\n \u2022 Vorl\u00e4ufige Bewegung, wie im Abschnitt Preliminary and In-Between Motion beschrieben.\n \u2022 Bewege die Z-Achse nur mit dem aktuellen Vorschub zur Z-Position.\n \u2022 Verweilen f\u00fcr die Anzahl von P Sekunden.\n \u2022 Zur\u00fcckfahren der Z-Achse mit der aktuellen Vorschubgeschwindigkeit, um Z zu l\u00f6schen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.54\n \n 947 / 1331\n \n G90, G91 Distance Mode\n \n@@ -42375,15 +42375,15 @@\n Sie verschieben sich so, dass der Wert des aktuell kontrollierten Punktes im aktuell aktiven Koordinatensystem den angegebenen Wert annimmt. Alle Urspr\u00fcnge des Koordinatensystems (G53-G59.3)\n werden um denselben Abstand verschoben.\n G92\u2019 verwendet die in parameters 5211-5219 gespeicherten Werte als X Y Z A B C U V W Offsetwerte\n f\u00fcr jede Achse. Die Parameterwerte sind \u201dabsolute\u201d Maschinenkoordinaten in den nativen Maschineneinheiten, wie in der INI-Datei angegeben. Alle in der INI-Datei definierten Achsen werden versetzt,\n wenn G92 aktiv ist. Wenn eine Achse nach G92 nicht eingegeben wurde, ist der Offset dieser Achse\n Null.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 948 / 1331\n \n For example, suppose the current point is at X=4 and there is currently no G92 offset active. Then\n G92 X7 is programmed. This moves all origins -3 in X, which causes the current point to become X=7.\n This -3 is saved in parameter 5211.\n Being in incremental distance mode (G91 instead of G90) has no effect on the action of G92.\n@@ -42423,15 +42423,15 @@\n \u2022 G93 - ist der Modus \u201dInverse Zeit\u201d. Im Modus f\u00fcr inverse Zeitvorsch\u00fcbe bedeutet ein F-Wert, dass\n die Bewegung in [eins geteilt durch die F-Zahl] Minuten abgeschlossen sein sollte. Wenn die F-Zahl\n beispielsweise 2.0 betr\u00e4gt, sollte die Bewegung in einer halben Minute abgeschlossen sein.\n When the inverse time feed rate mode is active, an F word must appear on every line which has a\n G1, G2, or G3 motion, and an F-word on a line that does not have G1, G2, or G3 is ignored. Being in\n inverse time feed rate mode does not affect G0 (rapid move) motions.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 949 / 1331\n \n \u2022 \u201dG94\u201d - ist der Modus Einheiten pro Minute. Im Vorschubmodus Einheiten pro Minute wird ein FWert so interpretiert, dass der gesteuerte Punkt mit einer bestimmten Anzahl von Zoll pro Minute,\n Millimeter pro Minute oder Grad pro Minute verfahren werden soll, je nachdem, welche L\u00e4ngeneinheiten verwendet werden und welche Achse oder Achsen sich bewegen.\n \u2022 G95 - is Units per Revolution Mode In units per revolution mode, an F-word is interpreted to mean\n the controlled point should move a certain number of inches per revolution of the spindle, depending\n@@ -42468,15 +42468,15 @@\n \n \u2190-\n \n Es ist ein Fehler, wenn:\n \u2022 S ist bei G96 nicht festgelegt\n \u2022 Eine Vorschubbewegung wird im G96-Modus festgelegt, w\u00e4hrend sich die Spindel nicht dreht\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.61\n \n 950 / 1331\n \n G98, G99 Canned Cycle Return Level\n \n@@ -42539,15 +42539,15 @@\n Steuerung des Vorschub-Stopps\n Aktuelle Werkzeugnummer einstellen\n Ausgangs-Steuerung (engl. output\n control)\n Eingabe-Steuerung (engl. input\n control)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 951 / 1331\n \n Code\n Beschreibung\n M67\n Steuerung des Analogausgangs\n@@ -42595,15 +42595,15 @@\n \u2022 Der Abstandsmodus ist auf den absoluten Modus eingestellt (wie G90).\n \u2022 Der Vorschubmodus ist auf Einheiten pro Minute eingestellt (wie G94).\n \u2022 Vorschub- und Geschwindigkeits-Neufestsetzungen (engl. overrides) sind auf ON gesetzt (wie M48).\n \u2022 Fr\u00e4serkompensation ist ausgeschaltet (wie G40).\n \u2022 Die Spindel wird angehalten (wie bei M5).\n \u2022 Der aktuelle Bewegungsmodus ist auf Vorschub eingestellt (wie G1).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 952 / 1331\n \n \u2022 Das K\u00fchlmittel ist ausgeschaltet (wie M9).\n Anmerkung\n Codezeilen nach M2/M30 werden nicht ausgef\u00fchrt. Durch Dr\u00fccken von Zyklusstart wird das Programm am Anfang der Datei gestartet.\n \n@@ -42640,15 +42640,15 @@\n Es ist OK, M3 oder M4 zu verwenden, wenn die S Spindeldrehzahl auf Null gesetzt ist. In diesem\n Fall (oder wenn der Drehzahl-Neufestsetzungs (engl. override)-Schalter aktiviert und auf Null gesetzt\n ist), beginnt die Spindel nicht zu drehen. Wenn die Spindeldrehzahl sp\u00e4ter auf einen Wert \u00fcber Null\n gesetzt wird (oder der Override-Schalter aktiviert wird), beginnt sich die Spindel zu drehen. Es ist in\n Ordnung, M3 oder M4 zu verwenden, wenn sich die Spindel bereits dreht, oder M5 zu verwenden,\n wenn die Spindel bereits angehalten ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 953 / 1331\n \n 11.6.6 M6 Tool Change\n 11.6.6.1 Manueller Werkzeugwechsel\n Wenn die HAL-Komponente hal_manualtoolchange geladen ist, h\u00e4lt M6 die Spindel an und fordert den\n Benutzer auf, das Werkzeug auf der Grundlage der zuletzt programmierten \u2019T-\u2019Nummer zu wechseln.\n@@ -42684,15 +42684,15 @@\n 11.6.7\n \n M7, M8, M9 Coolant Control\n \n \u2022 M7 - K\u00fchlmittelnebel (engl. mist coolant) einschalten. M7 steuert den iocontrol.0.coolant-mist Pin.\n \u2022 M8 - K\u00fchlmittelflutung (engl. flood cloolant) einschalten. M8 steuert iocontrol.0.coolant-flood Pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 954 / 1331\n \n \u2022 M9 - sowohl M7 als auch M8 ausschalten.\n Verbindet einen oder beide K\u00fchlmittelkontrollstifte in HAL, bevor M7 oder M8 einen Ausgang steuern.\n M7 und M8 k\u00f6nnen verwendet werden, um einen beliebigen Ausgang \u00fcber G-Code einzuschalten.\n Sie k\u00f6nnen jeden dieser Befehle verwenden, unabh\u00e4ngig vom aktuellen K\u00fchlmittelzustand.\n@@ -42721,15 +42721,15 @@\n \u2013 spindle.N.is-oriented (in bit) Pin best\u00e4tigt die Spindelorientierung. Schlie\u00dft den Orientierungszyklus ab. Wenn spindel-orient wahr war, als spindel-oriented \u00fcberpr\u00fcft wurde, wird der spindelorient-Pin gel\u00f6scht und der spindle-locked Pin wird gesichert. Auch der spindle-brake Pin ist dann\n gesichert.\n \u2013 spindle.N.orient-fault (in s32) Eingang des Fehlercodes f\u00fcr den Orientierungszyklus. Jeder Wert\n ungleich Null f\u00fchrt zum Abbruch des Orientierungszyklus.\n \u2013 spindle.N.locked (out bit) Spindel Orientierung komplett-Pin. Wird durch einen der Parameter\n M3,M4,M5 gel\u00f6scht.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.9\n \n 955 / 1331\n \n M48, M49 Speed and Feed Override Control\n \n@@ -42762,15 +42762,15 @@\n Wenn der adaptive Vorschub aktiviert ist, wird ein externer Eingangswert zusammen mit dem VorschubOverride-Wert der Benutzeroberfl\u00e4che und der befohlenen Vorschubgeschwindigkeit verwendet, um\n die tats\u00e4chliche Vorschubgeschwindigkeit einzustellen. In LinuxCNC wird der HAL-Pin motion.adaptivefeed f\u00fcr diesen Zweck verwendet. Werte auf motion.adaptive-feed sollte im Bereich von -1 (programmierte Geschwindigkeit in umgekehrter Richtung) bis 1 (volle Geschwindigkeit). 0 ist gleichbedeutend\n mit feed-hold.\n Anmerkung\n Die Verwendung des negativen adaptiven Vorschubs f\u00fcr den R\u00fcckw\u00e4rtslauf ist eine neue Funktion,\n die noch nicht sehr gut getestet wurde. Sie ist f\u00fcr Plasmaschneider und Drahterodiermaschinen vorgesehen, aber nicht auf diese Anwendungen beschr\u00e4nkt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 956 / 1331\n \n 11.6.13 M53 Feed Stop Control\n \u2022 M53 <P1> - Aktivierung des Vorschubstoppschalters. Der P1 ist optional. Durch die Aktivierung des\n Vorschubstoppschalters kann die Bewegung mit Hilfe der Vorschubstoppsteuerung unterbrochen\n werden. In LinuxCNC wird der HAL-Pin motion.feed-hold f\u00fcr diesen Zweck verwendet. Ein trueWert wird die Bewegung zu stoppen, wenn M53 aktiv ist.\n@@ -42800,15 +42800,15 @@\n Wenn es keinen nachfolgenden Fahrbefehl gibt, werden die in der Warteschlange stehenden Ausgangs\u00e4nderungen nicht ausgef\u00fchrt. Es ist am besten, immer einen Bewegungs-G-Code (G0, G1, etc.)\n direkt nach dem M62/63 zu programmieren.\n M64 und M65 treten sofort auf, wenn sie von der Bewegungssteuerung empfangen werden. Sie sind\n nicht mit der Bewegung synchronisiert und unterbrechen den \u00dcbergang.\n Anmerkung\n M62-65 funktionieren nur dann, wenn die entsprechenden motion.digital-out-nn-Pins in Ihrer HALDatei mit Ausg\u00e4ngen verbunden sind.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 957 / 1331\n \n 11.6.16 M66 Wait on Input\n M66 P- | E- <L->\n \n \u2022 P- - gibt die digitale Eingangsnummer von 0 bis 3 an. (Einstellbar mit motmod Argument num_dio)\n@@ -42847,15 +42847,15 @@\n \n M67 Analog Output, Synchronized\n \n M67 E- Q-\n \n \u2022 M67 - stellt einen mit der Bewegung synchronisierten analogen Ausgang ein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 958 / 1331\n \n \u2022 E- - Ausgangsnummer im Bereich von 0 bis 3 (einstellbar \u00fcber das motmod-Argument num_aio)\n \u2022 Q- - ist der einzustellende Wert (zum Ausschalten auf 0 setzen).\n Die tats\u00e4chliche \u00c4nderung der angegebenen Ausg\u00e4nge erfolgt zu Beginn des n\u00e4chsten Fahrbefehls.\n Wenn es keinen nachfolgenden Bewegungsbefehl gibt, werden die in der Warteschlange stehenden\n@@ -42888,15 +42888,15 @@\n wieder in genau diesen Zustand versetzt werden.\n Ein Paar von M70- und M72-Befehlen wird normalerweise verwendet, um ein Programm gegen unbeabsichtigte Modal\u00e4nderungen innerhalb von Unterprogrammen zu sch\u00fctzen.\n M70 Gespeicherter ZustandM70 Gespeicherter Zustand\n Der gespeicherte Zustand besteht aus:\n \u2022 aktuelle G20/G21-Einstellungen (imperial/metrisch)\n \u2022 selected plane (G17/G18/G19 G17.1,G18.1,G19.1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 959 / 1331\n \n \u2022 Status der Fr\u00e4serkompensation (G40,G41,G42,G41.1,G42,1)\n \u2022 Distanzmodus relativ/absolut (G90/G91)\n \u2022 Vorschubmodus (G93/G94,G95)\n \u2022 aktuelles Koordinatensystem (G54-G59.3)\n@@ -42926,15 +42926,15 @@\n Der mit einem M70 oder einem M73 auf der aktuellen Anrufebene gespeicherte Modalzustand wird\n ung\u00fcltig (kann nicht mehr wiederhergestellt werden).\n Ein nachfolgendes M72 auf der gleichen Aufrufebene schl\u00e4gt fehl.\n Wenn es in einem Unterprogramm ausgef\u00fchrt wird, das den modalen Zustand durch ein M73 sch\u00fctzt,\n wird der modale Zustand durch eine anschlie\u00dfende R\u00fcckkehr oder endsub nicht wiederhergestellt.\n Die N\u00fctzlichkeit dieser Funktion ist zweifelhaft. Man sollte sich nicht auf sie verlassen, da sie verschwinden k\u00f6nnte.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 960 / 1331\n \n 11.6.21 M72 Restore Modal State\n Modaler Zustand Code gespeichert wurde, kann durch Ausf\u00fchren eines M72 wiederhergestellt werden.\n Die Handhabung von G20/G21 wird besonders behandelt, da Vorsch\u00fcbe je nach G20/G21 unterschiedlich interpretiert werden: Wenn die L\u00e4ngeneinheiten (mm/in) durch die Wiederherstellungsoperation\n ge\u00e4ndert werden sollen, stellt M72 zuerst den Abstandsmodus wieder her und dann alle anderen\n@@ -42974,15 +42974,15 @@\n Der Abbruch eines laufenden Programms in einem Unterprogramm, das eine M73-Operation hat, stellt\n nicht den Zustand wieder her.\n Auch das normale Ende (M2) eines Hauptprogramms, das ein M73 enth\u00e4lt, stellt den Zustand nicht\n wieder her.\n Die empfohlene Verwendung ist am Anfang eines O-Wort-Unterprogramms wie im folgenden Beispiel.\n Die Verwendung von M73 auf diese Weise erm\u00f6glicht den Entwurf von Unterprogrammen, die den\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 961 / 1331\n \n Modalzustand \u00e4ndern m\u00fcssen, sch\u00fctzt aber das aufrufende Programm vor versehentlichen Modal\u00e4nderungen. Beachten Sie die Verwendung von Vordefinierte benannte Parameter im Unterprogramm\n \u201dshowstate\u201d.\n O<showstate> sub\n (DEBUG, imperial=#<_imperial> absolute=#<_absolute> feed=#<_feed> rpm=#<_rpm>)\n@@ -43029,15 +43029,15 @@\n #<absolute> = #<_absolute> (in lokaler Variable speichern, wenn G90 gesetzt wurde)\n ;\n g30 (\u00fcber Schalter)\n g38.2 z0 f15 (messen)\n g91 g0z.2 (au\u00dferhalb des Schalters)\n #1000=#5063 (Referenzl\u00e4nge des Werkzeugs speichern)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 962 / 1331\n \n (print, Referenzl\u00e4nge ist #1000)\n ;\n O<restore_abs> if [#<absolute>]\n g90 (G90 nur dann wiederherstellen, wenn es bei der Eingabe gesetzt wurde:)\n@@ -43072,15 +43072,15 @@\n Der Fehler \u201dUnbekannter M-Code verwendet\u201d bedeutet eine der folgenden M\u00f6glichkeiten:\n \u2022 Der angegebene benutzerdefinierte Befehl existiert nicht\n \u2022 Die Datei ist keine ausf\u00fchrbare Datei\n \u2022 Der Dateiname hat eine Erweiterung\n \u2022 Der Dateiname entspricht nicht diesem Format Mnnn, wobei nnn = 100 bis 199\n \u2022 Der Dateiname enthielt ein kleines M\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 963 / 1331\n \n Beispiel: \u00d6ffnen und Schlie\u00dfen eines Spannzangenverschlusses, der \u00fcber einen Pin der parallelen\n Schnittstelle gesteuert wird, mit einer Bash-Skriptdatei unter Verwendung von M101 und M102. Erstellen Sie zwei Dateien mit den Namen M101 und M102. Setzen Sie sie als ausf\u00fchrbare Dateien\n (typischerweise Rechtsklick/Eigenschaften/Berechtigungen), bevor Sie LinuxCNC ausf\u00fchren. Stellen\n Sie sicher, dass der Parallelport-Pin nicht mit irgendetwas in einer HAL-Datei verbunden ist.\n@@ -43124,15 +43124,15 @@\n \n 11.7 O Codes\n 11.7.1 Verwendung von O-Codes\n O-Codes sorgen f\u00fcr die Ablaufsteuerung in NC-Programmen. Jeder Satz hat eine zugeh\u00f6rige Nummer, die nach dem O verwendet wird. Es muss darauf geachtet werden, dass die O-Nummern richtig\n zugeordnet werden. O-Codes verwenden den Buchstaben O und nicht die Zahl Null als erstes Zeichen\n in der Nummer wie O100 oder o100.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 964 / 1331\n \n 11.7.2 Nummerierung\n Nummerierte O-Codes m\u00fcssen f\u00fcr jedes Unterprogramm eine eindeutige Nummer haben,\n Beispiel f\u00fcr eine Nummerierung\n (der Beginn von o100)\n@@ -43170,15 +43170,15 @@\n M2\n \n Weitere Informationen finden Sie in den Abschnitten G53, G0 und M2.\n O- Return (engl. f\u00fcr R\u00fccksprung oder R\u00fcckkehr) Innerhalb einer Subroutine kann O- return\n ausgef\u00fchrt werden. Damit kehrt man sofort zum aufrufenden Code zur\u00fcck, so als w\u00e4re man auf Oendsub gesto\u00dfen.\n O- Return-Beispiel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 965 / 1331\n \n o100 sub\n (Pr\u00fcfung, ob Parameter #2 gr\u00f6\u00dfer als 5 ist)\n o110 if [#2 GT 5]\n (R\u00fcckkehr zum Anfang des Unterprogramms, wenn der Test wahr ist)\n@@ -43225,15 +43225,15 @@\n = 1 in den Abschnitt [RS274NGC] der INI-Datei deaktiviert werden.\n Anmerkung\n Nummerierte Haupt- und Unterprogrammdefinitionen und -aufrufe unterscheiden sich sowohl in der\n Syntax als auch in der Ausf\u00fchrung vom traditionellen rs274ngc. Um Verwechslungen vorzubeugen,\n gibt der Interpreter eine Fehlermeldung aus, wenn Definitionen eines Stils mit Aufrufen eines anderen\n Stils vermischt werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 966 / 1331\n \n Nummeriertes Unterprogramm Einfaches Beispiel\n o1 (Beispiel 1) ; Hauptprogramm 1, \u201dBeispiel 1\u201d\n M98 P100 ; Unterprogramm 100 aufrufen\n M30 ; Hauptprogramm beenden\n@@ -43271,15 +43271,15 @@\n (PRINT,X MAIN BEGIN: 1=#1)\n M98 P100 L5 ; Unterprogramm 100 aufrufen\n (PRINT,X MAIN END: 1=#1)\n M30 ; Hauptprogramm beenden\n O100 ; Unterprogramm 100\n #1 = [#1 + 1]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 967 / 1331\n \n M98 P200 L5 ; Aufruf des Unterprogramms 200\n (PRINT,>> O100: #1)\n M99 ; R\u00fcckkehr aus Unterprogramm 100\n O200 ; Unterprogramm 200\n@@ -43326,15 +43326,15 @@\n (msg, Schleife fertig!)\n M2\n \n Innerhalb einer while-Schleife wird mit O- break die Schleife sofort verlassen, und mit O- continue\n wird sofort zur n\u00e4chsten Auswertung der while Bedingung \u00fcbergegangen. Wenn sie immer noch wahr\n ist, beginnt die Schleife wieder von vorne. Wenn sie falsch ist, wird die Schleife verlassen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.7.6\n \n 968 / 1331\n \n Conditional\n \n@@ -43382,15 +43382,15 @@\n \n Repeat\n \n Mit repeat werden die Anweisungen innerhalb von repeat/endrepeat die angegebene Anzahl von Malen ausgef\u00fchrt. Das Beispiel zeigt, wie Sie eine diagonale Reihe von Formen fr\u00e4sen k\u00f6nnten, beginnend\n an der aktuellen Position.\n Beispiel mit repeat\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 969 / 1331\n \n (5 diagonale Formen fr\u00e4sen)\n G91 (Inkremental-Modus)\n o103 repeat [5]\n ... (Fr\u00e4scode hier einf\u00fcgen)\n@@ -43431,15 +43431,15 @@\n o<myfile> endsub\n M2\n \n Anmerkung\n Die Dateinamen sind nur Kleinbuchstaben, so dass o<MyFile> vom Interpreter in o<myfile> umgewandelt wird. Weitere Informationen \u00fcber den Suchpfad und Optionen f\u00fcr den Suchpfad finden Sie\n im Abschnitt zur INI-Konfiguration.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 970 / 1331\n \n 11.7.10 Subroutine return values\n Unterprogramme k\u00f6nnen optional einen Wert durch einen optionalen Ausdruck in einer endsub oder\n return Anweisung zur\u00fcckgeben.\n Beispiel f\u00fcr einen R\u00fcckgabewert\n@@ -43469,15 +43469,15 @@\n 11.8.1 F: Set Feed Rate\n Fx - stellt die Vorschubgeschwindigkeit auf x ein. x ist normalerweise in Maschineneinheiten (Zoll\n oder Millimeter) pro Minute.\n Die Anwendung des Vorschubs ist wie im dedizierten Abschnitt zum Vorschub beschrieben, es sei\n denn inverse time feed rate mode oder feed per revolution mode sind in Kraft, in welchem Fall der\n Vorschub wie im G93 G94 G95 Abschnitt beschrieben ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 971 / 1331\n \n 11.8.2 S: Set Spindle Speed\n Sx [$n] - setzt die Spindeldrehzahl auf x Umdrehungen pro Minute (U/min, engl. RPM) mit dem optionalen $ setzt die Spindeldrehzahl f\u00fcr eine bestimmte Spindel. Ohne das $ wird der Befehl standardm\u00e4\u00dfig auf spindle.0 gesetzt.\n Die Spindel(n) oder die ausgew\u00e4hlte Spindel dreht sich mit dieser Geschwindigkeit, wenn ein M3 oder\n M4 in Kraft ist. Es ist OK, ein S-Wort zu programmieren, egal ob sich die Spindel dreht oder nicht.\n@@ -43508,15 +43508,15 @@\n verh\u00e4lt und die Spindel entl\u00e4dt.\n \n Es ist ein Fehler, wenn:\n \u2022 eine negative T-Nummer verwendet wird,\n \u2022 T Nummer verwendet wird, die nicht in der Werkzeugtabellendatei enthalten ist (mit der Ausnahme,\n dass T0 bei nicht zuf\u00e4lligen Werkzeugwechslern akzeptiert wird, wie oben erw\u00e4hnt).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 972 / 1331\n \n Bei einigen Maschinen bewegt sich das Karussell, wenn ein T-Wort programmiert wird, w\u00e4hrend\n gleichzeitig eine Bearbeitung stattfindet. Bei solchen Maschinen spart man Zeit, wenn man das TWort mehrere Zeilen vor einem Werkzeugwechsel programmiert. Eine g\u00e4ngige Programmierpraxis\n f\u00fcr solche Maschinen besteht darin, das T-Wort f\u00fcr das n\u00e4chste zu verwendende Werkzeug in die Zeile nach einem Werkzeugwechsel zu setzen. Dadurch wird die verf\u00fcgbare Zeit f\u00fcr die Bewegung des\n Karussells maximiert.\n@@ -43532,34 +43532,34 @@\n 11.9.1.1 Fr\u00e4sen von Spiralbohrungen\n \u2022 Dateiname: useful-subroutines.ngc\n \u2022 Beschreibung: Unterprogramm zum Fr\u00e4sen einer Bohrung mit Hilfe von Parametern.\n 11.9.1.2 Schlitzen (engl. slotting)\n \u2022 Dateiname: useful-subroutines.ngc\n \u2022 Beschreibung: Unterprogramm zum Fr\u00e4sen einer Nut mit Parametern.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 973 / 1331\n \n 11.9.1.3 Rastersonde (engl. grid probe)\n \u2022 Dateiname: gridprobe.ngc\n \u2022 Beschreibung: Rechteckige Sondierung\n Dieses Programm testet wiederholt in einem regelm\u00e4\u00dfigen XY-Raster und schreibt die getestete Position in die Datei probe-results.txt im selben Verzeichnis wie die .ini-Datei.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 974 / 1331\n \n 11.9.1.4 Intelligente Sonde (engl. smart probe)\n \u2022 Dateiname: smartprobe.ngc\n \u2022 Beschreibung: Rechteckige Sondierung\n Dieses Programm sondiert wiederholt ein regelm\u00e4\u00dfiges XY-Gitter und schreibt den gesondeten Ort in\n die Datei probe-results.txt im selben Verzeichnis wie die .ini-Datei. Dies ist eine Verbesserung gegen\u00fcber der Rastersondierungsdatei.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 975 / 1331\n \n 11.9.1.5 Werkzeugl\u00e4ngen-Messtaster\n \u2022 Dateiname: tool-length-probe.ngc\n \u2022 Beschreibung: Bestimmung der Werkzeugl\u00e4ngen\n Dieses Programm zeigt ein Beispiel f\u00fcr die automatische Messung von Werkzeugl\u00e4ngen mit Hilfe\n@@ -43569,15 +43569,15 @@\n \u2022 Dateiname: probe-hole.ngc\n \u2022 Beschreibung: Finden des Zentrums und des Durchmessers eines Lochs.\n Das Programm demonstriert, wie man den Mittelpunkt eines Lochs findet, den Lochdurchmesser misst\n und die Ergebnisse aufzeichnet.\n 11.9.1.7 Fr\u00e4serkompensation\n \u2022 Dateiname: comp-g1.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 976 / 1331\n \n \u2022 Beschreibung: Ein- und Ausfahrbewegungen mit Kompensation des Werkzeugradius.\n Dieses Programm demonstriert die Besonderheit des Werkzeugwegs ohne und mit Werkzeugradiuskorrektur. Der Werkzeugradius wird aus der Werkzeugtabelle \u00fcbernommen.\n \n 11.9.2 Beispiele f\u00fcr Drehmaschinen\n@@ -43589,15 +43589,15 @@\n \n 11.10 Vom Bild zu G-Code\n \n 11.10.1 Was ist eine Tiefenkarte (engl. depth map)?\n Eine Tiefenkarte ist ein Graustufenbild, bei dem die Helligkeit der einzelnen Pixel der Tiefe (oder\n H\u00f6he) des Objekts an jedem Punkt entspricht.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 977 / 1331\n \n 11.10.2 Integration von Image-to-Gcode in die AXIS-Benutzeroberfl\u00e4che\n F\u00fcgen Sie die folgenden Zeilen in den Abschnitt [FILTER] Ihrer INI-Datei ein, damit AXIS automatisch\n image-to-gcode aufruft, wenn Sie ein PNG-, GIF- oder JPG-Bild \u00f6ffnen:\n PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image\n@@ -43629,15 +43629,15 @@\n Wenn \u201dja\u201d, wird das dunkelste Pixel auf Schwarz und das hellste Pixel auf Wei\u00df umgestellt.\n 11.10.4.4 Erweitern des Bildrandes (engl. expand image border)\n Bei None (engl. f\u00fcr keinen) wird das Eingabebild so verwendet, wie es ist, und Details, die sich an den\n R\u00e4ndern des Bildes befinden, k\u00f6nnen abgeschnitten werden. Bei White (engl. f\u00fcr wei\u00df) oder black\n (engl. f\u00fcr Schwarz) wird an allen Seiten ein Rand aus Pixeln in H\u00f6he des Werkzeugdurchmessers\n hinzugef\u00fcgt, und Details an den R\u00e4ndern des Bildes werden nicht abgeschnitten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 978 / 1331\n \n 11.10.4.5 Toleranz (Einheiten)\n Wenn eine Reihe von Punkten innerhalb der \u201dToleranz\u201d (engl. tolerance) auf eine geraden Linie liegen,\n werden sie als eine gerade Linie ausgegeben. Die Erh\u00f6hung der Toleranz kann zu einer besseren\n Leistung bei der Konturierung in LinuxCNC f\u00fchren, kann aber auch kleine Details im Bild entfernen\n@@ -43666,15 +43666,15 @@\n \u2022 Alternating (engl. f\u00fcr abwechselnd): Beginnen Sie am gleichen Ende der X- oder Y-Achse, an dem\n die letzte Bewegung endete. Dies reduziert die Anzahl der Verfahrbewegungen.\n \u2022 Up Milling (engl. f\u00fcr aufw\u00e4rts fr\u00e4sen): Beginnen Sie mit dem Fr\u00e4sen an niedrigen Punkten und\n bewegen Sie sich zu hohen Punkten.\n \u2022 Down Milling (engl. f\u00fcr abw\u00e4rts fr\u00e4sen): Beginnen Sie das Fr\u00e4sen an hohen Punkten und bewegen\n Sie sich zu niedrigen Punkten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 979 / 1331\n \n 11.10.4.12 Tiefe (engl. depth) (Einheiten)\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 Schrittweite (engl. step over) (Pixel)\n Der Abstand zwischen benachbarten Zeilen oder Spalten. Um die Anzahl der Pixel f\u00fcr einen gegebenen Einheitsabstand zu ermitteln, berechnen Sie Abstand/Pixelgr\u00f6\u00dfe und runden Sie auf die n\u00e4chste\n@@ -43701,15 +43701,15 @@\n \u2022 Voll: Beim Fr\u00e4sen in der ersten Richtung werden Bereiche, die stark in die zweite Richtung geneigt\n sind, \u00fcbersprungen. Beim Fr\u00e4sen in der zweiten Richtung werden Bereiche, die nicht stark in diese\n Richtung geneigt sind, \u00fcbersprungen.\n 11.10.4.18 Kontaktwinkel\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 980 / 1331\n \n 11.10.4.19 Schruppversatz und Schrupptiefe pro Durchgang\n Image-to-gcode kann optional Schruppdurchg\u00e4nge durchf\u00fchren. Die Tiefe der aufeinanderfolgenden\n Schruppdurchg\u00e4nge wird durch \u201dSchrupptiefe pro Durchgang\u201d angegeben. Wenn Sie z. B. 0,2 eingeben, wird der erste Schruppdurchgang mit einer Tiefe von 0,2 durchgef\u00fchrt, der zweite Schruppdurchgang mit einer Tiefe von 0,4 usw., bis die volle Tiefe des Bildes erreicht ist. Kein Teil eines\n Schruppdurchgangs schneidet n\u00e4her als der Schruppversatz zum endg\u00fcltigen Teil. Die folgende Abbildung zeigt ein hohes vertikales Feature, das gefr\u00e4st wird. In diesem Bild betr\u00e4gt die Schrupptiefe\n@@ -43724,15 +43724,15 @@\n In LinuxCNC kehrt die Maschine nicht auf seine urspr\u00fcngliche Position nach einem Werkzeugwechsel zur\u00fcck. Diese \u00c4nderung wurde vorgenommen, weil das neue Werkzeug l\u00e4nger sein k\u00f6nnte als das alte Werkzeug, und die Bewegung auf die urspr\u00fcngliche Maschinenposition k\u00f6nnte\n daher f\u00fcr die Werkzeugspitze zu niedrig sein.\n Offset-Parameter sind Einheiten der INI-Datei\n In LinuxCNC werden die Werte in den Parametern f\u00fcr die G28 und G30 Referenzpunkte, die\n P1\u2026P9 Koordinatensysteme und die G92 Offset sind in \u201dINI-Datei Einheiten\u201d gespeichert. Diese\n \u00c4nderung wurde vorgenommen, weil sonst die Bedeutung eines Standortes ge\u00e4ndert, je nachdem, ob G20 oder G21 aktiv war, wenn G28, G30, G10 L2, oder G92.3 programmiert wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 981 / 1331\n \n L\u00e4ngen/Durchmesser der Werkzeugtabelle sind in den in der INI-Datei spezifizierten Einheiten\n In LinuxCNC werden die Werkzeugl\u00e4ngen (Offsets) und Durchmesser in der Werkzeugtabelle\n nur in der in der INI-Datei spezifizierten Einheiten angegeben. Diese \u00c4nderung wurde vorgenommen, da sich sonst die L\u00e4nge eines Werkzeugs und sein Durchmesser \u00e4ndern w\u00fcrden, je\n nachdem, ob G20 oder G21 beim Initiieren der G43-, G41- und G42-Modi aktiv war. Dies machte es unm\u00f6glich, G-Code in den nicht-nativen Einheiten der Maschine auszuf\u00fchren, selbst wenn\n@@ -43768,30 +43768,30 @@\n Negative Werkzeugl\u00e4ngen\n In der RS274/NGC-Spezifikation hei\u00dft es, dass alle Werkzeugl\u00e4ngen positiv sein sollen. G43 funktioniert jedoch auch bei negativen Werkzeugl\u00e4ngen.\n Drehwerkzeuge\n Die G43-Werkzeugl\u00e4ngenkompensation kann das Werkzeug sowohl in der X- als auch in der ZDimension versetzen. Diese Funktion ist vor allem bei Drehb\u00e4nken n\u00fctzlich.\n Dynamische Werkzeugl\u00e4ngen\n LinuxCNC erm\u00f6glicht die Angabe einer berechneten Werkzeugl\u00e4nge durch G43.1 I K.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 982 / 1331\n \n G41.1, G42.1\n LinuxCNC erm\u00f6glicht die Angabe eines Werkzeugdurchmessers und, wenn im Drehmaschinenmodus, Orientierung durch G-Code. Das Format ist G41.1/G42.1 D L, wo D ist der Durchmesser\n und L (wenn angegeben) ist die Drehmaschine Werkzeug Orientierung.\n G43 ohne H-Wort\n Mit NGC ist dies nicht erlaubt. In LinuxCNC, setzt es L\u00e4nge Offsets f\u00fcr die derzeit geladenen\n Werkzeug. Ist aktuell kein Werkzeug geladen, so ist es ein Fehler. Diese \u00c4nderung wurde vorgenommen, damit der Benutzer die Werkzeugnummer nicht an zwei Stellen f\u00fcr jeden Werkzeugwechsel angeben muss, und weil es im Einklang mit der Art und Weise ist wie G41/G42 arbeitet,\n wenn das D-Wort nicht angegeben ist.\n U-, V- und W-Achsen\n LinuxCNC erm\u00f6glicht Maschinen mit bis zu 9 Achsen durch die Definition einer zus\u00e4tzlichen\n Reihe von 3 linearen Achsen bekannt als U, V und W\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 983 / 1331\n \n Kapitel 12\n \n Virtuelle Schalttafeln\n 12.1 PyVCP\n@@ -43801,15 +43801,15 @@\n Hardware-Maschinenbedienfelder k\u00f6nnen eine Menge E/A-Pins belegen und teuer sein. Hier haben\n virtuelle Control Panels den Vorteil, dass es nichts kostet, ein PyVCP zu erstellen.\n Virtuelle Bedienfelder k\u00f6nnen zum Testen oder \u00dcberwachen verwendet werden, um reale E/A-Ger\u00e4te\n beim Debuggen der Kontaktplanlogik vor\u00fcbergehend zu ersetzen oder um ein physisches Bedienfeld\n zu simulieren, bevor Sie es bauen und mit einer E/A-Platine verbinden.\n Die folgende Grafik zeigt viele der PyVCP-Widgets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 984 / 1331\n \n Abbildung 12.1: PyVCP Widgets Showcase\n \n 12.1.2 Panel Konstruktion\n Das Layout eines PyVCP-Panels wird mit einer XML-Datei festgelegt, die Widget-Tags zwischen <pyvcp>\n@@ -43817,15 +43817,15 @@\n <pyvcp>\n <label text=\u201dThis is a LED indicator\u201d/>\n <led/>\n </pyvcp>\n \n Abbildung 12.2: Einfaches PyVCP LED-Panel Beispiel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 985 / 1331\n \n Wenn Sie diesen Text in eine Datei mit dem Namen tiny.xml einf\u00fcgen und Folgendes ausf\u00fchren\n halcmd loadusr pyvcp -c mypanel tiny.xml\n \n PyVCP erstellt das Panel f\u00fcr Sie, das zwei Widgets enth\u00e4lt, ein Label mit dem Text This is a LED\n@@ -43866,15 +43866,15 @@\n </label>\n <bar>\n <halpin>\u201dspindle-speed\u201d</halpin>\n <max_>5000</max_>\n </bar>\n </pyvcp>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 986 / 1331\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@@ -43895,15 +43895,15 @@\n net spindle-rpm-filtered => pyvcp.spindle-speed\n \n unter der Annahme, dass ein Signal namens spindle-rpm-filtered bereits existiert. Beachten Sie, dass\n in Verbindung mit AXIS alle PyVCP-Panel-Widget-HAL-Pins Namen haben, die mit pyvcp. beginnen,\n alle PyVCP-Embedded-Tab-Widget-HAL-Pins beginnen mit dem als EMBED_TAB_NAME angegebenen\n Namen, der in Kleinbuchstaben umgewandelt wurde.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 987 / 1331\n \n So sollte das neu erstellte PyVCP-Panel in AXIS aussehen. Die Konfiguration \u201dsim/lathe\u201d ist bereits\n auf diese Weise konfiguriert.\n \n 12.1.5 Eigenst\u00e4ndig (engl. stand alone)\n@@ -43944,15 +43944,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 988 / 1331\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@@ -43982,15 +43982,15 @@\n 4. Andernfalls wird die Zeichenkette als Zeichenkette akzeptiert.\n Bei Verwendung der Tag-basierten Syntax wird der Text innerhalb des Tags immer als Python-Ausdruck\n ausgewertet.\n Die folgenden Beispiele zeigen eine Mischung aus verschiedenen Formaten.\n Kommentare Um einen Kommentar hinzuzuf\u00fcgen, verwenden Sie die XML-Syntax f\u00fcr einen Kommentar.\n <!-- Mein Kommentar -->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 989 / 1331\n \n Bearbeitung der XML-Datei Edit the XML file with a text editor. In most cases you can right click\n on the file and select open with text editor or similar.\n Farben\n Colors can be specified using the X11 rgb colors by name gray75 or hex #0000ff. A complete list is\n@@ -44023,15 +44023,15 @@\n Das Etikett hat einen optionalen Deaktivierungsstift, der erstellt wird, wenn Sie <disable_pin>True</disable\n hinzuf\u00fcgen.\n <label>\n <text>\u201dDies ist ein Label:\u201d</text>\n <font>(\u201dHelvetica\u201d,20)</font>\n </label>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 990 / 1331\n \n Der obige Code ergab dieses Beispiel:\n \n Abbildung 12.3: Beispiel f\u00fcr ein einfaches Etikett\n \n@@ -44065,15 +44065,15 @@\n true, and off_color otherwise.\n \u2022 <led></led> - erzeugt eine runde LED\n \u2022 <rectled></rectled> - erzeugt eine rechteckige LED\n \u2022 <halpin>name</halpin> - Name des Pins, Standard ist led.n, wobei n eine ganze Zahl ist, die f\u00fcr\n jede LED inkrementiert wird.\n \u2022 <size>n</size> - n ist die Gr\u00f6\u00dfe der LED in Pixeln, Standardwert ist 20.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 991 / 1331\n \n \u2022 <on_color>color</on_color> - sets the color of the LED to color when the pin is true. Default is\n green. See section on colors for more info.\n \u2022 <off_color>color</off_color> - sets the color of the LED to color when the pin is false. Default is\n red.\n@@ -44103,15 +44103,15 @@\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </rectled>\n </vbox>\n \n Der obige Code erzeugt dieses Beispiel. Es zeigt auch einen vertikalen Kasten mit Relief.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 992 / 1331\n \n Abbildung 12.5: Beispiel f\u00fcr eine einfache Rechteck-LED\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@@ -44136,15 +44136,15 @@\n <text>\u201dAbort\u201d</text>\n </button>\n \n Der obige Code ergab dieses Beispiel:\n \n Abbildung 12.6: Beispiel f\u00fcr einfache Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 993 / 1331\n \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 automatically, which can toggle the Checkbutton via HAL, if the value linked is changed, to update\n the display remotely.\n@@ -44177,15 +44177,15 @@\n <choices>[\u201done\u201d,\u201dtwo\u201d,\u201dthree\u201d]</choices>\n <halpin>\u201dmy-radio\u201d</halpin>\n <initval>0</initval>\n </radiobutton>\n \n Der obige Code ergab dieses Beispiel:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 994 / 1331\n \n Abbildung 12.10: Einfaches Radiobutton-Beispiel\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 <orient>HORIZONTAL</orient>\n to display horizontally.\n 12.1.6.7 Nummernanzeigen\n@@ -44207,15 +44207,15 @@\n Abbildung 12.11: Beispiel f\u00fcr einfache Zahlen\n \u2022 <font> - is a Tkinter font type and size specification. One font that will show up to at least size 200\n is courier 10 pitch, so for a really big Number widget you could specify:\n <font>(\u201dcourier 10 pitch\u201d,100)</font>\n \n \u2022 <format> - ist ein angegebenes Format im C-Stil, das bestimmt, wie die Zahl angezeigt wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 995 / 1331\n \n s32-Nummer The s32 number widget displays the value of a s32 number. The syntax is the same as\n number except the name which is <s32>. Make sure the width is wide enough to cover the largest\n number you expect to use.\n <s32>\n@@ -44245,15 +44245,15 @@\n Farbe fest.\n \u2022 <range3>136, 150, \u201drot\u201d</range3> Zahl, Zahl, Text, legt den ersten Bereich und die Farbe fest.\n \u2022 <canvas_width>200</canvas_width>, (Zahl), legt die Gesamtbreite fest.\n \u2022 <canvas_height>50</canvas_height> (Zahl), legt die Gesamth\u00f6he fest.\n \u2022 <bar_height>30</bar_height> (Zahl), legt die Balkenh\u00f6he fest, muss kleiner sein als canvas_height.\n \u2022 <bar_width>150</bar_width> (Zahl), setzt die Balkenbreite, muss kleiner als canvas_width sein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 996 / 1331\n \n <bar>\n <halpin>\u201dmy-bar\u201d</halpin>\n <min_>0</min_>\n <max_>123</max_>\n@@ -44285,15 +44285,15 @@\n <region1>(14.5,15.5,\u201dyellow\u201d)</region1>\n <region2>(12,14.5,\u201dgreen\u201d)</region2>\n <region3>(0,12,\u201dred\u201d)</region3>\n </meter>\n \n Der obige Code ergab dieses Beispiel:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 997 / 1331\n \n Abbildung 12.14: Einfaches Beispiel f\u00fcr ein Messger\u00e4t\n \n 12.1.6.8 Numerische Eingaben\n Spinbox (Einstellrad) A spinbox controls a FLOAT pin. You increase or decrease the value of the\n@@ -44311,15 +44311,15 @@\n <param_pin>1</param_pin>\n </spinbox>\n \n Der obige Code ergab dieses Beispiel:\n \n Abbildung 12.15: Einfaches Spinbox-Beispiel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 998 / 1331\n \n Skala A scale controls a float or a s32 pin. You increase or decrease the value of the pin be either\n dragging the slider, or pointing at the scale and rolling your mouse-wheel. The halpin will have both\n -f and -i added to it to form the float and s32 pins. Width is the width of the slider in vertical and\n the height of the slider in horizontal orientation. If the param_pin field is set TRUE(1), a pin will be\n@@ -44353,15 +44353,15 @@\n Anmerkung\n Beachten Sie, dass standardm\u00e4\u00dfig \u201dmin\u201d angezeigt wird, auch wenn es gr\u00f6\u00dfer als \u201dmax\u201d ist, es sei\n denn, \u201dmin\u201d ist negativ.\n \n W\u00e4hlscheibe (engl. dial) The Dial outputs a HAL float and reacts to both mouse wheel and dragging.\n Double left click to increase the resolution and double right click to reduce the resolution by one digit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 999 / 1331\n \n The output is capped by the min and max values. The <cpr> is how many tick marks are on the outside\n of the ring (beware of high numbers). If the param_pin field is set TRUE(1), a pin will be created that\n can be used to set the spinbox to an initial value and to remotely alter its value without HID input.\n <dial>\n@@ -44389,15 +44389,15 @@\n BIT.reset pin to reset DRO. Needs scale_pin for scaled DRO. Shift+click resets DRO also\n <jogwheel>\n <halpin>\u201dmy-wheel\u201d</halpin>\n <cpr>45</cpr>\n <size>250</size>\n </jogwheel>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1000 / 1331\n \n Der obige Code ergab dieses Beispiel:\n \n Abbildung 12.18: Einfaches Jogwheel-Beispiel\n \n@@ -44412,15 +44412,15 @@\n <vbox>\n <image_bit halpin=\u2019selectimage\u2019 images=\u2019fwd rev\u2019/>\n </vbox>\n \n Dieses Beispiel wurde mit dem obigen Code erstellt. Es verwendet die beiden Bilddateien fwd.gif und\n rev.gif. FWD wird angezeigt, wenn \u201dselectimage\u201d falsch ist, und REV wird angezeigt, wenn \u201dselectimage\u201d wahr ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1001 / 1331\n \n Abbildung 12.19: Selectimage False Beispiel\n \n Abbildung 12.20: Selectimage True Beispiel\n Image u32 The image_u32 is the same as image_bit, except you have essentially an unlimited number\n@@ -44433,15 +44433,15 @@\n <image_u32 halpin=\u2019selectimage\u2019 images=\u2019stb fwd rev\u2019/>\n </vbox>\n \n Der obige Code erzeugt das folgende Beispiel, indem das Bild stb.gif hinzugef\u00fcgt wird.\n \n Abbildung 12.21: Einfaches image_u32 Beispiel mit halpin=0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1002 / 1331\n \n Abbildung 12.22: Einfache image_u32 Beispiel withhalpin=1\n \n Abbildung 12.23: Einfaches Beispiel image_u32 withhalpin=2\n Beachten Sie, dass der Standardwert der Minimalwert ist, auch wenn er h\u00f6her als der Maximalwert\n@@ -44464,15 +44464,15 @@\n <relief>SUNKEN</relief>\n <text>\u201dSUNKEN\u201d</text>\n <bd>3</bd>\n </button>\n <button>\n <relief>RAISED</relief>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1003 / 1331\n \n <text>\u201dRAISED\u201d</text>\n <bd>3</bd>\n </button>\n <button>\n@@ -44509,15 +44509,15 @@\n <bd>6</bd>\n <label><text>\u201da hbox:\u201d</text></label>\n <led></led>\n <number></number>\n <bar></bar>\n </hbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1004 / 1331\n \n Der obige Code ergab dieses Beispiel:\n \n Abbildung 12.25: Einfaches hbox-Beispiel\n Inside an Hbox, you can use the <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> tags to choose how items in the box behave when the window is re-sized. The default is\n@@ -44537,15 +44537,15 @@\n Abbildung 12.26: Einfaches vbox-Beispiel\n Inside a Vbox, you can use the <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> tags to choose how items in the box behave when the window is re-sized. The default\n is fill=\u201dx\u201d, anchor=\u201dcenter\u201d, expand=\u201dyes\u201d for a Vbox.\n Etikettrahmen (engl. labelframe) Ein Etikettenrahmen (engl. labelframe) ist ein Rahmen mit einer\n Rille und einem Etikett in der oberen linken Ecke.\n <labelframe text=\u201dLabel: Leds group\u00e9es\u201d>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1005 / 1331\n \n <labelframe text=\u201dGroup Title\u201d>\n <font>(\u201dHelvetica\u201d,16)</font>\n <hbox>\n <led/>\n@@ -44585,15 +44585,15 @@\n <label text=\u201dJ (cell 3,1)\u201d/>\n <label text=\u201dK (cell 3,2)\u201d/>\n <u32 halpin=\u201dtest\u201d/>\n </table>\n \n Der obige Code ergab dieses Beispiel:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1006 / 1331\n \n Abbildung 12.28: Beispiel f\u00fcr eine Tabelle\n Registerkarten (engl. tabs) Eine Benutzeroberfl\u00e4che mit Registerkarten kann ziemlich viel Platz\n sparen.\n <tabs>\n@@ -44620,15 +44620,15 @@\n <text>\u201d(this tab has nothing on it)\u201d</text>\n </label>\n </vbox>\n </tabs>\n \n Der obige Code ergibt dieses Beispiel, in dem jede ausgew\u00e4hlte Registerkarte angezeigt wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1007 / 1331\n \n Abbildung 12.29: Einfache Tabs-Beispiel\n \n 12.2 PyVCP-Beispiele\n 12.2.1 ACHSE\n@@ -44637,15 +44637,15 @@\n \u2022 Erstellen Sie eine XML-Datei, die Ihre Panel-Beschreibung enth\u00e4lt, und legen Sie sie in Ihr Konfigurationsverzeichnis.\n \u2022 F\u00fcgen Sie den PyVCP-Eintrag in den [DISPLAY]-Abschnitt der INI-Datei mit dem Namen Ihrer XMLDatei ein.\n \u2022 F\u00fcgen Sie den Eintrag POSTGUI_HALFILE in den [HAL]-Abschnitt der INI-Datei ein und geben Sie\n den Namen Ihrer postgui-HAL-Datei an.\n \u2022 F\u00fcgen Sie die Links zu HAL-Pins f\u00fcr Ihr Panel in der Datei postgui.hal hinzu, um Ihr PyVCP-Panel\n mit LinuxCNC zu verbinden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1008 / 1331\n \n 12.2.2 Schwebende (engl. floating) Panels\n Um schwebende PyVCP-Panels zu erstellen, die mit jeder Schnittstelle verwendet werden k\u00f6nnen,\n m\u00fcssen Sie die folgenden grundlegenden Dinge tun.\n \u2022 Erstellen Sie eine XML-Datei, die Ihre Panel-Beschreibung enth\u00e4lt, und legen Sie sie in Ihr Konfigurationsverzeichnis.\n@@ -44665,26 +44665,26 @@\n 12.2.3 Beispiel f\u00fcr Jog-Buttons\n In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration\n will be built upon a StepConf Wizard generated configuration. First we run the StepConf Wizard\n and configure our machine, on the Advanced Configuration Options page we then make a couple of\n selections to add a blank PyVCP panel as shown in the following figure. For this example we named\n the configuration pyvcp_xyz on the Basic Machine Information page of the StepConf Wizard.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1009 / 1331\n \n Abbildung 12.30: XYZ-Assistent Konfiguration\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 Erstellen der Widgets\n \u00d6ffnen Sie die Datei custompanel.xml, indem Sie mit der rechten Maustaste darauf klicken und \u201dMit\n Texteditor \u00f6ffnen\u201d w\u00e4hlen. Zwischen den Tags <pyvcp></pyvcp> f\u00fcgen wir die Widgets f\u00fcr unser\n Panel ein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1010 / 1331\n \n Schauen Sie in den Abschnitt PyVCP Widgets Referenz des Handbuchs f\u00fcr detailliertere Informationen\n \u00fcber jedes Widget documentation des widgets.\n In der Datei custompanel.xml werden wir die Beschreibung der Widgets hinzuf\u00fcgen.\n <pyvcp>\n@@ -44738,15 +44738,15 @@\n <font>(\u201dHelvetica\u201d,20)</font>\n <width>3</width>\n <halpin>\u201dz-minus\u201d</halpin>\n <text>\u201dZ-\u201d</text>\n </button>\n </hbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1011 / 1331\n \n <!-- the jog speed slider -->\n <vbox>\n <relief>RAISED</relief>\n <bd>3</bd>\n@@ -44772,15 +44772,15 @@\n f\u00fchren Sie nach unten scrollen, um den unteren Rand des Pop-up-Fenster und in der Regel der Fehler\n ist ein Rechtschreib-oder Syntaxfehler und es wird dort sein.\n \n 12.2.3.2 Verbindungen herstellen\n Um die erforderlichen Verbindungen herzustellen, \u00f6ffnen Sie die Datei custom_postgui.hal, und f\u00fcgen\n Sie Folgendes hinzu.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1012 / 1331\n \n # Verbinden Sie die X-PyVCP-Tasten\n net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus\n net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus\n # Verbinden der Y-PyVCP-Tasten\n@@ -44831,15 +44831,15 @@\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </led>\n </hbox>\n <hbox>\n <relief>RIDGE</relief>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1013 / 1331\n \n <bd>2</bd>\n <label>\n <text>\u201dPin 10\u201d</text>\n <font>(\u201dHelvetica\u201d,14)</font>\n@@ -44881,15 +44881,15 @@\n net pin02 ptest.btn02 parport.0.pin-02-out ptest.led-02\n net pin10 parport.0.pin-10-in ptest.led-10\n net pin11 parport.0.pin-11-in ptest.led-11\n start\n \n Um die HAL-Datei auszuf\u00fchren, verwenden wir den folgenden Befehl in einem Terminalfenster.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1014 / 1331\n \n ~$ halrun -I -f ptest.hal\n \n Die folgende Abbildung zeigt, wie ein komplettes Panel aussehen k\u00f6nnte.\n \n@@ -44968,15 +44968,15 @@\n parport.0.pin-14-out\n parport.0.pin-15-in\n parport.0.pin-15-in-not\n parport.0.pin-16-out\n parport.0.pin-17-out\n ptest.btn01 ==> pin01\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 bit\n 4 bit\n 4 bit\n 4 bit\n 4 bit\n \n@@ -45037,15 +45037,15 @@\n <height>\u201d30\u201d</height>\n <width>\u201d30\u201d</width>\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </rectled>\n </hbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n </vbox>\n <!-- the FWD Led -->\n <vbox>\n <relief>RAISED</relief>\n <bd>2</bd>\n <label>\n@@ -45083,15 +45083,15 @@\n </hbox>\n </pyvcp>\n \n Damit erhalten wir ein PyVCP-Panel, das wie folgt aussieht.\n \n 1016 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1017 / 1331\n \n 12.2.5.2 Die Verbindungen\n Damit das funktioniert, f\u00fcgen wir den folgenden Code in die Datei custom_postgui.hal ein.\n # Anzeige der Drehzahl auf der Grundlage von freq * RPM per Hz\n loadrt mult2\n@@ -45111,15 +45111,15 @@\n das Bit spindle-fwd nicht zweimal verkn\u00fcpfen, also verwenden Sie das Signal, mit dem es verkn\u00fcpft\n wurde.\n \n 12.2.6 Referenzfahrt im Eilgang Button\n In diesem Beispiel wird eine Schaltfl\u00e4che auf dem PyVCP-Seitenpanel erstellt, die bei Bet\u00e4tigung alle\n Achsen zur\u00fcck in die Ausgangsposition schickt. Dieses Beispiel setzt voraus, dass Sie kein PyVCPPanel haben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1018 / 1331\n \n Erstellen Sie in Ihrem Konfigurationsverzeichnis die XML-Datei. In diesem Beispiel hei\u00dft sie rth.xml.\n F\u00fcgen Sie in der Datei \u201drth.xml\u201d den folgenden Code ein, um die Schaltfl\u00e4che zu erstellen.\n <pyvcp>\n <!-- rapid to home button example -->\n@@ -45135,15 +45135,15 @@\n \n Wenn Sie keinen [HALUI]-Abschnitt in der INI-Datei haben, erstellen Sie ihn und f\u00fcgen Sie den folgenden MDI-Befehl hinzu.\n MDI_COMMAND = G53 G0 X0 Y0 Z0\n \n Anmerkung\n Informationen zu G53 und G0 G-Codes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1019 / 1331\n \n Wenn Sie keine Post-GUI-Datei haben, f\u00fcgen Sie im Abschnitt [HAL] Folgendes hinzu und erstellen\n Sie eine Datei namens postgui.hal.\n POSTGUI_HALFILE = postgui.hal\n \n@@ -45177,15 +45177,15 @@\n \u2022 Widget-Set: verwendet TkInter-Widgets.\n \u2022 Erstellung der Benutzeroberfl\u00e4che: Zyklus \u201dXML-Datei bearbeiten / Ergebnis ausf\u00fchren / Aussehen\n auswerten\u201d.\n \u2022 Keine Unterst\u00fctzung f\u00fcr die Einbettung benutzerdefinierter Ereignisbehandlung.\n \u2022 Keine LinuxCNC Interaktion \u00fcber HAL Pin I/O hinaus unterst\u00fctzt.\n GladeVCP:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1020 / 1331\n \n \u2022 Widget set: relies on the GTK3 widget set.\n \u2022 User interface creation: uses the Glade WYSIWYG user interface editor.\n \n \u2022 Jede HAL-Pin-\u00c4nderung kann f\u00fcr einen Callback und damit einen benutzerdefinierten Python-Ereignishand\n@@ -45214,31 +45214,31 @@\n Damit die folgenden Befehle bei Ihrem Git-Checkout funktionieren, m\u00fcssen Sie zuerst make ausf\u00fchren, dann sudo make setuid und dann . ./scripts/rip-environment. Weitere Informationen \u00fcber einen\n Git-Checkout finden Sie auf der LinuxCNC-Wiki-Seite.\n \n F\u00fchren Sie das in AXIS integrierte GladeVCP-Beispielpanel wie PyVCP wie folgt aus:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_panel.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n F\u00fchren Sie das gleiche Panel aus, aber als Registerkarte innerhalb von AXIS:\n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_tab.ini\n \n 1021 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Um dieses Panel innerhalb von Touchy auszuf\u00fchren:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 1022 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1023 / 1331\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 Erkunden des Beispielpanels\n@@ -45253,15 +45253,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 Um zu sehen, wie das Panel in AXIS integriert ist, sehen Sie die Anweisung [DISPLAY]GLADEVCP\n in configs/sim/axis/gladevcp/gladevcp_panel.ini, die Anweisung [DISPLAY]EMBED* in configs/sim/axis/gladevcp/gladevcp_tab.ini und [HAL]POSTGUI_HALFILE sowohl in configs/sim/axis/gladevcp/gladevcp_tab.ini als auch in configs/sim/axis/gladevcp/gladevcp_panel.ini.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1024 / 1331\n \n 12.3.2.2 Erkunden der Beschreibung der Benutzeroberfl\u00e4che\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@@ -45298,15 +45298,15 @@\n Sie werden einen Python-Fehler erhalten.\n 12.3.3.2 Glade ausf\u00fchren, um eine neue Benutzeroberfl\u00e4che zu erstellen\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 \u00c4ndern Sie entweder eine bestehende UI-Komponente, indem Sie glade <Datei>.ui ausf\u00fchren, oder\n starten Sie eine neue, indem Sie einfach den Befehl glade in der Shell ausf\u00fchren.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1025 / 1331\n \n \u2022 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with source <linuxcncdir>/scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNCspecific widgets.\n \u2022 Wenn Sie nach nicht gespeicherten Einstellungen gefragt werden, akzeptieren Sie einfach die Standardeinstellungen und klicken Sie auf \u201eSchlie\u00dfen\u201c.\n \u2022 From Toplevels (toolbar), pick GtkWindow (first entry) as top level window. Set window1 as ID in\n@@ -45320,15 +45320,15 @@\n File\u2192Save as, give it a name like myui.ui and make sure it is 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 Testen eines Panels\n Sie sind jetzt bereit, es auszuprobieren (w\u00e4hrend LinuxCNC, z. B. AXIS l\u00e4uft) mit:\n gladevcp myui.ui\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1026 / 1331\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 <component name> 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@@ -45370,15 +45370,15 @@\n line options.\n Es ist m\u00f6glich, einen benutzerdefinierten HAL-Komponentennamen zu erstellen, indem Sie die Option\n -c hinzuf\u00fcgen:\n [DISPLAY]\n # f\u00fcgen Sie das GladeVCP-Panel an der Stelle ein, an der fr\u00fcher PyVCP stand:\n GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1027 / 1331\n \n Die Befehlszeile, die von AXIS f\u00fcr die obigen Schritte ausgef\u00fchrt wird, lautet:\n halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example \u2190.ui\n \n Anmerkung\n@@ -45417,15 +45417,15 @@\n and -c <component> must be identical.\n Try it out by running AXIS - there should be a new tab called GladeVCP demo near the DRO tab. Select\n that tab, you should see the example panel nicely fit within AXIS.\n Anmerkung\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1028 / 1331\n \n 12.3.3.7 Integration in Touchy\n Um eine GladeVCP-Registerkarte zu \u201dTouchy\u201d hinzuzuf\u00fcgen, bearbeiten Sie Ihre INI-Datei wie folgt:\n [DISPLAY]\n # GladeVCP-Panel als Registerkarte hinzuf\u00fcgen\n@@ -45465,15 +45465,15 @@\n -H FILE::\n Execute HAL statements from FILE with halcmd after the component is set up and ready\n -m MAXIMUM::\n Force panel window to maximize.\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1029 / 1331\n \n Together with the -g geometry option one can move the panel to a second monitor and\n force it to use all of the screen\n \n \u2190-\n@@ -45514,15 +45514,15 @@\n it does not check whether a GladeVCP panel is actually used, in which case the HAL cmd file is just run\n normally. So if you do NOT start GladeVCP through GLADEVCP or EMBED_TAB etc, but later in a separate\n shell window or some other mechanism, a HAL command file in POSTGUI_HALFILE will be executed too\n early. Assuming GladeVCP pins are referenced herein, this will fail with an error message indicating\n that the GladeVCP HAL component is not available.\n Falls Sie also GladeVCP von einem separaten Shell-Fenster aus starten (d.h. nicht von der GUI eingebettet gestartet):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1030 / 1331\n \n \u2022 Sie k\u00f6nnen sich nicht darauf verlassen, dass die INI-Option \u201dPOSTGUI_HALFILE\u201d dazu f\u00fchrt, dass\n die HAL-Befehle \u201dzum richtigen Zeitpunkt\u201d ausgef\u00fchrt werden, also kommentieren Sie sie in der\n INI-Datei aus.\n \u2022 Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H\n@@ -45557,15 +45557,15 @@\n Die meisten HAL-Widgets haben einen einzigen zugeh\u00f6rigen HAL-Pin mit demselben HAL-Namen wie\n das Widget (glade: General\u2192Name).\n Ausnahmen von dieser Regel sind derzeit:\n \u2022 HAL_Spinbutton\u2019 und HAL_ComboBox, die zwei Pins haben: einen <widgetname>-f (float) und einen\n <widgetname>-s (s32) Pin\n \u2022 HAL_ProgressBar\u2019, die einen <widgetname>-value-Eingangspin und einen <widgetname>-scaleEingangspin hat.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1031 / 1331\n \n 12.3.6.2 Python-Attribute und Methoden von 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 PyGObject API Reference.\n@@ -45602,15 +45602,15 @@\n components. While there is currently no write protection on writing to input pins in HAL Python, this\n doesn\u2019t make sense. You might use setp _pinname_ _value_ in the associated HAL file for testing\n though.\n Es ist v\u00f6llig in Ordnung, den Wert eines Ausgangs-HAL-Pins mit halcomp[pinname] = value zu setzen, vorausgesetzt, dieser HAL-Pin ist nicht mit einem Widget verbunden, d.h. er wurde mit der\n Methode hal_glib.GPin(halcomp.newpin(<name>,<type>,<direction>)) erstellt (siehe GladeVCP\n Programming f\u00fcr ein Beispiel).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1032 / 1331\n \n 12.3.6.4 Das hal-pin-changed-Signal\n Event-driven programming means that the UI tells your code when \u201dsomething happens\u201d - through\n a callback, like when a button was pressed. The output HAL widgets (those which display a HAL\n pin\u2019s value) like LED, Bar, VBar, Meter, etc., support the hal-pin-changed signal, which may cause a\n@@ -45628,15 +45628,15 @@\n \u2022 HAL_ToggleButton, HAL_CheckButton: retains on/off state. Important signal: toggled\n \u2022 HAL_RadioButton: a one-of-many group. Important signal: toggled (per button).\n \u2022 Important common methods: set_active(), get_active()\n \u2022 Important properties: label, image\n \n Abbildung 12.31: Checkbutton\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1033 / 1331\n \n Abbildung 12.32: Radiobuttons\n \n Abbildung 12.33: Toggle-Button\n Tipp\n@@ -45652,15 +45652,15 @@\n <widgetname>-s\n out s32 pin\n To make a scale useful in Glade, add an Adjustment (General \u2192 Adjustment \u2192 New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set\n adjustment Page size and Page increment to zero to avoid warnings.\n \n Abbildung 12.34: Beispiel HAL_HScale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1034 / 1331\n \n 12.3.6.7 SpinButton\n HAL SpinButton ist von GtkSpinButton abgeleitet und besitzt zwei Pins:\n <widgetname>-f\n out FLOAT pin\n@@ -45690,15 +45690,15 @@\n out FLOAT pin\n hal_dial hat die folgenden Eigenschaften:\n cpr\n Legt die Anzahl der Z\u00e4hlungen pro Umdrehung fest, zul\u00e4ssige Werte liegen im Bereich von 25\n bis 360 +\n Voreinstellung = 100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1035 / 1331\n \n show_counts\n Setzen Sie diesen Wert auf False, wenn Sie die Anzeige der Z\u00e4hlerst\u00e4nde in der Mitte des Widgets\n ausblenden m\u00f6chten. +\n Standard = True\n@@ -45741,15 +45741,15 @@\n \n Es gibt Python-Methoden:\n \u2022 [Widgetname].get_value()\n Gibt den Z\u00e4hlwert als s32-Ganzzahl zur\u00fcck\n \u2022 [Widgetname].get_scaled_value() \u0300\n Gibt den Z\u00e4hlwert als Gleitkommazahl zur\u00fcck\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1036 / 1331\n \n \u2022 [Widget-Name].get_delta_scaled_value() +\n Gibt den Counts-Wert als Gleitkommawert zur\u00fcck\n \u2022 [Widgetname].set_label(\u201dstring\u201d) +\n Setzt den Inhalt des Labels mit \u201dstring\u201d\n@@ -45774,15 +45774,15 @@\n The jogwheel widget simulates a real jogwheel. It can be operated with the mouse. You can just use\n the mouse wheel, while the mouse cursor is over the JogWheel widget, or you push the left mouse\n button and move the cursor in circular direction to increase or degrease the counts.\n \u2022 Gegen den Uhrzeigersinn = kleinere Z\u00e4hlwerte\n \u2022 Clockwise = increase counts\n \u2022 Wheel up = increase counts\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1037 / 1331\n \n \u2022 Wheel down = reduce counts\n Da das Bewegen der Maus per Drag & Drop schneller sein kann, als das Widget sich selbst zu aktualisieren vermag, kann, dass Sie Z\u00e4hler verlieren, wenn Sie zu schnell drehen. Es wird empfohlen, das\n Mausrad zu verwenden, und nur f\u00fcr sehr grobe Bewegungen die Drag-and-Drop-Methode.\n jogwheel exports its count value as HAL pin:\n@@ -45810,15 +45810,15 @@\n \n There are two Python methods:\n \u2022 [widget name].get_value()\n Gibt den Z\u00e4hlwert als Ganzzahl zur\u00fcck\n \u2022 [Widgetname].set_label(\u201dstring\u201d) +\n Setzt den Inhalt des Labels mit \u201dstring\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1038 / 1331\n \n Abbildung 12.37: Beispiel JogWheel\n \n 12.3.6.10 Geschwindigkeitsregelung\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@@ -45842,15 +45842,15 @@\n Solange der Pin wahr ist, erh\u00f6ht sich der Wert. +\n Sehr praktisch bei angeschlossenem Taster.\n <widgetname>-decrease\n in Bit-Pin\n Solange der Pin wahr ist, wird der Wert verringert.\n Sehr praktisch bei angeschlossenem Taster.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1039 / 1331\n \n speedcontrol hat die folgenden Eigenschaften:\n height (engl. f\u00fcr H\u00f6he)\n Integer +\n Die H\u00f6he des Widgets in Pixel. +\n@@ -45898,15 +45898,15 @@\n Standard ist \u201d#FF8116\u201d.\n template (engl. f\u00fcr Vorlage)\n Zeichenfolge +\n Textvorlage zur Anzeige des Wertes. Es wird die Python-Formatierung verwendet. +\n Jedes zul\u00e4ssige Format. +\n Standard ist \u201d%.1f\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1040 / 1331\n \n do_hide_button\n Boolescher Wert +\n Ob die Schaltfl\u00e4che zum Erh\u00f6hen und Verringern angezeigt oder ausgeblendet werden soll. +\n True oder False. +\n@@ -45942,15 +45942,15 @@\n text_template\n Bestimmt den angezeigten Text - eine Python-Formatzeichenfolge zur Umwandlung des Pin-Werts\n in Text. Der Standardwert ist %s (Werte werden mit der Funktion str() umgewandelt), kann aber\n als Argument f\u00fcr Pythons format()-Methode jede beliebige Zahl enthalten. +\n Beispiel: Distance: %.03f zeigt den Text und den Pin-Wert mit 3 Nachkommastellen, aufgef\u00fcllt\n mit Nullen f\u00fcr einen FLOAT-Pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1041 / 1331\n \n 12.3.6.12 Containers (engl. f\u00fcr Beh\u00e4lter)\n \u2022 HAL_HideTable\n \u2022 HAL_Table\n \u2022 State_Sensitive_Table\n@@ -45985,15 +45985,15 @@\n Wenn Sie feststellen, dass ein Teil Ihrer GladeVCP-Anwendung \u201dausgegraut\u201d (unempfindlich) ist, pr\u00fcfen Sie, ob ein HAL_Table-Pin nicht gesetzt oder nicht angeschlossen ist.\n \n 12.3.6.13 LED\n The hal_led simulates a real indicator LED.\n It has a single input BIT pin which controls its state: ON or OFF.\n LEDs haben verschiedene Eigenschaften, die ihr Aussehen und ihre Wirkung bestimmen:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1042 / 1331\n \n on_color\n String, der die ON-Farbe der LED definiert. +\n Kann jeder g\u00fcltige gdk.Color-Name sein. +\n Funktioniert nicht unter Ubuntu 8.04.\n@@ -46028,15 +46028,15 @@\n Abbildung 12.39: Beispiel LEDs\n \n 12.3.6.14 ProgressBar (engl. f\u00fcr Fortschrittsbalken)\n Anmerkung\n Dieses Widget wird m\u00f6glicherweise entfernt.\n Verwenden Sie stattdessen die Widgets HAL_HBar und HAL_VBar.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1043 / 1331\n \n Der HAL_ProgressBar ist von gtk.ProgressBar abgeleitet und hat zwei Float-HAL-Eingangspins:\n <widgetname>\n den aktuell anzuzeigenden Wert\n <widgetname>-scale\n@@ -46069,15 +46069,15 @@\n HAL_ComboBox hat die folgende Eigenschaft, die in Glade gesetzt werden kann:\n column\n Der Spaltenindex. +\n Typ s32. +\n G\u00fcltiger Bereich von -1..100. +\n Standardwert ist -1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1044 / 1331\n \n In default mode this widgets sets the pins to the index of the chosen list entry. So if your widget has\n three labels, it may only assume values 0,1 and 2.\n In column mode (column > -1), the value reported is chosen from the ListStore array as defined in\n Glade. So typically your widget definition would have two columns in the ListStore, one with text\n@@ -46115,15 +46115,15 @@\n target value (engl. f\u00fcr Zielwert)\n Setzt die Zielzeile auf den eingegebenen Wert. +\n Wird nur zum Testen im GLADE-Editor verwendet. +\n Der Wert kann in einer Python-Funktion festgelegt werden.\n target_width\n Breite der Linie, die den Zielwert markiert.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1045 / 1331\n \n bg_color\n Hintergrund (inaktiv) Farbe des Balken (engl. bar).\n target_color\n Farbe der Ziellinie.\n@@ -46148,15 +46148,15 @@\n HAL_Meter ist ein Widget \u00e4hnlich dem PyVCP-Meter - es stellt einen Gleitkommawert dar.\n HAL_Meter hat einen Eingangs-FLOAT-HAL-Pin.\n HAL Meter hat die folgenden Eigenschaften:\n min, max\n Mindest- und H\u00f6chstwert des gew\u00fcnschten Bereichs.\n Es handelt sich nicht um eine Fehlerbedingung, wenn der aktuelle Wert au\u00dferhalb dieses Bereichs liegt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1046 / 1331\n \n force_size\n Erzwungener Durchmesser des Widgets.\n Wenn nicht festgelegt, wird die Gr\u00f6\u00dfe aus der Packung oder aus der festen Widgetgr\u00f6\u00dfe abgeleitet, und der Z\u00e4hler f\u00fcllt den gesamten verf\u00fcgbaren Platz unter Ber\u00fccksichtigung des Seitenverh\u00e4ltnisses.\n text_template\n@@ -46181,15 +46181,15 @@\n Die R\u00e4nder werden als Werte im Bereich min-max eingestellt.\n \n Abbildung 12.43: Beispiel HAL-Messger\u00e4te\n \n 12.3.6.18 HAL_Graph\n Dieses Widget dient zum Auftragen von Werten \u00fcber die Zeit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1047 / 1331\n \n 12.3.6.19 Gremlin tool path preview for NGC files\n Gremlin is a plot preview widget similar to the AXIS preview window. It assumes a running LinuxCNC\n environment like AXIS or Touchy. To connect to it, inspects the INI_FILE_NAME environment variable.\n Gremlin displays the current NGC file - it does monitor for changes and reloads the ngc file if the file\n@@ -46231,15 +46231,15 @@\n show_extents_option\n This tells the plotter to show the machine\u2019s extents.\n Default = true.\n show_tool\n Hiermit wird der Plotter angewiesen, das Werkzeug zu zeichnen.\n Voreinstellung = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1048 / 1331\n \n show_program\n Shows the G-code program.\n Default = True\n use_joints_mode\n@@ -46283,15 +46283,15 @@\n [widget name].set_property(\u2019show_live_plot\u2019, False)\n [widget name].set_property(\u2019show_tool\u2019, False)\n [widget name].set_property(\u2019show_lathe_radius\u2019,True)\n [widget name].set_property(\u2019show_dtg\u2019,True)\n [widget name].set_property(\u2019show_velocity\u2019,False)\n [widget name].set_property(\u2019mouse_btn_mode\u2019, 4)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1049 / 1331\n \n Es gibt Python-Methoden:\n [widget name].show_offsets = True\n [widget name].grid_size = .75\n [widget name].select_fire(event.x,event.y)\n@@ -46317,15 +46317,15 @@\n \n 12.3.6.20 HAL_Offset\n Das HAL_Offset-Widget wird verwendet, um den Offset einer einzelnen Achse anzuzeigen.\n HAL_Offset hat die folgenden Eigenschaften:\n display_units_mm\n Display in metric units.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1050 / 1331\n \n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis vs. joint number are:\n 0:X 1:Y 2:Z 3:A 4:B 5:C 6:U 7:V 8:W\n@@ -46359,15 +46359,15 @@\n \u2022 2 = distance-to-go (relative to current user coordinate origin). Default is 0.\n font_family\n Specify the font family e.g. mono. Defaults to sans. If the font does not exist then the current\n system font will be used. Default is sans.\n font_size\n Specify the size of the font between 8 and 96. Default is 26.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1051 / 1331\n \n font_weight\n Specify the weight of the font. Select from lighter, normal, bold, or bolder. Default is bold.\n unhomed_color\n The text color when unhomed specified as a Gdk.RGBA color. Default is red, Gdk.RGBA(red=1.000000,\n@@ -46410,15 +46410,15 @@\n *#ff0000, *rgb(255,0,0), or rgba(255,0,0,255).\n Colors may be referenced either collectively:\n .dro_unhomed {color: magenta}\n .dro_homed {color: cyan}\n \n or individually by widget name:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1052 / 1331\n \n #[widget name].dro_unhomed {color: magenta}\n #[widget name].dro_homed {color: cyan}\n \n The other style properties need to be referenced by widget name:\n@@ -46456,15 +46456,15 @@\n mm_text_template\n Sie k\u00f6nnen die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.\n Standard ist \u201d%10.3f\u201d.\n imperial_text_template\n Sie k\u00f6nnen die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.\n Standard ist \u201d%9.4f\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1053 / 1331\n \n homed_color\n Die Vordergrundfarbe der DRO-Nummern, wenn das Gelenk referenziert ist.\n Standard ist gr\u00fcn.\n unhomed_color\n@@ -46508,15 +46508,15 @@\n state = boolean (Wahr oder Falsch)\n Standard ist True.\n \u2022 [Name des Widgets].set_to_diameter(state)\n Wenn True, zeigt die DRO den Durchmesser und nicht den Radius an, d. h. den Achsenwert multipliziert mit 2 (speziell f\u00fcr Drehmaschinen erforderlich).\n state = boolean (Wahr oder Falsch)\n Der Standardwert ist Falsch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1054 / 1331\n \n \u2022 [Widgetname].toggle_readout()\n Schaltet die Reihenfolge des DRO im Widget um.\n \u2022 [Widget-Name].change_axisletter(Buchstabe)\n \u00c4ndert den automatisch angegebenen Achsenbuchstaben.\n@@ -46557,15 +46557,15 @@\n auf die gleiche Reihenfolge zu setzen.\n \u2022 units_changed +\n Dieses Signal wird ausgegeben, wenn die DRO-Einheiten gewechselt werden. +\n Es sendet die folgenden Daten:\n \u2013 widget = Widget-Objekt\n Das Widget-Objekt, welches das Signal sendet.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1055 / 1331\n \n \u2013 metric_units = boolesch +\n True, wenn die DRO metrische Einheiten anzeigt, False, wenn die Anzeige imperial ist.\n \u2022 system_changed+\n Dieses Signal wird ausgegeben, wenn die DRO-Einheiten gewechselt werden. +\n@@ -46589,15 +46589,15 @@\n Y = Absoluter Modus +\n Z = DTG-Modus\n \n 12.3.6.23 IconView (Dateiauswahl)\n Dies ist ein Touchscreen-freundliches Widget zur Auswahl einer Datei und zum Wechseln von Verzeichnissen.\n Das IconView-Widget hat die folgenden Eigenschaften:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1056 / 1331\n \n icon_size\n Legt die Gr\u00f6\u00dfe des angezeigten Symbols fest. +\n Erlaubte Werte sind Ganzzahlen im Bereich von 12 bis 96. +\n Voreinstellung ist 48.\n@@ -46638,15 +46638,15 @@\n state = boolescher Wert (True oder False). +\n Voreinstellung ist True.\n \u2022 [Widgetname].set_icon_size(iconsize) +\n Setzt die Gr\u00f6\u00dfe des Icons. +\n Muss eine ganze Zahl im Bereich von 12 bis 96 sein. +\n Voreinstellung = 48.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1057 / 1331\n \n \u2022 [Widgetname].set_directory(Verzeichnis) +\n Erm\u00f6glicht das Setzen eines anzuzeigenden Verzeichnisses. +\n Verzeichnis = String (ein g\u00fcltiger Dateipfad).\n \u2022 [Widgetname].set_filetypes(Dateitypen) +\n@@ -46684,15 +46684,15 @@\n \u2013 Der Name der Schaltfl\u00e4che ist einer der folgenden: btn_home, btn_dir_up, btn_sel_prev, btn_sel_next\n btn_jump_to oder btn_select.\n \u2013 state ist ein boolescher Wert und wird True oder False sein.\n \u2022 exit +\n Dieses Signal wird ausgegeben, wenn der Exit-Button gedr\u00fcckt wurde, um die IconView zu schlie\u00dfen. +\n Meistens ben\u00f6tigt, wenn die Anwendung als eigenst\u00e4ndige Anwendung gestartet wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1058 / 1331\n \n Abbildung 12.46: Iconview Beispiel\n \n 12.3.6.24 Rechner-Widget\n Dies ist ein einfaches Taschenrechner-Widget, das f\u00fcr numerische Eingaben verwendet werden kann.\n@@ -46704,15 +46704,15 @@\n font\n Hier k\u00f6nnen Sie die Schriftart f\u00fcr die Anzeige einstellen.\n Es gibt mehrere M\u00f6glichkeiten, das Widget direkt mit Python zu steuern.\n Verwenden Sie goobject, um die oben aufgef\u00fchrten Eigenschaften einzustellen:\n [widget name].set_property(\u201dis_editable\u201d,True)\n [widget name].set_property(\u201dfont\u201d,\u201dsans 25\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1059 / 1331\n \n Es gibt Python-Methoden:\n \u2022 [Widgetname].set_value(2.5)\n Damit ist die Anzeige voreingestellt und wird aufgezeichnet.\n \u2022 [Widgetname].set_font(\u201dsans 25\u201d)\n@@ -46746,15 +46746,15 @@\n [Widgetname].set_properties(\u2019hide_columns\u2019,\u2019uvwijq\u2019)\n \n Dadurch w\u00fcrden die Spalten uvwij und q ausgeblendet und alle anderen angezeigt.\n Es gibt Python-Methoden:\n \u2022 [Widgetname].set_visible(\u201dijq\u201d,False)\n Blendet die Spalten ij und Q aus und bel\u00e4sst den Rest so, wie er war.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1060 / 1331\n \n \u2022 [Widgetname].set_filename(pfad_zur_datei)\n Setzt und l\u00e4dt die Werkzeugdatei.\n \u2022 [Widgetname].reload(None)\n L\u00e4dt die aktuelle Werkzeugdatei neu.\n@@ -46785,15 +46785,15 @@\n Komfortable Methode zum Ausblenden von Schaltfl\u00e4chen. +\n Sie m\u00fcssen diese Methode nach show_all() aufrufen.\n \u2022 [Widgetname].get_selected_tool() +\n Gibt die vom Benutzer ausgew\u00e4hlte (hervorgehobene) Werkzeugnummer zur\u00fcck.\n \u2022 [Widgetname].set_selected_tool(toolnumber) +\n W\u00e4hlt das gew\u00fcnschte Werkzeug aus (markiert es).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1061 / 1331\n \n Abbildung 12.47: Werkzeug-Editor (engl. tooleditor) Beispiel\n \n 12.3.6.26 Offset-Seite\n Das Widget Offsetpage dient der Anzeige/Bearbeitung der Offsets aller Achsen.\n@@ -46818,15 +46818,15 @@\n Beim Bearbeiten ist dies die Hervorhebungsfarbe.\n foreground_color\n Wenn OffsetPage ein aktives Benutzerkoordinatensystem erkennt, wird diese Farbe f\u00fcr den Text\n verwendet.\n mm_text_template\n Sie k\u00f6nnen die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1062 / 1331\n \n imperial_text_template\n Sie k\u00f6nnen die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.\n Es gibt mehrere M\u00f6glichkeiten, das Widget direkt mit Python zu steuern.\n Verwenden Sie goobject, um die oben aufgef\u00fchrten Eigenschaften einzustellen:\n@@ -46855,15 +46855,15 @@\n Es handelt sich um eine Liste von Offset-Namen/Benutzernamen-Paaren. +\n Der Standardtext ist derselbe wie der Offsetname.\n \u2022 [Widgetname].get_names() \u0300 +\n Diese Funktion gibt eine Liste von Paaren aus Zeilen-Schl\u00fcsselwort/Benutzername zur\u00fcck. +\n Die Spalte mit den Benutzernamen ist editierbar, so dass das Speichern dieser Liste benutzerfreundlich ist. +\n Siehe set_names oben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1063 / 1331\n \n Abbildung 12.48: Beispiel f\u00fcr eine Offset-Seite\n \n 12.3.6.27 HAL_sourceview-Widget\n \n@@ -46884,15 +46884,15 @@\n Setzt die hervorzuhebende Zeile. +\n Verwendet die Zeilennummern der Quellansicht.\n \u2022 [Widgetname].get_line_number() +\n Gibt die aktuell hervorgehobene Zeile zur\u00fcck.\n \u2022 [Widget-Name].line_up() \u0300 +\n Verschiebt die markierte Zeile um eine Zeile nach oben.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1064 / 1331\n \n \u2022 [Name des Widgets].line_down()\n Verschiebt die markierte Zeile um eine Zeile nach unten.\n \u2022 [Widgetname].load_file(\u2019Dateiname\u2019)\n L\u00e4dt eine Datei.\n@@ -46914,15 +46914,15 @@\n \u00c4ndert die Standardschriftgr\u00f6\u00dfe der Baumansicht auf den ausgew\u00e4hlten Wert.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1065 / 1331\n \n Verwenden Sie goobject, um die oben aufgef\u00fchrten Eigenschaften einzustellen:\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@@ -46935,15 +46935,15 @@\n \n Abbildung 12.50: HAL-Widgets in einem Bitmap Beispiel\n \n 12.3.7 Referenz zu Aktions-Widgets\n GladeVCP enth\u00e4lt eine Sammlung von \u201dvorgefertigten Aktionen\u201d (engl. canned actions) namens VCP\n Action Widgets f\u00fcr den Glade-Benutzeroberfl\u00e4cheneditor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1066 / 1331\n \n Anmerkung\n Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the\n G-code interpreter.\n \n@@ -46967,15 +46967,15 @@\n Der Befehlsstring kann spezielle Schl\u00fcsselw\u00f6rter f\u00fcr den Zugriff auf wichtige Funktionen enthalten.\n \u2022 ACTION f\u00fcr den Zugriff auf die ACTION-Befehlsbibliothek.\n \u2022 GSTAT f\u00fcr den Zugriff auf die Gstat-Bibliothek f\u00fcr Statusmeldungen.\n \u2022 INFO f\u00fcr den Zugriff auf gesammelte Daten aus der INI-Datei.\n \u2022 HAL f\u00fcr den Zugriff auf das HAL linuxcnc Python-Modul\n \u2022 STAT f\u00fcr den Zugriff auf LinuxCNC\u2019s rohen Status \u00fcber das LinuxCNC Python Modul.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1067 / 1331\n \n \u2022 CMD f\u00fcr den Zugriff auf LinuxCNC-Befehle \u00fcber das LinuxCNC-Python-Modul.\n \u2022 EXT f\u00fcr den Zugriff auf die Handler-Dateifunktionen, falls verf\u00fcgbar.\n \u2022 linuxcnc f\u00fcr den Zugriff auf das LinuxCNC-Python-Modul.\n \u2022 self f\u00fcr den Zugriff auf die Widget-Instanz.\n@@ -47007,15 +47007,15 @@\n \u2022 Pause/Fortsetzen sendet die Befehle AUTO_PAUSE oder AUTO_RESUME.\n Die folgenden Toggle-Aktionen haben nur einen zugeh\u00f6rigen Befehl und verwenden den Zustand \u201dgedr\u00fcckt\u201d, um anzuzeigen, dass der angeforderte Vorgang ausgef\u00fchrt wird:\n \u2022 Der Run-Toggle sendet einen AUTO_RUN-Befehl und wartet im gedr\u00fcckten Zustand, bis der Interpreter wieder im Leerlauf ist.\n \u2022 Der Stop-Schalter ist inaktiv, bis der Interpreter in den aktiven Zustand \u00fcbergeht (d.h. G-Code\n ausf\u00fchrt) und dem Benutzer dann erlaubt, den Befehl AUTO_ABORT zu senden.\n \u2022 Der MDI-Umschalter sendet einen bestimmten MDI-Befehl und wartet im inaktiven Zustand \u201dgedr\u00fcckt\u201d auf dessen Ausf\u00fchrung.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1068 / 1331\n \n 12.3.7.4 Die Action_MDI Toggle und Action_MDI Widgets\n Diese Widgets bieten eine M\u00f6glichkeit, beliebige MDI-Befehle auszuf\u00fchren.\n Das Action_MDI-Widget wartet nicht auf die Beendigung des Befehls, wie es das Action_MDI-Toggle\n tut, das deaktiviert bleibt, bis der Befehl beendet ist.\n@@ -47035,15 +47035,15 @@\n 12.3.7.6 Parameter\u00fcbergabe mit Action_MDI- und ToggleAction_MDI-Widgets\n Optional k\u00f6nnen bei \u201dMDI Befehl\u201d-Zeichenketten Parameter ersetzt werden, bevor sie an den Interpreter \u00fcbergeben werden. Parameter k\u00f6nnen derzeit Namen von HAL-Pins in der GladeVCP-Komponente\n sein. So funktioniert es:\n \u2022 assume you have a HAL SpinBox named speed, and you want to pass its current value as a parameter\n in an MDI command.\n \u2022 Die HAL SpinBox hat einen HAL-Pin vom Typ float mit dem Namen speed-f (siehe HalWidgetsBeschreibung).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1069 / 1331\n \n \u2022\n \u2022 f\u00fcr die obige HAL SpinBox k\u00f6nnten wir (MSG, \u201dDie Geschwindigkeit ist: ${geschwindigkeit-f}\u201d)\n verwenden, um zu zeigen, was passiert.\n Die Beispiel-UI-Datei ist \u201dconfigs/apps/gladevcp/mdi-command-example/speed.ui\u201d. So sieht das Ergebnis aus, wenn man sie ausf\u00fchrt:\n@@ -47058,15 +47058,15 @@\n \n Abbildung 12.54: Action_MDI Erweitertes Beispiel\n \n 12.3.7.8 Vorbereitung einer MDI-Aktion und anschlie\u00dfendes Aufr\u00e4umen\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1070 / 1331\n \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 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@@ -47105,15 +47105,15 @@\n \u2013 \u201dstate-on\u201d: wird beim Einschalten des Ger\u00e4ts ausgegeben,\n \u2013 state-off: wird ausgegeben, wenn die Maschine ausgeschaltet wird.\n \u2022 Modus-bezogen:\n \u2013 mode-manual: wird ausgegeben, wenn LinuxCNC in den manuellen Modus wechselt,\n \u2013 mode-mdi: ausgegeben, wenn LinuxCNC in den MDI-Modus wechselt,\n \u2013 mode-auto: ausgegeben, wenn LinuxCNC in den automatischen Modus wechselt,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1071 / 1331\n \n \u2022 Interpreter-bezogen: wird ausgegeben, wenn der G-Code-Interpreter in diesen Modus wechselt\n \u2013 interp-run\n \u2013 interp-idle\n \u2013 interp-paused\n@@ -47149,15 +47149,15 @@\n \u2022 Action: Eine Sammlung von Funktionen zum \u00c4ndern von LinuxCNC-Zust\u00e4nden.\n \u2022 Status: Meldet den Status von LinuxCNC. Es f\u00fchrt intern \u201dGstat\u201d aus (\u201dwrapt\u201d).\n Importieren und Instanziieren der Bibliotheken:\n from gladevcp.core import Info, Action\n ACTION = Action()\n INFO = Info()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1072 / 1331\n \n Using the library functions:\n print(INFO.MACHINE_IS_METRIC)\n ACTION.SET_ERROR_MESSAGE(\u2019Something went wrong\u2019)\n \n@@ -47194,15 +47194,15 @@\n application: Every activity, be it mouse click, key, timer expired, or the change of a HAL pin\u2019s value,\n generates a callback and is handled by the same orthogonal mechanism.\n F\u00fcr benutzerdefinierte HAL-Pins, die nicht mit einem bestimmten HAL-Widget verbunden sind, lautet\n der Signalname value-changed. Siehe den Abschnitt AL Pins hinzuf\u00fcgen weiter unten f\u00fcr Details.\n HAL Widgets werden mit einem vordefinierten Signal namens hal-pin-changed geliefert. Siehe den\n Abschnitt HAL Widgets f\u00fcr Details.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1073 / 1331\n \n 12.3.8.5 Programmiermodell\n Das Gesamtkonzept sieht folgenderma\u00dfen aus:\n \u2022 Entwerfen Sie Ihre Benutzeroberfl\u00e4che mit Glade, und legen Sie Signal-Handler fest, wenn Sie\n Aktionen mit einem Widget verbinden m\u00f6chten.\n@@ -47244,15 +47244,15 @@\n that the GladeVCP panel is currently active and displayed. For example a panel inside the Touchy\n interface might well need to perform an action when the switch connected to touchy.cycle-start is\n operated (in the same way that the native tabs respond differently to the same button).\n To make this possible, a signal is sent from the GUI (at the time of writing, only Touchy) to the embedded tab. The signal is of type \u201dGladevcp\u201d and the two messages sent are \u201dVisible\u201d and \u201dHidden\u201d.\n (Note that the signals have a fixed length of 20 characters so only the first characters should be used\n in any comparison, hence the [:7] below.) A sample handler for these signals is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1074 / 1331\n \n # This catches our messages from another program\n def event(self,w,event):\n print(event.message_type,event.data)\n if event.message_type == \u2019Gladevcp\u2019:\n@@ -47289,15 +47289,15 @@\n \u2022 The halcomp HAL component is set up and all HAL widgets\u2019 pins have already been added to it.\n \u2022 Es ist sicher, weitere HAL-Pins hinzuzuf\u00fcgen, da halcomp.ready() zu diesem Zeitpunkt noch nicht\n aufgerufen wurde, so dass Sie Ihre eigenen Pins hinzuf\u00fcgen k\u00f6nnen, zum Beispiel in der Klasse\n init()-Methode.\n Nachdem alle Module importiert und die Methodennamen extrahiert wurden, werden die folgenden\n Schritte durchgef\u00fchrt:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1075 / 1331\n \n \u2022 Alle qualifizierenden Methodennamen werden mit connect_signals()/signal_autoconnect() mit dem\n Widget-Baum verbunden (abh\u00e4ngig von der Art der importierten Benutzeroberfl\u00e4che - GtkBuilder\n im Vergleich zum alten libglade-Format).\n \u2022 Die HAL-Komponente wird mit halcomp.ready() abgeschlossen.\n@@ -47336,15 +47336,15 @@\n gladevcp -U debug=42 -U \u201dprint \u2019debug=%d\u2019 % debug\u201d ...\n \n Dies sollte debug auf 2 setzen und best\u00e4tigen, dass Ihr Modul es tats\u00e4chlich getan hat.\n 12.3.8.9 Persistente Variablen in GladeVCP\n An annoying aspect of GladeVCP in its earlier form and PyVCP is the fact that you may change values\n and HAL pins through text entry, sliders, spin boxes, toggle buttons, etc., but their settings are not\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1076 / 1331\n \n saved and restored at the next run of LinuxCNC - they start at the default value as set in the panel or\n widget definition.\n GladeVCP verf\u00fcgt \u00fcber einen einfach zu bedienenden Mechanismus zum Speichern und Wiederherstellen des Zustands von HAL-Widgets und Programmvariablen (in der Tat jedes Instanzattribut vom\n Typ int, float, bool oder string).\n@@ -47382,15 +47382,15 @@\n }\n \n Dann verkn\u00fcpfen Sie eine INI-Datei mit diesem Deskriptor:\n self.ini_filename = __name__ + \u2019.ini\u2019\n self.ini = IniFile(self.ini_filename,self.defaults,self.builder)\n self.ini.restore_state(self)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1077 / 1331\n \n Nach restore_state() werden die Attribute von self gesetzt, wenn sie wie folgt ablaufen:\n self.nhits = 0\n self.a = 1.67\n self.d = True\n@@ -47428,15 +47428,15 @@\n Wenn Sie die GladeVCP-Anwendung das n\u00e4chste Mal starten, sollten die Widgets in dem Zustand\n angezeigt werden, in dem sie beim Schlie\u00dfen der Anwendung waren.\n Achtung\n Die GtkWidget-Zeile hat ein \u00e4hnlich klingendes destroy-event - nicht verwenden, um sich\n mit dem on_destroy-Handler zu verbinden, es wird nicht funktionieren - stellen Sie\n sicher, dass Sie das destroy-Ereignis aus der GtkObject-Zeile verwenden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1078 / 1331\n \n 12.3.8.12 Status speichern, wenn Strg-C gedr\u00fcckt wird\n By default, the reaction of GladeVCP to a Ctrl-C event is to just exit - without saving state. To make\n sure that this case is covered, add a handler call on_unix_signal which will be automatically be called\n on Ctrl-C (actually on the SIGINT and SIGTERM signals). Example:\n@@ -47473,15 +47473,15 @@\n return True # to restart the timer; return False for on-shot\n ...\n # demonstrate a slow background timer - granularity is one second\n # for a faster timer (granularity 100 ms), use this:\n # GLib.timeout_add(100, self._on_timer_tick,userdata) # 10Hz\n GLib.timeout_add_seconds(1, self._on_timer_tick)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1079 / 1331\n \n 12.3.8.16 HAL-Widget-Eigenschaften programmatisch einstellen\n With Glade, widget properties are typically set fixed while editing. You can, however, set widget properties at runtime, for instance from INI file values, which would typically be done in the handler\n initialization code. Setting properties from HAL pin values is possible, too.\n Im folgenden Beispiel (unter der Annahme eines HAL Meter-Widgets mit dem Namen meter) wird der\n@@ -47521,15 +47521,15 @@\n Erstellen Sie dann einen Pin und verbinden Sie ein value-changed Signal (den Watcher) mit einem\n Funktionsaufruf:\n class HandlerClass:\n def __init__(self, halcomp,builder,useropts):\n self.example_trigger = hal_glib.GPin(halcomp.newpin(\u2019example-trigger\u2019, hal.HAL_BIT, \u2190hal.HAL_IN))\n self.example_trigger.connect(\u2019value-changed\u2019, self._on_example_trigger_change)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1080 / 1331\n \n Und eine Funktion haben, die aufgerufen werden soll:\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@@ -47570,15 +47570,15 @@\n I have a notebook inside window1, and linked on_destroy to the notebooks destroy signal, and\n that works fine. It doesn\u2019t work for window1.\n 5. Ich m\u00f6chte die Hintergrundfarbe oder den Text eines HAL_Label-Widgets abh\u00e4ngig von seinem\n HAL-Pin-Wert einstellen\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1081 / 1331\n \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 \n Ich habe ein \u201dhal_spinbutton\u201d-Widget in Glade definiert und eine Standard-Eigenschaft value in\n@@ -47613,15 +47613,15 @@\n \n Therefore, key events in GladeVCP are explicitly handled, and selectively forwarded to AXIS, to assure\n that such situations cannot arise. For details, see the keyboard_forward() function in lib/python/gladevcp\n \n 12.3.12 Hinzuf\u00fcgen von benutzerdefinierten Widgets\n The LinuxCNC Wiki has information on adding custom widgets to GladeVCP. GladeVCP Custom Widgets\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1082 / 1331\n \n 12.3.13 GladeVCP-Hilfsanwendungen\n \n Es werden unabh\u00e4ngig installierte GladeVCP-Anwendungen unterst\u00fctzt, die mit der Platzierung des\n Systemverzeichnisses \u00fcbereinstimmen, wie sie von den LINUXCNC_AUX_GLADEVCP- und LINUXCNC_AUX\n@@ -47657,15 +47657,15 @@\n 12.4.1 Info\n Info ist eine Bibliothek zum Sammeln und Filtern von Daten aus der INI-Datei.\n Die verf\u00fcgbaren Daten und Voreinstellungen:\n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n INI = linuxcnc.ini(INIPATH)\n MDI_HISTORY_PATH = \u2019~/.axis_mdi_history\u2019\n QTVCP_LOG_HISTORY_PATH = \u2019~/qtvcp.log\u2019\n MACHINE_LOG_HISTORY_PATH = \u2019~/.machine_log_history\u2019\n PREFERENCE_PATH = \u2019~/.Preferences\u2019\n SUB_PATH = None\n@@ -47715,15 +47715,15 @@\n USRMESS_TEXT = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TEXT\u201d)\n USRMESS_TYPE = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_TYPE\u201d)\n USRMESS_PINNAME = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_PINNAME\u201d)\n USRMESS_DETAILS = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_DETAILS\u201d)\n \n 1083 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1084 / 1331\n \n USRMESS_ICON = self.INI.findall(\u201dDISPLAY\u201d, \u201dMESSAGE_ICON\u201d)\n ZIPPED_USRMESS =\n self.GLADEVCP = (self.INI.find(\u201dDISPLAY\u201d, \u201dGLADEVCP\u201d)) or None\n # embedded program info\n@@ -47772,15 +47772,15 @@\n zuf\u00e4llige Details zu verbergen und praktische Methoden f\u00fcr Entwickler hinzuzuf\u00fcgen.\n Um diese Module zu importieren, f\u00fcgen Sie diesen Python-Code in Ihren Import-Abschnitt ein:\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from gladevcp.core import Action\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1085 / 1331\n \n Um das Modul zu instanziieren, damit Sie es verwenden k\u00f6nnen, f\u00fcgen Sie den folgenden Python-Code\n in Ihren instanziierten Abschnitt ein:\n ###########################################\n # **** BIBLIOTHEKEN INSTANZIIEREN **** #\n@@ -47821,15 +47821,15 @@\n ACTION.SET_SPINDLE_SLOWER(number = 0)\n ACTION.SET_SPINDLE_STOP(number = 0)\n ACTION.SET_USER_SYSTEM(system)\n ACTION.ZERO_G92_OFFSET()\n ACTION.ZERO_ROTATIONAL_OFFSET()\n ACTION.ZERO_G5X_OFFSET(num)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1086 / 1331\n \n ACTION.RECORD_CURRENT_MODE()\n ACTION.RESTORE_RECORDED_MODE()\n ACTION.SET_SELECTED_AXIS(jointnum)\n ACTION.DO_JOG(jointnum, direction)\n@@ -47869,60 +47869,60 @@\n erstellen.\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 Schaukasten\n Einige Beispiele f\u00fcr mit QtVCP erstellte Bildschirme und virtuelle Bedienfelder:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.55: QtDragon - 3/4-Achsen-Beispiel\n \n 1087 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.56: QtDefault - 3-Achsen-Beispiel\n \n 1088 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.57: QtAxis - Beispiel f\u00fcr selbsteinstellende Achsen\n \n 1089 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.58: Blender - 4-Achsen-Beispiel\n \n 1090 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.59: X1mill - 4-Achsen-Beispiel\n \n 1091 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.60: cam_align \u2013 Kameraausrichtung VCP\n \n 1092 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1093 / 1331\n \n Abbildung 12.61: test_panel - Test Panel VCP\n \n 12.5.2 \u00dcbersicht\n Zwei Dateien werden, einzeln oder in Kombination, verwendet, um Anpassungen vorzunehmen:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1094 / 1331\n \n \u2022 Eine UI-Datei, bei der es sich um eine XML-Datei handelt, die mit dem grafischen Editor Qt Designer erstellt wurde.\n \u2022 Eine Handler-Datei, die eine Textdatei mit Python-Code ist.\n Normalerweise verwendet QtVCP die standardm\u00e4\u00dfige UI- und Handler-Datei, aber Sie k\u00f6nnen QtVCP\n so einstellen, dass es \u201dlokale\u201d UI- und Handler-Dateien verwendet.\n@@ -47953,15 +47953,15 @@\n Anmerkung\n All <options> must appear before <screen_name>.\n \n Optionen\n \u2022 -d Debugging on.\n \u2022 -i Enable info output.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1095 / 1331\n \n \u2022 -v Enable verbose debug output.\n \u2022 -q Enable only error debug output.\n \u2022 -a Set window always on top.\n \u2022 -c NAME HAL component name. Default is to use the UI file name.\n@@ -47994,15 +47994,15 @@\n oder stark ruckeln.\n 12.5.2.3 Qt Designer UI Datei\n Eine Qt Designer-Datei ist eine Textdatei, die im XML-Standard organisiert ist und das Layout und\n die Widgets des Bildschirms beschreibt.\n PyQt5 verwendet diese Datei, um die Anzeige zu erstellen und auf diese Widgets zu reagieren.\n Der Qt Designer Editor macht es relativ einfach, diese Datei zu erstellen und zu bearbeiten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1096 / 1331\n \n 12.5.2.4 Handler-Dateien\n Eine Handler-Datei ist eine Datei, die Python-Code enth\u00e4lt, der zu den QtVCP-Standardroutinen\n hinzugef\u00fcgt wird.\n A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify\n@@ -48035,15 +48035,15 @@\n 12.5.2.7 Lokale Dateien\n If present, local UI/QSS/Python files in the configuration folder will be loaded instead of the stock UI\n files.\n Local UI/QSS/Python files allow you to use your customized designs rather than the default screens.\n QtVCP sucht nach einem Ordner mit dem Namen <screen_name> (im Ordner f\u00fcr die Startkonfiguration, der die INI-Datei enth\u00e4lt).\n In diesem Ordner l\u00e4dt QtVCP jede der folgenden Dateien:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1097 / 1331\n \n \u2022 _<screen_name>_.ui,\n \u2022 <screen_name>_handler.py, und\n \u2022 _<screen_name>_.qss.\n 12.5.2.8 Ver\u00e4nderung mitglieferter Bildschirmmasken\n@@ -48084,15 +48084,15 @@\n # return our subclassed handler object to QtVCP\n def get_handlers(halcomp, widgets, paths):\n return [UserHandlerClass(halcomp, widgets, paths)]\n # sub class HandlerClass which was imported above\n class UserHandlerClass(HandlerClass):\n # add a terminal message so we know this got loaded\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1098 / 1331\n \n print(\u2019\\nCustom subclassed handler patch loaded.\\n\u2019)\n def init_pins(self):\n # call original handler init_pins function\n super().init_pins()\n@@ -48139,15 +48139,15 @@\n # reference: https://ruivieira.dev/python-monkey-patching-for-readability.html\n import types\n # import the handlerfile to get reference to its libraries.\n # use <screenname>_handler\n import qtdragon_handler as hdlr\n # This is actually an unbounded function with \u2019obj\u2019 as a parameter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1099 / 1331\n \n # You call this function without the usual preceding \u2019self.\u2019.\n # This is because will will not be patching it into the original handler class instance\n # It will only be called from code in this file.\n def test_function(obj):\n@@ -48200,15 +48200,15 @@\n pin = hdlr.QHAL.newpin(\u201dnew_pin\u201d, hdlr.QHAL.HAL_BIT, hdlr.QHAL.HAL_IN)\n pin.value_changed.connect(new_pin_changed)\n except Exception as e:\n print(e)\n # Here we are instance patching the original handler file to add a new function\n # that calls our new function (of the same name) defined in this file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1100 / 1331\n \n self.after_override__ = types.MethodType(after_override__, self)\n \n If you wish to modify a stock screen with full control, copy its UI and handler file to your configuration folder.\n Es gibt ein QtVCP-Panel, das dabei hilft:\n@@ -48229,40 +48229,40 @@\n 12.5.3.1 Builtin Panels\n Es sind mehrere integrierte HAL-Panels verf\u00fcgbar.\n Geben Sie in einem Terminal qtvcp <return> ein, um eine Liste zu sehen:\n test_panel\n Sammlung n\u00fctzlicher Widgets zum Testen von HAL-Komponenten, einschlie\u00dflich der Anzeige des\n LED-Zustands.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.62: QtVCP HAL Test Integriertes Panel\n cam_align\n Ein Kameraanzeige-Widget f\u00fcr die Rotationsausrichtung.\n \n 1101 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.63: cam_align \u2013 Kameraausrichtung VCP\n sim_panel\n A small control panel to simulate MPG jogging controls etc.\n For simulated configurations.\n \n 1102 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.64: QtVCP Sim Builtin Panel\n vismach_mill_xyz\n 3D OpenGL view of a 3-axis milling machine.\n \n 1103 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1104 / 1331\n \n Abbildung 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@@ -48271,15 +48271,15 @@\n \n In this way HAL will wait till the HAL pins are made before continuing on.\n 12.5.3.2 Benutzerdefinierte Bedienfelder\n Sie k\u00f6nnen nat\u00fcrlich Ihr eigenes Panel erstellen und laden.\n Wenn Sie eine UI-Datei mit dem Namen my_panel.ui und eine HAL-Datei mit dem Namen my_panel.hal\n erstellt haben, w\u00fcrden Sie diese dann von einem Terminal aus laden mit:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1105 / 1331\n \n halrun -I -f my_panel.hal\n \n Beispiel einer HAL-Datei, die ein QtVCP-Panel l\u00e4dt\n # load realtime components\n@@ -48321,15 +48321,15 @@\n 1\n \n In diesem Fall laden wir qtvcp mit -Wn, das wartet, bis das Panel das Laden beendet hat, bevor\n es mit der Ausf\u00fchrung des n\u00e4chsten HAL-Befehls fortf\u00e4hrt.\n Damit soll gew\u00e4hrleistet werden, dass die vom Panel erstellten HAL-Pins tats\u00e4chlich fertig sind,\n falls sie im Rest der Datei verwendet werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1106 / 1331\n \n 12.5.4 Build A Simple Clean-sheet Custom Screen\n \n Abbildung 12.66: QtVCP H\u00e4sslicher benutzerdefinierter Bildschirm\n 12.5.4.1 \u00dcbersicht\n@@ -48345,15 +48345,15 @@\n \n Hinzuf\u00fcgen des Links qtvcp_plugin.py zum Qt Designer Suchpfad Dann m\u00fcssen Sie einen Link\n zu qtvcp_plugin.py in einem der Ordner hinzuf\u00fcgen, in denen Qt Designer suchen wird.\n In einer RIP (engl. Abk\u00fcrzung von \u201drun in place\u201d, d.h. das Programm started dort wo es durch den\n Quellcode auch kompiliert wurde) Version von LinuxCNC wird qtvcp_plugin.py sein:\n \u2019~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py\u2019\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1107 / 1331\n \n For a Package installed version it should be:\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 Legen Sie einen symbolischen Link auf die obige Datei an und verschieben Sie sie an einen der Orte,\n@@ -48392,15 +48392,15 @@\n \u2022 Wiederholen Sie dies und stellen Sie maximale Gr\u00f6\u00dfe ein.\n Unser Beispiel-Widget ist nun nicht mehr gr\u00f6\u00dfenver\u00e4nderbar.\n Hinzuf\u00fcgen des Widgets ScreenOptions Ziehen Sie das ScreenOptions-Widget per Drag-and-Drop\n an eine beliebige Stelle im Hauptfenster.\n Dieses Widget f\u00fcgt visuell nichts hinzu, richtet aber einige allgemeine Optionen ein.\n Es wird empfohlen, dieses Widget immer vor allen anderen hinzuzuf\u00fcgen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1108 / 1331\n \n Klicken Sie mit der rechten Maustaste auf das Hauptfenster, nicht auf das \u201dScreenOptions\u201d-Widget,\n und stellen Sie \u201dLayout\u201d auf \u201dVertikal\u201d, um \u201dScreenOptions\u201d in voller Gr\u00f6\u00dfe anzuzeigen.\n Add Panel Content Auf der rechten Seite befindet sich ein Panel mit Registerkarten f\u00fcr einen Eigenschaftseditor und einen Objektinspektor.\n Klicken Sie im Objektinspektor auf ScreenOptions.\n@@ -48431,28 +48431,28 @@\n \u2022 Klicken Sie auf das Kontrollk\u00e4stchen f\u00fcr die Aktion \u201dMachine_on\u201d, das Sie in der Liste der Eigenschaften und Werte sehen.\n Die Taste steuert nun das Ein- und Ausschalten der Maschine.\n Machen Sie das Gleiche f\u00fcr alle anderen Schaltfl\u00e4chen und f\u00fcgen Sie noch einen hinzu:\n \u2022 Bei der Schaltfl\u00e4che \u201dHome\u201d m\u00fcssen wir auch die Eigenschaft joint_number auf 1 \u00e4ndern.\n Dadurch wird der Controller angewiesen, alle Achsen und nicht nur eine bestimmte Achse zu referenzieren.\n \u2022 Mit dem Button \u201dPause\u201d:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1109 / 1331\n \n \u2013 Unter der \u00dcberschrift Indicated_PushButton \u00fcberpr\u00fcfen Sie die Indicator_option.\n \u2013 Unter der \u00dcberschrift QAbstactButton markieren Sie checkable.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1110 / 1331\n \n Abbildung 12.67: Qt Designer: Auswahl der Eigenschaften des Pause-Buttons (Schaltfl\u00e4che)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1111 / 1331\n \n .ui-Datei speichern Diesen Entwurf m\u00fcssen wir dann als tester.ui im Ordner sim/qtvcp speichern.\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-Datei\n@@ -48486,15 +48486,15 @@\n \u2022 after the screen is built,\n \u2022 nachdem alle POSTGUI_HALFILEs ausgef\u00fchrt wurden.\n In unserem Beispiel gibt es keine HAL-Pins zu verbinden.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.5.5.1 \u00dcbersicht\n Hier ist ein Beispiel f\u00fcr eine Handler-Datei.\n Es ist in Abschnitte unterteilt, um die Diskussion zu erleichtern.\n ############################\n # **** IMPORT SECTION **** #\n ############################\n@@ -48541,15 +48541,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 1112 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1113 / 1331\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@@ -48600,15 +48600,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -48657,15 +48657,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 1114 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1115 / 1331\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@@ -48700,15 +48700,15 @@\n 12.5.5.5 INITIALIZE Section\n Wie alle Python-Bibliotheken wird die +__init__+-Funktion aufgerufen, wenn die Bibliothek erstmals instanziiert wird.\n Hier k\u00f6nnen Sie Standardwerte, Referenzvariablen und globale Variablen einrichten.\n Die Referenzen der Widgets sind zu diesem Zeitpunkt nicht verf\u00fcgbar.\n Die Variablen halcomp, widgets und paths erm\u00f6glichen den Zugriff auf QtVCP\u2019s HAL-Komponenten,\n Widgets bzw. Pfadinformationen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1116 / 1331\n \n 12.5.5.6 Abschnitt zu BESONDEREN FUNKTIONEN\n Es gibt mehrere special functions, nach denen QtVCP in der Handlerdatei sucht.\n Wenn QtVCP diese findet, ruft es sie auf, wenn nicht, ignoriert es sie stillschweigend.\n class_patch__(self):\n@@ -48748,15 +48748,15 @@\n [1] + The Linux system will not shutdown if using this function, you will have to do\n that yourself. QtVCP/LinuxCNC will terminate without a prompt once this function\n returns.\n closing_cleanup__(self):\n Diese Funktion wird kurz vor dem Schlie\u00dfen des Bildschirms aufgerufen. Sie kann verwendet\n werden, um vor dem Schlie\u00dfen aufzur\u00e4umen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1117 / 1331\n \n 12.5.5.7 STATUS CALLBACKS Abschnitt\n Konventionell w\u00fcrden Sie hier Funktionen unterbringen, die R\u00fcckrufe von STATUS-Definitionen\n sind.\n 12.5.5.8 CALLBACKS FROM FORM Abschnitt\n@@ -48784,15 +48784,15 @@\n \n 12.5.6 Connecting Widgets to Python Code\n Es ist m\u00f6glich, Widgets \u00fcber Signale und Slots mit Python-Code zu verbinden.\n Auf diese Weise k\u00f6nnen Sie:\n \u2022 LinuxCNC-Widgets neue Funktionen geben, oder\n \u2022 Standard Qt-Widgets zur Steuerung von LinuxCNC verwenden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1118 / 1331\n \n 12.5.6.1 \u00dcbersicht\n In the Qt Designer editor:\n \u2022 You create user function slots\n \u2022 Sie verbinden die Slots mit Widgets, indem Sie Signale verwenden.\n@@ -48814,15 +48814,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 Dr\u00fccken Sie die Taste OK.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1119 / 1331\n \n Abbildung 12.68: Qt Designer Signal/Slot Selection\n \n 12.5.6.3 Python Handler Changes\n Nun m\u00fcssen Sie die Funktion in die Handler-Datei einf\u00fcgen.\n@@ -48838,15 +48838,15 @@\n #######################\n \n Tats\u00e4chlich spielt es keine Rolle, wo in der Handler-Klasse Sie die Befehle ablegen, aber per Konvention ist dies der Ort, an dem Sie sie ablegen m\u00fcssen.\n Speichern der Handlerdatei.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1120 / 1331\n \n 12.5.7 Mehr zum Thema\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -48863,25 +48863,25 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1121 / 1331\n \n Abbildung 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 spindle_belts\n This panel is designed to display additional RS485 VFD data and also to configure a 4 sheave, 2 belt\n spindle drive via a series of buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1122 / 1331\n \n In addition, it is also a useful template to use for your custom panel because it includes:\n \u2022 Display of additional HAL data\n \u2022 Buttons and button groups\n \u2022 Dynamic changes to button enabled/disabled state based on the state of other buttons\n@@ -48894,15 +48894,15 @@\n \u2022 A custom component that scales the VFD frequency to obtain the desired spindle speed.\n \u2022 A belt driven spindle that uses two belts and an intermediate idler pulley much like a drill press.\n \u2022 Connect the input pins qtdragon.belts.<pin-name> in your postgui HAL file.\n The belts are broken into two button groups, the front belts and the rear belts. These are numbered as\n per the plate on the machine. Buttons in a group are mutually exclusive, i.e., only one can be selected\n in the group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1123 / 1331\n \n Additionally, it\u2019s not possible to have both belts on the same level with this kind of mechanism because\n you cannot fit two belts to the one idler pulley sheave. So if a belt is selected, its opposite button is\n disabled. E.g., if belt 3 is selected, belt 7 is disabled.\n Add these lines to the [DISPLAY] section in your .ini file\n@@ -48929,15 +48929,15 @@\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 Abbildung 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1124 / 1331\n \n 12.6.1.4 test_button\n \u2022 Dieses Panel hat eine Schaltfl\u00e4che, die einen HAL-Pin setzt.\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@@ -48960,15 +48960,15 @@\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 \u2022 A combobox can be used to automatically select and connect to a pin/signal.\n \u2022 You can add more LEDs from the drop down menu.\n \u2022 The LED can be detached from the main windows.\n Here is how to load test_led from a HAL script:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1125 / 1331\n \n loadusr qtvcp test_led\n loadusr qtvcp -o 4 test_led\n \n The -o switch sets how many LEDs the panel starts with.\n@@ -48976,24 +48976,24 @@\n \n Abbildung 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.7 cam_align\n A camera display widget for rotational alignment.\n \n 1126 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1127 / 1331\n \n Abbildung 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel\n Anwendung Add these lines to the INI file:\n [DISPLAY]\n EMBED_TAB_NAME = cam_align\n@@ -49007,15 +49007,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1128 / 1331\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@@ -49040,95 +49040,95 @@\n If you want to hide both, use a comma between them with no spaces.\n The -a option will make the panel always-on-top of all windows.\n loadusr qtvcp sim_panel\n \n Here we load the panel with no MPG selection buttons and the always-on-top option.\n loadusr qtvcp -a -o hide=groupBoxSelection sim_panel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1129 / 1331\n \n Abbildung 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.9 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 Optionen:\n \u2022 -o notify_on \u0300 - _verwendet Desktop-Notify-Dialoge anstelle der QtVCP-eigenen Dialoge.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1130 / 1331\n \n Abbildung 12.76: QtVCP tool_dialog - Manual Tool Change Dialog\n \n 12.6.2 vismach 3D Simulation Panels\n Diese Tafeln sind vorgefertigte Simulationen g\u00e4ngiger Maschinentypen.\n Diese k\u00f6nnen auch in andere Bildschirme wie AXIS oder GMOCCAPY eingebettet werden.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1131 / 1331\n \n Abbildung 12.77: QtVCP vismach_mill_xyz - 3-Achsen-Fr\u00e4se 3D-Ansichtspanel\n \n 12.6.2.2 QtVCP vismach_router_atc\n 3D OpenGL view of a 3-Axis router style, gantry bed milling machine.\n This particular panel shows how to define and connect the model parts in the handler file, rather then\n importing the pre-built model from QtVCP\u2019s vismach library.\n loadusr qtvcp vismach_router_atc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1132 / 1331\n \n Abbildung 12.78: QtVCP vismach_router_atc - 3-Axis Gantry Bed Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_scara\n 3D-OpenGL-Ansicht einer SCARA-basierten Fr\u00e4smaschine.\n loadusr qtvcp vismach_scara\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.79: QtVCP vismach_scara - SCARA Fr\u00e4se 3D-Ansichtsfenster\n \n 12.6.2.4 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 1133 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Abbildung 12.80: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.5 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 1134 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1135 / 1331\n \n Abbildung 12.81: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1136 / 1331\n \n Abbildung 12.82: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm\n \n 12.6.3 Custom Virtual Control Panels\n Sie k\u00f6nnen nat\u00fcrlich Ihr eigenes Panel erstellen und laden.\n@@ -49152,15 +49152,15 @@\n \n # Komponenten zum Thread hinzuf\u00fcgen\n addf classicladder.0.refresh thread1\n \n # Pins verbinden\n net bit-input1 test_panel.checkbox_1 classicladder.0.in-00\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1137 / 1331\n \n net bit-hide test_panel.checkbox_4 classicladder.0.hide_gui\n net bit-output1\n \n test_panel.led_1\n@@ -49208,15 +49208,15 @@\n There are panels available that are included with LinuxCNC. To see a list open a terminal and type\n qtvcp and press return.\n You will get a help printout and a list of builtin screen and panels.\n Pick any of the names from the panel list and add that to the COMMAND entry after qtvcp.\n The builtin panel search path is share/qtvcp/panels/PANELNAME.\n Run-In-Place and installed versions of LinuxCNC have these in different locations on the system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1138 / 1331\n \n 12.6.4.3 Location of Custom Panels\n Custom panels can be embedded too -either a modified builtin panel or a new user-built one.\n When loading panels, QtVCP looks in the configuration folders path for qtvcp/panels/PANELNAME/PANELNAME.ui.\n PANNELNAME being any valid string with no spaces. If no path is found there, then looks in the builtin file path.\n@@ -49249,15 +49249,15 @@\n If the panel is not embedded, both refer to the panel window.\n 12.6.4.6 Handler Patching - Subclassing Builtin Panels\n We can have QtVCP load a subclassed version of the standard handler file. in that file we can manipulate the original functions or add new ones.\n Subclassing just means our handler file first loads the original handler file and adds our new code on\n top of it - so a patch of changes.\n This is useful for changing/adding behaviour while still retaining standard handler updates from LinuxCNC repositories.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1139 / 1331\n \n You may still need to use the handler copy dialog to copy the original handler file to decide how to\n patch it.\n There should be a folder in the config folder; for panel: named <CONFIG FOLDER>/qtvcp/panels/<PANEL\n NAME>/\n@@ -49296,15 +49296,15 @@\n Es stehen Ihnen alle Standard-Widgets im Qt Designer Editor zur Verf\u00fcgung.\n There are also special widgets made for LinuxCNC that make integration easier. These are split in\n two, heading on the right side of the editor:\n \u2022 Einer ist f\u00fcr nur HAL-Widgets.\n \u2022 Das andere ist f\u00fcr CNC-Steuerungs-Widgets.\n You are free to mix them in any way on your panel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1140 / 1331\n \n Anmerkung\n Diese Beschreibung der Widget-Eigenschaften kann aufgrund der weiteren Entwicklung und des Mangels an Personen, die Dokumentationen schreiben, leicht veraltet sein (eine gute M\u00f6glichkeit, dem\n Projekt etwas zur\u00fcckzugeben). Die endg\u00fcltigen Beschreibungen finden Sie im Quellcode.\n \n@@ -49328,15 +49328,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1141 / 1331\n \n alignment\n Qt-Hinweis zur Ausrichtung.\n state\n Current state of LED\n@@ -49356,15 +49356,15 @@\n This widget allows the user to check a box to set a HAL pin true or false.\n Er basiert auf dem QCheckButton von PyQt.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1142 / 1331\n \n 12.7.1.6 Gauge - Rundes Messuhr-Widget\n \n Abbildung 12.84: QtVCP Gauge: Round Dial Gauge Widget\n Round Gauge kann in einem LinuxCNC GUI verwendet werden, um einen Eingabeparameter auf\n@@ -49385,15 +49385,15 @@\n Dies ist der maximal zu erwartende Wert des Werteingangssignals.\n Mit anderen Worten, es ist der Skalenendwert.\n num_ticks\n Dies ist die Anzahl der Ticks/Anzeigewerte auf der Anzeigefl\u00e4che.\n Sie sollte auf eine Zahl eingestellt werden, die sicherstellt, dass die Textanzeigen auf der Anzeigefl\u00e4che lesbar sind.\n Der minimal zul\u00e4ssige Wert ist 2.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1143 / 1331\n \n zone1_color\n Zone1 erstreckt sich vom maximalen Messwert bis zum Schwellenwert.\n Sie kann auf eine beliebige RGB-Farbe eingestellt werden.\n zone2_color\n@@ -49421,15 +49421,15 @@\n 12.7.1.7 HalBar - HAL Bar Level Indicator\n \n Abbildung 12.85: QtVCP HalBar: Panel demonstrating the HAL Bar Level Indicator\n This widget is used to indicate level or value, usually of a HAL s32/float pin.\n you can also disable the HAL pin and use Qt signals or python commands to change the level.\n HalBar is a subclass of the Bar widget, so it inherits these properties\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1144 / 1331\n \n \u2022 stepColorList: a list of color strings, the number of colors defines the number of bars.\n \u2022 backgroundColor: a QColor definition of the background color.\n \u2022 setMaximum: an integer that defines the maximum level of indication.\n \u2022 setMinimum: an integer that defines the lowest level of indication.\n@@ -49444,15 +49444,15 @@\n In style sheets, stepColorList is a single string of color names separated by commas.\n \n HalBar{\n qproperty-backgroundColor: #000;\n qproperty-stepColorList: \u2019green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red \u2190,red\u2019;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1145 / 1331\n \n 12.7.1.8 HALPad - HAL Buttons Joypad\n \n Abbildung 12.86: QtVCP HALPad: HAL Buttons Joypad\n Dieses Widget sieht aus und funktioniert wie ein 5-Tasten-D-Pad, mit einem LED-Ring.\n@@ -49468,15 +49468,15 @@\n \u2013 BOTTOM\n \u2013 LEFTRIGHT\n \u2013 TOPBOTTOM\n \u2022 F\u00fcr HAL-Pins Typ:\n \u2013 NONE\n \u2013 BIT\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1146 / 1331\n \n \u2013 S32\n \u2013 FLOAT\n Sie verwenden den Namen des Widgets im Qt Designer plus die Referenzkonstante:\n self.w.halpadname.set_highlight(self.w.halpadname.LEFTRIGHT)\n@@ -49517,15 +49517,15 @@\n Mit diesem Widget kann der Benutzer einen HAL-Pin per Tastendruck auf \u201dtrue\u201d oder \u201dfalse\u201d\n setzen.\n As an option it can be a toggle button.\n For a LED Indicator Option, see Abschnitt 12.7.5.1[IndicatedPushButton] below for more info.\n Es gibt auch andere Optionen.\n It is based on PyQt\u2019s QPushButton.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1147 / 1331\n \n 12.7.1.10 focusOverlay - Focus Overlay Widget\n Dieses Widget legt ein farbiges Overlay \u00fcber den Bildschirm, normalerweise w\u00e4hrend ein Dialog\n angezeigt wird.\n \n@@ -49534,15 +49534,15 @@\n Informationen zu lenken.\n Es kann auch ein durchsichtiges Bild anzeigen.\n Es kann auch Nachrichtentext und Schaltfl\u00e4chen anzeigen.\n Dieses Widget kann mit \u201aSTATUS\u2018-Meldungen gesteuert werden.\n 12.7.1.11 gridLayout - Grid Layout Widget\n This widget controls if the widgets inside it are enabled or disabled.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1148 / 1331\n \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.12 hal_label - HAL Label Widget\n This widget displays values sent to it.\n@@ -49572,15 +49572,15 @@\n Es gibt Funktionsaufrufe zur Anzeige von Werten:\n [HALLabelName].setDisplay(some_value)\n Can be used to set the display if no HAL pin is selected.\n [HALLabelName].setProperty(textTemplate,\u201d%d\u201d)\n Sets the template of the display.\n Es basiert auf PyQts QLabel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1149 / 1331\n \n 12.7.1.13 LCDNumber - Widget zum Auslesen der LCD-Stilnummer\n Dieses Widget zeigt HAL-Float/S32/Bit-Werte in einer LCD-\u00e4hnlichen Form an.\n Es kann Zahlen im Dezimal-, Hexadezimal-, Bin\u00e4r- und Oktalformat anzeigen, indem es die Eigenschaft\n Modus setzt.\n@@ -49613,15 +49613,15 @@\n 12.7.1.15 GeneralHALInput - General Signals/Slots Input Connection Widget\n This widget is used to connect an arbitrary Qt widget to HAL using signals/slots.\n It is used for widgets that should respond to HAL pin changes.\n 12.7.1.16 GeneralHALOutput - General Signals/Slots Output Connection Widget\n This widget is used to connect an arbitrary Qt widget to HAL using signals/slots.\n It is used for widgets that should control HAL pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1150 / 1331\n \n 12.7.1.17 WidgetSwitcher - Multi-widget Layout View Switcher Widget\n This is used to switch the view of a multi-widget layout to show just one widget, i.e. to flip between\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@@ -49654,15 +49654,15 @@\n Diese Tasten werden f\u00fcr Steuerungsaktionen an der Maschinensteuerung verwendet.\n Sie sind auf IndicatedPushButton aufgebaut und k\u00f6nnen daher mit LEDs \u00fcberlagert werden.\n Anmerkung\n If you left double click on this widget you can launch a dialog to set any of these actions. The dialogs\n will help to set the right related data to the selected action. You can also change these properties\n directly in the property editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Aktionen You can select one of these:\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@@ -49702,15 +49702,15 @@\n feed override\n Festlegen Sie die float/alt-Gleitkommanummer.\n rapid override\n Festlegen Sie die float/alt-Gleitkommanummer.\n \n 1151 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1152 / 1331\n \n spindle override\n Festlegen Sie die float/alt-Gleitkommanummer.\n spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change\n Set view_type_string.\n@@ -49748,15 +49748,15 @@\n \u2022 zoom-in, zoom-out,\n \u2022 pan-up, pan-down, pan-left, pan-right,\n \u2022 rotate-up, rotate-down, rotate-cw, rotate-ccw\n \u2022 clear.\n command string\n MDI command string that will be invoked if the MDI command action is selected.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1153 / 1331\n \n ini_mdi_number\n Ein Verweis auf den Abschnitt [MDI_COMMAND_LIST] der _INI-Datei.\n Setzen Sie einen Integer, der eine Zeile unter der INI-Zeile [MDI_COMMAND] ausw\u00e4hlt, beginnend\n bei 0.\n@@ -49789,15 +49789,15 @@\n to switch to the recorded position. If it is not as you like, modify its existing position and re-record.\n \n 12.7.2.3 RoundButton - Round Shapped ActionButton Widget\n Round buttons work the same as ActionButtons other than the button is cropped round.\n They are intended only to be visually different.\n They have two path properties for displaying images on true and false.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1154 / 1331\n \n 12.7.2.4 AxisToolButton - Select and Set Axis Widget\n This allows one to select and set an axis.\n If the button is set checkable, it will indicate which axis is selected.\n If you press and hold the button a pop up menu will show allowing one to:\n@@ -49829,15 +49829,15 @@\n metric_template\n Format of display, e.g. %10.3f.\n imperial_template\n format of display, e.g. %9.4f.\n angular_template\n Format of display, e.g. %Rotational: 10.1f.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1155 / 1331\n \n Das DROLabel-Widget enth\u00e4lt eine Eigenschaft isHomed, die mit einem Stylesheet verwendet werden\n kann, um die _Farbe des DRO_Label basierend auf dem Homing-Status der Gelenknummer in LinuxCNC zu \u00e4ndern.\n Here is a sample stylesheet entry that:\n \u2022 Sets the font of all DRO_Label widgets,\n@@ -49873,15 +49873,15 @@\n auto_show_mdi_status\n Setzen Sie true, damit das Widget im MDI-Modus in den MDI-Verlauf wechselt.\n auto_show_manual_status\n Setzen Sie true, damit das Widget im manuellen Modus auf das Maschinenprotokoll umschaltet.\n The GcodeDisplay properties can be set in a stylesheet with the following code added to the .qss file\n (the following color choices are random).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1156 / 1331\n \n EditorBase{\n qproperty-styleColorBackground: lightblue;\n qproperty-styleColor0: black;\n qproperty-styleColor1: #000000; /* black */\n@@ -49922,15 +49922,15 @@\n highlighted if there are more than one on the same line.\n \n Schriftdefinitionen:\n \u201dstyle name, size, -1, 0, bold setting (0-99), italics (0-1),\n underline (0-1),0,0,0\u201d\n Es basiert auf PyQts QsciScintilla.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Abbildung 12.88: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n@@ -49944,15 +49944,15 @@\n }\n GCodeGraphics{\n qproperty-dro_large_font:\u201dTimes 25\u201d;\n }\n \n 1157 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1158 / 1331\n \n _view (string)\n Sets the default view orientation on GUI load.\n Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.\n The following shows an example of how to set this property (referenced using the widget user\n@@ -50000,15 +50000,15 @@\n _small_origin (bool)\n Legt fest, ob standardm\u00e4\u00dfig der kleine Ursprung angezeigt wird.\n Das folgende Beispiel zeigt, wie diese Eigenschaft festgelegt wird:\n #gcodegraphics{\n qproperty-_small_origin: False;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1159 / 1331\n \n overlay_color (Prim\u00e4r-, Sekund\u00e4r- oder RGBA-formatierte Farbe)\n Legt die Standard-Overlayfarbe fest.\n Im Folgenden wird ein Beispiel f\u00fcr die Einstellung dieser Eigenschaft gezeigt:\n #gcodegraphics{\n@@ -50053,15 +50053,15 @@\n InhibitControls (bool)\n Legt fest, ob externe Steuerelemente standardm\u00e4\u00dfig gesperrt werden sollen oder nicht.\n Im Folgenden wird ein Beispiel f\u00fcr die Einstellung dieser Eigenschaft gezeigt:\n #gcodegraphics{\n qproperty-InhibitControls:True;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1160 / 1331\n \n MouseButtonMode (int)\n \u00c4ndert das Verhalten der Maustaste zum Drehen, Verschieben oder Zoomen innerhalb der Vorschau.\n Im Folgenden wird ein Beispiel f\u00fcr die Einstellung dieser Eigenschaft gezeigt:\n #gcodegraphics{\n@@ -50148,15 +50148,15 @@\n \u2022 zoom-in\n \u2022 zoom-out\n \u2022 pan-up\n \u2022 pan-down\n \u2022 pan-right\n \u2022 pan-left\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1161 / 1331\n \n \u2022 rotate-cw\n \u2022 rotate-ccw\n \u2022 rotate-up\n \u2022 rotate-down\n@@ -50191,15 +50191,15 @@\n Sie k\u00f6nnen zwischen verschiedenen Texten w\u00e4hlen, die auf wahr oder falsch basieren.\n Eigenschaften der Zustandsauswahl Die Zust\u00e4nde sind \u00fcber diese Eigenschaften w\u00e4hlbar:\n css_mode_status\n True, wenn sich die Maschine in G96 befindet Constant Surface Speed Mode.\n diameter_mode_status\n True, wenn sich die Maschine in G7 befindet Drehmaschine Durchmesser Modus.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1162 / 1331\n \n fpr_mode_status\n True, wenn die Maschine im G95 Vorschub je Umdrehung Modus (engl. Feed per Revolution\n Mode) ist.\n metric_mode_status\n@@ -50238,15 +50238,15 @@\n current_FPU_status\n Shows the current actual feed per unit.\n fcode_status\n Shows the current programmed F code setting.\n feed_override_status\n Shows the current feed override setting in percent.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1163 / 1331\n \n filename_status\n Zeigt den Namen der zuletzt geladenen Datei an.\n filepath_status\n Shows the last loaded full file path name.\n@@ -50285,15 +50285,15 @@\n \u2022 Arc\n \u2022 Tool Change\n \u2022 Probe\n \u2022 Rotary Index\n requested_spindle_speed_status\n Shows the requested spindle speed - actual may be different.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1164 / 1331\n \n rapid_override_status\n Shows the current rapid override setting in (0-100) percent.\n spindle_override_status\n Zeigt die aktuelle Spindel-Override-Einstellung in Prozent an.\n@@ -50329,15 +50329,15 @@\n Typical template used for formatting imperial float numbers to text would be %9.4f or %9.4f inch.\n alt_textTemplate\n This is usually used for metric (G21) numerical settings.\n This uses Python formatting rules to set the text output.\n Typical template used for formatting metric float to text would be %10.3f or %10.3f mm.\n Es basiert auf PyQts QLabel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1165 / 1331\n \n 12.7.2.12 StatusImageSwitcher - Controller Status Image Switcher\n Status image switcher will switch between images based on LinuxCNC states.\n *watch_spindle\n Wechselt zwischen 3 Bildern: stop, fwd, revs.\n@@ -50351,15 +50351,15 @@\n \n Abbildung 12.89: 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 If you double click the image_list a dialog will show and allow you to add image paths to.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1166 / 1331\n \n If you have one image as an icon and one clear image then that will look like it shows and hides the\n icon.\n Selecting image paths can be done by selecting the pixmap property and selecting an image.\n Anmerkung\n@@ -50391,15 +50391,15 @@\n 12.7.2.15 ScreenOption - General Options Setting widget\n This widget doesn\u2019t add anything visually to a screen but sets up important options.\n This is the preferred way to use these options.\n Eigenschaften These properties can be set in Qt Designer, in Python handler code or (if appropriate)\n in stylesheets.\n These include:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1167 / 1331\n \n halCompBaseName\n If left empty QtVCP will use the screen\u2019s name as the HAL component\u2019s basename.\n If set, QtVCP will use this string as the HAL component\u2019s basename.\n If the -c command line option is used when loading QtVCP, it will use the name specified on the\n@@ -50442,15 +50442,15 @@\n Farbe der transparenten Ebene, die angezeigt wird, wenn der Nachrichtendialog eingeblendet\n wird.\n closeDialog_option\n Richtet den Standarddialog zum Schlie\u00dfen des Bildschirms ein.\n entryDialog_option\n Richtet den numerischen Eingabedialog ein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1168 / 1331\n \n entryDialogSoftKey_option\n Richtet eine schwebende Softwaretastatur ein, wenn der Eingabedialog fokussiert ist.\n entry_overlay_color\n Farbe der transparenten Ebene, die angezeigt wird, wenn der Eingabedialog angezeigt wird.\n@@ -50490,15 +50490,15 @@\n Richtet das Dialogfeld f\u00fcr die Anzeige/Editierung des Ursprungs ein.\n originOffset_overlay_color\n Farbe der transparenten Ebene, die angezeigt wird, wenn der originOffset-Dialog angezeigt\n wird.\n calculatorDialog_option\n Sets up the calculator entry dialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1169 / 1331\n \n calculator_overlay_color\n Farbe der transparenten Ebene, die angezeigt wird, wenn das Dialogfeld \u201dRechner\u201d angezeigt\n wird.\n machineLogDialog_option\n@@ -50541,15 +50541,15 @@\n you would need to make the changes in Qt Designer only.\n Eintr\u00e4ge in der Einstellungsdatei Wenn die Option Voreinstellungsdatei ausgew\u00e4hlt ist, erstellt\n das Widget screenOption eine INI-basierte Voreinstellungsdatei.\n W\u00e4hrend andere QtVCP Widgets diese Liste erg\u00e4nzen, f\u00fcgt das screenOptions Widget diese Eintr\u00e4ge\n unter den folgenden \u00dcberschriften hinzu:\n [SCREEN_OPTIONS]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1170 / 1331\n \n catch_errors (bool) , desktop_notify (bool)\n Whether to display errors/messages in the system\u2019s notification mechanism.\n notify_max_msgs (int)\n Anzahl der angezeigten Fehler zu einem Zeitpunkt.\n@@ -50590,15 +50590,15 @@\n Kurzer Titelstring.\n Wenn die Option \u201dSprechen\u201d ebenfalls ausgew\u00e4hlt ist, wird der Titel mit Espeak gesprochen.\n notify_start_detail (str)\n L\u00e4ngere Zeichenfolge zur Beschreibung.\n notify_start_timeout (int)\n Zeit in Sekunden bis zur Anzeige vor dem Schlie\u00dfen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1171 / 1331\n \n *_sound_type Eintr\u00e4ge\n \u2022 System Sounds\n In Debian/Ubuntu/Mint based installations these system sounds should be available as sound-type\n entries above:\n@@ -50632,15 +50632,15 @@\n \u2022 Eilgang \u00dcbersteuerungsrate (engl. rapid override rate)\n Eigenschaften StatusSlider has the following properties:\n halpin_option\n Sets option to make a HAL float pin that reflects current value.\n rapid_rate\n Selects a rapid override rate slider.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1172 / 1331\n \n feed_rate\n Selects a feed override rate slider.\n spindle_rate\n Selects a spindle override rate slider.\n@@ -50677,15 +50677,15 @@\n It is based on PyQt\u2019s QSlider.\n 12.7.2.17 StateLED - Controller-Status-LED-Widget\n This widget gives status on the selected LinuxCNC state.\n States Die Statusoptionen sind:\n \n is_paused_status , is_estopped_status , is_on_status , is_idle_status_ , is_homed_status , is_fl\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1173 / 1331\n \n Eigenschaften Es gibt Eigenschaften, die ge\u00e4ndert werden k\u00f6nnen:\n halpin_option\n F\u00fcgt einen Ausgangspin hinzu, der den ausgew\u00e4hlten Zustand wiedergibt.\n invert_state_status\n@@ -50731,15 +50731,15 @@\n \u2022 Jog rate\n \u2022 Winkel-Jog-Rate\n \u2022 Vorschubgeschwindigkeit\n \u2022 Spindel-Override-Rate\n \u2022 Eilgang \u00dcbersteuerungsrate (engl. rapid override rate)\n It is based on PyQt\u2019s QProgressBar.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1174 / 1331\n \n 12.7.2.19 SystemToolButton - Widget zur Auswahl des Benutzersystems\n This widget allows you to manually select a G5x user system by pressing and holding.\n Wenn Sie den Text der Schaltfl\u00e4che nicht festlegen, wird sie automatisch auf das aktuelle System\n aktualisiert.\n@@ -50755,15 +50755,15 @@\n SUBROUTINE_PATH =\n \n Die Makros sind O-Wort-Unterprogramme mit speziellen Kommentaren f\u00fcr die Zusammenarbeit\n mit dem Launcher. Die ersten drei Zeilen m\u00fcssen die untenstehenden Schl\u00fcsselw\u00f6rter enthalten, die\n vierte ist optional.\n Hier ist ein Beispiel f\u00fcr die ersten vier Zeilen einer O-Word-Datei:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1175 / 1331\n \n ; MACROCOMMAND = Entry1,Entry2\n ; MACRODEFAULTS = 0,true\n ; MACROIMAGE = my_image.svg,Icon layer number,Macro layer number\n ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros\n@@ -50804,15 +50804,15 @@\n _macro_image_.(png|jpg)\n Name der Bilddatei des Makros als erstes Feld.\n Es wird davon ausgegangen, dass sich die Bilddatei im selben Ordner befindet wie das Makro.\n _icon_image_.(png|jpg)\n Icon image file name as optional second field.\n If the second entry is missing the same image will be used for macro and image.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1176 / 1331\n \n Wenn das Schl\u00fcsselwort vorhanden ist, aber die Eintr\u00e4ge fehlen, werden keine Bilder verwendet.\n MACROOPTIONS Diese optionale Zeile muss die vierte Zeile in der O-Wort-Datei sein.\n Es handelt sich um eine durch Kommata getrennte Liste von Schl\u00fcsselw\u00f6rtern und Daten:\n LOAD:yes\n@@ -50848,15 +50848,15 @@\n \u2022 Beispiel: net plasmac:jog-inhibit motion.jog-stop\n setp\n Sets den Wert eines Pins oder einer parameter.\n G\u00fcltige Werte h\u00e4ngen vom Objekttyp des Pins oder Parameters ab.\n Dies f\u00fchrt zu einem Fehler, wenn die Datentypen nicht \u00fcbereinstimmen oder der Pin mit einem\n Signal verbunden ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1177 / 1331\n \n \u2022 Syntax: setp <Pin/Parameter-Name> <Wert>\n \u2022 Beispiel: setp plasmac.resolution 100\n unlinkp\n Trennt einen Pin von einem Signal.\n@@ -50872,15 +50872,15 @@\n 12.7.2.22 MDIHistory - MDI-Befehlsverlaufs-Widget\n Zeigt eine scrollbare Liste vergangener MDI-Befehle an.\n An edit line is embedded for MDI commands. The same MDILine embedded commands may be accessed from this widget.\n Der Verlauf wird in einer Datei aufgezeichnet, die in der INI unter der \u00dcberschrift [DISPLAY] definiert\n ist (dies ist die Standardeinstellung):\n MDI_HISTORY_FILE = \u2019~/.axis_mdi_history\u2019\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1178 / 1331\n \n 12.7.2.23 MDITouchy - Touchscreen-MDI-Eingabe-Widget\n \n Abbildung 12.91: QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget\n Dieses Widget zeigt Buttons und Eingabezeilen f\u00fcr die Eingabe von MDI-Befehlen an.\n@@ -50893,15 +50893,15 @@\n \u2022 Calc \u00f6ffnet einen Taschenrechnerdialog.\n \u2022 Clear clears the current entry.\n \u2022 Set Tool will call for a tool change.\n \u2022 Set Origin will allow setting the origin of the current G6x system.\n \u2022 Macro will call any available macro ngc programs.\n The widget requires an explicit call to MDITouchy Python code to actually run the MDI command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1179 / 1331\n \n \u2022 For handler file code\n If the widget was named mditouchy in Qt Designer, the command below would run the displayed\n MDI command:\n self.w.mditouchy.run_command()\n@@ -50936,15 +50936,15 @@\n Parameters you leave empty are passed as value 0.\n Wenn es mehrere verschiedene Makros gibt, dr\u00fccken Sie wiederholt die Makrotaste, um sie zu durchlaufen.\n Wenn Sie in diesem einfachen Beispiel -1 f\u00fcr xinc eingeben und die Ausf\u00fchrung des MDI-Zyklus aufrufen, wird eine schnelle G0-Bewegung ausgel\u00f6st, die eine Einheit nach links geht.\n Diese Makrofunktion ist n\u00fctzlich f\u00fcr das Antasten von Kanten/L\u00f6chern und andere Einrichtungsaufgaben sowie vielleicht f\u00fcr das Fr\u00e4sen von L\u00f6chern oder andere einfache Operationen, die vom Bedienfeld\n aus durchgef\u00fchrt werden k\u00f6nnen, ohne dass speziell geschriebene G-Code-Programme erforderlich\n sind.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1180 / 1331\n \n 12.7.2.24 OriginOffsetView - Ursprungsansicht und Einstellungs-Widget\n \n Abbildung 12.92: QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget\n Dieses Widget erm\u00f6glicht es, Offsets von Benutzer-spezifizierten Urspr\u00fcngen direkt zu visualisieren und zu \u00e4ndern.\n@@ -50957,15 +50957,15 @@\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 Typical actions might be Clear Current User offsets or Zero X.\n Clicking on the columns and rows allows one to adjust the settings.\n A dialog can be made to popup for data or text entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n The comments section will be recorded in the preference file.\n Es basiert auf PyQt\u2019s QTableView, QAbstractTableModel, und ItemEditorFactory.\n Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verf\u00fcgbar.\n Eigenschaften OriginOffsetView has the following properties:\n dialog_code_string\n Sets which dialog will pop up with numerical entry.\n@@ -50999,15 +50999,15 @@\n \u2022 All-homed\n It is based on PyQt\u2019s QGridLayout.\n 12.7.2.26 MachineLog - Machine Events Journal Display Widget\n FIXME MachineLog documentation\n \n 1181 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.2.27 JointEnableWidget - FIXME\n FIXME JointEnableWidget documentation\n 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget\n Dieses Widget wird Bilder basierend auf dem LinuxCNC-Status anzeigen.\n You can watch:\n \u2022 the state of the spindle,\n@@ -51017,15 +51017,15 @@\n It is based on PyQt\u2019s FIXME\n 12.7.2.29 FileManager - File Loading Selector Widget\n \n Abbildung 12.93: QtVCP FileManager: File Loading Selector Widget\n \n 1182 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1183 / 1331\n \n This widget is used to select files to load.\n Sie verf\u00fcgt \u00fcber die M\u00f6glichkeit, die Namen mit Hardware wie einem Handger\u00e4t (engl. MPG) zu\n kennzeichnen.\n One can class patch the function load(self,fname) to customize file loading.\n@@ -51053,15 +51053,15 @@\n qproperty-showListView: True;\n }\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1184 / 1331\n \n 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget\n \n Abbildung 12.94: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget\n This widget displays and allows one to modify tools offsets.\n@@ -51085,15 +51085,15 @@\n Eigenschaften ToolOffsetView hat Eigenschaften, die im Qt Designer, im Python-Handler-Code oder\n (falls zutreffend) in Stylesheets eingestellt werden k\u00f6nnen:\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1185 / 1331\n \n metric_template\n Metric numerical data format.\n imperial_template\n Imperial numerical data format.\n@@ -51123,24 +51123,24 @@\n Hebt die Markierung aller ausgew\u00e4hlten Werkzeuge auf.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.2.32 BasicProbe - Einfaches Fr\u00e4s-Tast-Widget\n \n Abbildung 12.95: QtVCP BasicProbe: Einfaches Fr\u00e4s-Tast-Widget\n Widget zum Sondieren auf einer Fr\u00e4se. Wird vom QtDragon-Bildschirm verwendet.\n \n 1186 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1187 / 1331\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Abbildung 12.96: QtVCP VersaProbe: Mill Probing Widget\n Widget zum Sondieren auf einer Fr\u00e4se. Wird vom QtDragon-Bildschirm verwendet.\n@@ -51157,15 +51157,15 @@\n To set this up, first register to catch the general message from STATUS:\n STATUS.connect(\u2019general\u2019,self.return_value)\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1188 / 1331\n \n It is possible to add extra user information to the message. The dialog will ignore these and pass\n them back.\n NAME\n Launches code name of dialog to show.\n@@ -51207,15 +51207,15 @@\n Urspr\u00fcnglicher versteckter Text.\n TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME\n Noch nicht implementiert.\n FOCUSTEXT (overlay text|None)\n Text, der angezeigt werden soll, wenn das Fokus-Overlay verwendet wird. Verwenden Sie None\n f\u00fcr keinen Text.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1189 / 1331\n \n FOCUSCOLOR (QColor(_R, G, B, A_))\n Farbe, die verwendet werden soll, wenn das Fokus-Overlay verwendet wird.\n PLAYALERT\n Abzuspielender Ton, falls vorhanden, z.B. SPEAK <Spoken_message> .\n@@ -51229,15 +51229,15 @@\n Es verf\u00fcgt \u00fcber HAL Pins, die mit dem controller der Maschine verbunden werden k\u00f6nnen. Die Pins\n haben den gleichen Namen wie die urspr\u00fcngliche AXIS manuelle Werkzeugeingabeaufforderung und\n funktionieren gleich.\n Der Werkzeugwechsel-Dialog kann nur \u00fcber HAL-Pins aufgerufen werden.\n Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.\n Sie basiert auf der QMessagebox von PyQt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1190 / 1331\n \n 12.7.3.3 FileDialog - Dialog Widget zum Laden und Speichern von Dateien\n \n Abbildung 12.98: QtVCP FileDialog: Widget f\u00fcr das Laden und Speichern von Dateien\n Dies wird zum Laden von G-Code-Dateien verwendet.\n@@ -51251,15 +51251,15 @@\n mess = {\u2019NAME\u2019:\u2019LOAD\u2019,\u2019ID\u2019:\u2019_MY_DIALOG_\u2019,\n \u2019TITLE\u2019:\u2019Load Some text File\u2019,\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1191 / 1331\n \n Und f\u00fcr einen Speicherdialog\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@@ -51271,15 +51271,15 @@\n 12.7.3.4 OriginOffsetDialog - Dialogfeld-Widget f\u00fcr die Einstellung des Ursprungsversatzes\n \n Abbildung 12.99: QtVCP OriginOffsetDialog: Widget zur Einstellung des Ursprungsversatzes\n Mit diesem Widget kann man die Nullpunktverschiebung des Benutzersystems direkt in einem\n Dialogformular \u00e4ndern.\n Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1192 / 1331\n \n Bei Verwendung der request-dialog-Funktion von STATUS ist der standardm\u00e4\u00dfige Startname ORIGINOFFSET\n Es basiert auf PyQts QDialog.\n 12.7.3.5 ToolOffsetDialog - Dialogfenster-Widget zur Einstellung des Werkzeugversatzes\n \n@@ -51301,61 +51301,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 Es basiert auf PyQts QDialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1193 / 1331\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Abbildung 12.101: 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 Es basiert auf PyQts QDialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Abbildung 12.102: QtVCP RunFromLine: Run-From-Line Dialog Widget\n Dialog to preset spindle settings before running a program from a specific line.\n Es basiert auf PyQts QDialog.\n \n 1194 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1195 / 1331\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Abbildung 12.103: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget\n This is a dialog to display a part probing screen based on Verser Probe v2.\n Es basiert auf PyQts QDialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1196 / 1331\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Abbildung 12.104: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget\n This is a dialog to display the machine log and QtVCP\u2019s debugging log.\n Es basiert auf PyQts QDialog.\n \n 12.7.4 Other Widgets\n Other available widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1197 / 1331\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Abbildung 12.105: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -51364,15 +51364,15 @@\n Es basiert auf PyQts 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1198 / 1331\n \n There are also input slots to change the color of the indicator(s).\n ENUMS Es gibt aufgez\u00e4hlte Konstanten, die zur Referenzierung von Indikatorpositionen verwendet werden.\n Sie werden im Eigenschaftseditor des Qt Designer-Editors oder im Python-Code verwendet.\n NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A\n@@ -51408,15 +51408,15 @@\n setLight(_state_)\n Setzt den Highlight-Indikator auf die Farbe True oder False.\n Die Funktion set_highlight() muss vorher verwendet werden, um den zu verwendenden Indikator zu setzen.\n Signale 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1199 / 1331\n \n joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo\n \n Sie basieren auf PyQt\u2019s Signal (QtCore.pyqtSignal())\n Slots Slots k\u00f6nnen im Qt Designer-Editor oder in Python-Code verbunden werden:\n@@ -51451,15 +51451,15 @@\n qproperty-false_color: #444;\n }\n \n \u2022 In Python handler code:\n self.w.joypadename.setProperty(\u2019true_color\u2019,\u2019green\u2019)\n self.w.joypadename.setProperty(\u2019false_color\u2019,\u2019red\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1200 / 1331\n \n 12.7.4.3 WebWidget\n This widget will create a html/pdf viewing page using the QtWebKit or QtWebEngine libraries. The\n newer QtWebEngine is preferred if both are on the system.\n If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in\n@@ -51487,15 +51487,15 @@\n Die Farbe der LED-Anzeige kann in einem stylesheet definiert werden, indem der folgende Code zur\n .qss-Datei hinzugef\u00fcgt wird:\n Indicated_PushButton{\n qproperty-on_color: #000;\n qproperty-off_color: #444;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1201 / 1331\n \n Oder f\u00fcr einen bestimmten Button:\n Indicated_PushButton #button_estop{\n qproperty-on_color: black;\n qproperty-off_color: yellow;\n@@ -51530,15 +51530,15 @@\n \u2022 is_on_status schaltet die Eigenschaft isStateOn um\n \u2022 is_manual_status, is_mdi_status, is_auto_status schalten die Eigenschaften isManual,\n isMDI, und isAuto um.\n \u2022 is_homed_status schaltet die Eigenschaft isAllHomed um\n Hier ist ein Beispiel-Stylesheet-Eintrag, der den Hintergrund von Mode-Button-Widgets festlegt, wenn\n sich LinuxCNC in diesem Modus befindet:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1202 / 1331\n \n ActionButton[isManual=true] {\n background: red;\n }\n ActionButton[isMdi=true] {\n@@ -51576,15 +51576,15 @@\n false_python_cmd_string\n Ein Python-Befehl, der aufgerufen wird, wenn die Schaltfl\u00e4che auf False umgeschaltet wird.\n Besondere W\u00f6rter in Gro\u00dfbuchstaben geben Zugang zu den folgenden Informationen:\n INSTANCE\n Erm\u00f6glicht den Zugriff auf die Instanzen der Widgets und die Handler-Funktionen.\n Z.B.: INSTANCE.my_handler_function_call(True)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1203 / 1331\n \n ACTION\n Erm\u00f6glicht den Zugriff auf die ACTION Bibliothek von QtVCP.\n Z.B. ACTION.TOGGLE_FLOOD()\n PROGRAM_LOADER\n@@ -51604,15 +51604,15 @@\n 12.7.6.2 G-Code Dienstprogramm\n Widgets for performing common machining processes.\n 12.7.6.3 Facing\n Slab or face a definable area with different strategies.\n 12.7.6.4 Loch-Kreis (engl. hole circle)\n Drill multiple holes on a bolt hole circle.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1204 / 1331\n \n 12.7.6.5 Qt NGCGUI\n \n QtVCP\u2019s version of NGC subroutine selector (Shown as used in QtDragon).\n LinuxCNC needs to know where to look to run the subroutines.\n@@ -51639,15 +51639,15 @@\n \u2022 CREATE FEATURE - add feature to the list\n \u2022 RESTART FEATURE - remove all features from the list\n \u2022 FINALIZE GCODE - create the full G-code and send it to LinuxCNC/a file\n You can create your own subroutines for use with NGCGUI. They must follow these rules:\n \u2022 Um ein Unterprogramm f\u00fcr die Verwendung mit NGCGUI zu erstellen, m\u00fcssen der Dateiname und\n der Name des Unterprogramms identisch sein.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1205 / 1331\n \n \u2022 The subroutine must be in a folder within LinuxCNC\u2019s INI designated search path.\n \u2022 On the first line there may be a comment of type info:\n \u2022 The subroutine must be surrounded by the sub and endsub tags.\n \u2022 Die verwendeten Variablen m\u00fcssen nummerierte Variablen sein und d\u00fcrfen keine Nummer \u00fcberspringen.\n@@ -51665,15 +51665,15 @@\n 12.7.6.7 Qt Vismach\n Verwenden Sie dies, um OpenGl simulierte Maschinen zu erstellen/hinzuzuf\u00fcgen.\n \n 12.8 QtVCP Libraries modules\n Libraries are prebuilt Python modules that give added features to QtVCP. In this way you can\n select what features you want - yet don\u2019t have to build common ones yourself.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1206 / 1331\n \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@@ -51709,15 +51709,15 @@\n Wenn LinuxCNC in Zustand \u201dmachine off\u201d ist, wird die Funktion self.on_state_off aufgerufen.\n \u2022 These would call functions that looks like these:\n def on_state_on(self, status_object):\n print(\u2019LinuxCNC machine is on\u2019)\n def on_state_off(self):\n print(\u2019LinuxCNC machine is off\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.8.2 Info\n Info is a library to collect and filter data from the INI file.\n 12.8.2.1 Verf\u00fcgbare Daten und Voreinstellungen\n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n@@ -51764,15 +51764,15 @@\n AVAILABLE_SPINDLES = int(self.INI.find(\u201dTRAJ\u201d, \u201dSPINDLES\u201d) or 1)\n DEFAULT_SPINDLE_0_SPEED = 200\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_0_OVERRIDE = 100\n \n 1207 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1208 / 1331\n \n MIN_SPINDLE_0_OVERRIDE = 50\n MAX_FEED_OVERRIDE = 1.5\n MAX_TRAJ_VELOCITY\n \n@@ -51811,15 +51811,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.core import Info\n \n \u2022 Instantiate Info module.\n Add this Python code to your instantiate section:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1209 / 1331\n \n ###########################################\n # **** BIBLIOTHEKEN INSTANZIIEREN **** #\n ###########################################\n INFO = Info()\n@@ -51855,15 +51855,15 @@\n \n \u2022 Access ACTION commands\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -51904,15 +51904,15 @@\n ACTION.SET_FLOOD_OFF()\n ACTION.TOGGLE_MIST()\n ACTION.SET_MIST_ON()\n ACTION.SET_MIST_OFF()\n \n 1210 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.RELOAD_TOOLTABLE()\n ACTION.UPDATE_VAR_FILE()\n ACTION.TOGGLE_OPTIONAL_STOP()\n ACTION.SET_OPTIONAL_STOP_ON()\n ACTION.SET_OPTIONAL_STOP_OFF()\n ACTION.TOGGLE_BLOCK_DELETE()\n@@ -51949,15 +51949,15 @@\n This will return a Python list of information on the requested tool number.\n GET_TOOL_ARRAY()\n This return a single Python list of Python lists of tool information.\n This is a raw list formed from the system tool file.\n \n 1211 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1212 / 1331\n \n ADD_TOOL(_newtool_ = [_-99, 0,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019,\u20190\u2019, 0,\u2019New Tool\n This will return a Python tuple of two Python lists of Python lists of tool information:\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@@ -51991,15 +51991,15 @@\n 12.8.5.1 Referenzierte Pfade\n \n PATH.PREFS_FILENAME\n The preference file path.\n PATH.WORKINGDIR\n The directory QtVCP was launched from.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n PATH.IS_SCREEN\n Is this a screen or a VCP?\n PATH.CONFIGPATH\n Launched configuration folder.\n PATH.RIPCONFIGDIR\n The Run-in-place config folder for QtVCP screens.\n@@ -52037,15 +52037,15 @@\n PATH.LOCALEDIR\n Ordner f\u00fcr \u00dcbersetzungen.\n PATH.DOMAIN\n Translation domain.\n \n 1213 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1214 / 1331\n \n 12.8.5.2 Helpers\n Es sind einige Hilfsfunktionen verf\u00fcgbar:\n file_list = PATH.find_vismach_files()\n directory_list = PATH.find_screen_dirs()\n@@ -52080,15 +52080,15 @@\n \n \u2022 Instantiate VCPWindow module+ Add this Python code to your instantiate section:\n ###########################################\n # **** BIBLIOTHEKEN INSTANZIIEREN **** #\n ###########################################\n WIDGETS = VCPWindow()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1215 / 1331\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 12.8.7.1 Helpers\n \n@@ -52125,15 +52125,15 @@\n Load onboard/Matchbox keyboard\n AUX_PRGM.keyboard_onboard(<ARGS>)\n \n 12.8.7.2 Anwendung\n \u2022 Import Aux_program_loader module\n Add this Python code to your import section:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1216 / 1331\n \n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.lib.aux_program_loader import Aux_program_loader\n@@ -52169,15 +52169,15 @@\n \n In der Handler-Datei, unter der initialisierten Funktion verwenden Sie diese allgemeine Syntax, um\n Tastenbindungen zu erstellen:\n KEYBIND.add_call(\u201dDEFINED_KEY\u201d,\u201dFUNCTION TO CALL\u201d, USER DATA)\n \n Hier f\u00fcgen wir eine Tastenbindung f\u00fcr F10, F11 und F12 hinzu:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1217 / 1331\n \n ##########################################\n # Spezielle Funktionen, die von QtVCP aufgerufen werden\n ##########################################\n # zu diesem Zeitpunkt:\n@@ -52227,15 +52227,15 @@\n Qt.Key_PageDown: \u201dKey_PageDown\u201d,\n Qt.Key_Shift: \u201dKey_Shift\u201d,\n Qt.Key_Control: \u201dKey_Control\u201d,\n Qt.Key_Meta: \u201dKey_Meta\u201d,\n # Qt.Key_Alt: \u201dKey_Alt\u201d,\n Qt.Key_AltGr: \u201dKey_AltGr\u201d,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_CapsLock: \u201dKey_CapsLock\u201d,\n Qt.Key_NumLock: \u201dKey_NumLock\u201d,\n Qt.Key_ScrollLock: \u201dKey_ScrollLock\u201d,\n Qt.Key_F1: \u201dKey_F1\u201d,\n Qt.Key_F2: \u201dKey_F2\u201d,\n Qt.Key_F3: \u201dKey_F3\u201d,\n@@ -52294,15 +52294,15 @@\n Qt.Key_Plus: \u201dKey_Plus\u201d,\n Qt.Key_Comma: \u201dKey_Comma\u201d,\n Qt.Key_Minus: \u201dKey_Minus\u201d,\n Qt.Key_Period: \u201dKey_Period\u201d,\n \n 1218 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Slash: \u201dKey_Slash\u201d,\n Qt.Key_0: \u201dKey_0\u201d,\n Qt.Key_1: \u201dKey_1\u201d,\n Qt.Key_2: \u201dKey_2\u201d,\n Qt.Key_3: \u201dKey_3\u201d,\n Qt.Key_4: \u201dKey_4\u201d,\n@@ -52344,15 +52344,15 @@\n _DETAIL\n Text hidden unless clicked on.\n _PINNAME\n Basename of the HAL pin(s).\n \n 1219 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1220 / 1331\n \n _TYPE\n Gibt an, ob es sich um Folgendes handelt: Status message - shown in the status bar and the\n notify dialog.\n Requires no user intervention. OK message - requiring the user to click OK to close the dialog.\n@@ -52394,15 +52394,15 @@\n \n 12.8.10 Notify\n Notify module is used to send messages that are integrated into the desktop.\n Es verwendet die pynotify Bibliothek.\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1221 / 1331\n \n Ubuntu/Mint folgt nicht dem Standard, so dass man nicht einstellen kann, wie lange die Meldung\n angezeigt wird.\n Ich schlage vor, dies mit dem Paket notify-osd zu beheben, das unter dieses PPA verf\u00fcgbar ist (DISCONTINUED aufgrund der Umstellung von Ubuntu auf Gnome).\n Notify erh\u00e4lt eine Liste aller Alarmmeldungen seit dem Start in self.alarmpage.\n@@ -52438,15 +52438,15 @@\n \u2022 play sounds using the beep library (currently blocks while beeping),\n \u2022 speak words using the espeak library (non blocking while speaking).\n Es gibt Standard-Warnt\u00f6ne, die Mint oder FreeDesktop-Standardsounds verwenden.\n Sie k\u00f6nnen beliebige Sounds oder sogar Songs abspielen, indem Sie den Pfad angeben.\n STATUS hat Nachrichten zur Steuerung des Player-Moduls.\n Das Widget ScreenOptions kann automatisch das Audiosystem einrichten.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1222 / 1331\n \n 12.8.12.1 T\u00f6ne (engl. sounds)\n Alarmsignale Es gibt Standard-Warnungen zur Auswahl:\n \u2022 ERROR\n \u2022 READY\n@@ -52480,15 +52480,15 @@\n 12.8.12.3 Beispiel\n To play sounds upon STATUS messages, use these general syntaxes:\n STATUS.emit(\u2019play-alert\u2019,\u2019LOGOUT\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019BEEP\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019SPEAK This is a test screen for Q t V C P\u2019)\n STATUS.emit(\u2019play-sound\u2019, \u2019PATH TO SOUND\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1223 / 1331\n \n 12.8.13 Virtuelle Tastatur\n Diese Bibliothek erm\u00f6glicht es Ihnen, mit STATUS-Nachrichten eine virtuelle Tastatur zu starten.\n It uses Onboard or Matchbox libraries for the keyboard.\n \n@@ -52514,15 +52514,15 @@\n ############################\n from qtvcp.lib.toolbar_actions import ToolBarActions\n ###########################################\n **** Bibliotheken instanziieren Abschnitt **** #\n ###########################################\n TOOLBAR = ToolBarActions()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1224 / 1331\n \n 12.8.14.4 Beispiele\n \u2022 Assigning Tool Actions To Toolbar Buttons\n ##########################################\n # Spezielle Funktionen, die von QtVCP aufgerufen werden\n@@ -52561,15 +52561,15 @@\n \u2022 a 3-Axis mill with an A axis/spindle, and\n \u2022 a scara mill.\n Most of these samples, if loaded after a running LinuxCNC configuration (including non-QtVCP based\n screens), will react to machine movement.\n Some require HAL pins to be connected for movement.\n From a terminal (pick one):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1225 / 1331\n \n qtvcp vismach_mill_xyz\n qtvcp vismach_scara\n qtvcp vismach_millturn\n qtvcp vismach_5axis_gantry\n@@ -52606,15 +52606,15 @@\n toolshape = CylinderZ(0)\n toolshape = Color([1, .5, .5, .5], [toolshape])\n tool = Collection([\n Translate([HalTranslate([tooltip], None, \u201dmotion.tooloffset.z\u201d, 0, 0, - \u2190MODEL_SCALING)], 0, 0, 0),\n HalToolCylinder(toolshape)\n ])\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1226 / 1331\n \n Track\n Move and rotate an object to point from one capture() \u2019d coordinate system to another.\n Base object to hold coordinates for primitive shapes.\n CylinderX, CylinderY, CylinderZ\n@@ -52648,15 +52648,15 @@\n \n Color\n Applies a color to the parts of a collection.\n \n AsciiSTL, AsciiOBJ\n Loads a STL or OBJ data file as a Vismach part.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1227 / 1331\n \n 12.8.15.3 Anwendung\n Import a simulation Here is how one might import the XYZ_mill simulation in a QtVCP panel or\n screen handler file.\n ############################\n@@ -52686,30 +52686,30 @@\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 Einf\u00fchrung\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1228 / 1331\n \n Abbildung 12.107: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\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 A Vismach model takes the form of a Python script and can use standard Python syntax.\n This means that there is more than one way to lay out the script, but in the examples given in this\n document the simplest and most basic of them will be used.\n The basic sequence in creating the Vismach model is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1229 / 1331\n \n 1. Create the parts\n 2. Define how they move\n 3. Assemble into movement groups\n \n@@ -52778,15 +52778,15 @@\n |\n |---tool\n |\n |---tooltip\n |\n |---(tool cylinder function)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1230 / 1331\n \n As you can see, the lowest parts must exist first before those can be grouped with others into an\n assembly. So you build upwards from lowest point in tree and assemble them together.\n The same is applicable for any design of machine: look at the machine arm example and you will see\n that it starts with the tip and adds to the larger part of the arm, then it finally groups with the base.\n@@ -52823,15 +52823,15 @@\n part = AsciiOBJ(data=\u201dv 0.123 0.234 0.345 1.0 ...\u201d)\n \n \u2022 STL model parts are added to the Vismach space in the same locations as they were created in the\n STL or OBJ space, i.e. ideally with a rotational point at their origin.\n Anmerkung\n It is much easier to move while building if the origin of the model is at a rotational pivot point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1231 / 1331\n \n 12.9.5.2 Aufbau aus geometrischen Primitiven\n Alternativ k\u00f6nnen Teile auch im Modellskript aus einer Reihe von Formprimitiven erstellt werden.\n Viele Formen werden am Ursprung erstellt und m\u00fcssen nach der Erstellung an den gew\u00fcnschten Ort\n verschoben werden.\n@@ -52865,15 +52865,15 @@\n Parts may need to be moved in the Vismach space to assemble the model. The origin does not move Translate() and Rotate() move the Collection as you add parts, relative to a stationary origin. M\u00f6glicherweise m\u00fcssen sie auch verschoben werden, um die Animation zu erstellen, da die Drehachse der\n Animation am Ursprung erstellt wird (aber sich mit dem Teil bewegt).\n 12.9.6.1 Translating Model parts\n \n part1 = Translate([part1], x, y, z)\n Verschiebe Teil1 um die angegebenen Abst\u00e4nde in x, y und z.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1232 / 1331\n \n 12.9.6.2 Rotating Model Parts\n \n part1 = Rotate([part1], theta, x, y, z)\n Rotate the part by angle theta [degrees] about an axis between the origin and x, y, z.\n@@ -52909,15 +52909,15 @@\n fixed at this point by using 0.3937 ( = 1 cm/1 inch = 1 cm /2.54 cm ) as the scale.\n 12.9.7.2 HalRotate\n \n part = HalRotate([part], hal_comp, hal_pin, angle_scale, x, y, z)\n This command is similar in its operation to HalTranslate, except that it is typically necessary to\n move the part to the origin first to define the axis.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1233 / 1331\n \n x, y, z\n Defines the axis of rotation from the origin the point of coordinates (x,y,z).\n When the part is moved back away from the origin to its correct location, the axis of rotation\n can be considered to remain \u201dembedded\u201d in the part.\n@@ -52952,15 +52952,15 @@\n \u2022 Erstellen Sie den Hauptteil des Kopfes.\n \u2022 Erstellen Sie die Spindel im Ursprung.\n \u2022 Definieren Sie die Drehung.\n \u2022 Bewegen Sie den Kopf zur Spindel oder die Spindel zum Kopf.\n \u2022 Create the draw bar.\n \u2022 Define the motion of the draw bar.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1234 / 1331\n \n \u2022 Bauen Sie die drei Teile zu einer Kopfeinheit zusammen.\n \u2022 Definieren Sie die Bewegung der Kopfeinheit.\n In diesem Beispiel wird die Spindeldrehung durch die Drehung eines Satzes von Mitnehmern angezeigt:\n #Drive dogs\n@@ -53001,15 +53001,15 @@\n Beachten Sie, dass im Gegensatz zu den anderen Funktionen, die Definition des Teils in diesem\n Fall an zweiter Stelle steht.\n \n _colorspec_\n Drei RGB-Werte und Deckkraft.\n Zum Beispiel [1,0,0,0.5] f\u00fcr ein Rot mit 50% Deckkraft.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1235 / 1331\n \n myhud = Hud()\n Erzeugt ein Heads-up-Display in der Vismach-GUI, um Elemente wie Achsenpositionen, Titel oder\n Meldungen anzuzeigen.\n myhud = Hud()\n@@ -53053,15 +53053,15 @@\n Y = Color([0, 1, 0, 1], [Y])\n Z = CylinderZ(-500,1,500,1)\n Z = Color([0, 0, 1, 1], [Z])\n origin = Collection([X,Y,Z])\n \n Add it to the Window class Collection so it is never moved from the origin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1236 / 1331\n \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@@ -53105,15 +53105,15 @@\n v.tool2view = tooltip\n v.world2view = world\n v.work2view = work\n mainLayout = QHBoxLayout()\n mainLayout.addWidget(self.glWidget)\n self.setLayout(mainLayout)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1237 / 1331\n \n # Wenn Sie diese Datei direkt aus Python3 aufrufen, wird ein PyQt5-Fenster angezeigt.\n # das sich gut eignet, um die Teile der Baugruppe zu best\u00e4tigen.\n if __name__ == \u2019__main__\u2019:\n main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215)\n@@ -53137,15 +53137,15 @@\n In Qt Designer, auf der linken Seite des Editors, finden Sie drei Kategorien von LinuxCNC Widgets:\n \u2022 HAL only widgets.\n \u2022 LinuxCNC-Controller-Widgets.\n \u2022 Dialog-Widgets.\n Damit Qt Designer benutzerdefinierte Widgets zu seinem Editor hinzuf\u00fcgen kann, muss ein Plugin\n zum richtigen Ordner hinzugef\u00fcgt werden.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1238 / 1331\n \n 12.10.1.3 Initialization Process\n QtVCP macht extra setup f\u00fcr Widgets, die Spezialisierungen (Unterklassen) von _HALWidgetBase\n sind, auch bekannt als \u201dHAL-ified\u201d Widgets.\n This includes:\n@@ -53175,15 +53175,15 @@\n self.PATHS_\n Die Instanz der QtVCP-Pfadbibliothek\n self.PREFS_\n Die optionale Instanz der Einstellungsdatei\n self.SETTINGS_\n Die Qsettings Objektinstanz\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1239 / 1331\n \n 12.10.1.4 Aufr\u00e4um-Prozess\n Wenn QtVCP geschlossen wird, ruft es die +_hal_cleanup()+ Funktion auf allen HAL-ifizierten Widgets auf.\n Die Basisklasse erstellt eine leere Funktion +_hal_cleanup()+, die in der Unterklasse des benutzerdefinierten Widgets neu definiert werden kann.\n Damit k\u00f6nnen Sie z. B. Pr\u00e4ferenzen aufzeichnen usw.\n@@ -53256,15 +53256,15 @@\n #\n \n y\n 2y\n 3y\n 1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n y\n \n 1\n \n y\n \n@@ -53322,15 +53322,15 @@\n STATUS.connect(\u2019state-estop-reset\u2019, lambda w:self._flip_state(False))\n elif self.is_on:\n STATUS.connect(\u2019state-on\u2019, lambda w:self._flip_state(True))\n STATUS.connect(\u2019state-off\u2019, lambda w:self._flip_state(False))\n def _flip_state(self, data):\n if self.invert_state:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1241 / 1331\n \n data = not data\n self.change_state(data)\n #########################################################################\n # Qt Designer properties setter/getters/resetters\n@@ -53391,15 +53391,15 @@\n \n LED, weil unser benutzerdefiniertes Widget darauf basiert,\n \n 1\n \n 2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n y\n \n 3\n \n 1242 / 1331\n \n@@ -53475,15 +53475,15 @@\n if self.is_estopped:\n STATUS.connect(\u2019state-estop\u2019, lambda w:self._flip_state(True))\n STATUS.connect(\u2019state-estop-reset\u2019, lambda w:self._flip_state(False))\n elif self.is_on:\n STATUS.connect(\u2019state-on\u2019, lambda w:self._flip_state(True))\n STATUS.connect(\u2019state-off\u2019, lambda w:self._flip_state(False))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1243 / 1331\n \n This function connects STATUS (LinuxCNC status message library) to our widget, so that the LED will\n on or off based on the selected state of the controller.\n Wir haben zwei Zust\u00e4nde, zwischen denen wir w\u00e4hlen k\u00f6nnen: is_estopped oder is_on.\n Je nachdem, welcher Zustand aktiv ist, wird unser Widget mit den entsprechenden STATUS-Meldungen\n@@ -53525,15 +53525,15 @@\n strippen.\n Es erlaubte auch die Verwendung, um self._flip_state() den Zustand True zu senden.\n def _flip_state(self, data):\n if self.invert_state:\n data = not data\n self.change_state(data)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1244 / 1331\n \n Dies ist die Funktion, die den Zustand der LED tats\u00e4chlich umschaltet.\n Sie wird aufgerufen, wenn die entsprechende STATUS-Meldung akzeptiert wird.\n STATUS.connect(\u2019current-feed-rate\u2019, self._set_feedrate_text)\n \n@@ -53577,15 +53577,15 @@\n \n Dies ist die Registrierung von Eigenschaften in Qt Designer.\n Der Eigenschaftsname:\n \u2022 ist der Text, der in Qt Designer verwendet wird,\n \u2022 kann nicht mit den Attributen identisch sein, die sie darstellen.\n Diese Eigenschaften werden im Qt Designer in der Reihenfolge angezeigt, in der sie hier erscheinen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1245 / 1331\n \n 12.10.4 Benutzerdefinierte Controller-Widgets mit Aktionen\n Hier ist ein Beispiel f\u00fcr ein Widget, welches das Benutzerreferenzsystem festlegt.\n It changes:\n \u2022 den Zustand der Maschinensteuerung mit Hilfe der Bibliothek ACTION,\n@@ -53630,15 +53630,15 @@\n STATUS.connect(\u2019interp-idle\u2019, lambda w: self.setEnabled(homed_on_test()))\n STATUS.connect(\u2019interp-run\u2019, lambda w: self.setEnabled(False))\n STATUS.connect(\u2019all-homed\u2019, lambda w: self.setEnabled(True))\n STATUS.connect(\u2019not-all-homed\u2019, lambda w, data: self.setEnabled(False))\n STATUS.connect(\u2019interp-paused\u2019, lambda w: self.setEnabled(True))\n STATUS.connect(\u2019user-system-changed\u2019, self._set_user_system_text)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1246 / 1331\n \n def G54(self):\n ACTION.SET_USER_SYSTEM(\u201954\u2019)\n def G55(self):\n ACTION.SET_USER_SYSTEM(\u201955\u2019)\n@@ -53678,15 +53678,15 @@\n Es ist m\u00f6glich, Widgets bei Ereignis\u00e4nderungen neu zu gestalten. Sie m\u00fcssen das Widget explizit\n _\u201dpolieren\u201d, damit PyQt den Stil wiederherstellt.\n Dies ist eine relativ teure Funktion und sollte daher sparsam verwendet werden.\n Dieses Beispiel setzt eine \u201disHomed\u201d-Eigenschaft basierend auf dem \u201dhomed\u201d-Zustand von LinuxCNC\n und verwendet diese wiederum, um Stylesheet-Eigenschaften zu \u00e4ndern:\n This example will set the property isHomed based on LinuxCNC\u2019s homed state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1247 / 1331\n \n class HomeLabel(QLabel, _HalWidgetBase):\n def __init__(self, parent=None):\n super(HomeLabel, self).__init__(parent)\n self.joint_number = 0\n@@ -53732,15 +53732,15 @@\n def getFont0(self):\n return self.aleternateFont0\n def setFont0(self, value):\n self.alternateFont0(value)\n # Qproperty\n styleFont0 = pyqtProperty(QFont, getFont0, setFont0)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1248 / 1331\n \n Beispiel-Stylesheet, das eine benutzerdefinierte Widget-Eigenschaft festlegt.\n Label{\n qproperty-styleFont0: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n }\n@@ -53785,15 +53785,15 @@\n def isContainer(self):\n return True\n def domXml(self):\n return \u2019<widget class=\u201dLcnc_GridLayout\u201d name=\u201dlcnc_gridlayout\u201d />\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.simple_widgets\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1249 / 1331\n \n 12.10.7.2 SystemToolbutton Example\n #!/usr/bin/env python3\n from PyQt5 import QtCore, QtGui\n from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin\n@@ -53842,15 +53842,15 @@\n from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin, \\\n QPyDesignerTaskMenuExtension, QExtensionFactory, \\\n QDesignerFormWindowInterface, QPyDesignerMemberSheetExtension\n from qtvcp.widgets.action_button import ActionButton\n from qtvcp.widgets.qtvcp_icons import Icon\n ICON = Icon()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1250 / 1331\n \n Q_TYPEID = {\n \u2019QDesignerContainerExtension\u2019:\n \u2019org.qt-project.Qt.Designer.Container\u2019,\n \u2019QDesignerPropertySheetExtension\u2019: \u2019org.qt-project.Qt.Designer.PropertySheet\u2019,\n@@ -53897,15 +53897,15 @@\n # Returns a short description of the custom widget for use in a \u201dWhat\u2019s\n # This?\u201d help message for the widget.\n def whatsThis(self):\n return \u201d\u201d\n # Returns True if the custom widget acts as a container for other widgets;\n def isContainer(self):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n return False\n # Returns an XML description of a custom widget instance that describes\n # default values for its properties.\n def domXml(self):\n return \u2019<widget class=\u201dActionButton\u201d name=\u201dactionbutton\u201d />\\n\u2019\n # Returns the module containing the custom widget class. It may include\n@@ -53946,15 +53946,15 @@\n def preferredEditAction(self):\n return self.editStateAction\n def taskActions(self):\n return [self.editStateAction]\n \n 1251 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1252 / 1331\n \n def updateOptions(self):\n dialog = ActionButtonDialog(self.widget)\n dialog.exec_()\n class ActionButtonTaskMenuFactory(QExtensionFactory):\n@@ -53989,15 +53989,15 @@\n \n 12.11.2 Use QSettings To Read/Save Variables\n Here is how to load and save variables using PyQt\u2019s QSettings functions:\n Good practices\n \u2022 Use Group to keep names organized and unique.\n \u2022 Account for none value returned when reading a setting which has no entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1253 / 1331\n \n \u2022 Set defaults to cover the first time it is run using the or _<default_value>_ syntax.\n Anmerkung\n The file is actually saved in ~/.config/QtVcp\n \n@@ -54031,15 +54031,15 @@\n KEYBIND.add_call(\u2019Key_F12\u2019,\u2019on_keycall_F12\u2019)\n \n Erstellen Sie die tastengebundene Funktion im KEYBINDING SECTION:\n def on_keycall_F12(self,event,state,shift,cntrl):\n if state:\n STYLEEDITOR.load_dialog()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1254 / 1331\n \n 12.11.4 Dialog-Eintrag anfordern\n QtVCP uses STATUS messages to pop up and return information from dialogs.\n Prebuilt dialogs keep track of their last position and include options for focus shading and sound.\n To get information back from the dialog requires using a STATUS general message.\n@@ -54078,15 +54078,15 @@\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 This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog. In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we\n know the message is for us. ENTRY or CALCULATOR dialogs return a float number.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1255 / 1331\n \n 12.11.5 Sprechen Sie eine Startup-Begr\u00fc\u00dfung\n This requires the espeak library installed on the system.\n Import and instantiate the Status in the IMPORT section\n from qtvcp.core import Status\n@@ -54119,15 +54119,15 @@\n \u2022 Aktionsnamen m\u00fcssen actionAbout, actionQuit, actionMyFunction sein\n L\u00e4dt die Bibliothek toolbar_actions in die IMPORT SECTION\n from qtvcp.lib.toolbar_actions import ToolBarActions\n \n Instanziieren Sie das Modul ToolBarActions im Abschnitt INSTANTIATE LIBRARY SECTION\n TOOLBAR = ToolBarActions()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1256 / 1331\n \n Konfigurieren Sie Untermen\u00fcs und Aktionen im Abschnitt \u201dBESONDERE FUNKTIONEN\u201d\n Under the def initialized__(self) function add:\n TOOLBAR.configure_submenu(self.w.menuRecent, \u2019recent_submenu\u2019)\n TOOLBAR.configure_action(self.w.actionAbout, \u2019about\u2019)\n@@ -54172,15 +54172,15 @@\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 self.w.filemanager.load()\n elif tab == self.w.tab_mdi:\n self.w.mditouchy.run_command()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1257 / 1331\n \n Diese Funktion geht davon aus, dass es ein Tab-Widget mit dem Namen mainTab gibt, das Tabs mit\n den Namen tab_auto, tab_graphics, tab_filemanager und tab_mdi hat.\n Auf diese Weise funktioniert der Zyklusstart-Button je nach angezeigter Registerkarte unterschiedlich.\n Dies ist vereinfacht - Zustandskontrolle und Fehlerverfolgung k\u00f6nnten hilfreich sein.\n@@ -54219,15 +54219,15 @@\n \u2022 Nennen Sie ihn \u201dbtn_toggle_continuous\u201d.\n \u2022 Setzen Sie die Eigenschaft AbstractButton checkable auf True.\n \u2022 Setzen Sie die Eigenschaften ActionButton incr_imperial_number und incr_mm_number auf 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 See Using Qt Designer To Add Slots section for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1258 / 1331\n \n Dann f\u00fcgen Sie diesen Code-Schnipsel in die Handler-Datei unter der Funktion initialized__ ein:\n # zu diesem Zeitpunkt:\n # sind die Widgets instanziiert.\n # die HAL-Pins sind gebaut, aber HAL ist nicht bereit\n@@ -54273,15 +54273,15 @@\n We can \u201dclass patch\u201d the library to redirect the function call. In the IMPORT SECTION add:\n from qtvcp.widgets.file_manager import FileManager as FM\n \n Here we are going to:\n 1. Behalten Sie einen Verweis auf die urspr\u00fcngliche Funktion (1), damit wir sie weiterhin aufrufen\n k\u00f6nnen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1259 / 1331\n \n 2. Leiten Sie die Klasse um, damit sie stattdessen unsere benutzerdefinierte Funktion (2) in der\n Handler-Datei aufruft.\n ##########################################\n # Special Functions called from QtVCP\n@@ -54334,15 +54334,15 @@\n #####################\n def our_load(self,fname):\n print(fname)\n self.w.filemanager.super__load(fname)\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1260 / 1331\n \n 12.11.11 Adding Widgets Programmatically\n In manchen Situationen ist es nur m\u00f6glich, Widgets mit Python-Code hinzuzuf\u00fcgen, anstatt den Qt\n Designer-Editor zu verwenden.\n Wenn QtVCP-Widgets programmatisch hinzugef\u00fcgt werden, m\u00fcssen manchmal zus\u00e4tzliche Schritte\n@@ -54380,15 +54380,15 @@\n ########################\n # Widgets allow 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.w = widgets\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1261 / 1331\n \n self.PATHS = paths\n STATUS.connect(\u2019actual-spindle-speed-changed\u2019, \\\n lambda w,speed: self.update_spindle(speed))\n \n@@ -54476,15 +54476,15 @@\n Referenz.\n 2y 2y\n ,\n Da die Zustands-LED f\u00fcr viele Anzeigen verwendet werden kann, m\u00fcssen wir die Eigenschaft\n einstellen, die sie als LED f\u00fcr die Spindeldrehzahl kennzeichnet.\n 1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n y\n \n 3\n \n y\n \n@@ -54581,15 +54581,15 @@\n \n 2\n \n #\n #\n #\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1263 / 1331\n \n 12.11.12 Objekte periodisch aktualisieren/auslesen\n Manchmal muss man ein Widget aktualisieren oder regelm\u00e4\u00dfig einen Wert auslesen, der von\n den normalen Bibliotheken nicht abgedeckt wird.\n Here we update an LED based on a watched HAL pin every 100 ms.\n@@ -54627,15 +54627,15 @@\n \n 12.11.13 External Control With ZMQ\n QtVCP kann automatisch ein ZMQ-Messaging einrichten, um Remote-Nachrichten von externen Programmen zu senden und/oder zu empfangen.\n It uses ZMQ\u2019s publish/subscribe messaging pattern.\n Wie immer sollte man die Sicherheit im Auge behalten, bevor man Programmen eine Schnittstelle\n f\u00fcr Nachrichten\u00fcbermittlung einr\u00e4umt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1264 / 1331\n \n 12.11.13.1 ZMQ Messages Reading\n Manchmal m\u00f6chte man den Bildschirm mit einem separaten Programm steuern.\n Aktivieren des Empfangs von ZMQ-Nachrichten Im Widget ScreenOptions k\u00f6nnen Sie die Eigenschaft use_receive_zmq_option ausw\u00e4hlen.\n Sie k\u00f6nnen diese Eigenschaft auch direkt in der Handler-Datei einstellen, wie in diesem Beispiel.\n@@ -54689,15 +54689,15 @@\n \n #\n \n y\n \n 2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1265 / 1331\n \n if __name__ == \u2019__main__\u2019:\n while True:\n print(\u2019send message 1\u2019)\n socket.send_multipart([topic, bytes((m1).encode(\u2019utf-8\u2019))])\n@@ -54743,15 +54743,15 @@\n # This could be any Python object JSON can convert\n message = {\u201dname\u201d: \u201dJohn\u201d, \u201dage\u201d: 30}\n self.w.screen_options.send_zmq_message(message)\n \n Verwenden oder erstellen Sie ein Programm, das ZMQ-Nachrichten empfangen kann Hier ist\n ein Beispielprogramm, das die Nachricht empf\u00e4ngt und auf dem Terminal ausgibt:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1266 / 1331\n \n import zmq\n import json\n # ZeroMQ Context\n context = zmq.Context()\n@@ -54792,15 +54792,15 @@\n STATUS.emit(\u2019error\u2019, STATUS.OPERATOR_ERROR, \u2019message\u2019)\n \n You can send messages thru LinuxCNC\u2019s operator message functions. These are usually caught by the\n notify system, so are equal to above. They would be printed to the terminal as well.\n ACTION.SET_DISPLAY_MESSAGE(\u2019MESSAGE\u2019)\n ACTION.SET_ERROR_MESSAGE(\u2019MESSAGE\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1267 / 1331\n \n 12.11.15 Fokus\u00e4nderungen abfangen\n Der Fokus wird verwendet, um Benutzeraktionen wie Tastatureingaben auf das richtige Widget zu\n lenken.\n Aktuell fokussiertes Widget abrufen\n@@ -54843,15 +54843,15 @@\n what is accepted and what to do with it.\n Example code to get -o options for camera number and window size\n def initialized__(self):\n # set a default camera number\n number = 0\n # check if there are any -o options at all\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1268 / 1331\n \n if self.w.USEROPTIONS_ is not None:\n # if in debug mode print the options to the terminal\n LOG.debug(\u2019cam_align user options: {}\u2019.format(self.w.USEROPTIONS_))\n # go through the found options one by one\n@@ -54890,15 +54890,15 @@\n \u2022 to load and control a screen/panel that displays Qt widgets and\n \u2022 to control LinuxCNC\u2019s motion controller or HAL pins.\n There are builtin screens and panels, easily loaded by a user, or users can build/modify one of their\n own.\n QtVCP uses libraries and custom widgets to hide some of the complexity of interfacing to LinuxCNC.\n By using QtVCP\u2019s library rather than LinuxCNC\u2019s, we can mitigate minor LinuxCNC code changes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1269 / 1331\n \n 12.12.2 Builtin Locations\n Builtin screens and panels are stored in separate folders:\n \u2022 Screens in share/qtvcp/screens\n \u2022 Panels in share/qtvcp/panels\n@@ -54926,15 +54926,15 @@\n and QtVCP now polls for events.\n 12.12.3.2 QtVCP Herunterfahren (engl. shutdown)\n Wenn QtVCP schlie\u00dflich zum Herunterfahren aufgefordert wird:\n 1. Sie ruft die Abschaltfunktionen in der Handler-Datei auf,\n 2. STATUS monitoring is shut down\n 3. HAL component gets killed\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1270 / 1331\n \n 12.12.4 Path Information\n When QtVCP loads it collects paths information.\n This is available in the handler file\u2019s +__init__()+ function as path:\n IMAGEDIR\n@@ -54966,15 +54966,15 @@\n These try to cover non-obvious situations.\n 12.12.5.1 Error Code Collecting\n LinuxCNC\u2019s error code collecting can only be read from one place.\n Wenn es gelesen wird, ist es konsumiert, d.h. kein anderes Objekt kann es lesen.\n In QtVCP screens, it is recommended to use the ScreenOptions widget to set up error reading.\n Errors are then sent to other objects via STATUS signals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1271 / 1331\n \n 12.12.5.2 Jog Rate\n LinuxCNC has no internal record of jog rate: you must specify it at the time of jogging.\n QtVCP uses the STATUS library to keep track of the latest linear and angular jog rates.\n It is always specified in machine units per minute and must be converted when in non-machine\n@@ -55009,15 +55009,15 @@\n self.HAL_NAME\n This widget\u2019s name as a string\n self.QT_OBJECT_\n dieses Widgets PyQt-Objekt als Instanz\n self.QTVCP_INSTANCE_\n Die \u00fcbergeordnete Ebene des Bildschirms\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1272 / 1331\n \n self.PATHS_\n Die _Instanz der Pfadbibliothek von QtVCP\n self.PREFS_\n The instance of an optional preference file\n@@ -55032,15 +55032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1273 / 1331\n \n Kapitel 13\n \n Programmierung der Benutzeroberfl\u00e4che\n 13.1 Panelui\n@@ -55064,15 +55064,15 @@\n Mit diesem Befehl kann man die INI-Datei validieren:\n loadusr pyui\n \n Damit wird die Datei panelui.ini gelesen, versucht zu korrigieren und dann gespeichert. Eventuelle\n Fehler werden diese auf dem Terminal ausgegeben.\n Einer typischen HAL-Datei werden diese Befehle hinzugef\u00fcgt:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1274 / 1331\n \n # Befehle, die f\u00fcr das Laden von Panelui ben\u00f6tigt werden\n #\n # sampler wird f\u00fcr panelui ben\u00f6tigt\n # cfg= muss f\u00fcr panelui immer u sein. depth legt den verf\u00fcgbaren Puffer fest\n@@ -55113,15 +55113,15 @@\n \u2022 TRUE_COMMAND= legt den Befehl und die Argumente fest, die aufgerufen werden, wenn der\n Button TRUE ist.\n \u2022 FALSE_COMMAND= legt den Befehl und die Argumente fest, die aufgerufen werden, wenn der\n Button FALSE ist.\n \u2022 TRUE_FUNCTION= legt die ZMQ-Nachrichtenfunktion und Argumente fest, die aufgerufen werden\n sollen, wenn der Button TRUE ist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1275 / 1331\n \n \u2022 FALSE_FUNCTION= legt die ZMQ-Nachrichtenfunktion und die Argumente fest, die aufgerufen\n werden sollen, wenn der Button FALSE ist.\n HAL Prefix\n [HAL_PREFIX]\n@@ -55174,15 +55174,15 @@\n # It has a S32 output of its own, will be 20 on true and 0 on false.\n # It also has a status pin which will follow its current state.\n # since this button is in a group, DEFAULT has no bearing.\n # since OUTPUT in not \u2019COMMAND\u2019 _COMMAND entries are ignored.\n [[[large]]]\n KEY = R0C2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1276 / 1331\n \n GROUP = group1_name\n GROUP_OUTPUT = 1000\n OUTPUT = S32\n STATUS_PIN = True\n@@ -55234,15 +55234,15 @@\n DEFAULT = FALSE\n TRUE_STATE = 1\n FALSE_STATE = 0\n \n 13.1.4 \u00dcbersicht zu Internen Anweisungen\n Es gibt eine Reihe von internen Befehlen, die Sie verwenden k\u00f6nnen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1277 / 1331\n \n home_selected\n \u2022 erforderliches Argument: Achsennummer (int)\n unhome_selected\n \u2022 erforderliches Argument: Achsennummer (int)\n@@ -55269,15 +55269,15 @@\n set_angular_jog_velocity\n \u2022 erforderliches Argument: Geschwindigkeit in Grad pro Minute (Float)\n \u2022 Beschreibung: Setzt die Jog-Geschwindigkeit auf Achse 3,4,5 (A.B.C)\n continuous_jog\n \u2022 required arguments: axis number (int), direction (int)\n incremental_jog\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1278 / 1331\n \n \u2022 required arguments: axis number (int), direction (int), distance (float)\n quill_up\n \u2022 optional arguments: machine Z axis absolute position (float)\n \u2022 Beschreibung: Z-Achse auf die angegebene Maschinenposition fahren\n@@ -55304,15 +55304,15 @@\n mdi_and_return\n \u2022 erforderliches Argument: G-Code-Befehl(e)\n \u2022 Beschreibung: Zeichnet den aktuellen Modus auf, ruft Befehle auf und kehrt dann zum Modus zur\u00fcck.\n mdi\n \u2022 erforderliches Argument: G-Code-Befehl(e)\n \u2022 Beschreibung: Setzt den Modus auf MDI, ruft Befehle auf.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1279 / 1331\n \n 13.1.5 ZMQ-Nachrichten\n Panelui can send ZMQ based messages on button presses.\n In this way panelui can interact will other programs such as QtVCP screens.\n [TOGGLE_BUTTONS]\n@@ -55357,15 +55357,15 @@\n # This will be pretty standard to gain access to everything\n # linuxcnc_stat: is the python status instance of LinuxCNC\n # linuxcnc_cmd: is the python command instance of LinuxCNC\n # commands: is the command instance so one can call the internal routines\n # master: give access to the master functions/data\n def __init__(self, linuxcnc_stat, linuxcnc_cmd, commands, master):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1280 / 1331\n \n self.parent = commands\n self.current_mode = 0\n # command functions are expected to have this layout:\n # def some_name(self, widget_instance, arguments from widget):\n@@ -55408,15 +55408,15 @@\n Benutzeroberfl\u00e4chen steuern LinuxCNC-Aktivit\u00e4ten durch Senden von NML-Nachrichten an die LinuxCNCTask-Controller, und \u00fcberwachen die Ergebnisse durch die Beobachtung der LinuxCNC-Status-Struktur,\n sowie des Fehlerberichterstattung Kanals.\n Der programmatische Zugriff auf NML erfolgt \u00fcber eine C++-API; die wichtigsten Teile der NMLSchnittstelle zu LinuxCNC sind jedoch auch f\u00fcr Python-Programme \u00fcber das Modul linuxcnc verf\u00fcgbar.\n Neben der NML-Schnittstelle zu den Befehls-, Status- und Fehlerkan\u00e4len enth\u00e4lt das Modul linuxcnc\n auch:\n \u2022 Unterst\u00fctzung f\u00fcr das Lesen von Werten aus INI-Dateien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1281 / 1331\n \n 13.2.2 Verwendungsmuster f\u00fcr die LinuxCNC NML-Schnittstelle\n Das allgemeine Muster f\u00fcr die Verwendung von linuxcnc ist in etwa wie folgt:\n \u2022 das Modul linuxcnc importieren\n \u2022 bei Bedarf Verbindungen zu den Befehls-, Status- und Fehler-NML-Kan\u00e4len herstellen\n@@ -55452,15 +55452,15 @@\n \n acceleration (engl. f\u00fcr Beschleunigung)\n (returns float) - Standardbeschleunigung, spiegelt den INI-Eintrag [TRAJ]DEFAULT_ACCELERATION\n wider.\n active_queue (engl. f\u00fcr aktive Queue)\n (returns integer) - Anzahl der geplanten ineinander \u00fcbergehenden Bewegungen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1282 / 1331\n \n actual_position (engl. f\u00fcr Ist-Position)\n (gibt ein Tupel von Floats zur\u00fcck) - aktuelle Position der Flugbahn (x y z a b c u v w) in Maschineneinheiten.\n adaptive_feed_enabled (engl. f\u00fcr Adaptiver Vorschub aktiviert)\n (returns boolean) - Status der adaptiven Vorschub\u00fcberschreibung (0/1).\n@@ -55499,15 +55499,15 @@\n (gibt ein Tupel von Ganzzahlen zur\u00fcck) - aktueller Wert der digitalen Eingangspins.\n distance_to_go (engl. f\u00fcr verbleibende Entfernung)\n (returns float) - verbleibende Entfernung der aktuellen Bewegung, wie vom Trajektorienplaner\n gemeldet.\n dout\n (gibt ein Tupel von Ganzzahlen zur\u00fcck) - aktueller Wert der digitalen Ausgangspins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1283 / 1331\n \n dtg\n (returns tuple of floats) - verbleibende Entfernung der aktuellen Bewegung f\u00fcr jede Achse, wie\n vom Trajektorienplaner gemeldet.\n echo_serial_number\n@@ -55549,15 +55549,15 @@\n G_92, G_92_1, G_92_2, G_92_3, G_93, G_94, G_95, G_96, G_97, G_98, G_99\n homed\n (gibt ein Tupel von ganzen Zahlen zur\u00fcck) - aktuell referenzierte Gelenke, 0 = nicht referenziert,\n 1 = referenziert.\n id\n (gibt ganze Zahl zur\u00fcck) - aktuell ausgef\u00fchrte Bewegungskennung.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1284 / 1331\n \n ini_filename\n (returns string) - Pfad zur INI-Datei, die an linuxcnc \u00fcbergeben wird.\n inpos\n (gibt einen booleschen Wert zur\u00fcck) - Maschine-in-Position-Flag.\n@@ -55596,15 +55596,15 @@\n (returns float) - maximale Beschleunigung. Reflektiert [TRAJ]MAX_ACCELERATION.\n \n max_velocity\n (returns float) - maximale Geschwindigkeit. Gibt die aktuelle maximale Geschwindigkeit wieder.\n Wenn es nicht durch halui.max-velocity oder \u00e4hnliches modifiziert wird, sollte es [TRAJ]MAX_VELOCITY\n widerspiegeln.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1285 / 1331\n \n mcodes\n (gibt ein Tupel von 10 ganzen Zahlen zur\u00fcck) - derzeit aktive M-Codes.\n mist\n (gibt ganze Zahl zur\u00fcck) - Nebelzustand, entweder MIST_OFF oder MIST_ON\n@@ -55642,15 +55642,15 @@\n probiert\n (returns boolean) - flag, true, wenn ein Pr\u00fcfpunktvorgang ausgef\u00fchrt wird.\n program_units\n (gibt ganze Zahl zur\u00fcck) - eine von CANON_UNITS_INCHES=1, CANON_UNITS_MM=2, CANON_UNITS_CM=3\n queue\n (gibt ganze Zahl zur\u00fcck) - aktuelle Gr\u00f6\u00dfe der Warteschlange des Trajektorienplaners.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1286 / 1331\n \n queue_full\n (returns boolean) - Die Trajektorienplaner-Warteschlange ist voll.\n rapidrate\n (returns float) - Eilgang \u00dcbersteuerungs-Faktor.\n@@ -55692,15 +55692,15 @@\n s.poll()\n # das geladene Werkzeug befindet es sich in der Werkzeugtabelle an Index 0\n if s.tool_table[0].id != 0: # ein Werkzeug ist geladen\n print(s.werkzeug_tabelle[0].zoffset)\n else:\n print(\u201dKein Werkzeug geladen\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1287 / 1331\n \n velocity\n (returns float) - Diese Eigenschaft ist definiert, hat aber keine sinnvolle Interpretation.\n 13.2.3.2 Das \u201dAchsen\u201d-W\u00f6rterbuch\n Die Achsenkonfiguration und die Statuswerte sind \u00fcber eine Liste von W\u00f6rterb\u00fcchern pro Achse verf\u00fcgbar. Hier ein Beispiel, wie man auf ein Attribut einer bestimmten Achse zugreifen kann: Beachten Sie, dass viele Eigenschaften, die fr\u00fcher im \u201dAchsen\u201d-W\u00f6rterbuch standen, jetzt im \u201dGelenk\u201dW\u00f6rterbuch zu finden sind, da diese Elemente (wie z. B. das Spiel) auf nichttrivialen Kinematikmaschinen nicht zu den Eigenschaften einer Achse geh\u00f6ren.\n@@ -55734,15 +55734,15 @@\n homed\n (returns integer) - Nicht-Null bedeutet, dass die Referenzposition eingenommen wurde.\n homing\n (returns integer) - ungleich Null bedeutet Referenfahrt im Gange.\n inpos\n (gibt ganze Zahl zur\u00fcck) - ungleich Null bedeutet in Position.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1288 / 1331\n \n input\n (returns float) - aktuelle Eingabeposition.\n jointType\n (gibt ganze Zahl zur\u00fcck) - Typ des Achsenkonfigurationsparameters, entspricht [JOINT_n]TYPE.\n@@ -55779,15 +55779,15 @@\n brake (engl. f\u00fcr Bremse)\n (gibt ganze Zahl zur\u00fcck) - Wert des Spindelbremsflags.\n direction (engl. f\u00fcr Richtung)\n (returns integer) - Drehrichtung der Spindel. vorw\u00e4rts=1, r\u00fcckw\u00e4rts=-1.\n enabled (engl. f\u00fcr aktiviert)\n (gibt ganze Zahl zur\u00fcck) - Wert des Flags \u201dSpindel aktiviert\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1289 / 1331\n \n homed\n (derzeit nicht implementiert)\n increasing (engl. f\u00fcr zunehmend)\n (gibt ganze Zahl zur\u00fcck) - unklar.\n@@ -55822,15 +55822,15 @@\n s.poll()\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() # warte bis mode Wechsel ausgef\u00fchrt\n c.mdi(\u201dG0 X10 Y20 Z30\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1290 / 1331\n \n 13.2.5 Senden von Befehlen \u00fcber linuxcnc.command\n Initialisieren Sie vor dem Senden eines Befehls einen Befehlskanal wie folgt:\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n@@ -55871,15 +55871,15 @@\n \n 13.2.5.1 linuxcnc.command Attribute\n \n serial\n die Seriennummer des aktuellen Befehls\n 13.2.5.2 linuxcnc.command Methoden:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1291 / 1331\n \n abort()\n EMC_TASK_ABORT-Meldung senden.\n auto(int[, int])\n Ausf\u00fchren, Einzelschritte ausf\u00fchren, Anhalten oder Fortsetzen eines Programms.\n@@ -55921,15 +55921,15 @@\n Abfrage der kartesischen Achsenkoordinaten (erfordert teleop_enable(1))\n joint_num_or_axis_index\n F\u00fcr gemeinsames Joggen (Jogmode=1)\n joint_number\n F\u00fcr kartesisches Joggen der Achse (jjogmode=0)\n Nullbasierter Index der Achsenkoordinate in Bezug auf die bekannten Koordinatenbuchstaben XYZABCUVW (x=>0,y=>1,z=>2,a=>3,b=>4,c=>5,u=>6,v=>7,w=>8)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n load_tool_table()\n die Werkzeugtabelle neu laden.\n maxvel(float)\n set maximum velocity\n mdi(string)\n einen MDI-Befehl senden. Maximal 254 Zeichen.\n@@ -55970,15 +55970,15 @@\n set_min_limit()\n Legen Sie die minimale Positionsgrenze f\u00fcr eine bestimmte Achse fest\n set_optional_stop(int)\n optionalen Stopp ein-/ausschalten\n \n 1292 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1293 / 1331\n \n set_spindle_override(int [, int])\n Spindel-Neufestsetzung (engl. override) einstellen aktiviert. Standardm\u00e4\u00dfig ist die Spindel 0 eingestellt.\n spindle(direction: int, speed: float=0, spindle: int=0, wait_for_speed: int=0)\n \u2022 Direction (engl. f\u00fcr Richtung): [SPINDLE_FORWARD, SPINDLE_REVERSE, SPINDLE_OFF, SPINDLE_INCREASE, SPINDLE_DECREASE, oder SPINDLE_CONSTANT]\n@@ -56020,15 +56020,15 @@\n state(int)\n Setzt den Maschinenzustand. Der Maschinenzustand sollte STATE_ESTOP, STATE_ESTOP_RESET,\n STATE_ON, oder STATE_OFF sein.\n task_plan_sync()\n Nach Beendigung dieses Aufrufs wird die VAR-Datei auf der Festplatte mit den aktuellen Werten\n des Interpreters aktualisiert.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1294 / 1331\n \n teleop_enable(int)\n Teleop-Modus aktivieren/deaktivieren (f\u00fcr gemeinsames Joggen deaktivieren).\n tool_offset(int, float, float, float, float, float, int)\n Den Werkzeugversatz einstellen. Siehe Anwendungsbeispiel oben.\n@@ -56065,15 +56065,15 @@\n # -*- coding: utf-8 -*# Ausf\u00fchren wie folgt:\n # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini\n import sys\n import linuxcnc\n inifile = linuxcnc.ini(sys.argv[1])\n # inifile.find() returns None if the key wasn\u2019t found - the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1295 / 1331\n \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() gibt eine Liste von \u00dcbereinstimmungen oder eine leere Liste zur\u00fcck\n@@ -56108,15 +56108,15 @@\n stop()\n den Positionslogger anhalten\n call()\n Plotte jetzt den Backplot.\n last([int])\n Gibt den letzten Punkt auf dem Plot oder keinen (als Python Ausdruck None) zur\u00fcck\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1296 / 1331\n \n 13.3 The HAL Python module\n This documentation describes the hal python module, which provides a Python API for creating and\n accessing HAL pins and signals.\n \n@@ -56154,15 +56154,15 @@\n Existiert die angegebene Komponente zu diesem Zeitpunkt.\n Beispiel\n hal.component_exists(\u201dtestpanel\u201d)\n \n component_is_ready\n Ist die angegebene Komponente zu diesem Zeitpunkt bereit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1297 / 1331\n \n Beispiel\n hal.component_is_ready(\u201dtestpanel\u201d)\n \n get_msg_level\n@@ -56198,15 +56198,15 @@\n signalName1 = listOfDicts[0].get(\u2019NAME\u2019)\n signalValue1 = listOfDicts[0].get(\u2019VALUE\u2019)\n driverPin1 = listOfDicts[0].get(\u2019DRIVER\u2019)\n \n get_info_params()\n Gibt eine Liste von Dicts mit allen Systemparametern zur\u00fcck.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 new_sig\n@@ -56240,15 +56240,15 @@\n \n set\n Setzt den Wert des HAL-Objekts.\n h.out.set(10)\n \n 1298 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1299 / 1331\n \n is_pin\n Ist das Objekt ein Pin oder Parameter?\n Gibt True oder False zur\u00fcck.\n h.in.is_pin()\n@@ -56281,15 +56281,15 @@\n GSTAT.connect(\u2019MESSGAE-TO-LISTEN-FOR\u2019, FUNCTION_TO_CALL)\n def FUNCTION_TO_CALL(gstat_object, return_codes):\n \n Oft wird LAMBDA verwendet, um das GSTAT-Objekt zu entfernen und die R\u00fcckgabecodes zu manipulieren:\n GSTAT.connect(\u2019MESSGAE-TO-LISTEN-FOR\u2019, lambda o, return: FUNCTION_TO_CALL(not return))\n def FUNCTION_TO_CALL(return_codes):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1300 / 1331\n \n 13.4.2 Beispiel f\u00fcr einen GStat-Code\n Es gibt einige grundlegende Muster f\u00fcr die Verwendung von GStat, je nachdem, in welcher Bibliothek\n Sie sie verwenden. Wenn Sie GStat mit GladeVCP, Gscreen oder QtVCP verwenden, wird die GObjectBibliothek nicht ben\u00f6tigt, da diese Toolkits GObject bereits einrichten.\n 13.4.2.1 Codemuster f\u00fcr HAL-Komponenten\n@@ -56327,15 +56327,15 @@\n The pins would be: metric_status.g20 and metric_status.g21.\n 13.4.2.2 GladeVCP Python-Erweiterung Code-Muster\n In dieser Datei wird davon ausgegangen, dass es drei GTK-Labels mit Namen gibt:\n \u2022 state_label\n \u2022 e_state_label\n \u2022 interp_state_label\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1301 / 1331\n \n #!/usr/bin/env python3\n from hal_glib import GStat\n GSTAT = GStat()\n class HandlerClass:\n@@ -56369,15 +56369,15 @@\n class HandlerClass:\n def __init__(self, halcomp,widgets,paths):\n self.w = widgets\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1302 / 1331\n \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 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@@ -56415,15 +56415,15 @@\n an, dass ein Limit ausgel\u00f6st wurde, die Liste zeigt alle aktuellen Grenzwerte der verf\u00fcgbaren\n Gelenke.\n mode-manual\n (returns nothing) - Wird gesendet, wenn LinuxCNC in den manuellen Modus wechselt.\n mode-mdi\n (returns nothing) - Wird gesendet, wenn LinuxCNC in den MDI-Modus wechselt.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1303 / 1331\n \n mode-auto\n (gibt nichts zur\u00fcck) - Wird gesendet, wenn LinuxCNC in den Auto-Modus wechselt.\n command-running\n (gibt nichts zur\u00fcck) - Wird gesendet, wenn ein Programm oder MDI ausgef\u00fchrt wird\n@@ -56466,15 +56466,15 @@\n Dies ist das interne Winkeljog-Inkrement von GStat.\n Es wird erwartet, dass es sich unabh\u00e4ngig vom aktuellen Einheitenmodus in den nativen Einheiten der Maschine befindet.\n program-pause-changed\n (gibt bool zur\u00fcck) - Wird gesendet, wenn das Programm pausiert/unpausiert wird.\n optional-stop-changed\n (gibt bool zur\u00fcck) - Wird gesendet, wenn der optionale Stopp gesetzt/entfernt wird\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1304 / 1331\n \n block-delete-changed\n (gibt bool zur\u00fcck) - wird gesendet, wenn der Block delete gesetzt/gel\u00f6scht wird.\n file-loaded\n (liefert String) - Wird gesendet, wenn LinuxCNC eine Datei geladen hat\n@@ -56516,15 +56516,15 @@\n feed-override-changed\n (returns float) \u2013 Wird gesendet, wenn sich der Feed-Override-Wert \u00e4ndert\n in Prozent\n rapid-override-changed\n (returns float) \u2013 Wird gesendet, wenn sich der Rapid-Override-Wert \u00e4ndert\n in Prozent (0-100)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1305 / 1331\n \n max-velocity-override-changed\n (returns float) - Wird gesendet, wenn sich der Override-Wert der maximalen Geschwindigkeit\n \u00e4ndert\n in Einheiten pro Minute\n@@ -56568,15 +56568,15 @@\n wird. +\n Dies h\u00e4ngt von den verwendeten Widgets / Bibliotheken ab.\n gcode-line-selected\n (gibt eine ganze Zahl zur\u00fcck) - soll gesendet werden, wenn eine G-Code-Zeile vom Benutzer\n ausgew\u00e4hlt wird. +\n Dies h\u00e4ngt von den verwendeten Widgets/Bibliotheken ab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1306 / 1331\n \n graphics-line-selected\n (gibt eine ganze Zahl zur\u00fcck) - soll gesendet werden, wenn der Benutzer eine Grafikzeile ausw\u00e4hlt. +\n Dies h\u00e4ngt von den verwendeten Widgets/Bibliotheken ab.\n graphics-loading-progress\n@@ -56620,15 +56620,15 @@\n machine-log-changed\n (gibt keine zur\u00fcck) - soll gesendet werden, wenn sich das Maschinenprotokoll ge\u00e4ndert hat.\n Dies h\u00e4ngt von den verwendeten Widgets/Bibliotheken ab.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1307 / 1331\n \n move-text-lineup\n (gibt None zur\u00fcck) - soll gesendet werden, wenn der Cursor in der G-Code-Anzeige um eine Zeile\n nach oben bewegt wird.\n Dies h\u00e4ngt von den verwendeten Widgets/Bibliotheken ab.\n@@ -56673,15 +56673,15 @@\n integer steht f\u00fcr die Art des Fehlers. ERROR, TEXT oder DISPLAY\n string ist die eigentliche Fehlermeldung.\n Dies h\u00e4ngt von den verwendeten Widgets/Bibliotheken ab.\n general\n (gibt Python dict zur\u00fcck) - soll gesendet werden, wenn eine Nachricht gesendet werden muss,\n die nicht von einer spezifischeren Nachricht abgedeckt wird.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1308 / 1331\n \n Die allgemeine Nachricht sollte sp\u00e4rlich als vern\u00fcnftig verwendet werden, da alle damit verbundenen Objekte sie analysieren m\u00fcssen.\n Es verwendet ein Python-Diktum f\u00fcr die Kommunikation.\n Das Diktat sollte ein eindeutiges ID-Schl\u00fcsselnamenpaar enthalten und darauf \u00fcberpr\u00fcft werden:\n \u2022 Kennung: UNIQUE_ID_CODE\n@@ -56714,15 +56714,15 @@\n (float) get_jograte_angular\n (None) set_jog_increment_angular\n (float, string) get_jog_increment_angular\n (None) set_jog_increments\n (float, string) get_jog_increments\n (None) -\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1309 / 1331\n \n ist_all_homed\n (nothing) - Dies gibt den aktuellen Status von all_homed (BOOL) zur\u00fcck.\n machine_is_on\n (nothing) - Dies gibt den aktuellen Zustand der Maschine zur\u00fcck (BOOL).\n@@ -56761,15 +56761,15 @@\n get_current_mode\n (nothing) - gibt eine ganze Zahl zur\u00fcck: den aktuellen LinuxCNC-Modus.\n set_selected_joint\n (Integer) - speichert intern die ausgew\u00e4hlte Gelenknummer.\n fordert die Auswahl des Gelenks an, indem er die Meldung\n Nachricht \u201dGelenkauswahl ge\u00e4ndert\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1310 / 1331\n \n get_selected_joint\n (None) - returns integer representing the internal selected joint number.\n set_selected_axis\n (string) - records the selected axis letter internally.\n@@ -56793,29 +56793,29 @@\n der aktuellen Position eines laufenden Programms vorausl\u00e4uft. Dies wird hoffentlich mit der Integration der State-Tags-Entwicklungs-Zweiges behoben.\n \n 13.5 Vismach\n Vismach ist eine Reihe von Python-Funktionen, mit denen Modelle von Maschinen erstellt und animiert\n werden k\u00f6nnen. Vismach zeigt das Modell in einem 3D-Ansichtsfenster an und die Modellteile werden\n animiert, wenn sich die Werte der zugeh\u00f6rigen HAL-Pins \u00e4ndern.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1311 / 1331\n \n Das Vismach Ansichtsfenster (engl. viewport view) kann wie folgt manipuliert werden:\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 Ein Vismach-Modell hat die Form eines Python-Skripts und kann die Standard-Python-Syntax verwenden. Das bedeutet, dass es mehr als eine M\u00f6glichkeit gibt, das Skript zu erstellen, aber in den\n Beispielen in diesem Dokument werde ich die einfachste und grundlegendste davon verwenden.\n Die grundlegende Reihenfolge bei der Erstellung des Vismach-Modells ist\n \u2022 Erstellen von HAL-Pins zur Steuerung der Bewegung.\n \u2022 Erstellen der Werkst\u00fccke (engl. parts).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1312 / 1331\n \n \u2022 Definiere, wie sie sich bewegen.\n \u2022 In Bewegungsgruppen zusammenstellen.\n \n 13.5.1 Start the script\n@@ -56851,15 +56851,15 @@\n OBJ-Raum befinden. Das bedeutet, dass es m\u00f6glich sein kann, das Modell im CAD-Paket zusammenzusetzen.\n Alternativ k\u00f6nnen Teile innerhalb des Modellskripts aus einer Reihe von Form-Primitiven erstellt\n werden. Viele Formen werden am Ursprung erstellt und m\u00fcssen nach der Erstellung an die gew\u00fcnschte Stelle verschoben werden:\n \u2022 cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder\n = CylinderZ(z1, r1, z2, r2)\n Erzeugt einen (optional verj\u00fcngten) Zylinder auf der angegebenen Achse mit den angegebenen Radien an den angegebenen Punkten auf der Achse.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1313 / 1331\n \n \u2022 sphere = Sphere(x, y, z, r) \u0300\n Erzeugt eine Kugel mit Radius r bei (x,y,z)\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@@ -56896,15 +56896,15 @@\n Die Rotationsachse und der Translationsvektor bewegen sich mit dem Teil, wenn es vom VismachSkript w\u00e4hrend des Zusammenbaus des Modells bewegt wird, oder wenn es sich als Reaktion auf die\n HAL-Pins bewegt, w\u00e4hrend das Modell animiert wird:\n \u2022 part = HalTranslate([part], comp, \u201dhal_pin\u201d, xs, ys, zs)\n Die Funktionsargumente sind:\n \u2013 zuerst eine Sammlung/ein Teil, die vorher im Skript erstellt werden kann, oder an dieser Stelle\n erstellt werden kann, wenn dies bevorzugt wird, zB part1 = HalTranslate([Box(....)], ...).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1314 / 1331\n \n \u2013 Die HAL-Komponente ist das n\u00e4chste Argument, d.h. das Objekt, das durch den Befehl comp =\n hal.component(...) zur\u00fcckgegeben wird. Danach folgt der Name der HAL-Komponente, welche\n die Bewegung animieren soll. Dieser muss mit einem bestehenden HAL-Pin \u00fcbereinstimmen, der\n Teil der zuvor im Skript erstellten HAL-Komponente ist.\n@@ -56940,15 +56940,15 @@\n #Drawbar\n draw = CylinderZ(120,3,125,3)\n draw = Color([1,0,.5,1],[draw])\n draw = Translate([draw],-1,49,0)\n draw = HalTranslate([draw],c,\u201ddrawbar\u201d,0,0,1)\n # head/spindle\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1315 / 1331\n \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@@ -56990,15 +56990,15 @@\n Siehe scaragui.py f\u00fcr ein Beispiel, wie man die Werkzeugspitze mit einem Werkzeug und das\n Werkzeug mit dem Modell verbindet.\n \u2013 Entweder rotation_vectors oder latitude/longitude k\u00f6nnen verwendet werden, um den urspr\u00fcnglichen Blickwinkel zu bestimmen, und es ist ratsam, dies zu tun, da der standardm\u00e4\u00dfige anf\u00e4ngliche\n Blickwinkel eher wenig hilfreich ist, wenn man direkt \u00fcber dem Kopf steht.\n \u2013 size legt die Ausdehnung des in der Ausgangsansicht dargestellten Volumens fest.\n \u2013 hud bezieht sich auf eine Head-up-Anzeige der Achsenpositionen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13.5.8 Grundstruktur eines Vismach-Skripts.\n #imports\n from vismach import *\n import hal\n # Erstellen der HAL Komponenten and Pins\n comp = hal.component(\u201dcompname\u201d)\n@@ -57018,23 +57018,23 @@\n # Erstellen des \u00fcbergeordneten (engl. top-level) Modells\n model = Collection([base, saddle, head, carousel])\n # Start der Visualisierung\n main(model, tooltip, work, 100, lat=-75, lon=215)\n \n 1316 / 1331\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1317 / 1331\n \n Teil III\n \n Glossar, Copyright & Geschichte\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1318 / 1331\n \n Kapitel 14\n \n Umschlagseite\n Dieses Handbuch ist noch in Arbeit. Wenn Sie beim Schreiben, Redigieren oder bei der grafischen\n@@ -57056,15 +57056,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1319 / 1331\n \n Kapitel 15\n \n Glossar\n Eine Auflistung von Begriffen und deren Bedeutung. Einige Begriffe haben eine allgemeine Bedeutung\n@@ -57098,15 +57098,15 @@\n Umkehrspiel-Kompensation\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1320 / 1331\n \n Kugelumlaufspindel\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 Kugelmutter\n@@ -57146,15 +57146,15 @@\n sinking electrode.\n EMC\n The Enhanced Machine Controller. Initially a NIST project. Renamed to LinuxCNC in 2012.\n EMCIO\n The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion\n of the axes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1321 / 1331\n \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 Encoder\n@@ -57197,15 +57197,15 @@\n A text file that contains most of the information that configures LinuxCNC for a particular machine.\n Instanz\n One can have an instance of a class or a particular object. The instance is the actual object created\n at runtime. In programmer jargon, the \u201dLassie\u201d object is an instance of the \u201dDog\u201d class.\n Gelenk-Koordinaten\n These specify the angles between the individual joints of the machine. See also Kinematics\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1322 / 1331\n \n Jog (manuelle Bewegung)\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@@ -57250,15 +57250,15 @@\n Python\n General-purpose, very high-level programming language. Used in LinuxCNC for the Axis GUI,\n the StepConf configuration tool, and several G-code programming scripts.\n Schnell\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1323 / 1331\n \n Schnellauf-Geschwindigkeit\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@@ -57300,15 +57300,15 @@\n Schrittmotor\n A type of motor that turns in fixed steps. By counting steps, it is possible to determine how far\n the motor has turned. If the load exceeds the torque capability of the motor, it will skip one or\n more steps, causing position errors.\n TASK (engl. f\u00fcr Aufgabe, auch Name des entsprechenden LinuxCNC Moduls)\n The module within LinuxCNC that coordinates the overall execution and interprets the part program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1324 / 1331\n \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 Bewegung\n@@ -57318,15 +57318,15 @@\n Ganzzahl ohne Vorzeichen\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 Weltkoordinaten\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1325 / 1331\n \n Kapitel 16\n \n Copyright\n 16.1 Juristischer Abschnitt\n@@ -57354,15 +57354,15 @@\n Diese Lizenz ist eine Art \u201dCopyleft\u201d, was bedeutet, dass abgeleitete Werke des Dokuments selbst im\n gleichen Sinne frei sein m\u00fcssen. Sie erg\u00e4nzt die GNU General Public License, die eine Copyleft-Lizenz\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1326 / 1331\n \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 1. APPLICABILITY AND DEFINITIONS\n Diese Lizenz gilt f\u00fcr jedes Handbuch oder andere Werk, das einen Hinweis des Urheberrechtsinhabers\n@@ -57397,15 +57397,15 @@\n Sie d\u00fcrfen das Dokument in jedem beliebigen Medium kopieren und verbreiten, sei es kommerziell\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1327 / 1331\n \n Sie k\u00f6nnen auch Kopien unter den oben genannten Bedingungen ausleihen und \u00f6ffentlich ausstellen.\n 3. COPYING IN QUANTITY\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@@ -57442,15 +57442,15 @@\n gibt, die modifizierte Version unter den Bedingungen dieser Lizenz zu benutzen, und zwar in der\n Form, die im Anhang unten gezeigt wird. G. Behalten Sie in diesem Lizenzhinweis die vollst\u00e4ndigen Listen der unver\u00e4nderlichen Abschnitte und der erforderlichen Umschlagtexte bei, die im Lizenzhinweis des Dokuments angegeben sind. H. F\u00fcgen Sie eine unver\u00e4nderte Kopie dieser Lizenz\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1328 / 1331\n \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 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@@ -57489,15 +57489,15 @@\n the combined work.\n In the combination, you must combine any sections entitled \u201dHistory\u201d in the various original documents, forming one section entitled \u201dHistory\u201d; likewise combine any sections entitled \u201dAcknowledgements\u201d, and any sections entitled \u201dDedications\u201d. You must delete all sections entitled \u201dEndorsements.\u201d\n 6. COLLECTIONS OF DOCUMENTS\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1329 / 1331\n \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 7. AGGREGATION WITH INDEPENDENT WORKS\n@@ -57542,15 +57542,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1330 / 1331\n \n Kapitel 17\n \n LinuxCNC Geschichte\n 17.1 Origin\n@@ -57577,15 +57577,15 @@\n f\u00fchrte dazu, dass fr\u00fche Anwender wie Jon Elson Systeme bauten, um die Vorteile von EMC zu nutzen.\n Das NIST richtete eine Mailingliste f\u00fcr Personen ein, die sich f\u00fcr EMC interessierten. Im Laufe der\n Zeit interessierten sich auch andere au\u00dferhalb des NIST f\u00fcr die Verbesserung von EMC. Viele Leute\n baten um kleine Verbesserungen des Codes oder programmierten sie. Ray Henry wollte die Benutzeroberfl\u00e4che verfeinern. Da Ray sich nicht traute, den C-Code, in dem die Benutzeroberfl\u00e4che geschrieben war, zu ver\u00e4ndern, wurde eine einfachere Methode gesucht. Fred Proctor vom NIST schlug\n eine Skriptsprache vor und schrieb einen Code, um die Skriptsprache Tcl/Tk mit der internen NMLKommunikation von EMC zu verbinden. Mit diesem Tool schrieb Ray dann ein Tcl/Tk-Programm, das\n zur damals vorherrschenden Benutzeroberfl\u00e4che f\u00fcr EMC wurde.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1331 / 1331\n \n Die Perspektive des NIST finden Sie in diesem paper von William Shackleford und Frederick Proctor,\n das die Geschichte von EMC und den \u00dcbergang zu Open Source beschreibt.\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"}]}]}]}]}, {"source1": "linuxcnc-doc-en_2.9.3-2_all.deb", "source2": "linuxcnc-doc-en_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n -rw-r--r-- 0 0 0 1388 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 28453504 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 28455580 2025-01-26 08:13: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-en\n Source: linuxcnc\n Version: 2.9.3-2\n Architecture: all\n Maintainer: LinuxCNC Developers <emc-developers@lists.sourceforge.net>\n-Installed-Size: 31404\n+Installed-Size: 31406\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": "@@ -7,19 +7,19 @@\n -rw-r--r-- 0 root (0) root (0) 369 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gettingstarted.desktop\n -rw-r--r-- 0 root (0) root (0) 358 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-integratorinfo.desktop\n -rw-r--r-- 0 root (0) root (0) 332 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-manualpages.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/\n -rw-r--r-- 0 root (0) root (0) 1081 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/AUTHORS\n -rw-r--r-- 0 root (0) root (0) 1884 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/INSTALL.adoc.gz\n--rw-r--r-- 0 root (0) root (0) 842376 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf\n--rw-r--r-- 0 root (0) root (0) 29474017 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf\n--rw-r--r-- 0 root (0) root (0) 491839 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf\n--rw-r--r-- 0 root (0) root (0) 150083 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf\n--rw-r--r-- 0 root (0) root (0) 1089357 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Manual_Pages.pdf\n+-rw-r--r-- 0 root (0) root (0) 842448 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf\n+-rw-r--r-- 0 root (0) root (0) 29475842 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf\n+-rw-r--r-- 0 root (0) root (0) 491890 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf\n+-rw-r--r-- 0 root (0) root (0) 150127 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf\n+-rw-r--r-- 0 root (0) root (0) 1089350 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Manual_Pages.pdf\n -rw-r--r-- 0 root (0) root (0) 3759 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/README.adoc.gz\n -rw-r--r-- 0 root (0) root (0) 1529 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/README.axis\n -rw-r--r-- 0 root (0) root (0) 506 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/axis_light_background\n -rw-r--r-- 0 root (0) root (0) 14664 2024-07-07 09:25:54.000000 ./usr/share/doc/linuxcnc/gcode.html\n -rw-r--r-- 0 root (0) root (0) 1868 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/rtfaults.adoc\n -rw-r--r-- 0 root (0) root (0) 5504 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/tklinuxcnc.adoc.gz\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-en/\n"}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Developer Manual V2.9.3, 25 Jan 2025'\n+Title: 'Developer Manual V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Developer Manual V2.9.3, 25 Jan 2025\n+Developer Manual V2.9.3, 26 Jan 2025\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 Introduction\n \n 1\n@@ -117,15 +117,15 @@\n \n 15\n \n 3.8.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iii\n \n 3.8.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n@@ -281,15 +281,15 @@\n \n 19\n \n 3.8.16.1Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iv\n \n 3.8.16.2Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n@@ -449,15 +449,15 @@\n \n 3.21.3Process line\n \n 27\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vi\n \n 5 Coding Style\n \n 41\n \n@@ -781,15 +781,15 @@\n \n 8.4.1 LinuxCNC official Git repo\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 55\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vii\n \n 8.4.2 Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n@@ -876,15 +876,15 @@\n 10.2GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 66\n 66\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 1 / 70\n \n Chapter 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 2 / 70\n \n Chapter 2\n \n HAL General Reference\n 2.1 HAL Entity Names\n@@ -941,15 +941,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 \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 3 / 70\n \n \u2022 Hyphens (\u201c-\u201d) separate words or fields in the same level of the hierarchy.\n \u2022 HAL components should not use underscores or \u201cMixedCase\u201d. 1\n \u2022 Use only lowercase letters and numbers in names.\n \n@@ -991,15 +991,15 @@\n number.\n 1 Underlined characters have been removed, but there are still a few cases of broken mixture, for example pid.0.Pgain in\n place of pid.0.p-gain.\n 2 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 4 / 70\n \n <specific-name>\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@@ -1041,15 +1041,15 @@\n ppmc.0.write\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n 3 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 5 / 70\n \n Chapter 3\n \n Code Notes\n 3.1 Intended audience\n@@ -1080,15 +1080,15 @@\n \u2022 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\n of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as are\n the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated with\n it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with trivial\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 6 / 70\n \n kinematics that may be the case. Even on those machines, joint position and axis position are fundamentally different things. In this document, the terms joint and axis are used carefully to respect\n their distinct meanings. Unfortunately that isn\u2019t necessarily true everywhere else. In particular,\n GUIs for machines with trivial kinematics may gloss over or completely hide the distinction between\n joints and axes. In addition, the INI file uses the term axis for data that would more accurately be\n@@ -1118,19 +1118,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 7 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 8 / 70\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@@ -1161,19 +1161,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 9 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 10 / 70\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 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 \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 11 / 70\n \n \u2022 \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@@ -1214,26 +1214,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 12 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 3.7 Homing\n 3.7.1 Homing state diagram\n \n 13 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 14 / 70\n \n 3.7.2 Another homing diagram\n \n 3.8 Commands\n This section simply lists all of the commands that can be sent to the motion module, along with detailed\n@@ -1248,15 +1248,15 @@\n The\n SET_TELEOP_VECTOR command only appears in motion-logger.c, with no effect other than its own\n log.\n \n 3.8.1 ABORT\n The ABORT command simply stops all motion. It can be issued at any time, and will always be accepted. It does not disable the motion controller or change any state information, it simply cancels\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 15 / 70\n \n any motion that is currently in progress.1\n 3.8.1.1 Requirements\n None. The command is always accepted and acted on immediately.\n 3.8.1.2 Results\n@@ -1293,15 +1293,15 @@\n and free mode, and GUIs for those machines might never even issue this command. However for nontrivial machines like robots and hexapods, teleop mode is used for most user commanded jog type\n movements.\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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 16 / 70\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@@ -1337,15 +1337,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 17 / 70\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@@ -1372,15 +1372,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 18 / 70\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@@ -1407,15 +1407,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 19 / 70\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\n point I don\u2019t know if it pauses all motion immediately, or if it completes the current move and then\n pauses before pulling another move from the queue.\n@@ -1442,15 +1442,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 20 / 70\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@@ -1480,15 +1480,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\n joint limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user\n presses a jog button, and ABORT when the button is released.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 21 / 70\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@@ -1525,15 +1525,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 22 / 70\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@@ -1566,15 +1566,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 of\n that code is identical or nearly identical for every parameter.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 23 / 70\n \n 3.9 Backlash and Screw Error Compensation\n + FIXME Backlash and Screw Error Compensation\n \n 3.10 Task controller (EMCTASK)\n@@ -1592,15 +1592,15 @@\n iocontrol main loop process:\n \u2022 registers for SIGTERM and SIGINT signals from the OS.\n \u2022 checks to see it HAL inputs have changed\n \u2022 checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status\n \u2022 checks for I/O related NML messages\n nml message numbers: from emc.hh:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 24 / 70\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1647,15 +1647,15 @@\n Base class for producing a linked list - Purpose, to hold pointers to the previous and next nodes, pointer\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). Creation and destruction of the semaphore is handled by the SharedMemory constructor and destructor.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 25 / 70\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@@ -1689,15 +1689,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 26 / 70\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@@ -1715,15 +1715,15 @@\n \u2022 neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format, or\n raw.\n \u2022 RPC# - Obsolete - Place holder retained for backward compatibility only.\n \u2022 buffer# - A unique ID number used if a server controls multiple buffers.\n \u2022 max_procs - is the maximum processes allowed to connect to this buffer.\n \u2022 key - is a numerical identifier for a shared memory buffer\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 27 / 70\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@@ -1757,15 +1757,15 @@\n \u2022 host - specifies where on the network this process is running.\n \u2022 ops - gives the process read only, write only, or read/write access to the buffer.\n \u2022 server - specifies if this process will running a server for this buffer.\n \u2022 timeout - sets the timeout characteristics for accesses to the buffer.\n \u2022 master - indicates if this process is responsible for creating and destroying the buffer.\n \u2022 c_num - an integer between zero and (max_procs -1)\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 28 / 70\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@@ -1802,15 +1802,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 \u2022 cms buffers created or connected to.\n \u2022 processes and the buffers they connect to\n \u2022 a long list of format functions for each message type\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 29 / 70\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@@ -1849,15 +1849,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\n is 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 30 / 70\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@@ -1883,15 +1883,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 Note\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 has got\n an empty spindle.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 31 / 70\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@@ -1928,15 +1928,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 32 / 70\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@@ -1977,15 +1977,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 33 / 70\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@@ -2027,15 +2027,15 @@\n to pocket 0 (the spindle) in interp\u2019s copy of the tool table, settings->tool_table. (This copy\n is not needed on random tool changer machines because there, tools don\u2019t have a home pocket\n and instead we just updated the tool in pocket 0 directly.). The relevant numbered parameters\n (#5400-#5413) are updated from the tool information in the spindle (by copying the information\n from interp\u2019s settings->tool_table to settings->parameters). (FIXME: this is a buglet, the\n params should only be updated if it was the current tool that was modified).\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 34 / 70\n \n 5. If the modified tool is currently loaded in the spindle, and if the config is for a nonrandom\n toolchanger, then the new tool information is written to the tool table\u2019s pocket 0 as well, via\n a second call to SET_TOOL_TABLE_ENTRY(). (This second tool-table update is not needed on\n random toolchanger machines because there, tools don\u2019t have a home pocket and instead we\n@@ -2071,15 +2071,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 35 / 70\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 settings.selected_pocket\n@@ -2117,15 +2117,15 @@\n toolchanger pocket numbers are meaningful. On a nonrandom toolchanger pockets are meaningless; the pocket numbers in the tool table file are ignored and tools are assigned to tool_table\n slots sequentially.\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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 36 / 70\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@@ -2153,15 +2153,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\n axis.*.* pins.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n Chapter 4\n \n NML Messages\n List of NML messages.\n For details see src/emc/nml_intf/emc.hh.\n \n@@ -2193,15 +2193,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3 AXIS\n \n 37 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2247,15 +2247,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6 MOTION\n \n 38 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2301,15 +2301,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 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2348,15 +2348,15 @@\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 40 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 41 / 70\n \n Chapter 5\n \n Coding Style\n This chapter describes the source code style preferred by the LinuxCNC team.\n@@ -2381,15 +2381,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 42 / 70\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2432,15 +2432,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 43 / 70\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@@ -2478,15 +2478,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 44 / 70\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@@ -2527,15 +2527,15 @@\n Use the PEP 8 style for Python code.\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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 45 / 70\n \n Chapter 6\n \n Building LinuxCNC\n 6.1 Introduction\n@@ -2564,15 +2564,15 @@\n To retrieve the source tree you have two options:\n Download tarball\n On the LinuxCNC project page in GitHub find a reference to the \u201dreleases\u201d or \u201dtags\u201d, click that\n hyperlink to the archive page and download the latest .tar file. You will find that file compressed\n as a .tar.xz or .tar.gz file. This file, commonly referred to as a \u201dtarball\u201d is an archive very analogous\n to a .zip. Your Linux desktop will know how to treat that file when double-clicking on it.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 46 / 70\n \n Prepare a local copy of the LinuxCNC repository\n You would first install the tool \u201dgit\u201d on your machine if it is not available already (sudo apt\n install git). Then prepare a local instance of the source tree as follows: .\n $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir\n@@ -2613,15 +2613,15 @@\n \n 6.3 Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint. 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 47 / 70\n \n 6.3.1 Realtime\n LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version\n of LinuxCNC supports the following platforms. The first three listed are realtime operating systems:\n RTAI\n@@ -2654,15 +2654,15 @@\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments. List all arguments to src/configure by running this:\n $ cd linuxcnc-source-dir/src\n $ ./configure --help\n \n The most commonly used arguments are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 48 / 70\n \n --with-realtime=uspace\n Build for any realtime platform, or for non-realtime. The resulting LinuxCNC executables will run\n on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a\n vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).\n@@ -2700,15 +2700,15 @@\n in a Debian package, complete with dependency information. This process by default also includes\n the building of the documentation, which takes its time because of all the I/O for many languages, but\n that can be skipped. LinuxCNC is then installed as part of those packages on the same machines or on\n whatever machine of the same architecture that the .deb files are copied to. LinuxCNC cannot be run\n until the Debian packages are installed on a target machine and then the executables are available in\n /usr/bin and /usr/lib just like other regular software of the sytem.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 49 / 70\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 does not have the build environment installed, or that does\n not have internet access.\n To build packages is primarily useful when packaging the software for delivery to end users. Developers among themselves exchange only the source code, likely supported by the LinuxCNC GitHub\n@@ -2747,15 +2747,15 @@\n 6.4.2.1 LinuxCNC\u2019s debian/configure arguments\n The LinuxCNC source tree has a debian directory with all the info about how the Debian package shall\n be built, but some key files within are only distributed as templates. The debian/configure script\n readies those build instructions for the regular Debian packaging utilities and must thus be run prior\n to dpkg-checkbuilddeps or dpkg-buildpackage.\n The debian/configure script takes a single argument which specifies the underlying realtime or nonrealtime platform to build for. The regular values for this argument are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 50 / 70\n \n no-docs\n Skip building documentation.\n uspace\n Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).\n@@ -2794,15 +2794,15 @@\n \n which will install all the dependencies required but available. The . is part of the command line,\n i.e. an instruction to retrieve the dependencies for the source tree at hand, not for dependencies of\n another package. This completes the installation of build-dependencies.\n The remainder of this section describes a semi-manual approach. The list of dependencies in debian/control is long and it is tedious to compare the current state of packages already installed with it.\n Debian systems provide a program called dpkg-checkbuilddeps that parses the package meta-data\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 51 / 70\n \n and compares the packages listed as build dependencies against the list of installed packages, and\n tells you what\u2019s missing.\n First, install the dpkg-checkbuilddeps program by running:\n $ sudo apt-get install dpkg-dev\n@@ -2840,15 +2840,15 @@\n -b\n Only compiles the architecture-dependent packages (like the linuxcnc binaries and GUIs). This\n is very helpful to avoid compiling what is hardware-independent, which for LinuxCNC is the\n documentation. That documentation is available online anyway.\n If you happen to run into difficulties while compiling, check the LinuxCNC forum online. Currently\n emerging is the support for the DEB_BUILD_OPTIONS environment variable. Set it to\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 52 / 70\n \n nodocs\n to skip building the documentation, preferably instead use the -B flag to dpkg-buildpackage.\n nocheck\n to skip self-tests of the LinuxCNC build process. This saves some time and reduces the demand\n@@ -2885,25 +2885,25 @@\n If LinuxCNC displays the following message on startup, the problem is your system\u2019s configured limit\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 the following line:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 53 / 70\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 $ ulimit -l\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 54 / 70\n \n Chapter 7\n \n Adding Configuration Selection Items\n Example Configurations can be added to the Configuration Selector by two methods:\n@@ -2914,15 +2914,15 @@\n \n \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 55 / 70\n \n Chapter 8\n \n Contributing to LinuxCNC\n 8.1 Introduction\n@@ -2943,15 +2943,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 56 / 70\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@@ -2986,15 +2986,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 \u2022 Communicate with the project developers and let us know what you\u2019re hacking on. Explain what\n you are doing, and why.\n \u2022 Clone the git repo.\n \u2022 Make your changes in a local branch.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 57 / 70\n \n \u2022 Adding documentation and writing tests is an important part of adding a new feature. Otherwise,\n others won\u2019t know how to use your feature, and if other changes break your feature it can go\n unnoticed without a test.\n \u2022 Share your changes with the other project developers in one of these ways:\n@@ -3028,15 +3028,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 58 / 70\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 is\n a logical step towards your ultimate goal. For example, first factor out some complex code into a new\n function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new\n@@ -3076,15 +3076,15 @@\n variable, and the declaration of that variable only follows in a later patch.\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 running regression tests):\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n 59 / 70\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n@@ -3115,15 +3115,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\n ways include:\n \u2022 Answering questions on the forum, mailing lists, and in IRC\n \u2022 Reporting bugs on the bug tracker, forum, mailing lists, or in IRC\n \u2022 Helping test experimental features\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 60 / 70\n \n Chapter 9\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -3157,15 +3157,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 61 / 70\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@@ -3210,15 +3210,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 62 / 70\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@@ -3261,15 +3261,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 63 / 70\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -3313,15 +3313,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 64 / 70\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -3363,28 +3363,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 65 / 70\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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 66 / 70\n \n Chapter 10\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -3411,15 +3411,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 67 / 70\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@@ -3468,15 +3468,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 68 / 70\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@@ -3522,15 +3522,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 69 / 70\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@@ -3571,15 +3571,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 70 / 70\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"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'LinuxCNC V2.9.3, 25 Jan 2025'\n+Title: 'LinuxCNC V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-LinuxCNC V2.9.3, 25 Jan 2025\n+LinuxCNC V2.9.3, 26 Jan 2025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n \n I Getting Started & Configuration\n \n@@ -116,15 +116,15 @@\n \n 7\n \n 1.3.2.1 Raspberry Pi Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iii\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n \n . . . . . . . . . . . . . . . . . .\n \n@@ -284,15 +284,15 @@\n \n 1.6.4 Man Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n 1.6.3 Terminal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iv\n \n 1.6.5 List Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n@@ -452,15 +452,15 @@\n \n 44\n \n 2.3.2.2 Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n v\n \n 2.3.2.3 Tool Radius Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n@@ -620,15 +620,15 @@\n \n 53\n \n 2.5.3.3 Optional Program Stop Switch . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 53\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vi\n \n 2.5.4 Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n@@ -782,15 +782,15 @@\n \n 72\n \n 2.7.13Hole And Small Shape Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 72\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vii\n \n 2.7.14I/O Pins For Plasma Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 73\n \n@@ -944,15 +944,15 @@\n \n 93\n \n 3.1.8.3 Determining Spindle Calibration . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 93\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n viii\n \n 3.1.9 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 94\n \n@@ -1031,15 +1031,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n 4.1.4.6 Manual tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5 RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5.1 ACPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ix\n \n 4.2 Latency Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.1 What is latency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.2 Latency Tests\n \n@@ -1108,15 +1108,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157\n \n 4.4.2.13[JOINT_<num>] Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158\n 4.4.2.14[SPINDLE_<num>] Section(s) . . . . . . . . . . . . . . . . . . . . . . . . . . . 164\n 4.4.2.15[EMCIO] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n x\n \n 4.5 Homing Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.2 Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n 4.5.3 Separate Home Switch Example Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n@@ -1160,15 +1160,15 @@\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.4 Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.5 Pinout Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.6 Mechanical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.9 Stepper Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xi\n \n 4.9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.2 Maximum step rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3 Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3.1 Standard Pinout HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183\n@@ -1215,15 +1215,15 @@\n 5.1.3.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.4 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198\n 5.1.5 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.1.6 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xii\n \n 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.3 loadusr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n@@ -1283,15 +1283,15 @@\n 5.4.2.2 Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.2.3 The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3.1 Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3.2 Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.3 Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiii\n \n 5.4.3.4 Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219\n \n@@ -1339,15 +1339,15 @@\n 5.6.2.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248\n 5.6.3 Axis and Joint Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249\n 5.6.4 iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249\n 5.6.4.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.6.5 INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.6.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiv\n \n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1.1 User Interfaces (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n 5.7.1.2 Motion (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n@@ -1388,15 +1388,15 @@\n 5.8.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n 5.8.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.5.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xv\n \n 5.8.6.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n 5.8.7 SigGen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n@@ -1444,15 +1444,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291\n \n 5.9.16Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10.1Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.10.2Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvi\n \n 5.10.3Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.10.4Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.10.5Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n 5.10.6Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n@@ -1519,15 +1519,15 @@\n \n 5.13Creating Non-realtime Python Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.1Basic usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.2Non-realtime components and delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.3Create pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.3.1Changing the prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvii\n \n 5.13.4Reading and writing pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.4.1Driving output (HAL_OUT) pins . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.4.2Driving bidirectional (HAL_IO) pins . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.5Exiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n@@ -1564,15 +1564,15 @@\n 5.15.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.15.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.15.5Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.15.6Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.15.7HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.15.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xviii\n \n 6 Hardware Drivers\n \n 322\n \n@@ -1614,15 +1614,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xix\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@@ -1667,15 +1667,15 @@\n 6.7.2 Firmware Binaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.3 Installing Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.4 Loading HostMot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xx\n \n 6.7.6 HostMot2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n 6.7.7 Pinouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n 6.7.8 PIN Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n 6.7.9 Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n@@ -1717,15 +1717,15 @@\n 6.8.5.2 fnct_02_read_discrete_inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.5.3 fnct_03_read_holding_registers\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n \n 6.8.5.4 fnct_04_read_input_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxi\n \n 6.8.5.5 fnct_05_write_single_coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.6 fnct_06_write_single_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.7 fnct_15_write_multiple_coils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.8 fnct_16_write_multiple_registers . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n@@ -1764,15 +1764,15 @@\n 6.13.1.4LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.1.5Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.6PC interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.7Rebuilding the FPGA firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.8For more information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.2Pluto Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxii\n \n 6.13.2.1Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.13.2.2Input latching and output updating . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.2.3HAL Functions, Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . 391\n 6.13.2.4Compatible driver hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n@@ -1806,15 +1806,15 @@\n 6.17.6Panel operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.7Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8Configuring the VFS11 VFD for Modbus usage . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8.1Connecting the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8.2Modbus setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.9Programming Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiii\n \n 7 Hardware Examples\n \n 404\n \n@@ -1855,15 +1855,15 @@\n 8.2.5.4 Symbol Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422\n 8.2.5.5 The Editor window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423\n 8.2.5.6 Config Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424\n 8.2.6 Ladder objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.1 CONTACTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.2 IEC TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiv\n \n 8.2.6.3 TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427\n 8.2.6.4 MONOSTABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427\n 8.2.6.5 COUNTERS\n \n@@ -1913,15 +1913,15 @@\n 9.1.3.2 Inverse transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 9.1.4 Implementation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 9.1.4.1 Kinematics module using the userkins.comp template . . . . . . . . . . . . . 462\n 9.2 Setting up \u201dmodified\u201d Denavit-Hartenberg (DH) parameters for genserkins . . . . . . . . 462\n 9.2.1 Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462\n 9.2.2 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxv\n \n 9.2.3 Modified DH-Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463\n \n@@ -1969,15 +1969,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n \n 9.4.6 User kinematics provisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.4.7 Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.4.8 Code Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5 PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvi\n \n 9.5.1 PID Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5.1.1 Control loop basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n 9.5.1.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n 9.5.1.3 Loop Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509\n@@ -2027,15 +2027,15 @@\n 9.6.7 Creating new G-code cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8 Configuring Embedded Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8.1 Python plugin : INI file configuration . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8.2 Executing Python statements from the interpreter . . . . . . . . . . . . . . . 529\n 9.6.9 Programming Embedded Python in the RS274NGC Interpreter . . . . . . . . . . . . 529\n 9.6.9.1 The Python plugin namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 529\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvii\n \n 9.6.9.2 The Interpreter as seen from Python . . . . . . . . . . . . . . . . . . . . . . . 529\n 9.6.9.3 The Interpreter __init__ and __delete__ functions . . . . . . . . . . . . . 530\n 9.6.9.4 Calling conventions: NGC to Python\n \n@@ -2089,15 +2089,15 @@\n . . . . . . . . . . . . . . . . . . . . . 547\n \n 9.6.17.1Interpreter state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547\n 9.6.17.2Task and Interpreter interaction, Queuing and Read-Ahead . . . . . . . . . 547\n 9.6.17.3Predicting the machine position . . . . . . . . . . . . . . . . . . . . . . . . . . 547\n 9.6.17.4Queue-busters break position prediction . . . . . . . . . . . . . . . . . . . . . 548\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxviii\n \n 9.6.17.5How queue-busters are dealt with . . . . . . . . . . . . . . . . . . . . . . . . . 548\n 9.6.17.6Word order and execution order . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n 9.6.17.7Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n 9.6.17.8Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n@@ -2143,15 +2143,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n \n 9.10Tool Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n 9.10.1Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n 9.10.1.1INI file Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxix\n \n 9.10.1.2db_program operation (v2.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 563\n 9.10.1.3Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 9.10.1.4Example program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n 9.10.1.5Python tooldb module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n@@ -2208,15 +2208,15 @@\n 10.1.12.1\n Program Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589\n 10.1.12.2\n The X Resource Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n 10.1.12.3\n Jogwheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxx\n \n 10.1.12.4\n ~/.axisrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n 10.1.12.5\n USER_COMMAND_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591\n@@ -2283,15 +2283,15 @@\n 10.2.4.1The DISPLAY Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602\n 10.2.4.2The TRAJ Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603\n 10.2.4.3Macro Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604\n 10.2.4.4Embedded Tabs and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606\n 10.2.4.5User Created Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n 10.2.4.6Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxi\n \n 10.2.4.7User Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n 10.2.4.8User CSS File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611\n 10.2.4.9Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611\n 10.2.5HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612\n@@ -2346,15 +2346,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641\n \n 10.2.12.1\n Strange numbers in the info area . . . . . . . . . . . . . . . . . . . . . . . . . 641\n 10.2.12.2\n Not ending macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxii\n \n 10.3The Touchy Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n 10.3.1Panel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643\n 10.3.1.1HAL connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643\n 10.3.1.2Recommended for any setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644\n@@ -2397,15 +2397,15 @@\n 10.5.2.6Jogging increments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.7Jog speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.8User message dialog system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.9Embed Custom VCP Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.10\n Subroutine Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiii\n \n 10.5.2.11\n Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666\n 10.5.2.12\n Program Extensions/Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666\n@@ -2476,15 +2476,15 @@\n 10.5.17.6\n Probe Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.7\n Camview Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.8\n G-codes Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiv\n \n 10.5.17.9\n Setup Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.10\n Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689\n@@ -2531,15 +2531,15 @@\n 10.7.3.2Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.3Coordinate Display Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.4TkLinuxCNC Interpreter / Automatic Program Control . . . . . . . . . . . . 713\n 10.7.3.5Manual Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.6Code Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.7.3.7Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxv\n \n 10.7.3.8Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.7.3.9Spindle speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.7.4Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.8QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716\n@@ -2576,15 +2576,15 @@\n 10.8.8.2MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740\n 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n 10.8.8.5PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747\n 10.8.8.6SETTINGS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752\n 10.8.8.7STATISTICS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvi\n \n 10.8.9Using QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n 10.8.9.1Units Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n 10.8.9.2Preamble and Postamble Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n 10.8.9.3Mandatory Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n@@ -2652,15 +2652,15 @@\n 10.8.9.36\n Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786\n 10.8.9.37\n MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787\n 10.8.10\n Conversational Shape Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvii\n \n 10.8.10.1\n Conversational Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790\n 10.8.10.2\n Conversational Lines And Arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . 790\n@@ -2738,15 +2738,15 @@\n 10.8.15.15\n Hypertherm PowerMax Communications . . . . . . . . . . . . . . . . . . . . . 815\n 10.8.16\n Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816\n 10.8.17\n Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxviii\n \n 10.8.17.1\n Example Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817\n 10.8.17.2\n NGC Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818\n@@ -2807,15 +2807,15 @@\n 11.1.5.2Setting G92 Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837\n 11.1.5.3G92 Persistence Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837\n 11.1.5.4G92 and G52 Interaction Cautions . . . . . . . . . . . . . . . . . . . . . . . . . 838\n 11.1.6Sample Programs Using Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838\n 11.1.6.1Sample Program Using Workpiece Coordinate Offsets . . . . . . . . . . . . . 838\n 11.1.6.2Sample Program Using G52 Offsets . . . . . . . . . . . . . . . . . . . . . . . . 839\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxix\n \n 11.2Tool Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839\n 11.2.1Touch Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839\n 11.2.1.1Using G10 L1/L10/L11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840\n 11.2.2Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840\n@@ -2863,15 +2863,15 @@\n 11.4.10\n Item order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.4.11\n Commands and Machine Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n 11.4.12\n Polar Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xl\n \n 11.4.13\n Modal Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867\n 11.4.14\n Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868\n@@ -2943,15 +2943,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889\n \n 11.5.19\n G20, G21 Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889\n 11.5.20\n G28, G28.1 Go/Set Predefined Position . . . . . . . . . . . . . . . . . . . . . . . . . . . 889\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xli\n \n 11.5.21\n G30, G30.1 Go/Set Predefined Position . . . . . . . . . . . . . . . . . . . . . . . . . . . 890\n 11.5.22\n G33 Spindle Synchronized Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890\n@@ -3044,15 +3044,15 @@\n . . . . . . . . . . . . . . . . . . . . 917\n \n 11.5.51\n G87 Back Boring Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917\n 11.5.52\n G88 Boring Cycle, Spindle Stop, Manual Out . . . . . . . . . . . . . . . . . . . . . . . 917\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlii\n \n 11.5.53\n G89 Boring Cycle, Dwell, Feed Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917\n 11.5.54\n G90, G91 Distance Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917\n@@ -3128,15 +3128,15 @@\n M100-M199 User Defined Commands\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . 931\n \n 11.7O Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933\n 11.7.1Use of O-codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliii\n \n 11.7.2Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933\n 11.7.3Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933\n 11.7.4Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934\n 11.7.4.1Fanuc-Style Numbered Programs . . . . . . . . . . . . . . . . . . . . . . . . . 935\n@@ -3204,15 +3204,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n \n 11.10.4.7\n Plunge Feed Rate (units per minute) . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.10.4.8\n Feed Rate (units per minute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliv\n \n 11.10.4.9\n Spindle Speed (RPM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.10.4.10\n Scan Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n@@ -3273,15 +3273,15 @@\n Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970\n 12.2PyVCP Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975\n 12.2.1AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975\n 12.2.2Floating Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975\n 12.2.3Jog Buttons Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976\n 12.2.3.1Create the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlv\n \n 12.2.3.2Make Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979\n 12.2.4Port Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980\n 12.2.5GS2 RPM Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n 12.2.5.1The Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n@@ -3341,15 +3341,15 @@\n 12.3.6.13\n LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009\n 12.3.6.14\n ProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010\n 12.3.6.15\n ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvi\n \n 12.3.6.16\n Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011\n 12.3.6.17\n Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013\n@@ -3413,15 +3413,15 @@\n 12.3.8.12\n Saving state when Ctrl-C is pressed . . . . . . . . . . . . . . . . . . . . . . . . 1044\n 12.3.8.13\n Hand-editing INI (.ini) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044\n 12.3.8.14\n Adding HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvii\n \n 12.3.8.15\n Adding timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045\n 12.3.8.16\n Setting HAL widget properties programmatically\n@@ -3480,15 +3480,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . 1080\n \n 12.5.5.4HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080\n 12.5.5.5INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080\n 12.5.5.6SPECIAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlviii\n \n 12.5.5.7STATUS CALLBACKS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081\n 12.5.5.8CALLBACKS FROM FORM Section . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.5.5.9GENERAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.5.5.10\n@@ -3535,15 +3535,15 @@\n 12.7QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104\n 12.7.1HAL Only Widgets\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105\n \n 12.7.1.1XEmbed - Program Embedding Widget . . . . . . . . . . . . . . . . . . . . . . . 1105\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlix\n \n 12.7.1.2Slider - HAL Pin Value Adjusting Widget . . . . . . . . . . . . . . . . . . . . 1105\n 12.7.1.3LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105\n 12.7.1.4CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106\n 12.7.1.5RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106\n@@ -3603,15 +3603,15 @@\n 12.7.2.20\n MacroTab - Special Macros Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1139\n 12.7.2.21\n MDILine - MDI Commands Line Entry Widget . . . . . . . . . . . . . . . . . . 1141\n 12.7.2.22\n MDIHistory - MDI Commands History Widget . . . . . . . . . . . . . . . . . . 1142\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n l\n \n 12.7.2.23\n MDITouchy - Touch Screen MDI Entry Widget . . . . . . . . . . . . . . . . . . 1142\n 12.7.2.24\n OriginOffsetView - Origins View and Setting Widget . . . . . . . . . . . . . 1144\n@@ -3667,15 +3667,15 @@\n 12.7.6.3Facing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167\n 12.7.6.4Hole Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167\n 12.7.6.5Qt NGCGUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167\n 12.7.6.6Qt PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.7.6.7Qt Vismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8QtVCP Libraries modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n li\n \n 12.8.1Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.1.1Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.1.2Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.2Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170\n@@ -3727,15 +3727,15 @@\n 12.8.13\n Virtual Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186\n 12.8.14\n Toolbar Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186\n 12.8.14.1\n Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lii\n \n 12.8.14.2\n Submenus\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186\n@@ -3804,15 +3804,15 @@\n 12.10.3\n Custom Controller Widgets Using STATUS . . . . . . . . . . . . . . . . . . . . . . . . . 1202\n 12.10.3.1\n In The Imports Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204\n 12.10.3.2\n In The Instantiate Libraries Section . . . . . . . . . . . . . . . . . . . . . . . . 1204\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liii\n \n 12.10.3.3\n In The Custom Widget Class Definition Section . . . . . . . . . . . . . . . . . 1204\n 12.10.4\n Custom Controller Widgets with Actions . . . . . . . . . . . . . . . . . . . . . . . . . . 1207\n@@ -3899,15 +3899,15 @@\n 12.12.5.5\n Widget Special Setup Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 1233\n 12.12.5.6\n Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233\n 12.12.5.7\n Styles (Themes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liv\n \n 13 User Interface Programming\n \n 1234\n \n@@ -3951,15 +3951,15 @@\n 13.4.4Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268\n 13.4.5Known Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1270\n 13.5Vismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1270\n 13.5.1Start the script\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lv\n \n 13.5.2Create the HAL pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272\n 13.5.3Creating Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272\n 13.5.4Moving Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273\n 13.5.5Animating Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273\n@@ -3990,23 +3990,23 @@\n \n 1290\n \n 17.1Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290\n 17.1.1Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291\n 17.1.2Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1 / 1291\n \n Part I\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 2 / 1291\n \n Chapter 1\n \n Getting Started with LinuxCNC\n 1.1 About LinuxCNC\n@@ -4034,15 +4034,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3 / 1291\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@@ -4079,15 +4079,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 / 1291\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@@ -4117,15 +4117,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5 / 1291\n \n 1.2.2 Kernel and Version requirements\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@@ -4159,15 +4159,15 @@\n compile from source to do this.\n \n 1.2.3 Problematic Hardware\n 1.2.3.1 Laptops\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6 / 1291\n \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@@ -4200,15 +4200,15 @@\n will aim for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n Note\n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 7 / 1291\n \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@@ -4243,15 +4243,15 @@\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n 1.3.2.1 Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8 / 1291\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n Download and install [Balena Etcher](https://etcher.balena.io/#download-etcher) (Linux, Windows,\n Mac) and write the downloaded image to a USB drive.\n If your image fails to boot then please also try Rufus. It looks more complicated but seems to be more\n@@ -4285,15 +4285,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9 / 1291\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@@ -4329,15 +4329,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 10 / 1291\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@@ -4420,15 +4420,15 @@\n \u2022 Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n systems that can not run a 64-bit OS.\n 1.3.7.1 Installing on Debian Bookworm (with Preempt-RT kernel)\n 1. Install Debian Bookworm (Debian 12), amd64 version. You can download the installer here:\n https://www.debian.org/distrib/\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11 / 1291\n \n 2. After burning the iso and booting up if you don\u2019t want Gnome desktop select Advanced Options\n > Alternative desktop environments and pick the one you like. Then select Install or Graphical\n Install.\n \n@@ -4464,15 +4464,15 @@\n 1.3.7.2 Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n running the installer script as decribed above. If an RTAI kernel is detected it will stop before\n installing any packages.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12 / 1291\n \n 3. Update the package list from linuxcnc.org\n sudo apt-get update\n \n 4. Install the new realtime kernel, RTAI and the rtai version of linuxcnc.\n@@ -4507,15 +4507,15 @@\n \u2013 by_machine - Configurations organized by machine.\n \u2013 apps - Applications that do not require starting linuxcnc but may be useful for testing or trying\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13 / 1291\n \n \u2022 axis - Keyboard and Mouse GUI\n \u2022 craftsman - Touch Screen GUI (no longer maintained ???)\n \u2022 gmoccapy - Touch Screen GUI\n \u2022 gscreen - Touch Screen GUI\n@@ -4546,15 +4546,15 @@\n \u2022 sherline\n \u2022 smithy\n \u2022 tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 14 / 1291\n \n 2. demonstrations of 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@@ -4569,15 +4569,15 @@\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 Figure 1.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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 15 / 1291\n \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@@ -4615,15 +4615,15 @@\n \n 1.5 Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n from 2.9.1 to 2.9.2) is an automatic process if your PC is connected to the internet. You will see an\n update prompt after a minor release along with other software updates. If you don\u2019t have an internet\n connection to your PC see Updating without Network.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 16 / 1291\n \n 1.5.1 Upgrade to the new version\n This section describes how to upgrade LinuxCNC from version 2.8.x to a 2.9.y 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@@ -4664,15 +4664,15 @@\n \u2013 Ubuntu Precise:\n \u2217 Click on the Dash Home icon in the top left.\n \u2217 In the Search field, type \u201dsoftware\u201d, then click on the Ubuntu Software Center icon.\n \u2217 In the Ubuntu Software Center window, click on the Edit menu, then click on Software Sources...\n to open the Software Sources window.\n \u2013 Ubuntu Lucid:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 17 / 1291\n \n \u2217 Click the System menu, then Administration, then Synaptic Package Manager.\n \u2217 In Synaptic, click on the Settings menu, then click on Repositories to open the Software\n Sources window.\n \u2022 In the Software Sources window, select the Other Software tab.\n@@ -4692,29 +4692,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 18 / 1291\n \n Figure 1.2: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 1.5.1.2 Upgrading to the new version\n Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n Debian uses the Synaptic Package Manager.\n \u2022 Open Synaptic using the instructions in Setting apt sources above.\n \u2022 Click the Reload button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 19 / 1291\n \n \u2022 Use the Search function to search for linuxcnc.\n \u2022 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n \u2022 Click the check box to mark the new linuxcnc and linuxcnc-doc-* packages for upgrade. The package\n manager may select a number of additional packages to be installed, to satisfy dependencies that\n@@ -4753,15 +4753,15 @@\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 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 Since 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 20 / 1291\n \n 1.5.3.2 Canterp\n If you just run regular G-code and you don\u2019t use the canterp pluggable interpreter, then this section\n does not affect you.\n In the extremely unlikely event that you are using canterp, know that the module has moved from\n@@ -4795,15 +4795,15 @@\n \n 1.5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n \n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 21 / 1291\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 1.6.1 Automatic Login\n@@ -4833,15 +4833,15 @@\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 Example:\n linuxcnc /home/mill/linuxcnc/config/mill/mill.ini\n \n The documentation refers to your respective .ini file as INI-file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 22 / 1291\n \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@@ -4878,15 +4878,15 @@\n you can open and view most root files, but they will open in read only mode.\n 1.6.6.1 The Command Line Way\n Open a terminal and type\n sudo gedit\n \n Open the file with File > Open > Edit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 23 / 1291\n \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@@ -4916,15 +4916,15 @@\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 or\n ls\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 24 / 1291\n \n 1.6.7.4 Finding a File\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@@ -4960,15 +4960,15 @@\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 After boot up open a terminal and type:\n dmesg|grep parport\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 25 / 1291\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@@ -4992,15 +4992,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26 / 1291\n \n Chapter 2\n \n General User Information\n 2.1 User Foreword\n@@ -5029,15 +5029,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 27 / 1291\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@@ -5072,15 +5072,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 28 / 1291\n \n Figure 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@@ -5102,15 +5102,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 29 / 1291\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@@ -5137,85 +5137,85 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 30 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 31 / 1291\n \n Figure 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 32 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 33 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 34 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 35 / 1291\n \n Figure 2.7: TkLinuxCNC graphical interface\n \n QtDragon\n QtDragon, a touch screen GUI based on QtVCP using the PyQt5 library. It comes in two versions\n QtDragon and QtDragon_hd. They are very similar in features but QtDragon_hd is made for\n larger monitors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 36 / 1291\n \n Figure 2.8: QtDragon, a touch screen GUI based on QtVCP\n \n QtPlasmaC\n QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP using the PyQt5 library. It comes\n in three aspect ratios, 16:9, 4:3, and 9:16.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 37 / 1291\n \n Figure 2.9: QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP\n \n 2.2.4 User Interfaces\n These User interfaces are a way to interact with LinuxCNC outside of the graphical user interfaces.\n@@ -5229,41 +5229,41 @@\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 PyVCP\n PyVCP, a Python-based virtual control panel that can be added to the AXIS GUI. PyVCP only\n utilises virtual signals contained within the Hardware Abstraction Layer, such as the spindle-atspeed indicator or the Emergency Stop output signal, and has a simple no-frills appearance. This\n makes it an excellent choice if the user wants to add a Virtual Control Panel with minimal fuss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 38 / 1291\n \n Figure 2.10: PyVCP Example Embedded Into AXIS GUI\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 39 / 1291\n \n Figure 2.11: GladeVCP Example Embedded Into AXIS GUI\n \n QtVCP\n QtVCP, a PyQt5-based virtual control panel that can be added to most GUIs or run as a standalone\n panel. QtVCP has the advantage over PyVCP in that it is not limited to the display or control of\n HAL virtual signals, but can include other external interfaces outside LinuxCNC such as window\n or network events by extending with python code. QtVCP is also more flexible in how it may be\n configured to appear on the GUI with many special widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 40 / 1291\n \n Figure 2.12: QtVCP Example Embedded Into QtDragon GUI\n \n 2.2.6 Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -5278,15 +5278,15 @@\n the lessons learned. A beautiful finish, tight tolerances and caution during the work are evidence of\n lessons learned. No machine nor program can replace human experience.\n Now that you start working with the LinuxCNC software, you have to put yourself in the shoes of an\n operator. You must be in the role of someone in charge of a machine. It\u2019s a machine that will wait\n for your commands and then execute the orders that you will give it. In these pages, we will give the\n explanations which will help you to become a good CNC operator with LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 41 / 1291\n \n 2.2.8 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@@ -5325,15 +5325,15 @@\n cam detector is not employed with G64 Pn.\n The basic acceleration and deceleration described above is not complex and there is no compromise\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 For more information on the Trajectory Planner INI options see the Trajectory Section in the INI\n chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 42 / 1291\n \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 \u2022 It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new\n@@ -5374,15 +5374,15 @@\n backward compatibility for old G-code programs. See the G64 section of the G-code chapter.\n Blending without tolerance\n The controlled point will touch each specified movement at at least one point. The machine\n will never move at such a speed that it cannot come to an exact stop at the end of the current\n movement (or next movement, if you pause when blending has already started). The distance\n from the end point of the move is as large as it needs to be to keep up the best contouring feed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 43 / 1291\n \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@@ -5415,15 +5415,15 @@\n the feed rate in units per second, the acceleration time is ta = F/A and the acceleration distance is\n da = F*ta /2. The deceleration time and distance are the same, making the critical distance d = da +\n dd = 2 * da = F2 /A.\n For example, for a feed rate of 1 inch per second and an acceleration of 10 inches/sec2 , the critical\n distance is 12 /10 = 1/10 = 0.1 inches.\n For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 44 / 1291\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@@ -5456,15 +5456,15 @@\n There are several options when doing manual tool changes. See the [EMCIO] section for information\n on configuration of these options. Also see the G28 and G30 section of the G-code chapter.\n \n 2.3.5 Coordinate Systems\n The Coordinate Systems can be confusing at first. Before running a CNC machine you must understand the basics of the coordinate systems used by LinuxCNC. In depth information on the LinuxCNC\n Coordinate Systems is in the Coordinate System section of this manual.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 45 / 1291\n \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@@ -5496,22 +5496,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 46 / 1291\n \n Figure 2.14: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.15: 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] [<INI-file>]\n@@ -5526,15 +5526,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 INI file\n \n 47 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 48 / 1291\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -r: Disable redirection of stdout and stderr to ~/linuxcnc_print.txt and\n@@ -5560,15 +5560,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 49 / 1291\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@@ -5583,15 +5583,15 @@\n with two motors for one axis is better handled by kinematics rather than by a second linear axis.\n Note\n If the motion of mechanical components is not independent, as with hexapod machines, the\n RS274/NGC language and the canonical machining functions will still be usable, as long as the lower\n levels of control know how to control the actual mechanisms to produce the same relative motion of\n tool and workpiece as would be produced by independent axes. This is called kinematics.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 50 / 1291\n \n Note\n With LinuxCNC, the case of the XYYZ gantry machine with two motors for one axis is better handled\n by the kinematics than by an additional linear axis.\n \n@@ -5622,15 +5622,15 @@\n \n 2.5.2 Control and Data Components\n 2.5.2.1 Linear Axes\n The X, Y, and Z axes form a standard right-handed coordinate system of orthogonal linear axes. Positions of the three linear motion mechanisms are expressed using coordinates on these axes.\n The U, V and W axes also form a standard right-handed coordinate system. X and U are parallel, Y\n and V are parallel, and Z and W are parallel (when A, B, and C are rotated to zero).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 51 / 1291\n \n 2.5.2.2 Rotational Axes\n The rotational axes are measured in degrees as wrapped linear axes in which the direction of positive\n rotation is counterclockwise when viewed from the positive end of the corresponding X, Y, or Z-axis.\n By wrapped linear axis, we mean one on which the angular position increases without limit (goes\n@@ -5670,15 +5670,15 @@\n revolution modes are being used, in which case see section G93-G94-G95-Mode).\n 1. If any of XYZ are moving, F is in units per minute in the XYZ cartesian system, and all other axes\n (ABCUVW) move so as to start and stop in coordinated fashion.\n 2. Otherwise, if any of UVW are moving, F is in units per minute in the UVW cartesian system, and\n all other axes (ABC) move so as to start and stop in coordinated fashion.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 52 / 1291\n \n 3. Otherwise, the move is pure rotary motion and the F word is in rotary units in the ABC pseudocartesian system.\n 2.5.2.6 Cooling\n Flood or droplets cooling can be enabled separately. RS274/NGC language stops them together. See\n section about cooling control.\n@@ -5705,15 +5705,15 @@\n machining center. The Z-axis is, of course, perpendicular to the XY-plane, the X-axis to the YZ-plane,\n and the Y-axis to the XZ-plane.\n 2.5.2.11 Tool Carousel\n Zero or one tool is assigned to each slot in the tool carousel.\n 2.5.2.12 Tool Change\n A machining center may be commanded to change tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 53 / 1291\n \n 2.5.2.13 Pallet Shuttle\n The two pallets may be exchanged by command.\n 2.5.2.14 Speed Override\n The speed override buttons can be activated (they function normally) or rendered inoperative (they no\n@@ -5744,15 +5744,15 @@\n 2.5.3.2 Block Delete Switch\n If the block delete switch is on, lines of G-code which start with a slash (the block delete character)\n are not interpreted. If the switch is off, such lines are interpreted. Normally the block delete switch\n should be set before starting the NGC program.\n 2.5.3.3 Optional Program Stop Switch\n If this switch is on and an M1 code is encountered, program execution is paused.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 54 / 1291\n \n 2.5.4 Tool Table\n A tool table is required to use the Interpreter. The file tells which tools are in which tool changer slots\n and what the size and type of each tool is. The name of the tool table is defined in the INI file:\n [EMCIO]\n@@ -5801,15 +5801,15 @@\n 0.0\n 0.0\n \n Comment\n G28 Home X\n G28 Home Y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 55 / 1291\n \n See the Parameters section for more information.\n \n 2.6 Lathe User Information\n This chapter will provide information specific to lathes.\n@@ -5840,30 +5840,30 @@\n L1,L10,L11. There is also a built-in tool table editor in the AXIS display. The maximum number of\n entries in the tool table is 56. The maximum tool and pocket number is 99999.\n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines. Just ignore the parts of the tool table that\n don\u2019t pertain to your machine, or which you don\u2019t need to use. For more information on the specifics\n of the tool table format, see the Tool Table Section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 56 / 1291\n \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.16: Lathe Tool Orientations\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 57 / 1291\n \n 2.6.4 Tool Touch Off\n When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off\n window. If you have a tool turret you normally have Touch off to fixture selected when setting up your\n turret. When setting the material Z zero you have Touch off to material selected. For more information\n@@ -5889,15 +5889,15 @@\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 use the spindle nose or chuck face. This gives you the ability to change to a new tool and set its Z\n offset without having to reset all the tools.\n A typical session might be:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 58 / 1291\n \n 1. Home each axis if not homed.\n 2. Make sure no offsets are in effect for the current coordinate system.\n 3. Set the current tool with Tn M6 G43 where n is the tool number.\n 4. Select the Z axis in the Manual Control window.\n@@ -5930,15 +5930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 59 / 1291\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@@ -5966,15 +5966,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 60 / 1291\n \n Figure 2.17: 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@@ -5982,29 +5982,29 @@\n same as long as we are moving in an X or Z direction only.\n \n Figure 2.18: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 61 / 1291\n \n Figure 2.19: 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\n programmed path and the tool is touching the OD of the part.\n \n Figure 2.20: Turning Cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 62 / 1291\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@@ -6012,15 +6012,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.22: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 63 / 1291\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.23: Face Cut\n@@ -6041,15 +6041,15 @@\n width.\n Plasma torches are similar in design to the automotive spark plug. They consist of negative and\n positive sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap\n between the negatively charged electrode and the positively charged tip. Once the pilot arc has\n ionised the plasma gas, the superheated column of gas flows through the small orifice in the torch tip,\n which is focused on the metal to be cut.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 64 / 1291\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@@ -6065,15 +6065,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 65 / 1291\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@@ -6098,15 +6098,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 \u2022 Torch to work distance can impact edge bevel\n \n \u2022 Negative cut angle: torch too low, increase torch to work distance.\n \u2022 Positive cut angle: torch too high, decrease torch to work distance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 66 / 1291\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@@ -6132,15 +6132,15 @@\n \u2022 Blowback start to minimise electrical noise to simplify construction\n \u2022 A Machine torch is preferred but many have used hand torches.\n \u2022 A fully shielded torch tip to allow ohmic sensing\n If you have the budget, a higher end machines will supply:\n \u2022 Manufacturer provided cut charts which will save many hours and material waste calibrating cut\n parameters\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 67 / 1291\n \n \u2022 Dry Contacts for ArcOK\n \u2022 Terminals for Arc On switch\n \u2022 Raw arc voltage or divided arc voltage output\n \u2022 Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the\n@@ -6184,15 +6184,15 @@\n A plasma table builder should connect one side of these pins to field power and the other to an input\n pin. This then allows the CNC controller to know when a valid arc is established and also when an\n arc is lost unexpectedly. There is a potential trap here when the input is a high impedance circuit\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 68 / 1291\n \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 resistor should be mounted in such a way that the generated heat does not damage anything whilst\n@@ -6232,15 +6232,15 @@\n of the material surface. This ohmic sensing circuit is operating in an extremely hostile environment\n so a number of failsafes need to be implemented to ensure safety of both the CNC electronics and\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 69 / 1291\n \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@@ -6262,15 +6262,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 70 / 1291\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@@ -6287,15 +6287,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 71 / 1291\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -6328,15 +6328,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 72 / 1291\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@@ -6367,15 +6367,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\n with 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 73 / 1291\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@@ -6412,15 +6412,15 @@\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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 74 / 1291\n \n 2.7.14.2 Torch On (output)\n \u2022 Triggers a relay to close the torch on switch in the inverter.\n \u2022 Connect the torch on terminals on the inverter to the relay output terminals.\n \u2022 Connect one side of the coil to the output pin.\n@@ -6451,15 +6451,15 @@\n 2.7.14.5 Ohmic Sensing (input)\n \u2022 Take care to follow the ohmic sensing schematic shown previously.\n \u2022 An isolated power supply triggers a relay when the torch shield contacts the material.\n \u2022 Connect field power to one output terminal and the other to the input.\n \u2022 Take care to observe relay polarity if opto-coupled solid State relays are used.\n \u2022 Usually connected to motion.probe-input and may be or\u2019d with the float switch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 75 / 1291\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@@ -6502,15 +6502,15 @@\n G42.1 D#<_hal[plasmac_run.kerf-width-f]> for right of programmed path\n G40 to turn compensation off\n \n Note\n Integrators should familiarise themselves with the LinuxCNC documentation for the various LinuxCNC\n G-code commands mentioned above.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 76 / 1291\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@@ -6561,15 +6561,15 @@\n \u2022 Full scale\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 77 / 1291\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@@ -6602,15 +6602,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 78 / 1291\n \n \u2022 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 \u2022 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@@ -6648,15 +6648,15 @@\n located away from the electronics and the plasma machine. This hardware also allows the use of 24\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 79 / 1291\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@@ -6701,15 +6701,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 80 / 1291\n \n possible without sacrificing torsional stiffness. A 100 mm x 100 mm x 2 mm aluminium box section\n has 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@@ -6750,29 +6750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 81 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 82 / 1291\n \n Chapter 3\n \n Configuration Wizards\n 3.1 Stepper Configuration Wizard\n@@ -6783,15 +6783,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 83 / 1291\n \n 3.1.2 Start Page\n \n Figure 3.1: StepConf Entry Page\n The three first radio buttons are self-explanatory:\n@@ -6802,15 +6802,15 @@\n StepConf Wizard. StepConf will highlight the lastconf that was built.\n \u2022 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 \u2022 Create Desktop Shortcut - This will place a link on your desktop to the files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 84 / 1291\n \n \u2022 Create Desktop Launcher - This will place a launcher on your desktop to start your application.\n \u2022 Create Simulated Hardware - This allows you to build a config for testing, even if you don\u2019t have\n the actual hardware.\n \n@@ -6822,15 +6822,15 @@\n \u2022 Machine Name - Choose a name for your machine. Use only uppercase letters, lowercase letters,\n digits, - and _.\n \u2022 Axis Configuration - Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe).\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 85 / 1291\n \n \u2022 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@@ -6859,15 +6859,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 Warning\n Do not attempt run LinuxCNC while the latency test is running.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 86 / 1291\n \n Figure 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@@ -6883,15 +6883,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 87 / 1291\n \n 3.1.5 Parallel Port Setup\n \n Figure 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@@ -6900,15 +6900,15 @@\n if the signal is inverted (0V for true/active, 5V for false/inactive).\n \u2022 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 \u2022 Inputs and Outputs - If the input or output is not used set the option to Unused.\n \u2022 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 \u2022 Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 88 / 1291\n \n \u2022 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@@ -6920,15 +6920,15 @@\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 89 / 1291\n \n 3.1.7 Axis Configuration\n \n Figure 3.6: Axis Configuration Screen\n \u2022 Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many\n@@ -6939,15 +6939,15 @@\n If not, enter 1:1.\n \u2022 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 \u2022 Maximum Velocity - Enter the maximum velocity for the axis in units per second.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 90 / 1291\n \n \u2022 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 \u2022 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@@ -6976,15 +6976,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 \u2022 Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps\n per user unit.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 91 / 1291\n \n Figure 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 Important\n@@ -7007,15 +7007,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 \u2022 Correct step waveform timings\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 92 / 1291\n \n \u2022 Correct pinout, including Invert on step pins\n \u2022 Correct, well-shielded cabling\n \u2022 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@@ -7027,15 +7027,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 Figure 3.8: Spindle Configuration Page\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 93 / 1291\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@@ -7080,29 +7080,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 94 / 1291\n \n \u2022 Make sure the two calibration speeds are not too close together in RPM.\n \u2022 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 3.1.9 Options\n \n Figure 3.9: Advanced Options Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 95 / 1291\n \n \u2022 Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more\n information on.\n \u2022 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@@ -7127,15 +7127,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 96 / 1291\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\n@@ -7163,15 +7163,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: Normally Closed Switches (N/C) wiring in series (simplified diagram)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 97 / 1291\n \n Figure 3.12: Normally Open Switches (N/O) wiring in parallel (simplified diagram)\n The following combinations of switches are permitted in StepConf:\n \u2022 Combine home switches for all axes\n \u2022 Combine limit switches for all axes\n@@ -7194,15 +7194,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 Tip\n PnCconf\u2019s help page should have the most up to date info and has additional details.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 98 / 1291\n \n 3.2.1 Step by Step Instructions\n \n Figure 3.13: PnCconf Splash\n \n@@ -7214,15 +7214,15 @@\n PnCconf places a note in those files. It also allows you to select desktop shortcut / launcher options.\n A desktop shortcut will place a folder icon on the desktop that points to your new configuration files.\n Otherwise 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 99 / 1291\n \n 3.2.3 Basic Machine Information\n \n Figure 3.14: PnCconf Basic\n \n@@ -7234,15 +7234,15 @@\n Tip\n Defaults are not converted when using metric so make sure they are sane values!\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 100 / 1291\n \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 interrupted by lower priority requests (such as user input to screen buttons or drawing etc).\n@@ -7289,15 +7289,15 @@\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 displayed for a few seconds during start up. For PCI parallel port cards the address can be found\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 101 / 1291\n \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\n with a list of addresses. One of those addresses should work. Not all PCI parallel ports work\n properly. Either type can be selected as in (maximum amount of input pins) or out (maximum\n@@ -7325,15 +7325,15 @@\n \u2022 has no graphical window\n \u2022 look can be changed with custom themes\n QtPlasmaC\n \u2022 fully featured plasmac configuration based on the QtVCP infrastructure.\n \u2022 mouse/keyboard operation or touchscreen operation\n \u2022 no VCP integration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 102 / 1291\n \n 3.2.4 External Configuration\n This page allows you to select external controls such as for jogging or overrides.\n \n Figure 3.15: External Controls\n@@ -7344,15 +7344,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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 103 / 1291\n \n \u2022 Add a device rule will allow you to configure a new device by following the prompts. You will\n need your device available.\n \u2022 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@@ -7369,15 +7369,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 104 / 1291\n \n Figure 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@@ -7388,15 +7388,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 105 / 1291\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@@ -7436,15 +7436,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 106 / 1291\n \n \u2022 Require homing before MDI / Running\n \u2013 If you want to be able to move the machine before homing uncheck this checkbox.\n \u2022 Popup Tool Prompt\n \u2013 Choose between an on screen prompt for tool changes or export standard signal names for\n@@ -7460,15 +7460,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 107 / 1291\n \n Figure 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@@ -7478,15 +7478,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 Important\n It\u2019s important to follow these to avoid damage and get the best performance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 108 / 1291\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@@ -7512,49 +7512,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 109 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 110 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 111 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 112 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 113 / 1291\n \n 3.2.9 Axis Configuration\n \n Figure 3.21: Axis Drive Configuration\n This page allows configuring and testing of the motor and/or encoder combination. If using a servo\n@@ -7566,15 +7566,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 114 / 1291\n \n Warning\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@@ -7620,15 +7620,15 @@\n \u2022 Note that we want raw output such that our measured result is identical to the commanded output.\n This means\n \u2013 cmd=a*raw+b\n \u2013 raw=(cmd-b)/a\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 115 / 1291\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@@ -7645,25 +7645,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 116 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 117 / 1291\n \n Figure 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@@ -7674,15 +7674,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 \u2022 when the TABLE moves out that is the positive Y direction\n \u2022 when the TABLE moves left that is the positive X direction\n \u2022 when the TABLE moves down that is the positive Z direction\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 118 / 1291\n \n \u2022 when the HEAD moves up that is the positive Z direction\n On a typical lathe\n \u2022 when the TOOL moves right, away from the chuck\n \u2022 that is the positive Z direction\n@@ -7727,15 +7727,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 119 / 1291\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@@ -7775,29 +7775,29 @@\n Use Compensation File\n Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 120 / 1291\n \n Figure 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 is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION\n to be 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive\n limit 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 121 / 1291\n \n Tip\n Many of the option on this page will not show unless the proper option was selected on previous\n pages!\n \n@@ -7809,15 +7809,15 @@\n \u2022 If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be\n shown.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 122 / 1291\n \n \u2022 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 \u2022 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@@ -7832,25 +7832,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 123 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 124 / 1291\n \n Figure 3.27: HAL Components\n The first selection is components that pncconf uses internally. You may configure pncconf to load\n extra 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@@ -7861,15 +7861,15 @@\n heading Thread command. The components will be added to the thread between reading of\n inputs 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 125 / 1291\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@@ -7901,15 +7901,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 126 / 1291\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@@ -7920,15 +7920,15 @@\n \u2022 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 \u2022 custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP\n display loads.\n \u2022 custom_gvcp.hal is for commands that must be run after GladeVCP is loaded.\n \u2022 shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 127 / 1291\n \n Chapter 4\n \n Configuration\n 4.1 Integrator Concepts\n@@ -7948,15 +7948,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 128 / 1291\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@@ -7991,15 +7991,15 @@\n drive 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 129 / 1291\n \n The simplest way to avoid this problem is to choose a BASE_PERIOD that is the sum of the longest timing requirement of your drive, and the worst case latency of your computer. This is not always the best\n 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 to 20+11 = 31 \u00b5s you get a not-so-nice 32,258 steps per second in one mode and 16,129 steps per\n@@ -8030,15 +8030,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\n of 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 130 / 1291\n \n Figure 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@@ -8056,15 +8056,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 131 / 1291\n \n Figure 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@@ -8092,15 +8092,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 132 / 1291\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@@ -8137,15 +8137,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 133 / 1291\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 \u2022 limited maximum step rate\n@@ -8169,15 +8169,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 134 / 1291\n \n Figure 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@@ -8201,15 +8201,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 135 / 1291\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@@ -8251,15 +8251,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n --logscale\n --text\n --show\n --nobase\n --verbose\n --nox\n@@ -8288,15 +8288,15 @@\n and they all may benefit from tuning for optimal latency.\n A primary goal in tuning the system for LinuxCNC is to reserve a CPU for the exclusive use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not interfere\n with LinuxCNC\u2019s access to that CPU.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 137 / 1291\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@@ -8332,15 +8332,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 \u2022 limited maximum step rate\n \u2022 jitter in the generated pulses\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 138 / 1291\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@@ -8380,15 +8380,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 139 / 1291\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@@ -8433,15 +8433,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 140 / 1291\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@@ -8483,15 +8483,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 141 / 1291\n \n \u2022 comments\n \u2022 sections\n \u2022 variables\n Each of these elements is separated on single lines. Each end of line or newline character creates a\n@@ -8530,15 +8530,15 @@\n \u2022 [RS274NGC] settings used by the G-code interpreter\n \u2022 [EMCMOT] settings used by the real time motion controller\n \u2022 [TASK] settings used by the task controller\n \u2022 [HAL] specifies .hal files\n \u2022 [HALUI] MDI commands used by HALUI\n \u2022 [APPLICATIONS] Other applications to be started by LinuxCNC\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 142 / 1291\n \n \u2022 [TRAJ] additional settings used by the real time motion controller\n \u2022 [JOINT_n] individual joint variables\n \u2022 [AXIS_l] individual axis variables\n \u2022 [KINS] kinematics variables\n@@ -8576,15 +8576,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 143 / 1291\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -8624,15 +8624,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 144 / 1291\n \n 4.4.2 INI File Sections\n 4.4.2.1 [EMC] Section\n \u2022 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@@ -8665,15 +8665,15 @@\n value.\n \u2022 CONE_BASESIZE = .25 - Override the default cone/tool base size of .5 in the graphics display.\n \u2022 MAX_FEED_OVERRIDE = 1.2 - The maximum feed override the user may select. 1.2 means 120% of\n the programmed feed rate.\n \u2022 MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means 50%\n of the programmed spindle speed. (This is used to set the minimum spindle speed.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 145 / 1291\n \n \u2022 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@@ -8709,15 +8709,15 @@\n powered CPU may see improvement with a longer setting. Usually the default is fine.\n \u2022 PREVIEW_TIMEOUT = 5 - Timeout (in seconds) for loading graphical preview of G-code. Currently\n AXIS only.\n Note\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 146 / 1291\n \n \u2022 EMBED_TAB_NAME = GladeVCP demo\n \n \u2022 EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\\} -u ./glad\n ./gladevcp/manual-example.ui\n@@ -8755,15 +8755,15 @@\n \u2022 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 \u2022 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 \u2022 FOAM = 1 - Any non-empty value (including \u201d0\u201d) causes axis to change the display for foam-cutter\n mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 147 / 1291\n \n \u2022 GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of a\n sequence of axis letters and control characters, optionally preceded with a \u201d-\u201d sign:\n 1. The letters X, Y, Z specify translation along the named coordinate.\n 2. The letters A, B, C specify rotation about the corresponding axes X, Y, Z.\n@@ -8805,15 +8805,15 @@\n configurations on one computer.\n \u2022 JOG_AXES = - The order in which jog keys are assigned to axis letters. The left and right arrows are assigned to the first axis letter, up and down to the second, page up/page down to the\n third, and left and right bracket to the fourth. If unspecified, the default is determined from the\n [TRAJ]COORDINATES, [DISPLAY]LATHE and [DISPLAY]FOAM values.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 148 / 1291\n \n Note\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@@ -8852,15 +8852,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 149 / 1291\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@@ -8902,15 +8902,15 @@\n \u2022 PARAMETER_FILE = myfile.var - The file located in the same directory as the INI file which contains\n the parameters used by the interpreter (saved between runs).\n \u2022 ORIENT_OFFSET = 0 - A float value added to the R word parameter of an M19 Orient Spindle operation. Used to define an arbitrary zero position regardless of encoder mount orientation.\n \u2022 RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 150 / 1291\n \n \u2022 SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:)\n separated list of up to 10 directories to be searched when single-file subroutines are specified in Gcode. These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified)\n and before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order\n that they are listed. The first matching subroutine file found in the search is used. Directories are\n@@ -8962,15 +8962,15 @@\n \u2022 OWORD_WARNONLY = 0 (Default: 0)\n Warn rather than error in case of errors in O-word subroutines.\n \u2022 DISABLE_G92_PERSISTENCE = 0 (Default: 0) Allow to clear the G92 offset automatically when config\n start-up.\n \u2022 DISABLE_FANUC_STYLE_SUB = 0 (Default: 0) If there is reason to disable Fanuc subroutines set it to\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 151 / 1291\n \n Note\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@@ -9005,15 +9005,15 @@\n (home_parms) may be included if supported by the named module. The setting may be overridden\n from the command line using the -m option ($ linuxcnc -h).\n 4.4.2.6 [TASK] Section\n \u2022 TASK = milltask - Specifies the name of the task executable. The task executable does various\n things, such as\n \u2013 communicate with the UIs over NML,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 152 / 1291\n \n \u2013 communicate with the realtime motion planner over non-HAL shared memory, and\n \u2013 interpret G-code. Currently there is only one task executable that makes sense for 99.9% of users,\n milltask.\n \u2022 CYCLE_TIME = 0.010 - The period, in seconds, at which TASK will run. This parameter affects the\n@@ -9051,15 +9051,15 @@\n HALFILE = LIB:halcheck.tcl [nopopup]\n \n Note\n The LIB:halcheck.tcl line should be the last [HAL]HALFILE. Specify the nopopup option to suppress\n the popup message and allow immediate starting. Connections made using a POSTGUI_HALFILE are\n not checked.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 153 / 1291\n \n \u2022 TWOPASS = ON - Use twopass processing for loading HAL components. With TWOPASS processing,\n lines of files specified in [HAL]HALFILE are processed in two passes. In the first pass (pass0), all\n HALFILES are read and multiple appearances of loadrt and loadusr commands are accumulated.\n These accumulated load commands are executed at the end of pass0. This accumulation allows\n@@ -9098,15 +9098,15 @@\n (first character is / or ~), a relative filename (first characters of filename are ./), or as a file in the\n INI file directory. If no executable file is found using these names, then the user search PATH is\n used to find the application.\n Examples:\n \u2013 Simulate inputs to HAL pins for testing (using sim_pin \u2014 a simple GUI to set inputs to parameters,\n unconnected pins, or signals with no writers):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 154 / 1291\n \n APP = sim_pin motion.probe-input halui.abort motion.analog-in-00\n \n \u2013 Invoke halshow with a previuosly saved watchlist. Since LinuxCNC sets the working directory to\n the directory for the INI file, you can refer to files in that directory (example: my.halshow):\n@@ -9149,15 +9149,15 @@\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 depth\n unless you have lots of very short segments. If during testing, you notice strange slowdowns and\n can\u2019t figure out where they come from, first try increasing this depth using the formula above.\n If you still see strange slowdowns, it may be because you have short segments in the program. If\n this is the case, try adding a small tolerance for Naive CAM detection. A good rule of thumb is this:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 155 / 1291\n \n # min_length ~= v_req * t_c\n # where:\n # v_req = desired velocity in UU / sec\n # t_c = servo period (seconds)\n@@ -9202,15 +9202,15 @@\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 \u2022 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 \u2022 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 156 / 1291\n \n name more than once (e.g., X Y Y Z for a gantry machine). For the common trivkins kinematics,\n joint numbers are assigned in sequence according to the trivkins parameter coordinates=. So, for\n trivkins coordinates=xz, joint0 corresponds to X and joint1 corresponds to Z. See the kinematics\n man page ($ man kins) for information on trivkins and other kinematics modules.\n@@ -9253,15 +9253,15 @@\n \u2022 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 default\n (tpmod). Module parameters (tp_parms) may be included if supported by the named module. The\n setting may be overridden from the command line using the -t option ($ linuxcnc -h).\n \u2022 NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.\n \u2022 NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 157 / 1291\n \n 4.4.2.11 [KINS] Section\n \u2022 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@@ -9302,15 +9302,15 @@\n offsets:\n axis.<letter>.eoffset-enable\n axis.<letter>.eoffset-count\n axis.<letter>.eoffset-scale\n \n See the chapter: External Axis Offsets for usage information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 158 / 1291\n \n 4.4.2.13 [JOINT_<num>] Sections\n The <num> 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\n in the joint control module. The joint section names begin numbering at 0, and run through the number\n@@ -9348,15 +9348,15 @@\n by a space. The first value is the nominal value (the commanded position). The second and third\n values depend on the setting of COMP_FILE_TYPE. Points in between nominal values are interpolated\n between the two nominals. Compensation files must start with the smallest nominal and be in\n ascending order to the largest value of nominals. File names are case sensitive and can contain\n letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.\n If COMP_FILE is specified for a joint, BACKLASH is not used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 159 / 1291\n \n \u2022 COMP_FILE_TYPE = 0 or 1 - Specifies the type of compensation file. The first value is the nominal\n (commanded) position for both types.\n A COMP_FILE_TYPE must be specified for each COMP_FILE.\n \u2013 Type 0: The second value specifies the actual position as the joint is moving in the positive direction (increasing value). The third value specifies the actual position as the joint is moving in the\n@@ -9398,15 +9398,15 @@\n produce a ramp of error trip points. You could think of this as a graph where one dimension is speed\n and the other is permitted following error. As speed increases the amount of following error also\n increases toward the FERROR value.\n \u2022 FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference\n between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI\n file, velocity-proportional following errors are used. Here, the maximum allowable following error\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 160 / 1291\n \n is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and\n proportionally smaller following errors for slower speeds. The maximum allowable following error\n will always be greater than MIN_FERROR. This prevents small following errors for stationary axes\n from inadvertently aborting motion. Small following errors will always be present due to vibration,\n@@ -9446,15 +9446,15 @@\n Additional sequences may be specified with numbers increasing by 1 (in absolute value). Skipping\n of sequence numbers is not allowed. If a HOME_SEQUENCE is omitted, the joint will not be homed\n by the \u201dHome All\u201d function. More than one joint can be homed at the same time by specifying the\n same sequence number for more than one joint. A negative sequence number is used to defer the\n final move for all joints having that (negative or positive) sequence number. For additional info, see:\n HOME SEQUENCE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 161 / 1291\n \n \u2022 VOLATILE_HOME = 0 - When enabled (set to 1) this joint will be unhomed if the Machine Power is\n off or if E-Stop is on. This is useful if your machine has home switches and does not have position\n feedback such as a step and direction driven machine.\n These parameters are relevant to joints controlled by servos.\n@@ -9488,15 +9488,15 @@\n for the motor amplifier. The units on the I gain are volts per machine unit second, e.g.,\n \u2022 D = 0 - The derivative gain for the joint servo. The value multiplies the difference between the current and previous errors, resulting in a contribution to the computed voltage for the motor amplifier.\n The units on the D gain are volts per machine unit per second, e.g.,\n \u2022 FF0 = 0 - The 0th order feed forward gain. This number is multiplied by the commanded position,\n resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF0\n gain are volts per machine unit, e.g.,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 162 / 1291\n \n \u2022 FF1 = 0 - The 1st order feed forward gain. This number is multiplied by the change in commanded\n position per second, resulting in a contribution to the computed voltage for the motor amplifier. The\n units on the FF1 gain are volts per machine unit per second, e.g.,\n \u2022 FF2 = 0 - The 2nd order feed forward gain. This number is multiplied by the change in commanded\n@@ -9536,15 +9536,15 @@\n -10\n -9\n \n Measured\n -9.93\n -8.83\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 163 / 1291\n \n Table 4.1: (continued)\n Raw\n 0\n 1\n@@ -9583,15 +9583,15 @@\n section. For stepper systems, this is the number of step pulses issued per machine unit. For a linear\n joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is\n equal to the setting in ANGULAR_UNITS. For servo systems, this is the number of feedback pulses per\n machine unit. A second number, if specified, is ignored.\n For example, on a 1.8 degree stepper motor with half-stepping, and 10 revs/inch gearing, and desired\n machine units of inch, we have:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 164 / 1291\n \n Note\n Old INI and HAL files used INPUT_SCALE for this value.\n \n \u2022 ENCODER_SCALE = 20000 (Optionally used in PnCconf built configs) - Specifies the number of pulses\n@@ -9628,15 +9628,15 @@\n must not be run in reverse. In this context \u201dmax\u201d refers to the absolute magnitude of the spindle\n speed.\n \u2022 MIN_REVERSE_VELOCITY = 3000 \u0300This setting is equivalent to MIN_FORWARD_VELOCITY but for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted.\n \u2022 INCREMENT = 200 Sets the step size for spindle speed increment / decrement commands. This can\n have a different value for each spindle. This setting is effective with AXIS and Touchy but note that\n some control screens may handle things differently.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 165 / 1291\n \n \u2022 HOME_SEARCH_VELOCITY = 100 - FIXME: Spindle homing not yet working. Sets the homing speed\n (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the\n spindle index is located, at which point the spindle position will be set to zero. Note that it makes\n no sense for the spindle home position to be any value other than zero, and so there is no provision\n@@ -9674,15 +9674,15 @@\n absolute encoders. Homing seems simple enough - just move each joint to a known location, and set\n LinuxCNC\u2019s internal variables accordingly. However, different machines have different requirements,\n and homing is actually quite complicated.\n Note\n While it is possible to use LinuxCNC without homing switches/home procedures or limit switches, It\n defeats the extra security of the soft limits.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 166 / 1291\n \n 4.5.2 Prerequisite\n Homing relies on some fundamental machine assumptions.\n \u2022 The negative and positive directions are based on Tool Movement which can be different from the\n actual machine movement. I.e., on a mill typically the table moves rather then the tool.\n@@ -9709,15 +9709,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 167 / 1291\n \n Figure 4.6: Demonstrative Separate Switch Layout\n \u2022 A is the negative soft limit\n \u2022 B is the G53 machine coordinate Origin\n \u2022 C is the home switch trip point\n@@ -9736,15 +9736,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 168 / 1291\n \n Figure 4.7: Demonstrative Shared Switch Layout\n \u2022 A is the negative soft limit.\n \u2022 B is the G53 machine coordinate Origin.\n \u2022 C is the home switch trip point shared with (-L) minimum limit trip.\n@@ -9763,21 +9763,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 169 / 1291\n \n Figure 4.8: Homing Sequences\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 170 / 1291\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@@ -9831,15 +9831,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 171 / 1291\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@@ -9874,15 +9874,15 @@\n of 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\n small move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was\n skipped). This final move will be made at the joint\u2019s maximum velocity unless HOME_FINAL_VEL has\n been set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 172 / 1291\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@@ -9918,15 +9918,15 @@\n The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers must increment by one \u2014 skipping sequence numbers is not supported. If a sequence number is\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 173 / 1291\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\n together with a synchronized final move. If the HOME_SEQUENCE value is zero or positive, a\n command to home the joint will home only the specified joint.\n@@ -9970,15 +9970,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 174 / 1291\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@@ -10024,15 +10024,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 175 / 1291\n \n Note\n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale,\n joint.N.counts).\n \n@@ -10065,15 +10065,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 176 / 1291\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@@ -10106,15 +10106,15 @@\n \u2022 iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-stop be cleared\n Additional pins added by I/O Control V2\n \u2022 emc-abort: (bit, out) signals emc-originated abort to toolchanger.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 177 / 1291\n \n \u2022 emc-reason: (S32, out) convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort TRUE.\n \u2022 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 operations are executed.\n \u2022 start-change-ack: (bit, in) acknowledgment line for start-change.\n@@ -10150,15 +10150,15 @@\n \u2022 EMC_ABORT_AUX_ESTOP = 2,\n \u2022 EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n \u2022 EMC_ABORT_TASK_STATE_OFF = 4,\n \u2022 EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,\n \u2022 EMC_ABORT_TASK_STATE_ESTOP = 6,\n \u2022 EMC_ABORT_TASK_STATE_NOT_ON = 7,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 178 / 1291\n \n \u2022 EMC_ABORT_TASK_ABORT = 8,\n \u2022 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@@ -10195,15 +10195,15 @@\n [DISPLAY]\n DISPLAY = axis\n LATHE = 1\n ...\n [KINS]\n KINEMATICS = trivkins\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 179 / 1291\n \n JOINTS = 3\n [TRAJ]\n COORDINATES = X Z\n ...\n@@ -10246,15 +10246,15 @@\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\n CNC/EMC then pick the Sherline configuration that matches yours and save a copy.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 180 / 1291\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@@ -10353,15 +10353,15 @@\n \n Leadscrew\n Teeth\n \n Leadscrew\n Pitch\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Axis\n \n Steps/Rev.\n \n 181 / 1291\n \n@@ -10411,15 +10411,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 182 / 1291\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@@ -10457,15 +10457,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.\n Further on we\u2019ll investigate the standard_pinout.hal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -10511,15 +10511,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 183 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 184 / 1291\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@@ -10555,15 +10555,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 the code gets executed every few tens of microseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 185 / 1291\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@@ -10597,15 +10597,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 186 / 1291\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@@ -10635,15 +10635,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 187 / 1291\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\n@@ -10689,15 +10689,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 188 / 1291\n \n 4.11 Filter Programs\n 4.11.1 Introduction\n Most of LinuxCNC\u2019s screens have the ability to send loaded files through a filter program or use the\n filter program to make G-code. Such a filter can do any desired task: Something as simple as making\n@@ -10719,15 +10719,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 189 / 1291\n \n Figure 4.9: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -10747,15 +10747,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 190 / 1291\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@@ -10798,15 +10798,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 191 / 1291\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -10828,15 +10828,15 @@\n else:\n path = None\n app = QApplication(sys.argv)\n w = CustomDialog(path=path)\n w.show()\n sys.exit( app.exec_() )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 192 / 1291\n \n Chapter 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL Introduction\n@@ -10860,15 +10860,15 @@\n reminiscent of what CNC machines need to do, or space craft.\n Any machine controller needs to know:\n \u2022 about its internal state and how this maps to the environment (machine coordinates, state of switches/regulators),\n \u2022 how actuators are expected to change that state,\n \u2022 how allow for updates of the internal state by sensors (encoders, probes).\n The HAL layer consists of parts (referred to as \u201dcomponents\u201d) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 193 / 1291\n \n \u2022 are connected with each other, e.g., to update position data or have the planning algorithm tell the\n motors about the next step.\n \u2022 may know how to communicate with hardware,\n \u2022 may simply process incoming data and provide data outputs to other components,\n@@ -10902,15 +10902,15 @@\n but none of these interfaces are HAL itself.\n HAL itself is not a program, it consists of one or more lists of loaded programs (the components) that\n are periodically executed (in strict sequence), and an area of shared-memory that these components\n use to interchange data. The main HAL script runs only once at machine startup, setting up the\n realtime threads and the shared-memory locations, loading the components and setting up the data\n links between them (the \u201dsignals\u201d and \u201dpins\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 194 / 1291\n \n In principle multiple machines could share a common HAL to allow them to inter-operate, however\n the current implementation of LinuxCNC is limited to a single interpreter and a single Task module.\n Currently this is almost always a G-code interpreter and \u201dmilltask\u201d (which was found to also work well\n for lathes and adequately for robots) but these modules are selectable at load-time. With an increasing\n@@ -10951,15 +10951,15 @@\n number of components that know a lot about CNC and present that information via pins. There are\n pins representing\n \u2022 static information about the machine\n \u2022 the current state of the machine\n \u2013 end switches\n \u2013 positions counted by steppers or as measured by encoders\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 195 / 1291\n \n \u2022 recipients for instructions\n \u2013 manual control of machine position (\u201djogging\u201d)\n \u2013 positions that stepper motors should take next\n In a analogy to electronic cables, pins can be wired, so the value changing in one pin serves as input\n@@ -10999,15 +10999,15 @@\n \u2013 developing over time.\n \n 5.1.3 HAL System Design\n HAL is based on traditional system design techniques. HAL is based on the same principles that\n are used to design hardware circuits and systems, so it is useful to examine those principles first. Any\n system, including a CNC machine, consists of interconnected components. For the CNC machine,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 196 / 1291\n \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 aselect, mount and wire these pieces together to make a complete system.\n \n@@ -11029,15 +11029,15 @@\n black boxes. During the design stage, he decides which parts he is going to use - steppers or servos,\n which brand of servo amp, what kind of limit switches and how many, etc. The integrator\u2019s decisions\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\n the choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback\n needed by the amp and the velocity or position signals that must be sent to the amp from a control.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 197 / 1291\n \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 5.1.3.2 Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n@@ -11063,15 +11063,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.3.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 198 / 1291\n \n Figure 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@@ -11096,15 +11096,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 199 / 1291\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 Many HAL Components model the behaviour of a tangible part of a machine, and a pin may\n indeed be meant to be connected to a physical pin on the device to communicate with it, hence\n@@ -11146,15 +11146,15 @@\n Currently there are 4 types, as follows:\n \u2022 bit - a single TRUE/FALSE or ON/OFF value\n \u2022 float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits\n of dynamic range.\n \u2022 u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295\n \u2022 s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 200 / 1291\n \n Function\n Real hardware components tend to act immediately on their inputs. For example, if the input\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\n@@ -11198,15 +11198,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 201 / 1291\n \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@@ -11221,15 +11221,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 202 / 1291\n \n Figure 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@@ -11243,15 +11243,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. A negative position\n indicates the position with respect to the end of the thread. For example 1 is start of thread, -1 is the\n end of the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 203 / 1291\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@@ -11322,15 +11322,15 @@\n applies if the component has a name option.\n to wait for the program to exit\n to ignore the program return value (with -w)\n name a component when it is a valid option for that component.\n \n Syntax and Examples of loadusr\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 204 / 1291\n \n loadusr <component> <options>\n loadusr halui\n loadusr -Wn spindle gs2_vfd -n spindle\n \n@@ -11352,15 +11352,15 @@\n A pin can be connected to a signal if it obeys the following rules:\n \u2022 An IN pin can always be connected to a signal.\n \u2022 An IO pin can be connected unless there\u2019s an OUT pin on the signal.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 205 / 1291\n \n Figure 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\n the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -11383,15 +11383,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 Syntax and Examples of setp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 206 / 1291\n \n setp <pin/parameter-name> <value>\n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6 sets\n@@ -11428,15 +11428,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 <signame> and the data type of <type>.\n Type must be bit, s32, u32 or float. Error if <signame> already exists.\n Syntax and Examples of newsig\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 207 / 1291\n \n newsig <signame> <type>\n newsig Xstep bit\n \n More information can be found in the HAL manual or the man pages for halrun.\n@@ -11465,15 +11465,15 @@\n you used the Stepper Config Wizard.\n \u2022 custom.hal This file is loaded next and before the GUI loads. This is where you put your custom\n HAL commands that you want loaded before the GUI is loaded.\n \u2022 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\n widgets need to be placed here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 208 / 1291\n \n 5.2.4 HAL Parameter\n Two parameters are automatically added to each HAL component when it is created. These parameters allow you to scope the execution time of a component.\n .time\n .tmax\n@@ -11518,15 +11518,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 209 / 1291\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@@ -11576,15 +11576,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 210 / 1291\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@@ -11633,15 +11633,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\n of the bits present plus any offset. It\u2019s similar to binary coded decimal but with more options. The\n hold bit interrupts the input processing, so that the sum value no longer changes.\n Syntax for loading component weighted_sum\n loadrt weighted_sum wsum_sizes=size[,size,...]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 211 / 1291\n \n Creates groups of \u0300 \u0300weighted_sum \u0300 \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 to servo thread\n addf process_wsums servo-thread\n@@ -11730,15 +11730,15 @@\n loadrt and2 count=3\n \n Configurations are more readable if you specify with the names= option for components where it is\n supported, e.g.:\n Example load command resulting in explicitly named components aa, ab, ac.\n loadrt and2 names=aa,ab,ac\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 212 / 1291\n \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@@ -11780,15 +11780,15 @@\n you use a derivative component to estimate the velocities and accelerations on each (x,y,z) coordinate,\n using the count= method will give arcane component names like ddt.0, ddt.1, ddt.2, etc.\n Alternatively, using the names= option like:\n loadrt ddt names=xvel,yvel,zvel\n ...\n loadrt ddt names=xaccel,yaccel,zaccel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 213 / 1291\n \n results in components sensibly named xvel, yvel, zvel, xaccel, yaccel, zaccel.\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@@ -11831,15 +11831,15 @@\n are expected. More complex parameter items included in specialized LinuxCNC components may not\n be handled properly.\n A .hal file may be excluded from TWOPASS processing by including a magic comment line anywhere in\n the .hal file. The magic comment line must begin with the string: #NOTWOPASS. Files specified with this\n magic comment are sourced by halcmd using the -k (keep going if failure) and -v (verbose) options.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 214 / 1291\n \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 Note\n While the order of loadrt directives is not usually critical, ordering of addf directives is often very\n@@ -11877,15 +11877,15 @@\n \n 5.4.2 Halcmd\n halcmd is a command line tool for manipulating HAL. A more complete man page exists for halcmd and\n installed together with LinuxCNC, from source or from a package. If LinuxCNC has been compiled as\n run-in-place, the man page is not installed but is accessible in the LinuxCNC main directory with the\n following command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 215 / 1291\n \n $ man -M docs/man halcmd\n \n 5.4.2.1 Notation\n For this tutorial, commands for the operating system are typically shown without the prompt provided\n@@ -11926,15 +11926,15 @@\n 5.4.3 A Simple Example\n 5.4.3.1 Loading a component\n For this tutorial, we are going to assume that you have successfully installed the Live CD and, if using\n a RIP 1 , invoke the rip-environment script to prepare your shell. In that case, all you need to do is load\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 216 / 1291\n \n the required RTOS and RTAPI modules into memory. Just run the following command from a terminal\n window:\n Loading HAL\n cd linuxcnc\n@@ -12015,15 +12015,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 217 / 1291\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@@ -12099,15 +12099,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 218 / 1291\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@@ -12215,15 +12215,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 219 / 1291\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@@ -12307,15 +12307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 220 / 1291\n \n Save configuration to a file with halcmd\n halcmd: save all saved.hal\n \n 5.4.3.6 Exiting halrun\n@@ -12350,15 +12350,15 @@\n halmeter\n \n Two windows will appear. The selection window is the largest and includes three tabs:\n \u2022 One lists all the pins currently defined in HAL,\n \u2022 one lists all the signals,\n \u2022 one lists all the parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 221 / 1291\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@@ -12385,27 +12385,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 222 / 1291\n \n Figure 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 Figure 5.6: Halmeter Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 223 / 1291\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@@ -12479,15 +12479,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12653,15 +12653,15 @@\n the velocity input of the first step pulse generator. The first step is to connect the signal to the signal\n generator 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 225 / 1291\n \n halcmd: show sig\n Signals:\n Type\n float\n@@ -12740,15 +12740,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 226 / 1291\n \n The main function for the step pulse generator is stepgen.make_pulses. Every time make_pulses\n runs it decides if it is time to take a step, and if so sets the outputs accordingly. For smooth step\n pulses, it should run as frequently as possible. Because it needs to run so fast, make_pulses is highly\n optimized and performs only a few calculations. Unlike the others, it does not need floating point\n@@ -12823,15 +12823,15 @@\n fine, we want the table speed to vary from +1 to -1 inches per second. However the scaling of the step\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 227 / 1291\n \n to multiply the velocity input to the step pulse generator by 10000 to get the proper output. That\n is exactly what the parameter stepgen.n.velocity-scale is for. In this case, both the X and Y axis\n have the same scaling, so we set the scaling parameters for both to 10000.\n halcmd: setp stepgen.0.position-scale 10000\n@@ -12868,24 +12868,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 228 / 1291\n \n Figure 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\n the record length at 4000 samples, so that we can use up to four channels at one time. When you\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 229 / 1291\n \n select a thread and then click OK, the dialog disappears, and the scope window looks something like\n the following figure.\n \n Figure 5.8: Initial scope window\n@@ -12897,33 +12897,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 230 / 1291\n \n Figure 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\n on the Signals tab then click on X-vel and the dialog closes and the channel is now selected.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 231 / 1291\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 232 / 1291\n \n Figure 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\n@@ -12934,15 +12934,15 @@\n have a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope\n about 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen\n will show the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven\u2019t\n configured one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger\n section at the top right. You should see the remainder of the buffer fill, then the screen will display\n the captured waveforms. The result will look something like the following figure.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 233 / 1291\n \n Figure 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@@ -12950,30 +12950,30 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 234 / 1291\n \n Figure 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,\n click on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is\n simply a list of all the probes that are currently connected. Select a probe to use for triggering by\n clicking on it. For this example we will use channel 3, the triangle wave as shown in the following\n figure.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 235 / 1291\n \n Figure 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@@ -12983,15 +12983,15 @@\n point is visible as a vertical line in the progress box above the screen. The trigger polarity can be\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 236 / 1291\n \n Figure 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 the\n@@ -12999,15 +12999,15 @@\n visible. However, sometimes simply expanding the waveforms isn\u2019t enough and you need to increase\n the sampling rate. For example, we would like to look at the actual step pulses that are being generated in our example. Since the step pulses may be only 50 \u00b5s long, sampling at 1 kHz isn\u2019t fast enough.\n To change the sample rate, click on the button that displays the number of samples and sample rate\n to 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 237 / 1291\n \n Figure 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\n@@ -13016,15 +13016,15 @@\n if off, and do the same for channel 4. Even though the channels are turned off, they still remember\n what they are connected to, and in fact we will continue to use channel 3 as the trigger source.\n To add new channels, select channel 5, and choose pin stepgen.0.dir, then channel 6, and select\n stepgen.0.step. Then click run mode Normal to start the scope, and adjust the horizontal zoom to\n 5 ms per division. You should see the step pulses slow down as the velocity command (channel 1)\n approaches zero, then the direction pin changes state and the step pulses speed up again. You might\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 238 / 1291\n \n want toincrease the gain on channel 1 to about 20 milli per division to better see the change in the\n velocity command. The result should look like the following figure.\n \n Figure 5.17: Step Pulses\n@@ -13036,15 +13036,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 239 / 1291\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@@ -13106,15 +13106,15 @@\n pin. From the direction arrow you can see that the button is and output and the or2.0.in0 is an input.\n 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\n Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 240 / 1291\n \n tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is\n best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to\n 1. load the hal_manualtoolchange component,\n 2. then send the iocontrol tool change to the hal_manualtoolchange change and\n@@ -13154,15 +13154,15 @@\n Make the connections.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 241 / 1291\n \n In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per\n minute (IPM) that we get from the ddt.0.out.\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@@ -13176,15 +13176,15 @@\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 a signal changes.\n In this example we have a servo motor driving a lathe spindle. If we just used the commanded\n spindle speeds on the servo it will try to go from present speed to commanded speed as fast as it\n can. This could cause a problem or damage the drive. To slow the rate of change we can send the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 242 / 1291\n \n spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to\n new settings more slowly.\n Three built-in components that limit a signal are:\n \u2022 limit2 limits the range and first derivative of a signal.\n@@ -13223,15 +13223,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 243 / 1291\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@@ -13245,15 +13245,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 244 / 1291\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@@ -13292,15 +13292,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 245 / 1291\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 \u2022 base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the\n@@ -13338,15 +13338,15 @@\n \u2022 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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 246 / 1291\n \n \u2022 motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled\n by M67 or M68.\n \u2022 motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a\n soft limit\n@@ -13384,15 +13384,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 \u2022 motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated\n mode\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 247 / 1291\n \n \u2022 motion.on-soft-limit - (bit, out) TRUE when the machine is on a soft limit.\n \u2022 motion.probe-input - (bit, in) G38.n uses the value on this pin to determine when the probe has made\n contact. TRUE for probe contact closed (touching), FALSE for probe contact open.\n \u2022 motion.program-line - (s32, out) The current program line while executing. Zero if not running or\n@@ -13423,15 +13423,15 @@\n to determine whether the realtime motion controller is meeting its timing constraints\n \u2022 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 \u2022 motion-command-handler - Receives and processes motion commands\n \u2022 motion-controller - Runs the LinuxCNC motion controller\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 248 / 1291\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@@ -13468,15 +13468,15 @@\n \u2022 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 \u2022 spindle.N.orient-mode - (s32,out) Desired spindle rotation mode M19. Default 0.\n \u2022 spindle.N.orient - (out,bit) Indicates start of spindle orient cycle. Set by M19. Cleared by any of\n M3, M4, or M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails\n with an error message.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 249 / 1291\n \n \u2022 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 and\n the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.\n \u2022 spindle.N.orient-fault - (s32, in) Fault code input for orient cycle. Any value other than zero will\n@@ -13515,15 +13515,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 non-realtime I/O commands via NML, interacts with HAL .\n iocontrol\u2019s HAL pins are turned on and off in non-realtime context. If you have strict timing requirements or simply need more I/O, consider using the realtime synchronized I/O provided by motion\n instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 250 / 1291\n \n 5.6.4.1 Pins\n \u2022 iocontrol.0.coolant-flood (bit, out) TRUE when flood coolant is requested.\n \u2022 iocontrol.0.coolant-mist (bit, out) TRUE when mist coolant is requested.\n \u2022 iocontrol.0.emc-enable-in (bit, in) Should be driven FALSE when an external E-Stop condition exists.\n@@ -13553,15 +13553,15 @@\n \u2022 ini.N.home_offset - (float, in) [JOINT_N]HOME_OFFSET\n \u2022 ini.N.home_offset - (s32, in) [JOINT_N]HOME_SEQUENCE\n \u2022 ini.L.min_limit - (float, in) [AXIS_L]MIN_LIMIT\n \u2022 ini.L.max_limit - (float, in) [AXIS_L]MAX_LIMIT\n \u2022 ini.L.max_velocity - (float, in) [AXIS_L]MAX_VELOCITY\n \u2022 ini.L.max_acceleration - (float, in) [AXIS_L]MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 251 / 1291\n \n Note\n The per-axis min_limit and max_limit pins are honored continuously after homing. The per-axis\n ferror and min_ferror pins are honored when the machine is on and not in position. The per-axis\n max_velocity and max_acceleration pins are sampled when the machine is on and the motion_state\n@@ -13594,15 +13594,15 @@\n If you do not find the man page or the name of the man page is already taken by another UNIX tool\n with the LinuxCNC man page residing in another section, then try to explicitly specify the section, as\n in man _sectionno_ axis, with sectionno = 1 for non-realtime and 9 for realtime components.\n Note\n See also the Man Pages section of the docs main page or the directory listing. To search in the man\n pages, use the UNIX tool apropos.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 252 / 1291\n \n 5.7.1.1 User Interfaces (non-realtime)\n axis\n axis-remote\n gmoccapy\n@@ -13683,15 +13683,15 @@\n gs2_vfd\n hy_gt_vfd\n \n Communicate with Mesa ethernet cards\n HAL non-realtime component for Automation Direct GS2 VFDs\n HAL non-realtime component for Huanyang GT-series VFDs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n hy_vfd\n mb2hal\n mitsub_vfd\n monitorxhc-hb04\n pi500_vfd\n pmx485\n@@ -13774,15 +13774,15 @@\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 sserial\n hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics\n HostMot2 Smart-Serial remote cards\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n thc\n \n 254 / 1291\n \n Torch Height Control using a Mesa THC card or any analog to velocity input\n \n@@ -13865,15 +13865,15 @@\n Toggles between a specified number of output bits\n Inverter\n One-shot pulse generator\n Two-input OR gate\n 8-bit binary match detector.\n IEC TOF timer - delay falling edge on a signal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 255 / 1291\n \n toggle\n toggle2nist\n ton\n timedelay\n@@ -13966,15 +13966,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 256 / 1291\n \n bin2gray\n Converts a number to the gray-code representation\n bitslice\n Converts an unsigned-32 input into individual bits\n@@ -14042,15 +14042,15 @@\n \n Accepts NML motion commands, interacts with HAL in realtime\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 257 / 1291\n \n 5.7.1.9 Motor control (Realtime)\n at_pid\n bldc\n clarke2\n@@ -14121,15 +14121,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -14180,15 +14180,15 @@\n rtapi_exit.3rtapi\n rtapi_get_clocks.3rtapi\n rtapi_get_msg_level.3rtapi\n rtapi_get_time.3rtapi\n \n 258 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 259 / 1291\n \n rtapi_inb.3rtapi\n rtapi_init.3rtapi\n rtapi_module_param.3rtapi\n RTAPI_MP_ARRAY_INT.3rtapi\n@@ -14233,21 +14233,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.19: Step Pulse Generator Block Diagram position mode\n \n 260 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 261 / 1291\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type=<type-array> [ctrl_type=<ctrl_array>]\n \n <type-array>\n@@ -14297,15 +14297,15 @@\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-C \u0300 - Phase C output (step types 3-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-D \u0300 - Phase D output (step types 5-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-E \u0300 - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 262 / 1291\n \n 5.8.1.2 Parameters\n \u2022 (float) stepgen. \u0300\n __<chan>__.position-scale \u0300 - Steps per position unit. This parameter is used for\n both output and feedback.\n@@ -14354,15 +14354,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)\u2019. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 263 / 1291\n \n Figure 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@@ -14374,33 +14374,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.21: Two-and-Three-Phase Step Types\n \n 264 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 265 / 1291\n \n Figure 5.22: Four-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 266 / 1291\n \n Figure 5.23: Five-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 267 / 1291\n \n 5.8.1.4 Functions\n The component exports three functions. Each function acts on all of the step pulse generators running different generators in different threads is not supported.\n \u2022 (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point).\n \u2022 (funct) stepgen.update-freq - Low speed function does position to velocity conversion, scaling and\n@@ -14434,15 +14434,15 @@\n is no default value, if <config-array> is not not specified, no PWM generator will be installed. The\n maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator is independent, but all are updated by the same function(s), at the same time. In the descriptions\n that follow, <chan> is the number of specific generators. The numbering of PWM generators starts\n at 0.\n Unloading PWMgen\n unloadrt pwmgen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 268 / 1291\n \n 5.8.2.1 Output Types\n The PWM generator supports three different output types.\n \u2022 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@@ -14487,15 +14487,15 @@\n to zero when disabled, regardless of this setting).\n \u2022 (float) pwmgen. \u0300\n __<chan>__.max-dc \u0300 - Maximum duty cycle, between 0.0 and 1.0.\n \u2022 (float) pwmgen. \u0300\n __<chan>__.curr-dc \u0300 - Current duty cycle - after all limiting and rounding (read\n only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 269 / 1291\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 \u2022 (funct) pwmgen.make-pulses - High speed function to generate PWM waveforms (no floating point).\n@@ -14516,15 +14516,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 270 / 1291\n \n Figure 5.24: Encoder Counter Block Diagram\n Loading Encoder\n halcmd: loadrt encoder [num_chan=<counters>]\n \n@@ -14538,15 +14538,15 @@\n \n 5.8.3.1 Pins\n \u2022 encoder._<chan>_.counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true,\n the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is\n useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in\n quadrature mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 271 / 1291\n \n \u2022 encoder._<chan>_.missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index.\n This allows a single IO pin to provide both position and index information. If the encoder wheel has\n 58 teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then\n the position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should\n@@ -14585,15 +14585,15 @@\n pulse.\n \u2022 encoder._<chan>_.reset (bit, In) - When True, force counts and position to zero immediately.\n \u2022 encoder._<chan>_.velocity (float, Out) - Velocity in scaled units per second. encoder uses an\n 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 272 / 1291\n \n \u2022 encoder._<chan>_.x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the\n counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it\n only counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful\n for some jogwheels.\n@@ -14610,15 +14610,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 273 / 1291\n \n Figure 5.25: PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=<loops>] [debug=1]\n \n@@ -14631,15 +14631,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 274 / 1291\n \n \u2022 (float) pid. \u0300\n __<loopnum>__.command \u0300 - The desired position, as commanded by another system\n component.\n \u2022 (float) pid. \u0300\n@@ -14677,15 +14677,15 @@\n \u2022 (float) pid.<loopnum>.deadband - Amount of error that will be ignored\n \u2022 (float) pid.<loopnum>.maxerror - Limit on error\n \u2022 (float) pid.<loopnum>.maxerrorI - Limit on error integrator\n \u2022 (float) pid.<loopnum>.maxerrorD - Limit on error derivative\n \u2022 (float) pid.<loopnum>.maxcmdD - Limit on command derivative\n \u2022 (float) pid.<loopnum>.maxcmdDD - Limit on command 2nd derivative\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 275 / 1291\n \n \u2022 (float) pid.<loopnum>.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 \u2022 (float) pid.<loopnum>.errorI - Integral of error.\n@@ -14718,15 +14718,15 @@\n __<chan-num>__.phase-A \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-B \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-Z \u0300 - Index pulse output.\n When .speed is positive, .phase-A leads .phase-B.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 276 / 1291\n \n 5.8.5.2 Parameters\n \u2022 (u32) sim-encoder. \u0300\n __<chan-num>__.ppr \u0300 - Pulses Per Revolution.\n \u2022 (float) sim-encoder. \u0300\n@@ -14764,15 +14764,15 @@\n 5.8.6.1 Pins\n Each individual filter has two pins.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.in \u0300 - Input of filter <F> in group <G>.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.out \u0300 - Output of filter <F> in group <G>.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 277 / 1291\n \n 5.8.6.2 Parameters\n Each group of filters has one parameter6 .\n \u2022 (s32) debounce. \u0300\n __<G>__.delay \u0300 - Filter delay for all filters in group <G>.\n@@ -14811,15 +14811,15 @@\n \u2022 (float) siggen. \u0300\n __<chan>__.triangle \u0300 - Triangle wave output.\n \u2022 (float) siggen. \u0300\n __<chan>__.square \u0300 - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 278 / 1291\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 \u2022 (float) siggen. \u0300\n __<chan>__.frequency \u0300 - Sets the frequency in Hertz, default value is 1 Hz.\n@@ -14897,15 +14897,15 @@\n 0\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\n other components.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 279 / 1291\n \n Table 5.22: (continued)\n Bit 4\n 0\n 0\n@@ -15088,15 +15088,15 @@\n function is 0xa. The hexadecimal prefix is 0x.\n \n 5.9 HAL Component Generator\n 5.9.1 Introduction\n This section introduces to the compilation HAL components, i.e. the addition of some machinists\u2019\n knowledge on how to deal with the machine. It should be noted that such components do not nec-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 280 / 1291\n \n essarily deal with the hardware directly. They often do, but not necessarily, e.g. there could be a\n component to convert between imperial and metric scales, so this section does not require to dive\n into the interaction with hardware.\n Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions\n@@ -15136,15 +15136,15 @@\n loadrt threads name1=servo-thread period1=1000000\n loadrt ddt\n addf ddt.0 servo-thread\n \n More information on loadrt and addf can be found in the HAL Basics.\n To test your component you can follow the examples in the HAL Tutorial.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 281 / 1291\n \n 5.9.4 Definitions\n \u2022 component - A component is a single real-time module, which is loaded with halcmd loadrt. One\n .comp file specifies one component. The component name and file name must match.\n \u2022 instance - A component can have zero or more instances. Each instance of a component is created\n@@ -15178,15 +15178,15 @@\n \u2022 option OPT (VALUE);\n \u2022 variable CTYPE STARREDNAME ([SIZE]);\n \u2022 description DOC;\n \u2022 examples DOC;\n \u2022 notes DOC;\n \u2022 see_also DOC;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 282 / 1291\n \n \u2022 license LICENSE;\n \u2022 author AUTHOR;\n \u2022 include HEADERFILE;\n Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate\n@@ -15237,15 +15237,15 @@\n \u2022 MAXSIZE : CONDSIZE - A number that gives the maximum size of the array, followed by an expression involving the variable personality and which always evaluates to less than MAXSIZE. When the\n array is created its size will be CONDSIZE.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 283 / 1291\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@@ -15283,15 +15283,15 @@\n items for numbered instances are named component-name.<num>.item-name.\n \u2022 option default_count number - (default: 1) Normally, the module parameter count defaults to 1. If\n specified, the count will default to this value instead.\n \u2022 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 284 / 1291\n \n \u2022 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 \u2018int rtapi_app_main(void);\u2018\n@@ -15335,15 +15335,15 @@\n command-line with --extra-compile-args=\u201d-I\u2026..\u201d. This alternative provides a way to set extra flags\n in cases where the input file is a .c file rather than a .comp file.\n \u2022 option homemod yes - (default: no)\n Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename .\n \u2022 option tpmod yes - (default: no)\n Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename .\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 285 / 1291\n \n If an option\u2019s VALUE is not specified, then it is equivalent to specifying option \u2026 yes.\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@@ -15376,15 +15376,15 @@\n 5.9.8 Restrictions\n Though HAL permits a pin, a parameter, and a function to have the same name, halcompile does not.\n Variable and function names that can not be used or are likely to cause problems include:\n \u2022 Anything beginning with _comp.\n \u2022 comp_id\n \u2022 fperiod\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 286 / 1291\n \n \u2022 rtapi_app_main\n \u2022 rtapi_app_exit\n \u2022 extra_setup\n \u2022 extra_cleanup\n@@ -15421,15 +15421,15 @@\n they do in realtime functions.\n \n 5.9.10 Components with one function\n If a component has only one function and the string \u201dFUNCTION\u201d does not appear anywhere after ;;,\n then the portion after ;; is all taken to be the body of the component\u2019s single function. See the Simple\n Comp for an example of this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 287 / 1291\n \n 5.9.11 Component Personality\n If a component has any pins or parameters with an \u201dif condition\u201d or \u201d[maxsize : condsize]\u201d, it is called a\n component with personality. The personality of each instance is specified when the module is loaded.\n Personality can be used to create pins only when needed. For instance, personality is used in the logic\n@@ -15464,15 +15464,15 @@\n \n Or, it can process and compile in one step, leaving example.ko (or example.so for the simulator) in the\n current directory:\n halcompile --compile rtexample.comp\n \n Or it can simply process, leaving example.c in the current directory:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 288 / 1291\n \n halcompile rtexample.comp\n \n halcompile can also compile and install a component written in C, using the --install and --compile\n options shown above:\n@@ -15510,15 +15510,15 @@\n pin out float out;\n param r float value = 1.0;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n FUNCTION(_) { out = value; }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 289 / 1291\n \n 5.9.15.2 sincos\n This component computes the sine and cosine of an input angle in radians. It has different capabilities\n than the \u201dsine\u201d and \u201dcosine\u201d outputs of siggen, because the input is an angle, rather than running\n freely based on a \u201dfrequency\u201d parameter.\n@@ -15564,15 +15564,15 @@\n // set this I/O port to 0 so that EXTRA_CLEANUP does not release the IO\n // ports that were never requested.\n io[extra_arg] = 0;\n return -EBUSY;\n }\n ioaddr = io[extra_arg];\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 290 / 1291\n \n return 0;\n }\n EXTRA_CLEANUP() {\n int i;\n@@ -15614,15 +15614,15 @@\n ;;\n #include <unistd.h>\n void user_mainloop(void) {\n while(1) {\n usleep(1000);\n FOR_ALL_INSTS() out = drand48();\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 291 / 1291\n \n }\n }\n \n 5.9.15.7 logic\n@@ -15668,15 +15668,15 @@\n logic.1.in-03, logic.1.in-04,\n \n \u2022 3-input AND and XOR gates: logic.2.and, logic.2.xor, logic.2.in-00, logic.2.in-01, logic.2.in-02\n 5.9.15.8 General Functions\n This example shows how to call functions from the main function. It also shows how to pass reference\n of HAL pins to those functions.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 292 / 1291\n \n component example;\n pin in s32 in;\n pin out bit out1;\n pin out bit out2;\n@@ -15720,15 +15720,15 @@\n level languages.\n The haltcl facility provides a means to use Tcl scripting and its features for computation, looping,\n branching, procedures, etc. in INI files. To use this functionality, you use the Tcl language and the\n extension .tcl for HAL files.\n The .tcl extension is understood by the main script (linuxcnc) that processes INI files. Haltcl files\n are identified in the the HAL section of INI files (just like HAL files).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 293 / 1291\n \n Example\n [HAL]\n HALFILE = conventional_file.hal\n HALFILE = tcl_based_file.tcl\n@@ -15775,15 +15775,15 @@\n ...\n \n The INI file values are accessible by text substitution in HAL files using the form:\n [SECTION]ITEM\n \n The same INI file values are accessible in Tcl files using the form of a Tcl global array variable:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 294 / 1291\n \n $::SECTION(ITEM)\n \n For example, an INI file item like:\n [JOINT_0]\n@@ -15825,15 +15825,15 @@\n above. The process can be automated with scripts that convert using these substitutions.\n [SECTION]ITEM ---> $::SECTION(ITEM)\n gets\n ---> hal gets\n list\n ---> hal list\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 295 / 1291\n \n 5.10.5 Haltcl Notes\n In haltcl, the value argument for the sets and setp commands is implicitly treated as an expression in\n the Tcl language.\n Example\n@@ -15876,15 +15876,15 @@\n net ${axis}vel => ddt.$ddt.in\n net ${axis}acc <= ddt.$ddt.out\n incr ddt\n }\n puts [show sig *vel]\n puts [show sig *acc]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 296 / 1291\n \n 5.10.7 Haltcl Interactive\n The halrun command recognizes haltcl files. With the -T option, haltcl can be run interaactively as a\n Tcl interpreter. This capability is useful for testing and for standalone HAL applications.\n Example\n@@ -15920,15 +15920,15 @@\n ...\n \n When halui starts it will read the MDI_COMMAND fields in the INI and export pins from 00 to the number\n of MDI_COMMAND \u2019s found in the INI, up to a maximum of 64 commands. These pins can be connected\n like any HAL pins. A common method is to use buttons provided by virtual control panels like shown\n in the example Example for MDI_COMMAND connections.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 297 / 1291\n \n Example 5.1 Example for MDI_COMMAND connections\n HAL file\n net quill-up\n halui.mdi-command-00 <= pyvcp.quillup\n@@ -15968,15 +15968,15 @@\n \u2022 halui.estop.reset (bit, in) - pin for requesting E-Stop reset\n 5.11.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 \u2022 halui.feed-override.decrease (bit, in) - pin for decreasing the FO (-=scale)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 298 / 1291\n \n \u2022 halui.feed-override.increase (bit, in) - pin for increasing the FO (+=scale)\n \u2022 halui.feed-override.reset (bit, in) - pin for resetting the FO (scale=1.0)\n \u2022 halui.feed-override.direct-value (bit, in) - false when using encoder to change counts, true when\n setting counts directly.\n@@ -16000,15 +16000,15 @@\n \u2022 halui.lube.on (bit, in) - pin for requesting lube on\n 5.11.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 299 / 1291\n \n 5.11.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@@ -16042,15 +16042,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 300 / 1291\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@@ -16083,15 +16083,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 301 / 1291\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@@ -16124,15 +16124,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 302 / 1291\n \n 5.11.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@@ -16162,15 +16162,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 303 / 1291\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@@ -16195,15 +16195,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 304 / 1291\n \n 5.11.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@@ -16224,15 +16224,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 305 / 1291\n \n Figure 5.26: Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin>\n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -16255,15 +16255,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 306 / 1291\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@@ -16313,15 +16313,15 @@\n Name\n passthrough.in\n passthrough.out\n \n halcmd: setp passthrough.in 3.14\n halcmd: show pin\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Component Pins:\n Owner Type Dir\n 03\n float IN\n 03\n float OUT\n@@ -16379,15 +16379,15 @@\n h.ready()\n \n Once all the pins and parameters have been created, call the .ready() method.\n 5.13.3.1 Changing the prefix\n The prefix can be changed by calling the .setprefix() method. The current prefix can be retrieved by\n calling the .getprefix() method.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 308 / 1291\n \n 5.13.4 Reading and writing pins and parameters\n For pins and parameters which are also proper Python identifiers, the value may be accessed or set\n using the attribute syntax:\n h.out = h.in\n@@ -16423,15 +16423,15 @@\n \n 5.13.7 Constants\n Use these to specify details rather then the value they hold.\n \u2022 HAL_BIT\n \u2022 HAL_FLOAT\n \u2022 HAL_S32\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 309 / 1291\n \n \u2022 HAL_U32\n \u2022 HAL_IN\n \u2022 HAL_OUT\n \u2022 HAL_RO\n@@ -16463,15 +16463,15 @@\n 5.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 310 / 1291\n \n 5.14.2.2 Parameters\n None\n 5.14.2.3 Functions\n \n@@ -16497,15 +16497,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.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 311 / 1291\n \n 5.14.4.2 Parameters\n \n (float) scale\n The input voltage (or current) will be multiplied by scale before being output to value.\n@@ -16540,15 +16540,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 312 / 1291\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@@ -16588,15 +16588,15 @@\n lists will disappear, and the small window will display the name and value of the selected item. The\n display is updated approximately 10 times per second. If you click \u201dAccept\u201d instead of \u201dOK\u201d, the small\n window will display the name and value of the selected item, but the large window will remain on the\n screen. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 313 / 1291\n \n background. You can also make halmeter start displaying a specific item immediately, by adding\n pin|sig|par[am] _<name>_ to the command line. It will display the pin, signal, or parameter <name>\n as soon as it starts - if there is no such item, it will simply start normally. And finally, if you specify an\n item to display, you can add -s before the pin|sig|param to tell halmeter to use a small window. The\n@@ -16610,15 +16610,15 @@\n 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 Figure 5.27: Halmeter selection window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 314 / 1291\n \n Figure 5.28: Halmeter watch window\n \n 5.15.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\n@@ -16632,15 +16632,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 315 / 1291\n \n Figure 5.29: 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@@ -16653,15 +16653,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 316 / 1291\n \n 5.15.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 Section 5.4.6 in the tutorial chapter, which explains the basics.\n@@ -16712,15 +16712,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 317 / 1291\n \n Figure 5.30: sim_pin Window\n \n 5.15.6 Simulate Probe\n simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage:\n@@ -16728,15 +16728,15 @@\n \n Figure 5.31: simulate_probe Window\n \n 5.15.7 HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n Usage:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 318 / 1291\n \n hal-histogram --help | -?\n or\n hal-histogram [Options] [pinname]\n \n@@ -16776,15 +16776,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 319 / 1291\n \n Figure 5.32: hal-histogram Window\n \n 5.15.8 Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -16795,15 +16795,15 @@\n 3. Each pin\u2019s component_function, thread, and addf-order.\n 4. Non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 320 / 1291\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@@ -16879,15 +16879,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 321 / 1291\n \n alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb\n \n Note\n Questionable component function detection may occur for\n@@ -16901,15 +16901,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 322 / 1291\n \n Chapter 6\n \n Hardware Drivers\n 6.1 Parallel Port Driver\n@@ -16942,15 +16942,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.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 323 / 1291\n \n If 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@@ -16974,15 +16974,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 <config-string> does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 324 / 1291\n \n Figure 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 Table 6.1: Parallel Port Direction\n@@ -17042,15 +17042,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 325 / 1291\n \n Table 6.1: (continued)\n Pin\n 14\n 15\n@@ -17113,15 +17113,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 get under the hood and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 326 / 1291\n \n 6.1.3 Pins\n \u2022 parport.<p>.pin- \u0300\n __<n>__-out \u0300 (bit) Drives a physical output pin.\n \u2022 parport.<p>.pin- \u0300\n@@ -17165,15 +17165,15 @@\n in the same thread as write. If -reset is TRUE, then the reset function will set the pin to the value\n of -out-invert. This can be used in conjunction with stepgen\u2019s doublefreq to produce one step per\n period. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 327 / 1291\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@@ -17215,15 +17215,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 328 / 1291\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@@ -17262,15 +17262,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.<boardnum>.read \u2014 Reads all digital inputs on one board.\n \u2022 (funct) ax5214.<boardnum>.write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 329 / 1291\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@@ -17289,15 +17289,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 330 / 1291\n \n Figure 6.2: GM6-PCI card connectors and LEDs\n \n 6.3.1 I/O connectors\n \n@@ -17333,15 +17333,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 331 / 1291\n \n gm.<card_no>.gpio.<gpio_con_no>\n \n where <gpio_con_no> is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n@@ -17389,15 +17389,15 @@\n When True, pin value will be inverted.\n Used when pin is configured as output.\n \n 6.3.2 Axis connectors\n \n Figure 6.4: Pin numbering of axis connectors\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 332 / 1291\n \n Table 6.6: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17425,15 +17425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 333 / 1291\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@@ -17497,15 +17497,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 334 / 1291\n \n Table 6.8: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17580,15 +17580,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 335 / 1291\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@@ -17659,15 +17659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 336 / 1291\n \n Table 6.10: (continued)\n Parameters\n .control-type\n \n@@ -17724,15 +17724,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 337 / 1291\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@@ -17750,15 +17750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 338 / 1291\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n # 2000 ns = 2 \u00b5s\n \n@@ -17811,15 +17811,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 339 / 1291\n \n Table 6.12: (continued)\n Pins\n \n Type and\n@@ -17882,15 +17882,15 @@\n gm.<card_no>.can-gm.<axis_no>\n \n where <axis_no> 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.<card_no>.write\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 340 / 1291\n \n 6.3.3.1 Pins\n Table 6.14: CAN module pins\n Pins\n \n@@ -17936,15 +17936,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 341 / 1291\n \n Table 6.17: Watchdog parameters\n Parameters\n \n Type and\n@@ -18049,15 +18049,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 342 / 1291\n \n gm.<card_no>.joint.<axis_no>\n \n where <axis_no> 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@@ -18113,15 +18113,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 343 / 1291\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@@ -18146,15 +18146,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 344 / 1291\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@@ -18184,15 +18184,15 @@\n Type and\n direction\n (bit, Out)\n \n Pin description\n Output pin for relay\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 345 / 1291\n \n Table 6.23: Relay output module parameters\n Parameters\n \n Type and\n@@ -18255,15 +18255,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 346 / 1291\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.<card_no>.rs485\n@@ -18335,15 +18335,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 347 / 1291\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.<card_no>.rs485\n@@ -18425,15 +18425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 348 / 1291\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@@ -18466,15 +18466,15 @@\n number you set on the GS2.\n \u2022 -v or --verbose Turn on debug messages.\n \u2022 -A or --accel-seconds <n> (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.\n \u2022 -D or --decel-seconds <n> (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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 349 / 1291\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@@ -18504,15 +18504,15 @@\n \u2022 <name>.spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n \u2022 <name>.status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n \u2022 <name>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 350 / 1291\n \n 6.4.3 Parameters\n With <name> being gs2_vfd or the name given during loading with the -n option:\n \u2022 <name>.error-count (s32, RW)\n \u2022 <name>.loop-time (float, RW) how often the modbus is polled (default: 0.1)\n@@ -18560,15 +18560,15 @@\n 0x00000004\n \n Pin Num\n 3\n 5\n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 351 / 1291\n \n Table 6.29: (continued)\n GPIO Num\n 5\n 6\n@@ -18682,15 +18682,15 @@\n \n 6.5.4 Parameters\n Only the standard timing parameters which are created for all components exist.\n *hal_pi_gpio.read.tmax *hal_pi_gpio.read.tmax-increased *hal_pi_gpio.write.tmax *hal_pi_gpio.write.tmaxincreased\n For unknown reasons the driver also creates HAL pins to indicate timing\n *hal_pi_gpio.read.time *hal_pi_gpio.write.time\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 352 / 1291\n \n 6.5.5 Functions\n \u2022 hal_pi_gpio.read - Add this to the base thread to update the HAL pin values to match the physical\n input values.\n \u2022 hal_pi_gpio.write - Add this to the base thread to update the physical pins to match the HAL values.\n@@ -18728,15 +18728,15 @@\n reset=GPIO21,GPIO22\n \n This driver relies on the libgpiod-dev library and the gpiod package, which contains a number of\n utilities for configuring and querying GPIO. The GPIO pin names in the \u201dloadrt\u201d line of the HAL given\n above should be the names given by the gpioinfo command.\n Sample output (truncated):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n $ gpioinfo\n gpiochip0 - 54 lines:\n line\n 0:\n \u201dID_SDA\u201d\n line\n@@ -18877,15 +18877,15 @@\n opendrain\n opensource\n biasdisable\n pulldown\n pullup\n The version of libgpiod-dev installed can be determined by the command gpioinfo -v\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 354 / 1291\n \n 6.6.3 Pins\n \u2022 hal_gpio.NAME-in - HAL_OUT The value of an input pin presented in to HAL\n \u2022 hal_gpio.NAME-in-not - HAL_OUT An inverted version of the above, for convenience\n \u2022 hal_gpio.NAME-out - HAL_IN use this pin to transfer a HAL bit value to a physical output\n@@ -18922,15 +18922,15 @@\n SUBSYSTEM==\u201dbcm2835-gpiomem\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/ \u2190virtual/gpio;\\\n chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 355 / 1291\n \n \u2019\u201d\n SUBSYSTEM==\u201dpwm*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\\\n chown -R root:gpio /sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 \u2190/sys/devices/platform/soc/*.pwm/pwm/pwmchip*\\\n@@ -18963,15 +18963,15 @@\n \u2022 5I22 (96 I/O pins): using hm2_pci module\n \u2013 16-channel servo\n \u2013 8-channel servo plus 24 step/dir generators\n \u2022 5I20, 5I23, 4I65, 4I68 (72 I/O pins): using hm2_pci module\n \u2013 12-channel servo\n \u2013 8-channel servo plus 4 step/dir generators\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 356 / 1291\n \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@@ -19010,15 +19010,15 @@\n because the I/O Pins have become inputs).\n Resetting the watchdog resets the I/O pins to the configuration chosen at load-time.\n If the firmware includes a watchdog, the following HAL objects will be exported:\n 6.7.5.1 Pins\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 357 / 1291\n \n 6.7.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@@ -19058,15 +19058,15 @@\n connections to your card based on your configuration.\n An example of a 5I20 configuration:\n [HOSTMOT2]\n DRIVER=hm2_pci\n BOARD=5i20\n CONFIG=\u201dfirmware=hm2/5i20/SVST8_4.BIT num_encoders=1 num_pwmgens=1 num_stepgens=3\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 358 / 1291\n \n The above configuration produced this printout.\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@@ -19110,15 +19110,15 @@\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware-<board> package. There is more information about firmware and configuration in the Configurations section.\n \n 6.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 359 / 1291\n \n Figure 6.9: 5i20 HAL Pins\n \n 6.7.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@@ -19134,15 +19134,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19355,15 +19355,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19468,15 +19468,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 362 / 1291\n \n 6.7.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@@ -19513,15 +19513,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 363 / 1291\n \n 6.7.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@@ -19556,15 +19556,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.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 364 / 1291\n \n 6.7.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@@ -19606,15 +19606,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.7.15 Encoder\n Encoders have names like hm2_<BoardType>.<BoardNum>.encoder.<Instance>.. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 365 / 1291\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@@ -19651,15 +19651,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 366 / 1291\n \n 6.7.16 5I25 Configuration\n 6.7.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@@ -19693,15 +19693,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 367 / 1291\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@@ -19733,15 +19733,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 368 / 1291\n \n 6.8.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@@ -19821,15 +19821,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 369 / 1291\n \n Value\n Type\n Required\n Description\n@@ -19922,15 +19922,15 @@\n parameter above.\n \n 6.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 370 / 1291\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@@ -19966,15 +19966,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 371 / 1291\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@@ -20019,15 +20019,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 372 / 1291\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@@ -20111,15 +20111,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 373 / 1291\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20182,15 +20182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20247,15 +20247,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 374 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 375 / 1291\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20288,15 +20288,15 @@\n 6.8.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.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 376 / 1291\n \n 6.8.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.8.5.6 fnct_06_write_single_register\n@@ -20327,15 +20327,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 377 / 1291\n \n 6.9.1 Command Line Options\n The command line options are:\n \u2022 -b or --baud <rate> : set the baud rate - all networked VFDs must be the same\n \u2022 -p or --port <device path> : sets the port to use such as /dev/ttyUSB0\n@@ -20361,15 +20361,15 @@\n \u2022 <n>.scale-fb (float, in) Scales the motor-fb pin to arbitrary units. default 1 = Hertz.\n \u2022 <n>.scale-amps (float, in) Scales the motor-amps pin to arbitrary units. default 1 = amps.\n \u2022 <n>.scale-power (float, in) Scales the motor-power pin to arbitrary units. default 1 = .\n \u2022 <n>.estop (bit, in) puts the VFD into emergency-stopped status.\n \u2022 <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 378 / 1291\n \n 6.9.3 HAL example\n #\n # example usage of the Mitsubishi VFD driver\n #\n@@ -20428,15 +20428,15 @@\n Fr-A700 F700 E700 D700 technical manual for the 700 series\n The VFD must have PR settings adjusted manually for serial communication.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 379 / 1291\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 (maximum) COM errors then VFD faults.\n@@ -20472,15 +20472,15 @@\n \u2022 (bit) motenc.<board>.enc-<channel>-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.<board>.dac-<channel>-value - Analog output value for DAC (in user units, see -gain\n and -offset)\n \u2022 (float) motenc.<board>.adc-<channel>-value - Analog input value read by ADC (in user units, see\n -gain and -offset)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 380 / 1291\n \n \u2022 (bit) motenc.<board>.in-<channel> - State of digital input pin, see canonical digital input.\n \u2022 (bit) motenc.<board>.in-<channel>-not - Inverted state of digital input pin, see canonical digital\n input.\n \u2022 (bit) motenc.<board>.out-<channel> - Value to be written to digital output, seen canonical digital\n@@ -20526,15 +20526,15 @@\n \u2022 (funct) motenc.<board>.encoder-read - Reads all encoder counters.\n \u2022 (funct) motenc.<board>.adc-read - Reads the analog-to-digital converters.\n \u2022 (funct) motenc.<board>.digital-in-read - Reads digital inputs.\n \u2022 (funct) motenc.<board>.dac-write - Writes the voltages to the DACs.\n \u2022 (funct) motenc.<board>.digital-out-write - Writes digital outputs.\n \u2022 (funct) motenc.<board>.misc-update - Updates misc stuff.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 381 / 1291\n \n 6.11 Opto22 Driver\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n 6.11.1 The Adapter Card\n@@ -20570,15 +20570,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 382 / 1291\n \n 6.11.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@@ -20615,15 +20615,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 383 / 1291\n \n 6.11.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@@ -20666,15 +20666,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 384 / 1291\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@@ -20717,15 +20717,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.<port>.encoder.<channel>.position - Encoder position, in user units.\n \u2022 (All bit bidir) ppmc.<port>.encoder.<channel>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 385 / 1291\n \n \u2022 (PPMC float output) ppmc.<port>.DAC.<channel>.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.<port>.pwm.<channel>.enable - Enables a PWM generator.\n@@ -20764,15 +20764,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.<port>.pwm.<channel>.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.<port>.pwm.<channel>.max-dc - Maximum duty cycle, from 0.0 to 1.0.\n \u2022 (UPC float) ppmc.<port>.pwm.<channel>.min-dc - Minimum duty cycle, from 0.0 to 1.0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 386 / 1291\n \n \u2022 (UPC float) ppmc.<port>.pwm.<channel>.duty-cycle - Actual duty cycle (used mostly for troubleshooting.)\n \u2022 (UPC bit) ppmc.<port>.pwm.<channel>.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@@ -20807,15 +20807,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.13 Pluto P Driver\n 6.13.1 General Info\n The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 387 / 1291\n \n 6.13.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@@ -20852,15 +20852,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.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 388 / 1291\n \n 6.13.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@@ -20891,15 +20891,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 389 / 1291\n \n 6.13.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@@ -20929,15 +20929,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 390 / 1291\n \n Table 6.41: (continued)\n Primary function\n \n Alternate Function\n@@ -21050,15 +21050,15 @@\n \n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 391 / 1291\n \n \u2022 Quadrature positions for each channel are latched at different times.\n 6.13.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@@ -21085,15 +21085,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 392 / 1291\n \n Figure 6.11: Pluto-Step Pinout\n \n 6.13.3.2 Input latching and output updating\n \u2022 Step frequencies for each channel are updated at different times.\n@@ -21102,15 +21102,15 @@\n \u2022 Feedback positions for each channel are latched at different times.\n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 393 / 1291\n \n Figure 6.12: Pluto-Step Timings\n \n 6.13.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@@ -21125,15 +21125,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 394 / 1291\n \n 6.14.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@@ -21164,15 +21164,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.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 395 / 1291\n \n 6.15 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@@ -21212,15 +21212,15 @@\n 6.15.2 Pins\n \u2022 stg.<channel>.counts - (s32) Tracks the counted encoder ticks.\n \u2022 stg.<channel>.position - (float) Outputs a converted position.\n \u2022 stg.<channel>.dac-value - (float) Drives the voltage for the corresponding DAC.\n \u2022 stg.<channel>.adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n \u2022 stg.in-<pinnum> - (bit) Tracks a physical input pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 396 / 1291\n \n \u2022 stg.in-<pinnum>-not - (bit) Tracks a physical input pin, but inverted.\n \u2022 stg.out-<pinnum> - (bit) Drives a physical output pin\n For each pin, <channel> is the axis number, and <pinnum> 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@@ -21254,15 +21254,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 397 / 1291\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@@ -21300,15 +21300,15 @@\n <Prefix>.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 <Prefix>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 398 / 1291\n \n 6.17 VFS11 VFD Driver\n This is a non-realtime HAL program to control the S11 series of VFDs 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@@ -21341,15 +21341,15 @@\n \u2022 <n>.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 <n>.alarm-code (s32, out) non-zero if drive is in alarmed state. Bitmap describing alarm information (see register FC91 description). Use err-reset (see below) to clear the alarm.\n \u2022 <n>.at-speed (bit, out) when drive is at commanded speed (see speed-tolerance below)\n \u2022 <n>.current-load-percentage (float, out) reported from the VFD\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 399 / 1291\n \n \u2022 <n>.dc-brake (bit, in) engage the DC brake. Also turns off spindle-on.\n \u2022 <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 \u2022 <n>.err-reset (bit, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may\n@@ -21386,15 +21386,15 @@\n \u2022 <n>.status (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function\n Instruction Manual, register FD01). A bitmap.\n \u2022 <n>.trip-code (s32, out) trip code if VF-S11 is in tripped state.\n \u2022 <n>.error-count (s32, out) number of Modbus transactions which returned an error\n \u2022 <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 400 / 1291\n \n 6.17.3 Parameters\n Where <n> is vfs11_vfd or the name given during loading with the -n option.\n \u2022 <n>.frequency-limit (float, RO) upper limit read from VFD setup.\n \u2022 <n>.loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n@@ -21430,15 +21430,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21477,15 +21477,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 401 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 402 / 1291\n \n 6.17.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@@ -21519,15 +21519,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 403 / 1291\n \n 6.17.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@@ -21535,15 +21535,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 404 / 1291\n \n Chapter 7\n \n Hardware Examples\n 7.1 PCI Parallel Port\n@@ -21574,15 +21574,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 405 / 1291\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@@ -21618,15 +21618,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 406 / 1291\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@@ -21668,15 +21668,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 407 / 1291\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@@ -21716,15 +21716,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 408 / 1291\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@@ -21764,15 +21764,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 409 / 1291\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@@ -21819,15 +21819,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 410 / 1291\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@@ -21870,15 +21870,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 411 / 1291\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 non-realtime component for the Automation Direct GS2 VFDs\n@@ -21907,15 +21907,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 412 / 1291\n \n Chapter 8\n \n ClassicLadder\n 8.1 ClassicLadder Introduction\n@@ -21945,15 +21945,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 413 / 1291\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@@ -21983,15 +21983,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 414 / 1291\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@@ -22023,15 +22023,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 415 / 1291\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@@ -22060,15 +22060,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 416 / 1291\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@@ -22147,15 +22147,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 417 / 1291\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@@ -22189,29 +22189,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 418 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 419 / 1291\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@@ -22229,15 +22229,15 @@\n %Q and the first %W (in an equation). You might see some funny labels, such as (103) in the rungs.\n This is displayed (on purpose) because of an old bug- when erasing elements older versions sometimes\n didn\u2019t erase the object with the right code. You might have noticed that the long horizontal connection\n button sometimes did not work in the older versions. This was because it looked for the free code but\n found something else. The number in the brackets is the unrecognized code. The ladder program will\n still work properly, to fix it erase the codes with the editor and save the program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 420 / 1291\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@@ -22248,28 +22248,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 421 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 422 / 1291\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@@ -22277,30 +22277,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 423 / 1291\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 424 / 1291\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@@ -22329,21 +22329,21 @@\n \u2022 Compare - creates a compare block to compare variable to values or other variables, e.g. %W1<=5\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, e.g. %W2=7\n or %W1=%W2. ASSIGNMENT functions can only be placed at the right most side of the section 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 425 / 1291\n \n Figure 8.7: Config Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 426 / 1291\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@@ -22380,15 +22380,15 @@\n The time intervals can be set in multiples of 100&8239;ms, 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 427 / 1291\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@@ -22418,15 +22418,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 428 / 1291\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@@ -22459,15 +22459,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 429 / 1291\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@@ -22484,23 +22484,23 @@\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\n 5 and when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will\n be set to True.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 8.8: Assign/Compare Ladder Example\n \n Figure 8.9: Assignment Expression Example\n \n 430 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 431 / 1291\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@@ -22526,15 +22526,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 432 / 1291\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@@ -22581,15 +22581,15 @@\n \u2022 %M \u0300\n __xx__.P \u0300 - Monostable xx preset (integer)\n \u2022 %C \u0300\n __xx__.D \u0300 - Counter xx done (Boolean, user read only)\n \u2022 %C \u0300\n __xx__.E \u0300 - Counter xx empty overflow (Boolean, user read only)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 433 / 1291\n \n \u2022 %C \u0300\n __xx__.F \u0300 - Counter xx full overflow (Boolean, user read only)\n \u2022 %C \u0300\n __xx__.V \u0300 - Counter xx current value (integer)\n@@ -22628,15 +22628,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 434 / 1291\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 - shows the variable that must be true for control to pass through to the next step.\n@@ -22647,15 +22647,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 435 / 1291\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 %X \u0300\n __xxx__ (e.g., \u0300\n@@ -22689,21 +22689,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 non-realtime program this page\n will not be displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 436 / 1291\n \n Figure 8.12: Modbus I/O Config\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 437 / 1291\n \n Figure 8.13: Modbus Communication Config\n \u2022 SERIAL PORT - For IP blank. For serial the location/name of serial driver, e.g., /dev/ttyS0 ( or\n /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@@ -22718,15 +22718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 438 / 1291\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@@ -22765,15 +22765,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 439 / 1291\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@@ -22803,24 +22803,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 440 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 441 / 1291\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@@ -22848,15 +22848,15 @@\n (2\n 1 to 125 (0x7D)\n Bytes)\n (2\n Calculated\n bytes) automatically\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 442 / 1291\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 <Data-21 0 0 1 8E 36\n \n Slave address-1\n@@ -22899,15 +22899,15 @@\n Exception code meaning:\n \u2022 1 - illegal Function\n \u2022 2 - illegal data address\n \u2022 3 - illegal data value\n \u2022 4 - slave device failure\n Here is an example received command as printed in the terminal (all Hex):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 443 / 1291\n \n INFO CLASSICLADDERModbus I/O module received: Lgt=5 ->\n code-83 ) 2 C0 F1\n \n (Slave address-1\n@@ -22967,15 +22967,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 444 / 1291\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@@ -22994,15 +22994,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 445 / 1291\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@@ -23018,48 +23018,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 446 / 1291\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 447 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 448 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 449 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 450 / 1291\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@@ -23070,15 +23070,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 451 / 1291\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@@ -23088,15 +23088,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 452 / 1291\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@@ -23110,15 +23110,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 453 / 1291\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@@ -23129,15 +23129,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 454 / 1291\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@@ -23171,36 +23171,36 @@\n <halpin>\u201dpy-reset\u201d</halpin>\n <text>\u201dReset\u201d</text>\n </button>\n </pyvcp>\n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 455 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 456 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 457 / 1291\n \n Chapter 9\n \n Advanced Topics\n 9.1 Kinematics\n@@ -23228,15 +23228,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 458 / 1291\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@@ -23290,15 +23290,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 459 / 1291\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@@ -23319,15 +23319,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 460 / 1291\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@@ -23359,15 +23359,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 461 / 1291\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@@ -23402,15 +23402,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 462 / 1291\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@@ -23445,15 +23445,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 463 / 1291\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@@ -23496,15 +23496,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 464 / 1291\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@@ -23536,87 +23536,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 465 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 466 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 467 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 468 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 469 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 470 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 471 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 472 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 473 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 474 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 475 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 476 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 477 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 478 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 479 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 480 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 481 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 482 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 483 / 1291\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@@ -23645,27 +23645,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 484 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 485 / 1291\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@@ -23675,15 +23675,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 486 / 1291\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@@ -23691,43 +23691,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 487 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 488 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 489 / 1291\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@@ -23746,56 +23746,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 490 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 491 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 492 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 493 / 1291\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@@ -23809,42 +23809,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 494 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 495 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 496 / 1291\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@@ -23859,15 +23859,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 497 / 1291\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@@ -23911,15 +23911,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 498 / 1291\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@@ -23941,29 +23941,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9.3.8 Figures\n \n Figure 9.10: Table tilting/rotating configuration\n \n 499 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 9.11: Spindle/table tilting configuration\n \n 500 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 501 / 1291\n \n Figure 9.12: Spindle tilting/rotary configuration\n \n 9.3.9 REFERENCES\n 1. AXIS MACHINE TOOLS: Kinematics and Vismach Implementation in LinuxCNC, RJ du Preez,\n@@ -23978,15 +23978,15 @@\n \n 9.4 Switchable Kinematics (switchkins)\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 502 / 1291\n \n calculations for most operations but can be switched to identity kinematics for control of individual\n 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@@ -24022,15 +24022,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 503 / 1291\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@@ -24062,15 +24062,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 504 / 1291\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@@ -24109,15 +24109,15 @@\n XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 505 / 1291\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@@ -24161,15 +24161,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 506 / 1291\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@@ -24214,15 +24214,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 507 / 1291\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@@ -24255,15 +24255,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 508 / 1291\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@@ -24302,15 +24302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 509 / 1291\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@@ -24388,15 +24388,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Control type\n PID\n \n 510 / 1291\n \n P\n@@ -24440,15 +24440,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 511 / 1291\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<test> call [1.234] [4.65]\n \n@@ -24484,15 +24484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 512 / 1291\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@@ -24530,15 +24530,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 513 / 1291\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@@ -24575,15 +24575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 514 / 1291\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@@ -24621,15 +24621,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=<Python function name>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 515 / 1291\n \n prolog=<Python function name>\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=<Python function name>\n@@ -24668,15 +24668,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 516 / 1291\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@@ -24718,15 +24718,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#<q>]]\n (debug, Q word set: #<q>)\n o100 endif\n o<m400> endsub\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 517 / 1291\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@@ -24767,15 +24767,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 518 / 1291\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@@ -24819,15 +24819,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 519 / 1291\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@@ -24871,15 +24871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 520 / 1291\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@@ -24914,15 +24914,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 521 / 1291\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@@ -24973,15 +24973,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 522 / 1291\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@@ -25027,15 +25027,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 523 / 1291\n \n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n@@ -25072,15 +25072,15 @@\n \u2022 M6 (change_prolog): #<tool_in_spindle>, #<selected_tool>, #<current_pocket>, #<selected_pocket>\n \u2022 M61 (settool_prolog): #<tool> , #<pocket>\n \u2022 S (setspeed_prolog): #<speed>\n \u2022 F (setfeed_prolog): #<feed>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 524 / 1291\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@@ -25130,15 +25130,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 525 / 1291\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@@ -25186,15 +25186,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 526 / 1291\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@@ -25243,15 +25243,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 527 / 1291\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@@ -25285,15 +25285,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 528 / 1291\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@@ -25337,15 +25337,15 @@\n [PYTHON]\n TOPLEVEL = <filename>\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 = <directory>\n Prepend this directory to PYTHON_PATH. A repeating group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 529 / 1291\n \n PATH_APPEND = <directory>\n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = <integer>\n Log level of plugin-related actions. Increase this if you suspect problems. Can be very\n@@ -25385,15 +25385,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.<funct\n and remap.<function> Python calls are methods of this Interp class, although there is no explicit\n Python definition of this class (it is a Boost.Python wrapper instance) and hence receive the as the\n first parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 530 / 1291\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@@ -25433,15 +25433,15 @@\n \u2013 when a comment like ;py,<Python statement> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 531 / 1291\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@@ -25479,15 +25479,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 532 / 1291\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n a message text\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25524,15 +25524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Warning\n The yield feature is fragile.\n TERP_EXECUTE_FINISH:\n \n 533 / 1291\n \n@@ -25576,15 +25576,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 #<result>\u201d\n return INTERP_OK\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 534 / 1291\n \n o<testparam> sub\n (debug, call_level=#<_call_level> myname=#<myname>)\n ; try commenting out the next line and run again\n #<result> = [#<myname> * 3]\n@@ -25628,15 +25628,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 535 / 1291\n \n Canon The canon layer is practically all free functions. Example:\n import emccanon\n def example(self,*args):\n ....\n@@ -25675,15 +25675,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 #<circumference> = [2 * #<radius> * #<_pi>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 536 / 1291\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@@ -25714,15 +25714,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 #<tool> and #<pocket> 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(#<tool>) is executed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 537 / 1291\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@@ -25752,15 +25752,15 @@\n behavior be preceding or following it with some other statements.\n \u2022 Otherwise, the #<selected_pocket> 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(#<selected_pocket>) is executed.\n \u2022 The new tool parameters (offsets, diameter etc) are set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 538 / 1291\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@@ -25793,15 +25793,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 539 / 1291\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@@ -25856,15 +25856,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 540 / 1291\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@@ -25884,15 +25884,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<pydevd> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 541 / 1291\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@@ -25908,15 +25908,15 @@\n Now, what about preview of this procedure? At preview time, of course it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 542 / 1291\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@@ -25960,15 +25960,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 543 / 1291\n \n Table 9.6: Table of Allocated G-codes 10-19\n #\n 10\n 11\n@@ -26051,15 +26051,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 544 / 1291\n \n Table 9.9: (continued)\n #\n 43\n 44\n@@ -26140,15 +26140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 545 / 1291\n \n Table 9.12: (continued)\n #\n 76\n 77\n@@ -26241,15 +26241,15 @@\n \n Mx7\n \n Mx8\n \n Mx9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 546 / 1291\n \n Table 9.15: (continued)\n #\n 10-19\n 20-29\n@@ -26379,15 +26379,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 547 / 1291\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@@ -26421,15 +26421,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 548 / 1291\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G1 Y20 Z-5\n N40 G0 Z30\n@@ -26470,15 +26470,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 549 / 1291\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@@ -26514,15 +26514,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 550 / 1291\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@@ -26559,15 +26559,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 551 / 1291\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@@ -26602,15 +26602,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 552 / 1291\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@@ -26653,15 +26653,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 553 / 1291\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 component 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@@ -26704,15 +26704,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 554 / 1291\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@@ -26753,15 +26753,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 555 / 1291\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@@ -26804,15 +26804,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 556 / 1291\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@@ -26877,15 +26877,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 557 / 1291\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@@ -26923,15 +26923,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 558 / 1291\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@@ -26962,15 +26962,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 559 / 1291\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@@ -27008,15 +27008,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 560 / 1291\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@@ -27051,15 +27051,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 561 / 1291\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@@ -27097,15 +27097,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 562 / 1291\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@@ -27140,15 +27140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 563 / 1291\n \n Note\n INI file settings for [EMCIO]TOOL_TABLE are ignored when a db_program is specified.\n \n Note\n@@ -27182,15 +27182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 564 / 1291\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@@ -27233,15 +27233,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 565 / 1291\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@@ -27286,15 +27286,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 566 / 1291\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@@ -27314,50 +27314,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 567 / 1291\n \n Part II\n \n Usage\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 568 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 569 / 1291\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\n and the Axis Section of the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 570 / 1291\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@@ -27391,15 +27391,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 571 / 1291\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@@ -27435,15 +27435,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 572 / 1291\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@@ -27479,15 +27479,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 573 / 1291\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@@ -27527,15 +27527,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 574 / 1291\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@@ -27585,15 +27585,15 @@\n \n Execute next line [T]\n \n \u2022\n \n Pause Execution [P] Resume Execution [S]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022\n \n Stop Program Execution [ESC]\n \n \u2022\n \n@@ -27660,15 +27660,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 576 / 1291\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>\n (Tool Change) will not show on the preview until after the first feed move. To turn either of these\n@@ -27702,15 +27702,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 577 / 1291\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@@ -27731,15 +27731,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 578 / 1291\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@@ -27765,15 +27765,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 579 / 1291\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@@ -27787,15 +27787,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 580 / 1291\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@@ -27809,15 +27809,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 581 / 1291\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@@ -27894,15 +27894,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 582 / 1291\n \n Table 10.1: (continued)\n Keystroke\n R\n P\n@@ -27945,15 +27945,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 583 / 1291\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@@ -27970,15 +27970,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 584 / 1291\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@@ -28009,50 +28009,50 @@\n \u2022 hal allows the creation of non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 585 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 586 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 587 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 588 / 1291\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@@ -28060,15 +28060,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=<filename> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 589 / 1291\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@@ -28090,15 +28090,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 590 / 1291\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@@ -28134,15 +28134,15 @@\n Example of .axisrc file\n root_window.bind(\u201d<Control-q>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 591 / 1291\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@@ -28179,15 +28179,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 592 / 1291\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@@ -28270,15 +28270,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 593 / 1291\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@@ -28317,15 +28317,15 @@\n root_window.bind(\u2019<Control-Key-5>\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019<Control-Key-6>\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019<Control-Key-7>\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019<Control-Key-8>\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019<Control-Key-9>\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019<Control-Key-0>\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n root_window.bind(\u2019<Key-quoteleft>\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019<Key-1>\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019<Key-2>\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019<Key-3>\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019<Key-4>\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019<Key-5>\u2019,lambda event: set_feedrate(50))\n@@ -28364,15 +28364,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 594 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 595 / 1291\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@@ -28413,15 +28413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 596 / 1291\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@@ -28477,15 +28477,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 597 / 1291\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28582,15 +28582,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 598 / 1291\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@@ -28620,15 +28620,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 599 / 1291\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@@ -28663,15 +28663,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 600 / 1291\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@@ -28682,15 +28682,15 @@\n other versions, please inform about problems and / or solutions on the LinuxCNC forum or the German\n CNC Ecke Forum or LinuxCNC users mailing list.\n The minimum screen resolution for GMOCCAPY for the normal layout (without side panels) is 980 x\n 750 Pixel, so it should fit to every standard screen. It is recommended to use screens with minimum\n resolution of 1024x768. There is also a configuration which fits for 800x600 screens (introduced in\n GMOCCAPY 3.4.8).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 601 / 1291\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 CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n@@ -28703,15 +28703,15 @@\n edit the settings of the machine.\n \u2022 -logo <path to logo file>: 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 602 / 1291\n \n \u2022 gmoccapy.ini\n \u2022 gmoccapy_4_axis.ini\n \u2022 lathe_configs/gmoccapy_lathe.ini\n \u2022 lathe_configs/gmoccapy_lathe_imperial.ini\n@@ -28745,15 +28745,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 603 / 1291\n \n Note\n If no path or file is given, GMOCCAPY will use as default <your_machinename>.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@@ -28788,15 +28788,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 604 / 1291\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@@ -28837,15 +28837,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 605 / 1291\n \n ; Test file \u201dgo to position\u201d\n ; will jog the machine to a given position\n O<go_to_position> sub\n G17\n@@ -28865,15 +28865,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 606 / 1291\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@@ -28887,15 +28887,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 607 / 1291\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@@ -28932,29 +28932,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 608 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ntb_preview\n \n 609 / 1291\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -28977,15 +28977,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 <span background=\u201d#ff0000\u201d foreground=\u201d#ffffff\u201d>info-message</span \u2190> test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 610 / 1291\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>small</small>, <big>big</big>, <b>bold</b <i>italic</i>,\n@@ -29026,15 +29026,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 \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 611 / 1291\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 being applied to the GUI.\n@@ -29078,15 +29078,15 @@\n \n You can specify where to save the log file:\n [DISPLAY]\n LOG_FILE = gmoccapy.log\n \n If LOG_FILE is not set, logging happens to $HOME/<base_log_name>.log.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 612 / 1291\n \n 10.2.5 HAL Pins\n GMOCCAPY exports several HAL pins to be able to react to hardware devices. The goal is to get a\n GUI that may be operated in a tool shop, completely/mostly without mouse or keyboard.\n Note\n@@ -29121,15 +29121,15 @@\n For the bottom (horizontal) buttons they are:\n \u2022 gmoccapy.h-button.button-0 (bit IN)\n \u2022 gmoccapy.h-button.button-1 (bit IN)\n \u2022 gmoccapy.h-button.button-2 (bit IN)\n \u2022 gmoccapy.h-button.button-3 (bit IN)\n \u2022 gmoccapy.h-button.button-4 (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 613 / 1291\n \n \u2022 gmoccapy.h-button.button-5 (bit IN)\n \u2022 gmoccapy.h-button.button-6 (bit IN)\n \u2022 gmoccapy.h-button.button-7 (bit IN)\n \u2022 gmoccapy.h-button.button-8 (bit IN)\n@@ -29230,15 +29230,15 @@\n zero G92\n unhome all\n back\n \n set selected\n back\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 614 / 1291\n \n Table 10.5: Functional assignment of horizontal buttons\n (3)\n Pin\n Tool Mode\n@@ -29287,15 +29287,15 @@\n back\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 a touch panel, or protect it from\n excessive use by placing hardware buttons around the panel. They are available in a sample configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 615 / 1291\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@@ -29307,15 +29307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 616 / 1291\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@@ -29345,15 +29345,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 617 / 1291\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@@ -29388,15 +29388,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 618 / 1291\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-<your fourth axis letter >-plus (bit IN)\n \u2022 gmoccapy.jog.jog-<your fourth axis letter >-minus (bit IN)\n@@ -29427,15 +29427,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 619 / 1291\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@@ -29469,15 +29469,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 620 / 1291\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@@ -29497,15 +29497,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 621 / 1291\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@@ -29521,15 +29521,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 622 / 1291\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@@ -29558,15 +29558,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 623 / 1291\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@@ -29582,15 +29582,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 INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 624 / 1291\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 <on_abort> call\n@@ -29632,15 +29632,15 @@\n \u2022 toplevel.py\n \u2022 remap.py\n \u2022 stdglue.py\n From <your_linuxcnc-dev_directory>/configs/sim/gmoccapy/macros copy\n \u2022 on_abort.ngc\n \u2022 change.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 625 / 1291\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@@ -29676,15 +29676,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 626 / 1291\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@@ -29695,15 +29695,15 @@\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 Window decorated - Allows the title bar to be hidden. (default: title bar visible)\n \u2022 hide cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 627 / 1291\n \n \u2022 hide tooltips - Hides the tool tips.\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@@ -29728,15 +29728,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 628 / 1291\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@@ -29747,15 +29747,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 629 / 1291\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@@ -29793,15 +29793,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 630 / 1291\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@@ -29818,15 +29818,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 631 / 1291\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@@ -29842,15 +29842,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 632 / 1291\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@@ -29881,15 +29881,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 633 / 1291\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@@ -29904,15 +29904,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 634 / 1291\n \n 10.2.7.3 Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n Note\n@@ -29925,15 +29925,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 635 / 1291\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@@ -29968,15 +29968,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 636 / 1291\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@@ -30013,15 +30013,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 637 / 1291\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -30071,25 +30071,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 638 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 639 / 1291\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@@ -30100,15 +30100,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 640 / 1291\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@@ -30120,15 +30120,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 641 / 1291\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@@ -30147,15 +30147,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 642 / 1291\n \n 10.2.12.2 Not ending macro\n If you use a macro without movement, like this one:\n o<zeroxy> sub\n G92.1\n@@ -30181,15 +30181,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 643 / 1291\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=<filename>.\n Typically <filename> would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -30202,15 +30202,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 644 / 1291\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@@ -30242,15 +30242,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 645 / 1291\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@@ -30281,39 +30281,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 646 / 1291\n \n Figure 10.21: Gscreen Default Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.22: Gscreen Silverdragon Screen\n \n 647 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 648 / 1291\n \n Figure 10.23: Gscreen Spartan Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 649 / 1291\n \n Figure 10.24: Gscreen Gaxis Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 650 / 1291\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@@ -30321,15 +30321,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 is programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 651 / 1291\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@@ -30374,15 +30374,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 652 / 1291\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@@ -30413,15 +30413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 653 / 1291\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@@ -30434,15 +30434,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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 654 / 1291\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@@ -30450,15 +30450,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 its 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 655 / 1291\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@@ -30498,15 +30498,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 656 / 1291\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@@ -30553,15 +30553,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 657 / 1291\n \n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n@@ -30604,15 +30604,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 658 / 1291\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 non-realtime 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@@ -30649,15 +30649,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 659 / 1291\n \n 10.4.6 INI Settings\n Under the [DISPLAY] heading:\n DISPLAY = gscreen -c tester\n options:\n@@ -30698,15 +30698,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 660 / 1291\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@@ -30750,15 +30750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 661 / 1291\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@@ -30773,15 +30773,15 @@\n \n 10.5.1.1 QtDragon\n \n Figure 10.26: QtDragon - 3 or 4 axis 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 662 / 1291\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@@ -30796,15 +30796,15 @@\n You can only have one of each section (e.g., [HAL]) in the INI file. If you see in these docs multiple\n section options, place them all under the one appropriate section name.\n \n 10.5.2.1 Display\n In the section [DISPLAY] change the DISPLAY = assignment to read:\n \u2022 qtdragon for a small version\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 663 / 1291\n \n \u2022 qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for (respectably) verbose, debug, info or quiet output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n@@ -30841,15 +30841,15 @@\n [DISPLAY]\n DEFAULT_SPINDLE_0_SPEED = 500\n SPINDLE_INCREMENT = 200\n MIN_SPINDLE_0_SPEED = 100\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_POWER = 1500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 664 / 1291\n \n 10.5.2.6 Jogging increments\n Set selectable jogging increments.\n These increments can be user changed.\n [DISPLAY]\n@@ -30896,15 +30896,15 @@\n panel.\n If using stackedWidget_mainTab, a button labelled User will appear.\n Pressing this button will cycle through displaying all available panels (specified for this location) on\n the main tab area.\n Sample adding a builtin panel to the utilities tab, i.e., a graphical animated machine using\n the vismach library.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 665 / 1291\n \n [DISPLAY]\n EMBED_TAB_NAME = Vismach demo\n EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz\n EMBED_TAB_LOCATION = tabWidget_utilities\n@@ -30928,15 +30928,15 @@\n ~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap- \u2190subroutines: \\\n ~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib\n \n QtVCP\u2019s NGCGUI program also need to know where to open for subroutine selection and pre-selection.\n NGCGUI_SUBFILE_PATH must point to an actual path on your system and also a path described in\n SUBROUTINE_PATHS.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 666 / 1291\n \n [DISPLAY]\n # NGCGUI subroutine path.\n # Thr path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n@@ -30978,15 +30978,15 @@\n jpg = image-to-gcode\n py = python\n \n 10.5.2.13 Probe/Touchplate/Laser Settings\n QtDragon has INI entries for two optional probing tab screens available. Comment/uncomment which\n ever you prefer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 667 / 1291\n \n \u2022 Versa probe is a QtVCP ported version of a popular GladeVCP probing panel.\n \u2022 Basic Probe is a QtVCP ported version based on the third party basic probe screen.\n Both perform similar probing routines, though Versa probe optionally handles auto tool measurement.\n [PROBE]\n@@ -31027,15 +31027,15 @@\n RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9\n \n 10.5.2.16 Macro Buttons\n QtDragon has up to ten convenience buttons for calling macro actions.\n These could also call OWord routines if desired.\n In the sample configurations they are labelled for moving between current user system origin (zero\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 668 / 1291\n \n point) and Machine system origin.\n User origin is the first MDI command in the INI list, machine origin is the second.\n This example shows how to move Z axis up first. The commands are separated by the ;.\n The label is set after the comma. The symbols \\n adds a line break.\n@@ -31075,15 +31075,15 @@\n F1 - Estop on/off\n F2 - Machine on/off\n F12 - Style Editor\n Home - Home All Joint of the Machine\n Escape - Abort Movement\n Pause - Pause Machine Movement\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 669 / 1291\n \n 10.5.4 Buttons\n Buttons that are checkable will change their text colour when checked. This is controlled by the\n stylesheet/theme\n \n@@ -31132,15 +31132,15 @@\n qtdragon.spindle-fault\n qtdragon.spindle-volts\n \n This bit pin is an output to the spindle control to pause it.\n You would connect it to spindle.0.inhibit.\n qtdragon.spindle-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 670 / 1291\n \n QtDragon spindle speed display and spindle-at-speed LED require that spindle.0.speed-in be connected to spindle speed feedback.\n Encoder or VFD feedback could be used, as long as the feedback is in revolutions per second (RPS).\n If no feedback is available you can have the display show the requested speed by connecting pins like\n so:\n@@ -31196,15 +31196,15 @@\n <=\n <=\n \n iocontrol.0.tool-change\n iocontrol.0.tool-changed\n iocontrol.0.tool-prep-number\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 671 / 1291\n \n 10.5.9 Spindle\n The screen is intended to interface to a VFD, but will still work without it.\n There are a number of VFD drivers included in the LinuxCNC distribution.\n It is up to the end user to supply the appropriate driver and HAL file connections according to his own\n@@ -31251,15 +31251,15 @@\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 \n Z level compensation is a bed levelling/distortion correction function typically used in 3D printing\n or engraving. It uses a HAL non-realtime component which utilizes the external offsets feature of\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 672 / 1291\n \n LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of\n cubic, linear or nearest (0, 1, 2 respectively). If none is specified or if an invalid number is specified,\n the default is assumed to be cubic.\n When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must\n@@ -31276,15 +31276,15 @@\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 \u2022 In qtdragon_hd, switch to the file tab and press the load G-code Ripper button.\n \u2022 Set origin to match the origin of the G-code file to be probed.\n \u2022 Under G-Code Operations, check Auto Probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 673 / 1291\n \n \u2022 File -> Open G-Code File (The file you will run after compensation)\n \u2022 If necessary, make adjustments and press Recalculate.\n \u2022 Press Save G-Code File - Probe Only.\n \u2022 Save the generated file to the nc_files folder.\n@@ -31341,15 +31341,15 @@\n z_level_compensation.z-pos\n \n => logic-and.in-01\n <= axis.x.pos-cmd\n <= axis.y.pos-cmd\n <= axis.z.pos-cmd\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n net z_compensation_on\n net eoffset-zlevel-count\n count\n \n z_level_compensation.enable-in\n z_level_compensation.counts\n@@ -31383,15 +31383,15 @@\n 1. how far above the table the probe trigger point is (tool setter height) and\n 2. how far above the table the top of the workpiece is.\n This operation has to be done every time the tool is changed as the tool length is not saved.\n For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0\n or use a probing routine, the height from table to top of workpiece parameter is not taken into account\n and can be ignored. It is only for the tool setter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 675 / 1291\n \n 10.5.12.1 Versa Probe\n \n Figure 10.29: QtDragon - Versa Probe Option\n Versa probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n@@ -31409,15 +31409,15 @@\n \u2022 SEARCH:: This is the feed rate at which the probe searches for the target workpiece in machine\n units per minute. The search speed should be slow enough to give an acceptable initial accuracy,\n but fast enough to not waste time waiting for movement. Recommendation: 200-500 mm/min.\n \u2022 PROBE:: Once initial contact has been made and the probe is retracted, it will wait for 0.5 seconds\n before performing the search again at a lower speed, the probe velocity. This lower speed ensures\n the machine can stop movement as quickly as possible on contact with the workpiece.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 676 / 1291\n \n \u2022 RAPID:: Axis movements not associated with searching are done at the speed defined by RAPID in\n machine units per minute.\n \u2022 SIDE/EDGE LENGTH:: This is the distance the probe will move at the rapid rate to the position\n where it will begin a search. If measuring a corner, it will move EDGE LENGTH units away from\n@@ -31437,15 +31437,15 @@\n CLEARANCE to 0.\n There are three toggle buttons:\n \u2022 Auto Zero This selects if after probing the relevant axis is set to zero in the current user system.\n \u2022 Auto Skew This selects if after probing, the system will be rotated or just display the calculated\n rotation.\n \u2022 Tool Measure This (if integrated) turns auto tool probing on and off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 677 / 1291\n \n 10.5.12.2 Basic probe\n \n Figure 10.30: QtDragon - Basic Probe Option\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles. The\n@@ -31458,15 +31458,15 @@\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 \u2022 Probe Diameter: the size of the probe tip\n \u2022 Probe Rapid: the speed of rapid moves in machine units\n \u2022 Probe Search: the speed of the first rough search in machine units\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 678 / 1291\n \n \u2022 Probe Feed: the speed of the second fine search in machine units\n \u2022 Step Off : back off and re-probe distance\n \u2022 Max XY Distance: the maximum distance the probe will search for in X and Y before failing with\n error\n@@ -31497,15 +31497,15 @@\n \u2022 EDGE WIDTH - distance along edge wall (away from corner) to start probing.\n Note\n These distance are always to be set in machine units (mm for metric machine, inch for imperial\n machine).\n \n Preset:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 679 / 1291\n \n \u2022 manual set probe at the intersection of the edges (ie corner) of material as described by the green\n bullseye on the button. Set it Z CLEARANCE above the top of material. These can be done by eye.\n \u2022 set EXTRA CLEARANCE to a value that you want the probe to go below the top of material. (So the\n probe will move from its start position down Z Clearance + Extra Clearance distance.)\n@@ -31521,15 +31521,15 @@\n 3. probe wall twice (rough and fine),\n 4. move diagonally to the other wall as set by EDGE WIDTH and XY CLEARANCE,\n 5. probe wall twice,\n 6. raise probe up by Z CLEARANCE + EXTRA DEPTH (returns to starting height),\n 7. rapid back to starting corner (now calculated using the probed walls),\n 8. if auto zero button is enabled, set X and Y of the current user system to zero.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 680 / 1291\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@@ -31548,15 +31548,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 681 / 1291\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@@ -31571,15 +31571,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 682 / 1291\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@@ -31594,15 +31594,15 @@\n \u2022 Probe down in Z to maximum defined in the INI\u2019s [VERSA_TOOLSETTER] MAXPROBE\n \u2022 Return Z to position defined in the INI\u2019s [TOOL_CHANGE] Z\n Note\n The [TOOL_CHANGE] Z position should be high enough so the tool will not hit the tool probe when\n moving to the [VERSA_TOOLSETTER] X and Y position. MAXPROBE distance needs to be high enough\n for the tool to touch the probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 683 / 1291\n \n 10.5.14.1 Work Piece Height Probing\n \n Figure 10.33: QtDragon_hd - Work piece Height probing\n This program probes 2 user specified locations in the Z axis and calculates the difference in heights.\n@@ -31615,15 +31615,15 @@\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 684 / 1291\n \n \u2022 the X, Y and Z coordinates specify where the first probing routine should start, in current WCS\n Machine Probe At\n \u2022 the X, Y and Z coordinates specify where the second probing routine should start, in current WCS\n Z Safe Travel Height\n@@ -31657,15 +31657,15 @@\n Reflects screen entry.\n \u2022 qtversaprobe.probeheight (HAL_FLOAT) the toolsetter probe switch height. Reflects screen entry.\n \u2022 qtversaprobe.searchvel (HAL_FLOAT) the velocity to search for the tool probe switch\n \u2022 qtversaprobe.probevel (HAL_FLOAT) the velocity to probe tool length. Reflects screen entry.\n \u2022 qtversaprobe.backoffdist (HAL_FLOAT) the distance the probe backs off after triggering. Reflects\n screen entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 685 / 1291\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@@ -31705,15 +31705,15 @@\n \u2022 wait for manual tool change acknowledgement\n \u2022 go to VERSA_TOOLSETTER XY position\n \u2022 go to VERSA_TOOLSETTER Z position\n \u2022 fast probe\n \u2022 slow probe\n \u2022 go to TOOLCHANGE Z position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 686 / 1291\n \n Z_MAX_CLEAR is the Z position to go to before moving to the tool setter when using the Travel to\n Toolsetter button.\n Travel to Toolsetter Action sequence:\n \n@@ -31757,15 +31757,15 @@\n mode. A dialog will be shown allowing the spindle direction and speed to be preset. The start line is\n indicated in the box labelled LINE, next to the CYCLE START button. The run from line feature can\n be disabled in the settings page.\n Note\n LinuxCNC\u2019s run-from-line is not very user friendly. E.g., it does not start the spindle or confirm the\n proper tool. Also, it does not handle subroutines well. If used it is best to start on a rapid move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 687 / 1291\n \n 10.5.16 Laser buttons\n The LASER ON/OFF button in intended to turn an output on or off which is connected to a small laser\n crosshair projector. When the crosshair is positioned over a desired reference point on the workpiece,\n the REF LASER button can be pushed, which then sets the X and Y offsets to the values indicated by\n@@ -31797,15 +31797,15 @@\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. When this tab is selected the individual home buttons in the DRO area will\n change to tool offset setting buttons. They will return to home buttons when you select another tab.\n Pressing this tool button will drop down a when menu of options:\n \u2022 Set Current Tool Position\n \u2022 Adjust Current Tool Position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 688 / 1291\n \n \u2022 Zero Current Tool Position\n \u2022 Set Tool Offset Directly\n \u2022 Reset To Last\n 10.5.17.5 Status Tab\n@@ -31837,15 +31837,15 @@\n Some program, such as Fusion 360 and Aspire will create these files for you. You can also write your\n own HTML docs with the included SetUp Writer button.\n There are three sub tabs:\n \u2022 HTML - any loaded HTML pages are displayed here. The navigation buttons work on this page.\n \u2022 PDF - any loaded PDF setup pages are displayed here.\n \u2022 PROPERTIES - when a program is loaded its G-code properties are displayed here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 689 / 1291\n \n There are navigation buttons for HTML page:\n \u2022 The up arrow returns you to the default HTML page.\n \u2022 The left arrow moves backward one HTML page.\n \u2022 The right arrow moves forward one HTML page.\n@@ -31860,15 +31860,15 @@\n The settings tab is used to set running options, probing/touchplate/laser/camera offsets and load debugging external programs.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 690 / 1291\n \n \u2022 NGCGUI: is a QtVCP version of the popular G-code subroutine builder/selector, see Widgets-NGCGUI.\n \n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_uti\n 10.5.17.12 User Tab\n@@ -31896,15 +31896,15 @@\n DROLabel,\n StatusLabel#status_rpm {\n border: 1px solid black;\n border-radius: 4px;\n font: 20pt \u201dNoto Mono\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To change the DRO display font and display format:\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@@ -31956,15 +31956,15 @@\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 691 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 692 / 1291\n \n To have the manual spindle buttons also incrementally increase/decrease speed:\n #action_spindle_fwd{\n qproperty-spindle_up_action: true;\n }\n@@ -31983,15 +31983,15 @@\n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/qtdragonrc.py\n \n See Modifying Screens for more information about customization.\n \n Figure 10.36: QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 693 / 1291\n \n 10.6 NGCGUI\n \n Figure 10.37: NGCGUI embedded into AXIS\n \n@@ -32001,15 +32001,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 694 / 1291\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@@ -32041,15 +32041,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 695 / 1291\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@@ -32089,15 +32089,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 696 / 1291\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@@ -32134,15 +32134,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 697 / 1291\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@@ -32195,15 +32195,15 @@\n \n 10.6.4.2 Standalone PyNGCGUI\n For usage, type in a terminal:\n pyngcgui --help\n Usage:\n pyngcgui [Options] [<sub_filename>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 698 / 1291\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@@ -32255,15 +32255,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 699 / 1291\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@@ -32294,15 +32294,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 700 / 1291\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@@ -32376,15 +32376,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 701 / 1291\n \n GCMC_INCLUDE_PATH = /home/myname/gcmc_includes\n TTT\n TTT_PREAMBLE\n \n@@ -32431,15 +32431,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 702 / 1291\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@@ -32478,15 +32478,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 703 / 1291\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@@ -32532,15 +32532,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 704 / 1291\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@@ -32584,15 +32584,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 705 / 1291\n \n #<xparm> = #1\n #<yparm> = #2\n #<zparm> = #3\n \n@@ -32641,15 +32641,15 @@\n o<helper> call [#<x1>] [#<x2>] (call a subroutine)\n #<xresult> = #<_helper:answer> (immediately localize the helper global result)\n #<_helper:answer> = 0.0\n (nullify global named parameter used by subroutine)\n ...\n o<examp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 706 / 1291\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@@ -32691,15 +32691,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 707 / 1291\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@@ -32741,28 +32741,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n This photo shows the backplot of the DB25 subroutine.\n \n 708 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 709 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 710 / 1291\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@@ -32780,15 +32780,15 @@\n #<feedrate> = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i#<ra> f#<feedrate>\n g3 i[0-#<radius_b>]\n o<simp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 711 / 1291\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@@ -32804,15 +32804,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 712 / 1291\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@@ -32844,15 +32844,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 713 / 1291\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@@ -32884,15 +32884,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 714 / 1291\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@@ -32915,15 +32915,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 715 / 1291\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@@ -32972,15 +32972,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 716 / 1291\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. Version\n history can be seen by visiting this link which will show the latest available version. The installed\n@@ -33000,25 +33000,25 @@\n there are 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 717 / 1291\n \n Figure 10.40: 16:9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 718 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 719 / 1291\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@@ -33026,15 +33026,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 from here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 720 / 1291\n \n Following these instructions will yield a machine with the current stable branch of LinuxCNC (v2.9)\n on Debian 12 (Bookworm).\n 10.8.4.2 Package Installation (Buildbot) If The User Has Linux on Debian 12 (Bookworm)\n Follow the instructions from the Updating LinuxCNC on Debian Bookworm section from here.\n@@ -33075,15 +33075,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 721 / 1291\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@@ -33164,15 +33164,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -33238,15 +33238,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 723 / 1291\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@@ -33278,48 +33278,48 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.43: PnCConf QtPlasmaC Options\n \n 724 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.44: StepConf QtPlasmaC Options\n \n 725 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 726 / 1291\n \n Figure 10.45: QtPlasmaC User Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 727 / 1291\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 loaded and edited at a later time, a working QtPlasmaC configuration will be created in the following\n directory: ~/linuxcnc/configs/<machine_name>.\n The way the newly created QtPlasmaC configuration can be run from the terminal command line\n slightly differs depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 728 / 1291\n \n For a run in place installation:\n ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n After running the above command LinuxCNC should be running with the QtPlasmaC GUI visible.\n@@ -33341,25 +33341,25 @@\n For a run in place installation enter the following command in a terminal window:\n ~/linuxcnc-dev/lib/python/qtvcp/designer/install_script\n \n 10.8.5.6 Initial Setup\n The following heights diagram will help the user visualize the different heights involved in plasma\n cutting and how they are measured:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 729 / 1291\n \n Click on the Parameters Tab to view the CONFIGURATION section which shows the user settable\n parameters. It is necessary to ensure every one of these settings is tailored to the machine.\n To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following\n steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on\n the Z axis position while running a G-code program. These steps simply allow the user to more easily\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 730 / 1291\n \n set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to\n Z axis MINIMUM_LIMIT.\n Note\n The user should be familiar with the recommended Z Axis Settings.\n@@ -33395,15 +33395,15 @@\n 9. If the table has a laser or camera for sheet alignment, a scribe, or uses offset probing then the\n required offsets need to be applied by following the procedure described in Peripheral Offsets.\n 10. CONGRATULATIONS! The user should now have a working QtPlasmaC Configuration.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 731 / 1291\n \n Important\n IF USING A Mesa Electronics THCAD THEN THE Voltage Scale VALUE WAS OBTAINED MATHEMATICALLY. IF THE USER INTENDS TO USE CUT VOLTAGES FROM A MANUFACTURE\u2019S CUT\n CHART THEN IT WOULD BE ADVISABLE TO DO MEASUREMENTS OF ACTUAL VOLTAGES AND\n FINE TUNE THE Voltage Scale AND Voltage Offset.\n@@ -33430,15 +33430,15 @@\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-plasmac2qt\n \n The following screen will be displayed:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 732 / 1291\n \n Table 10.10: Mandatory Settings\n Field\n INI FILE IN\n EXISTING\n@@ -33466,15 +33466,15 @@\n 2 - Estop is a button.\n \n ESTOP:1\n \n Optional Setting - This setting is not required unless the machine has a laser for sheet\n alignment. Leave this blank if it is not used/required. Leave this blank if it is not used/required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Field\n Laser On HAL Pin\n \n Description\n Power on a laser crosshair for sheet\n alignment.\n@@ -33517,15 +33517,15 @@\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 734 / 1291\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@@ -33539,15 +33539,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 735 / 1291\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@@ -33584,15 +33584,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 736 / 1291\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page VI of the finder General Technical\n Information document.\n Calculations:\n@@ -33629,15 +33629,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs/<machine_name>/<machine_name>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 737 / 1291\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@@ -33694,15 +33694,15 @@\n Note\n The configuration files (<machine_name>.ini and <machine_name>.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 <machine_name>.prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 738 / 1291\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific <machine_name>.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@@ -33751,15 +33751,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 739 / 1291\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@@ -33800,15 +33800,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 740 / 1291\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@@ -33825,15 +33825,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 741 / 1291\n \n Table 10.14: (continued)\n Name\n PH:\n PD:\n@@ -33909,15 +33909,15 @@\n CYCLE START\n CYCLE PAUSE\n \n CYCLE STOP\n \n FEED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 742 / 1291\n \n Table 10.15: (continued)\n Name\n RAPID\n \n@@ -33989,15 +33989,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 743 / 1291\n \n Table 10.18: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -34089,15 +34089,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\n option is configured in the [POWERMAX] section of the\n <machine_name>.prefs file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 744 / 1291\n \n Table 10.18: (continued)\n Name\n Status\n \n@@ -34165,15 +34165,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -34253,15 +34253,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 746 / 1291\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@@ -34274,30 +34274,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 747 / 1291\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 hide 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 748 / 1291\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 This tab is used to display configuration parameters that are modified infrequently.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n@@ -34319,15 +34319,15 @@\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 This sets the number of times QtPlasmaC will attempt to start\n the arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 749 / 1291\n \n Table 10.25: (continued)\n Name\n Retry Delay\n \n@@ -34404,15 +34404,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 750 / 1291\n \n Table 10.27: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34463,15 +34463,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 751 / 1291\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@@ -34558,15 +34558,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 752 / 1291\n \n Table 10.32: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34628,15 +34628,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 753 / 1291\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 hide this tab so machine settings cannot be modified by unauthorized personnel. This\n may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a\n@@ -34652,15 +34652,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 754 / 1291\n \n Table 10.33: (continued)\n Name\n LED\n Background\n@@ -34738,15 +34738,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 755 / 1291\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@@ -34784,15 +34784,15 @@\n <machine_name> is the machine name entered in the configuration wizard, <version> is the current\n QtPlasmaC version the user is on, <date> is the current date (YY-MM-DD), and <time> is the current\n time (HH-MM-SS).\n Prior to the backup being made, the machine log will be saved to a file in the configuration directory named machine_log_<date>_<time>.txt where <date> and <time> are formatted as described\n above. This file along with up to five previous machine logs will also be included in the backup.\n These files are not required by QtPlasmaC and are safe to delete at any time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 756 / 1291\n \n 10.8.8.7 STATISTICS Tab\n The STATISTICS Tab provides statistics to allow for the tracking of consumable wear and job run times.\n These statistics are shown for the current job as well as the running total. Previous job statistics are\n reset once the next program is run. The total values may be reset either individually by clicking the\n@@ -34805,15 +34805,15 @@\n of the configuration from the SETTINGS Tab then the machine log is also included in the backup.\n \n 10.8.9 Using QtPlasmaC\n Once QtPlasmaC is successfully installed, no Z axis motion is required to be part of the G-code cut\n program. In fact, if any Z axis references are present in the cut program, the standard QtPlasmaC\n configuration will remove them during the program loading process.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 757 / 1291\n \n For reliable use of QtPlasmaC the user should NOT use any Z axis offsets other than the coordinate\n system offsets (G54-G59.3).\n QtPlasmaC will automatically add a line of G-code to move the Z axis to the correct height at the\n beginning of every G-code program.\n@@ -34850,15 +34850,15 @@\n Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code\n syntax for QtPlasmaC to run a G-code program using a torch for cutting is M3 $0 S1 to begin a cut\n and M5 $0 to end a cut.\n For backwards compatibility it is permissible to use M3 S1 in lieu of M3 $0 S1 to begin a cutting job\n and M5 in lieu of M5 $0 to end a cutting job. Note, that this applies to cutting jobs only, for scribe and\n spotting jobs the $n tool identifier is mandatory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 758 / 1291\n \n 10.8.9.4 Coordinates\n See recommended Z axis settings.\n Each time LinuxCNC (QtPlasmaC) is started Joint homing is required. This allows LinuxCNC (QtPlasmaC) to establish the known coordinates of each axis and set the soft limits to the values specified in\n the <machine_name>.ini file in order to prevent the machine from crashing into a hard stop during\n@@ -34894,15 +34894,15 @@\n QtPlasmaC does not require the use of a material file. Instead, the user could change the cut parameters manually from the MATERIAL section of the PARAMETERS Tab. It is also not required to use\n the automatic material changes. If the user does not wish to use this feature they can simply omit the\n material change codes from the G-code file.\n It is also possible to not use the material file and automatically load materials from within the G-code\n file.\n Material numbers in the materials file do not need to be consecutive nor do they need to be in numerical order.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 759 / 1291\n \n The following variables are mandatory and an error message will appear if any are not found when\n the material file is loaded.\n \u2022 PIERCE_HEIGHT\n \u2022 PIERCE_DELAY\n@@ -34953,15 +34953,15 @@\n PAUSE_AT_END\n = value\n GAS_PRESSURE\n = value (only used for PowerMax communications)\n CUT_MODE\n = value (only used for PowerMax communications)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 760 / 1291\n \n It is possible to add new material, delete material, or edit existing material from the PARAMETERS\n tab.. It is also possible to achieve this by using magic comments in a G-code file.\n The material file may be edited with a text editor while LinuxCNC is running. After any changes have\n been saved, press Reload in the MATERIAL section of the PARAMETERS Tab to reload the material\n@@ -35001,15 +35001,15 @@\n M66 P3 L3 Q1\n F#<_hal[plasmac.cut-feed-rate]>\n M3 $0 S1\n .\n .\n M5 $0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 761 / 1291\n \n Note\n Returning to the default material prior to the end of the program is possible with the code M190 P-1.\n \n 10.8.9.9 Material Addition Via Magic Comments In G-code\n@@ -35055,15 +35055,15 @@\n o\n nu\n \n Description\n Selects the option to be used.\n Sets the material number (not used for option 0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n na\n ph\n pd\n ch\n fr\n@@ -35126,43 +35126,43 @@\n For a run in place installation enter the following two commands in a terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-materials\n \n This will bring up the Material Converter Main dialog box with Manual selected as the default.\n Select one of:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022 Manual - to manually create a new material file.\n \n \u2022 SheetCam - to convert a SheetCam tool file.\n \n For SheetCam only, select whether the user requires a metric or imperial output file.\n \u2022 Fusion 360 - to convert a Fusion 360 tool file.\n \n To convert:\n \n 763 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 764 / 1291\n \n 1. Select the Input File to be converted, press INPUT to bring up a file selector or directly enter\n the file in the entry box.\n 2. Select the Output File to write to, press OUTPUT to bring up a file selector or directly enter the\n file in the entry box. This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg.\n If necessary, the user could select a different file and hand edit the <machine_name>_material.cfg\n file.\n 3. Click CREATE/CONVERT and the new material file will be created.\n For both a Manual creation or a Fusion 360 conversion, a dialog box will show with all available\n parameters displayed for input. Any entry marked with *** is mandatory and all other entries are\n optional depending on the user\u2019s configuration needs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 765 / 1291\n \n Note\n If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it\n will be overwritten.\n \n@@ -35201,15 +35201,15 @@\n 3. Jog until the laser cross hairs are at the edge of the material a suitable distance away from the\n desired origin point.\n 4. Press MARK EDGE. The MARK EDGE button label will change to SET ORIGIN.\n 5. Jog until the laser cross hairs are at the origin point of the material.\n 6. Press SET ORIGIN. The SET ORIGIN button label will change to MARK EDGE and the HAL\n pin named qtplasmac.laser_on will be turned off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 766 / 1291\n \n 7. The torch will now move to the X0 Y0 position.\n 8. The offset is now successfully set.\n To turn the laser off and cancel an alignment:\n 1. Press the LASER button and hold for longer than 750 mSec.\n@@ -35219,15 +35219,15 @@\n If an alignment laser has been set up then it is possible to use the laser during CUT RECOVERY for\n accurate positioning of the new start coordinates.\n 10.8.9.12 CAMERA\n \n QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 767 / 1291\n \n are not parallel to the machine\u2019s X/Y axes. The CAMERA button will be enabled after the machine is\n homed.\n To use this feature, the user must set the camera\u2019s offset from the torch center by following the\n procedure described in Peripheral Offsets.\n@@ -35258,15 +35258,15 @@\n 6. The offset is now successfully set.\n In the CAMVIEW panel, the mouse can affect the cross hairs and the zoom level as follows:\n \u2022 Mouse Wheel Scroll - Change cross hair diameter.\n \u2022 Mouse Wheel Button Double Click - Restores cross hair diameter to default.\n \u2022 Mouse Left Button Clicked + Wheel Scroll - Changes camera zoom level.\n \u2022 Mouse Left Button Clicked + Wheel Button Double Click - Restores default camera zoom level.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 768 / 1291\n \n 10.8.9.13 Path Tolerance\n Path tolerance is set with a G64 command and a following P value. The P value corresponds to the\n amount that the actual cut path followed by the machine may deviate from the programmed cut path.\n The default LinuxCNC path tolerance is set for maximum speed which will severely round corners\n@@ -35308,15 +35308,15 @@\n \n TOOL #\n 0\n \n Description\n Used for normal Plasma cutting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Scribe\n Plasma Torch\n \n TOOL #\n 1\n@@ -35360,15 +35360,15 @@\n \u2022 M67 E3 Q60 would set the velocity to 60% of CutFeedRate.\n \u2022 M67 E3 Q100 would set the velocity to 100% of CutFeedRate.\n The minimum percentage allowed is 10%, values below this will be set to 10%.\n The maximum percentage allowed is 100%, values above this will be set to 100%.\n If the user intends to use this feature it would be prudent to add M68 E3 Q0 to both the preamble and\n postamble of the G-code program so the machine starts and ends in a known state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 770 / 1291\n \n Important\n G-CODE THC AND VELOCITY BASED THC ARE NOT ABLE TO BE USED IF CUTTER COMPENSATION IS IN EFFECT; AN ERROR MESSAGE WILL BE DISPLAYED.\n \n Warning\n@@ -35403,15 +35403,15 @@\n It is important to thoroughly understand the difference between Synchronized with Motion and\n Immediate:\n \u2022 M62 and M63 (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for\n example) will happen at the beginning of the next motion command. If there is no subsequent\n motion command, the output changes will not occur. It is best practice to program a motion code\n (G0 or G1 for example) right after a M62 or M63.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 771 / 1291\n \n \u2022 M64 and M65 (Immediate) - These commands happen immediately as they are received by the motion\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n@@ -35446,15 +35446,15 @@\n 1. If the THC is disabled, or the THC is enabled but not active, then the IHS skip will occur if the\n start of the cut is less than Skip IHS distance from the last successful probe.\n 2. If the THC is enabled and active, then the IHS skip will occur if the start of the cut is less than\n Skip IHS distance from the end of the last cut.\n A value of zero for Skip IHS will disable all IHS skipping.\n Any errors encountered during a cut will disable IHS skipping for the next cut if Skip IHS is enabled.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 772 / 1291\n \n 10.8.9.21 Probing\n Probing may be done with either ohmic sensing or a float switch. It is also possible to combine the\n two methods, in which case the float switch will provide a fallback to ohmic probing. An alternative\n to ohmic probing is Offset Probing\n@@ -35493,15 +35493,15 @@\n Ohmic Offset in the PROBING frame of the CONFIGURATION section of the PARAMETERS Tab is\n used to set the correct measured height.\n The probe could be a mechanically deployed probe, a permanently mounted proximity sensor or even\n simply a stiff piece of wire extending about 0.5 mm (0.2\u201d) below the torch tip. If the probe is mechanically deployed then it needs to extend/retract rather quickly to avoid excessive probing times and\n would commonly be pneumatically operated.\n To use this feature, the user must set the probe\u2019s offset from the torch center by following the procedure described in Peripheral Offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 773 / 1291\n \n To modify the offsets manually, the user could edit either or both the following options in the [OFFSET_PROBING] section of the <machine_name>.prefs file:\n X axis = n.n\n Y axis = n.n\n Delay = t.t\n@@ -35538,15 +35538,15 @@\n cut type is toggled.\n 10.8.9.24 Hole Cutting - Intro\n It is recommended that any holes to be cut have a diameter no less than one and a half times the\n thickness of the material to be cut.\n It is also recommended that holes with a diameter of less than 32 mm (1.26\u201d) are cut at 60% of the\n feed rate used for profile cuts. This should also lock out THC due to velocity constraints.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 774 / 1291\n \n QtPlasmaC can utilize G-code commands usually set by a CAM Post Processor (PP) to aid in hole cutting\n or if the user does not have a PP or the user\u2019s PP does not support these methods then QtPlasmaC\n can automatically adapt the G-code to suit. This automatic mode is disabled by default.\n There are three methods available for improving the quality of small holes:\n@@ -35590,15 +35590,15 @@\n the M-Codes M62 (Synchronized with Motion)* or M64 (Immediate). After turning the torch off it is\n necessary to allow the torch to be turned on again before beginning the next cut by resetting the\n motion.digital-out-03 pin with the M-Codes M63 or M65, this will be done automatically by the\n QtPlasmaC G-code parser if it reaches an M5 command without seeing a M63 P3 or M65 P3.\n After the torch is turned off the hole path will be followed for a default length of 4 mm (0.157\u201d). This\n distance may be specified by adding #<oclength> = n to the G-code file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 775 / 1291\n \n \u2022 M62 P3 will turn the torch off (Synchronized with Motion)\n \u2022 M63 P3 will allow the torch to be turned on (Synchronized with Motion)\n \u2022 M64 P3 will turn the torch off (Immediately)\n \u2022 M65 P3 will allow the torch to be turned on (Immediately)\n@@ -35639,15 +35639,15 @@\n G-code parameters to select the desired hole sensing mode:\n \u2022 #<holes> = 0 - Causes QtPlasmaC to disable hole sensing if it was previously enabled.\n \u2022 #<holes> = 1 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) to 60% of\n CutFeedRate.\n \u2022 #<holes> = 2 - Causes QtPlasmaC to Over cut the hole in addition to the velocity changes in setting\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 776 / 1291\n \n \u2022 #<holes> = 3 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) and arcs\n less than 16 mm (0.63\u201d) to 60% of CutFeedRate.\n \u2022 #<holes> = 4 - Causes QtPlasmaC to Over cut the hole in addition to the velocity change in setting\n 3.\n@@ -35689,15 +35689,15 @@\n to running a G-code program.\n The machine needs to be homed before commencing a single cut.\n A single cut will commence from the machine\u2019s current X/Y position.\n Automatic Single Cut\n This is the preferred method. The parameters for this method are entered in the following dialog box\n that is displayed after pressing a user button which has been coded to run single cut:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 777 / 1291\n \n 1. Jog to the required X/Y start position.\n 2. Set required appropriate material, or edit the Feed Rate for the default material in the PARAMETERS Tab.\n 3. Press the assigned single cut user button.\n 4. Enter the length of the cut along the X and/or Y axes.\n@@ -35712,15 +35712,15 @@\n 6. When the cut is complete stop the spindle.\n 7. The torch will turn off and the Z axis will return to the starting position.\n Manual Single Cut\n Manual single cut requires that either keyboard shortcuts are enabled in the GUI SETTINGS section\n of the SETTINGS Tab, or a custom user button is specified as a manual cut button.\n If the user is using a custom user button then substitute F9 with User Button in the following description.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 778 / 1291\n \n 1. Jog to the required X/Y start position.\n 2. Start the procedure by pressing F9. The jog speed will be automatically set to the feed rate of the\n currently selected material. The jog label will blink to indicate that the jog speed is temporarily\n being overridden (jog speed manipulation will be disabled while a manual cut is active). CYCLE\n@@ -35758,15 +35758,15 @@\n the Pierce Height\n Setting for Puddle Jump are described in cut parameters\n The recommended option is to use Pierce Only due to it being able to utilise near end of life consumables.\n \n Important\n PUDDLE JUMP IS DISABLED DURING CUT RECOVERY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 779 / 1291\n \n 10.8.9.29 Mesh Mode (Expanded Metal Cutting)\n QtPlasmaC is capable of cutting of expand (mesh) metal provided the machine has a pilot arc torch\n and it is capable of Constant Pilot Arc (CPA) mode.\n Mesh Mode disables the THC and also ignores a lost Arc OK signal during a cut. It can be selected\n@@ -35797,15 +35797,15 @@\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n This mode may also be used in conjunction with Mesh Mode if the user doesn\u2019t require an Arc OK\n signal to begin the cut.\n Both Mesh Mode and Ignore Arc OK can be enabled/disabled at any time during a job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 780 / 1291\n \n 10.8.9.31 Cut Recovery\n \n This feature will produce a CUT RECOVERY panel that will allow the torch to be moved away from\n the cut path during a paused motion event in order to position the torch over a scrap portion of the\n@@ -35829,15 +35829,15 @@\n JOGGING panel. It will not reset any REV or FWD motion.\n If an alignment laser has been set up then it is possible to use the laser during cut recovery for very\n accurate positioning of the new start coordinates. If either the X axis offset or Y axis offset for the\n laser would cause the machine to move out of bounds then an error message will be displayed.\n To use a laser for cut recovery when paused during a cut:\n 1. Click the LASER button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 781 / 1291\n \n 2. LASER button will change to disabled, the HAL pin named qtplasmac.laser_on will be turned on\n and the X and Y axis will offset so that the laser cross hairs will indicate the starting coordinates\n of the cut when it is resumed.\n 3. Continue the cut recovery as described above.\n@@ -35865,15 +35865,15 @@\n a subroutine and clicks \u201dSELECTED nn\u201d then an error message will be displayed that includes the\n O-code name of the subroutine.\n It is not possible to use Run From Line if previous G-code has set cutter compensation active. If the\n user selects a line while cutter compensation is active and clicks \u201dSELECTED nn\u201d then an error\n message will be displayed.\n It is possible to select a new line while Run From Line is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n USE LEADIN\n LEADIN LENGTH\n LEADIN ANGLE\n \n CANCEL\n@@ -35911,15 +35911,15 @@\n 3. Clicking RELOAD in the G-code window header - this method will cancel the Run From Line\n process if LOAD was clicked on the Run From Line dialog box and \u201drfl.ngc\u201d is displayed as the\n loaded file name in the G-code window header. This will return the user to the originally loaded\n file.\n 10.8.9.33 Scribe\n A scribe may be operated by QtPlasmaC in addition to the plasma torch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 783 / 1291\n \n Using a scribe requires the use of the LinuxCNC tool table. Tool 0 is assigned to the plasma torch\n and Tool 1 is assigned to the scribe. The scribe X and Y axes offsets from the plasma torch need to be\n entered into the LinuxCNC tool table. This is done by editing the tool table via the main GUI, or by\n editing the tool.tbl file in the <machine_name> configuration directory. This will be done after the\n@@ -35965,15 +35965,15 @@\n The user can switch between the torch and the scribe any number of times during a program by using\n the appropriate G-codes.\n Issuing M3 S1 (without $n) will cause the machine to behave as if an M3 $0 S1 had been issued\n and issuing M5 (without $n) will cause the machine to behave as if an M5 $0 had been issued. This\n will control the torch firing by default in order to provide backward compatibility for previous G-code\n files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 784 / 1291\n \n Warning\n If there is an existing manual tool change parameter set in the <machine_name>.hal file then\n QtPlasmaC will convert it to an automatic tool change.\n \n@@ -36014,30 +36014,30 @@\n The high feed rate of 99999 is to ensure that the motion is at the machine\u2019s highest feed rate.\n \n Important\n SOME PLASMA CUTTERS WILL NOT BE SUITABLE FOR THIS FEATURE.\n IT IS RECOMMENDED THAT THE USER CARRY OUT SOME TEST SPOTTING TO ENSURE THAT THE\n PLASMA CUTTER IS CAPABLE OF UTILIZING THIS FEATURE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 785 / 1291\n \n 10.8.9.35 Virtual Keyboard Custom Layouts\n Virtual keyboard support is available for only the \u201donboard\u201d onscreen keyboard. If it is not already on\n the system it may be installed by typing the following in a terminal:\n sudo apt install onboard\n \n The following two custom layouts are used for soft key support:\n \n Figure 10.48: Number keypad - used for the CONVERSATIONAL Tab and the PARAMETERS Tab\n \n Figure 10.49: Alpha-numeric keypad - used for G-code editing and file management.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 786 / 1291\n \n If the virtual keyboard has been repositioned and on the next opening of a virtual keyboard it is not\n visible then clicking twice on the onboard icon in the system tray will reposition the virtual keyboard\n so the move handle is visible.\n 10.8.9.36 Keyboard Shortcuts\n@@ -36114,15 +36114,15 @@\n Jogs the Y axis positive.\n Jogs the Y axis negative.\n Jogs the Z axis positive.\n Jogs the Z axis negative.\n Jogs the A axis positive.\n Jogs the A axis negative.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Keyboard\n Shortcut\n .\n ,\n SHIFT (+ Jog Key)\n + (+Jog Key)\n@@ -36147,15 +36147,15 @@\n and their use: Section 12.7.2.21[MDILine Widget]\n Note\n M3, M4, and M5 are not allowed in the QtPlasmaC MDI.\n \n In addition, pressing RETURN (or ENTER) with no entry in the MDI will close the MDI\n window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 788 / 1291\n \n 10.8.10 Conversational Shape Library\n \n The Conversational Shape Library consists of several basic shapes and functions to assist the user\n with generating quick G-code at the machine to cut simple shapes quickly. This feature is found on\n@@ -36165,15 +36165,15 @@\n what can be achieved.\n \n Blank entries in the shape input boxes will use the current setting at the time the G-code was generated. For example, if X start was left blank then the current X axis position would be used.\n All leadins and leadouts are arcs except for Circles and Stars:\n Circles:\n \u2022 If the circle is external then any leadin or leadout will be an arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 789 / 1291\n \n \u2022 If the circle is internal and a small hole then any leadin will be perpendicular and there will be no\n lead out.\n \u2022 If the circle is internal and not a small hole then any leadin and leadout will be an arc. If the leadin\n has a length greater than half the radius then the leadin will revert to perpendicular and there will\n@@ -36233,15 +36233,15 @@\n required then it can be removed by pressing the NEW button.\n If there is an added shape that is unsaved or unsent then it is not possible to switch tabs in the GUI.\n To re-enable switching tabs it is necessary to either SAVE the shape, SEND the shape, or press NEW\n to remove the shape.\n If NEW is pressed to remove an added shape that is unsaved or unsent then a warning dialog will be\n displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 790 / 1291\n \n Note\n All distances are in machine units relative to the current User Coordinate System and all angles are\n in degrees.\n \n@@ -36269,15 +36269,15 @@\n G21\\nG40\\nG49\\nG64p0.1\\nG80\\nG90\\nG92.1\\nG94\\nG97\n \n Pressing the RELOAD button will discard any changed but unsaved settings.\n Pressing the SAVE button will save all the settings as displayed.\n Pressing the EXIT button will close the setting panel and return to the previous shape.\n 10.8.10.2 Conversational Lines And Arcs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 791 / 1291\n \n Lines and arcs have an additional option in that they may be strung together to create a complex\n shape.\n There are two line types and three arc types available:\n 1. Line given a start point and an end point.\n@@ -36299,15 +36299,15 @@\n segment of the shape. If a leadout is required it will need to be the last segment of the shape.\n Note\n At this stage there is no automatic option for a leadin/leadout creation if the shape is closed.\n \n 10.8.10.3 Conversational Single Shape\n The following shapes are available for creation:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 792 / 1291\n \n To create a shape:\n 1. Select the corresponding icon for the shape to create. The available parameters will be displayed.\n 2. Choose the material from the MATERIAL drop down. If no material is chosen, the default material\n (00000) will be used.\n@@ -36318,15 +36318,15 @@\n For CIRCLE, the OVER CUT button will become valid when a CUT TYPE of INTERNAL is selected\n and the value entered in the DIAMETER field is less than the Small Hole Diameter parameter in the\n Conversational SETTINGS section.\n For BOLT CIRCLE the OVER CUT button will become valid if the value entered in the HOLE DIA\n field is less than the SMALL HOLES DIAMETER parameter in the Conversational SETTINGS section.\n For the following shapes, KERF OFFSET will become active once a LEAD IN is specified:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 793 / 1291\n \n 1. TRIANGLE\n 2. RECTANGLE\n 3. POLYGON\n 4. SLOT\n@@ -36353,15 +36353,15 @@\n using the Conversational Shape Library that has been previously loaded from the MAIN Tab.\n A previously saved Block G-code file may also be loaded from the MAIN Tab and then have any of its\n operations edited using the Conversational Block feature.\n Block operations:\n \u2022 Rotate\n \u2022 Scale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 794 / 1291\n \n \u2022 Array\n \u2022 Mirror\n \u2022 Flip\n To create a block:\n@@ -36399,15 +36399,15 @@\n 10.8.11 Error Messages\n 10.8.11.1 Error Logging\n All errors are logged into the machine log which is able to be viewed in the STATISTICS Tab. The log\n file is saved into the configuration directory when QtPlasmaC is shutdown. The five last logfiles are\n kept, after which the oldest logfile is deleted each time a new log file is created. These saved log files\n may be viewed with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 795 / 1291\n \n 10.8.11.2 Error Message Display\n By default, QtPlasmaC will display error messages via a Operator Error popup window. In addition,\n QtPlasmaC will alert the user that an error has been sent to the machine log by displaying the message\n \u201dERROR SENT TO MACHINE LOG\u201d in the lower left portion of the status bar.\n@@ -36441,15 +36441,15 @@\n \u2022 ohmic probe detected before probing program is paused\n \u2022 float switch detected before probing program is paused\n \u2022 breakaway switch detected before probing program is paused\n The Arc OK signal was lost during cutting motion, before the M5 command was reached:\n \u2022 valid arc lost program is paused\n The Z axis reached the bottom limit before the work piece was detected:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 796 / 1291\n \n \u2022 bottom limit reached while probing down program is paused\n The work piece is too high for any safe rapid removes:\n \u2022 material too high for safe traverse, program is paused\n One of these values in MATERIAL section of the PARAMETERS Tab is invalid (For example: if they\n@@ -36478,15 +36478,15 @@\n Warning messages will not pause a running program and are informational only.\n These messages indicate the corresponding sensor was activated before a probe test commenced:\n \u2022 ohmic probe detected before probing probe test aborted\n \u2022 float switch detected before probing probe test aborted\n \u2022 breakaway switch detected before probing probe test aborted\n This indicates that the corresponding sensor was activated during a consumable change:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 797 / 1291\n \n \u2022 breakaway, float, or ohmic activated during consumable change, motion is paused\n WARNING: MOTION WILL RESUME IMMEDIATELY UPON RESOLVING THIS CONDITION!\n \n Warning\n@@ -36518,15 +36518,15 @@\n released. QtPlasmaC will then automatically update its configuration the first time it is run after a\n LinuxCNC update.\n LinuxCNC is normally updated by entering the following commands into a terminal window (one at a\n time):\n sudo apt update\n sudo apt dist-upgrade\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 798 / 1291\n \n 10.8.12.2 Continuous Update\n Enhancements and bug fixes will not be available on a standard installation until a new minor release\n of LinuxCNC has been released. If the user wishes to update whenever a new QtPlasmaC version has\n been pushed, they could use the LinuxCNC Buildbot repository rather than the standard LinuxCNC\n@@ -36564,15 +36564,15 @@\n #led_torch_on {\n qproperty-diameter: 30;\n qproperty-color: green }\n #torch_enable::indicator {\n width: 30;\n height: 30}\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 799 / 1291\n \n 10.8.14.2 Create A New Style\n Custom stylesheets are enabled by setting the following option in the [GUI_OPTIONS] section of the\n <machine_name>.prefs file. This option must be set to the filename of the stylesheet as shown below.\n Custom style = the_cool_style.qss\n@@ -36632,15 +36632,15 @@\n background of active camera/laser buttons\n foreground of G-code editor cursor\n background of G-code display active line\n \n 10.8.14.3 Returning To The Default Styling\n The user may return to the default styling at any time by following the following steps:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 800 / 1291\n \n 1. Close QtPlasmaC if open.\n 2. Delete qtplasmac.qss from the machine config directory.\n 3. Delete qtplasmac_custom.qss from the machine config directory (if it exists).\n 4. Open <machine_name>.prefs file.\n@@ -36680,15 +36680,15 @@\n Function\n custom_pre_process This does basic processing of each line before any processing is done in\n the filter.\n custom_pre_parse\n This parses any G-code from a line before any parsing done in the filter.\n custom_post_parse This parses any G-code from a line after any parsing done in the filter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 801 / 1291\n \n These methods are applied by the following procedure:\n \u2022 Define the method with an argument for the incoming data.\n \u2022 Add any required code to manipulate the data.\n \u2022 Return the resultant data.\n@@ -36724,15 +36724,15 @@\n \u2022 9:16 - Minimum 15, Maximum 20\n The user will need to run QtPlasmaC at the desired screen size to determine how many user buttons\n are available for use.\n All <machine_name>.prefs file settings for the buttons are found in the [BUTTONS] section.\n Button Names The text that appears on the button is set the following way:\n n Name = HAL Show\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 802 / 1291\n \n Where n is the button number and HAL Show is the text.\n For text on multiple lines, split the text with a \\ (backslash):\n n Name = HAL\\Show\n \n@@ -36767,15 +36767,15 @@\n .py extension. It is valid to use the ~ character as a shortcut for the users home directory.\n n Code = %halshow\n \n G-code\n To run G-code, just enter the code to be run.\n n Code = G0 X100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 803 / 1291\n \n To run an existing subroutine.\n n Code = o<the_subroutine> call\n \n <machine_name>.ini file variables can be entered by using the standard LinuxCNC G-code format. If\n@@ -36816,15 +36816,15 @@\n n Code = toggle-halpin the-hal-pin-name runcritical\n \n Toggle Alignment Laser HAL Pin\n The following code will allow the user to use a button to invert the current state of the alignment laser\n HAL bit pin:\n n Code = toggle-laser\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 804 / 1291\n \n This code is also able to be used as a multiple command with G-code or external commands but may\n control only the alignment laser HAL bit pin.\n The button colors will follow the state of the alignment laser HAL pin.\n After setting the code, upon clicking, the button will invert colors and the alignment laser HAL pin\n@@ -36865,15 +36865,15 @@\n n Code = probe-test 6\n \n Note\n Enabling a user button as a Probe Test button will add an external HAL pin that may be connected\n from a pendant etc. HAL connections to this HAL pin needs to be specified in a postgui HAL file as\n the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 805 / 1291\n \n Ohmic Test\n QtPlasmaC will enable the Ohmic Probe Enable output signal and if the Ohmic Probe input is sensed,\n the LED indicator in the SENSOR Panel will light. The main purpose of this is to allow a quick test for\n a shorted torch tip.\n@@ -36912,15 +36912,15 @@\n HAL file as the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n Load\n Loading a G-code program from the directory specified by the PROGRAM_PREFIX variable in the\n <machine_name>.ini file (usually ~/linuxcnc/nc_files) is possible by using the following format:\n n Code = load G-code.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 806 / 1291\n \n If the user\u2019s G-code file is located in a sub-directory of the PROGRAM_PREFIX directory, it would be\n accessed by adding the sub-directory name to the beginning of the G-code file name. Example for a\n sub-directory named plasma:\n n Code = load plasma/G-code.ngc\n@@ -36962,15 +36962,15 @@\n portion of the button code. If the feed rate is omitted from the button code, framing motion velocity\n will default to the feed rate for the currently selected material.\n The following GUI buttons and Keyboard Shortcuts (if enabled in the SETTINGS Tab) are valid during\n Framing motion:\n 1. Pressing CYCLE STOP or the ESC keyboard shortcut - Stops Framing motion.\n 2. Pressing CYCLE PAUSE or the SPACE BAR keyboard shortcut- Pauses Framing motion.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 807 / 1291\n \n 3. Pressing CYCLE RESUME or the CTRL+r keyboard shortcut- Resumes paused Framing motion.\n 4. Changing the FEED SLIDER or any of the CTRL+0-9 keyboard shortcuts - Slows the feed rate.\n Note\n IF THE FEED RATE IS CHANGED FOR THE FRAMING MOTION, IT WILL BE NECESSARY TO RETURN THE\n@@ -37006,15 +37006,15 @@\n n Code = latest-file /home/me/linuxcnc/nc_files/qtplasmac-test\n \n User Manual\n This allows the showing/hiding of the online HTML user manual specific to the version of LinuxCNC\n currently running. Note that internet access is required for this functionality.\n n Code = user-manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 808 / 1291\n \n 10.8.15.2 Peripheral Offsets (Laser, Camera, Scribe, Offset Probe)\n Use the following sequence to set the offsets for a laser, camera, scribe, or offset probe:\n 1. Place a piece of scrap material under the torch.\n 2. The machine must be homed and idle before proceeding.\n@@ -37028,15 +37028,15 @@\n 7. Click the appropriate button to activate the peripheral.\n 8. The Get Peripheral Offsets dialog will now be showing.\n \n 9. Raise the Z axis so the torch and peripheral are clear of the material.\n 10. Jog the X/Y axes so that the peripheral is centered in the mark from the torch.\n 11. Click the GET OFFSETS button to get the offsets and a confirmation dialog will open.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 809 / 1291\n \n 12. Click SET OFFSETS and the offsets will now be saved.\n Canceling may be done at any stage by pressing the CANCEL button which will close the dialog and\n no changes will be saved.\n If CAMERA was selected at item 7 above and more than one camera exists then a camera selection\n@@ -37046,15 +37046,15 @@\n If PROBE was selected at item 7 above then a delay dialog will show prior to the confirmation dialog\n at item 11. This is for the delay required for the probe to deploy to its working position.\n \n Note\n It may be necessary to click the preview window to enable jogging. By following the above procedure\n the offsets are available for use immediately and no restart of LinuxCNC is required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 810 / 1291\n \n 10.8.15.3 Keep Z Motion\n By default, QtPlasmaC will remove all Z motion from a loaded G-code file and add an initial Z movement\n to bring the torch near the top of travel at the beginning of the file. If the user wishes to use their\n table with a marker, a drag knife, diamond scribe, etc. mounted in the torch holder, QtPlasmaC has\n@@ -37151,15 +37151,15 @@\n qtplasmac.ext_ignore_arc_ok\n IGNORE OK\n qtplasmac.ext_cutrec_fwd\n CUT RECOVERY FWD\n qtplasmac.ext_cutrec_rev\n CUT RECOVERY REV\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n User Button Function\n Cancel any Cut Recovery\n movement\n Move up\n Move down\n Move right\n@@ -37229,15 +37229,15 @@\n Hide run = True\n Hide pause = True\n Hide abort = True\n \n For the 16:9 or 4:3 GUIs, the hiding of each of these GUI buttons will expose two more custom user\n buttons in the GUI.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 812 / 1291\n \n 10.8.15.6 Tuning Mode 0 Arc OK\n Mode 0 Arc OK relies on the arc voltage to set the Arc OK signal. This is accomplished by sampling the\n arc voltage every servo thread cycle. There needs to be a specified number of consecutive samples,\n all within a specified threshold for the Arc OK signal to be set. These voltages are also required to be\n@@ -37276,15 +37276,15 @@\n many different variables (electrical noise, incorrect THCAD tuning, etc.).\n After all contributing factors have been mitigated, if a small fluctuation still exists it is possible to\n eliminate it by widening the voltage window for which QtPlasmaC will display 0 V.\n The pin for adjusting this value is named plasmac.zero-window and the default value is set to 0.1. To\n change this value, add the pin and the required value to the custom.hal file.\n The following example would set the voltage window to be displayed as 0 V from -5 V to +5 V:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 813 / 1291\n \n setp plasmac.zero-window 5\n \n 10.8.15.9 Tuning Void Sensing\n In addition to the Void Slope setting in the PARAMETERS Tab there are two HAL pins to aid in the\n@@ -37315,15 +37315,15 @@\n setp qtplasmac.tabs_always_enabled 1\n \n Warning\n It is the responsibility of the operator to ensure that the machine is equipped with a suitable,\n working hardware E-stop. If using only a touchscreen to navigate the QtPlasmaC GUI, there is\n no way to stop automated machine motion on any tab but the MAIN tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 814 / 1291\n \n 10.8.15.12 Override Jog Inhibit Via Z+ Jog\n It is possible to override the jog inhibit by using the GUI or keyboard to jog in the Z+ direction rather\n than checking the Override Jog box on the SETTINGS Tab.\n This is done by changing the following option to True in the [GUI_OPTIONS] of the <machine_name>.prefs\n@@ -37418,15 +37418,15 @@\n cut recovery is deactivated\n \n The DEBUG state is for testing purposes only and will not normally be encountered.\n 10.8.15.14 QtPlasmaC Debug Print\n The plasmac HAL component has a HAL pin named plasmac.debug-print which if set to 1 (true) will\n print to terminal every state change as a debug aid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 815 / 1291\n \n 10.8.15.15 Hypertherm PowerMax Communications\n Communications can be established with a Hypertherm PowerMax plasma cutter that has a RS485\n port. This feature enables the setting of Cut Mode, Cutting Amperage and Gas Pressure automatically from the Cut Parameters of the material file. In addition, the user will be able to view the\n PowerMax\u2019s Arc On Time in hh:mm:ss format on the STATISTICS Tab.\n@@ -37462,15 +37462,15 @@\n 1. Disable PowerMax Comms from the MAIN Tab\n 2. Close LinuxCNC which will put the PowerMax into local mode during shutdown.\n 3. Turn the PowerMax off for 30 seconds and then power it back on.\n Tip\n If PowerMax communications is active then selecting Mesh Mode will automatically select CPA mode\n on the PowerMax unit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 816 / 1291\n \n Note\n To use the PowerMax communications feature it is necessary to have the Python pyserial module\n installed.\n If pyserial is not installed an error message will be displayed.\n@@ -37520,15 +37520,15 @@\n \n pylupdate5\n \n .py\n \n ../.py\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 817 / 1291\n \n The editing of the translation is done with the linguist application:\n linguist\n \n 1. Open the TS file and translate the strings\n@@ -37562,15 +37562,15 @@\n as:\n 1. ARC VOLTAGE\n 2. OHMIC SENSE\n 3. FLOAT SWITCH\n 4. BREAKAWAY SWITCH\n 5. ESTOP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 818 / 1291\n \n 10.8.17.2 NGC Samples\n There are some sample G-code files in the ~/linuxcnc/nc_files/examples/plasmac directory.\n 10.8.17.3 QtPlasmaC Specific G-codes\n Description\n@@ -37649,15 +37649,15 @@\n #<holes> = 2\n for holes less than 32 mm (1.26\u201d) diameter\n over cut length = 4 mm (0.157\u201d)\n #<holes> = 3\n for holes less than 32 mm (1.26\u201d) diameter\n for arcs less than 16 mm (0.63\u201d) radius\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut holes and arcs at 60% feed\n rate, turn torch off at hole end,\n continue hole path for over cut.\n Specify hole diameter for\n #<holes> = 1-4.\n@@ -37735,15 +37735,15 @@\n M67 E3 Q60 (reduce feed rate to 60%)\n G3 I10 (the hole)\n M67 E3 Q100 (restore feed rate to 100%)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut a hole with 60% reduced\n speed using the #<holes>\n command\n \n Cut a hole with over cut using\n@@ -37809,15 +37809,15 @@\n M3 $0 S1 (start cut)\n G1 X0\n G3 I10 (the hole)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Select scribe and select torch\n at end of scribing\n \n Hole center spotting.\n \n@@ -37880,15 +37880,15 @@\n F/32\n \n This value is required to be entered into PnCconf during installation.\n Note\n If using a parallel port it may be necessary for the user to adjust the jumper setting and the subsequent scaling values on the Parameters Tab to achieve optimal results. Symptoms may include\n random torch raises or dives during otherwise stable cutting. Halscope plots may be useful in diagnosing these issues.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 822 / 1291\n \n Located on the rear of the THCAD is a calibration sticker showing:\n THCAD-nnn\n 0V\n 5V\n@@ -37931,15 +37931,15 @@\n Note\n These values can be calculated by using this online calculator.\n \n Note\n There is a lowpass filter available which may be useful if using a THCAD and there is a lot of noise on\n the returned arc voltage.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 823 / 1291\n \n 10.8.17.6 RS485 Connections\n Hypertherm RS485 Wiring Diagram (wire colors inside the Hypertherm in parentheses):\n Connection at Machine Pin #\n 1 - Tx+ (Red)\n@@ -37952,56 +37952,56 @@\n DTECH DT-5019 USB to RS-485 converter adapter:\n \n Connection at Breakout Board\n ->RXD+\n ->RXD->T/R+\n ->T/R->GND\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 824 / 1291\n \n The following is necessary to convert a motherboard Serial connection or Serial card (RS232) to\n RS485:\n DTECH RS-232 to RS-485 converter:\n \n Serial card example (Sunnix SER5037A PCI Card shown with Breakout Board):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 825 / 1291\n \n 10.8.17.7 Arc OK With A Reed Relay\n An effective and very reliable method of obtaining an Arc OK signal from a plasma power supply\n without a CNC port is to mount a reed relay inside a non-conductive tube and wrap and secure three\n turns of the work lead around the tube.\n This assembly will now act as a relay that will switch on when current is flowing through the work\n lead which only occurs when a cutting arc has been established.\n This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the QtPlasmaC\n Modes sections for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 826 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 827 / 1291\n \n 10.8.17.8 Contact Load Schematics\n \n A full description is at Contact Load.\n \n 10.8.18 Known Issues\n 10.8.18.1 Keyboard Jogging\n There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and\n starting during jogging. This issue can be prevented by disabling the Operating System\u2019s autorepeat\n feature for all keys. QtPlasmaC uses this disabling feature by default for all keys only when the MAIN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 828 / 1291\n \n Tab is visible, with the following exceptions when autorepeat is allowed with the MAIN Tab visible: Gcode editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System\u2019s autorepeat\n feature will be enabled for all keys.\n If the user wishes to prevent QtPlasmaC from changing the Operating System\u2019s autorepeat settings,\n enter the following option in the [GUI_OPTIONS] section of the <machine_name>.prefs file:\n@@ -38023,15 +38023,15 @@\n MDRO is a simple graphical front-end for LinuxCNC providing a display of data from Digital Read\n Out (DRO) scales. It provides functionality similar to a normal machinist\u2019s DRO display, allowing the\n user to use the DRO scales on the machine when operating in a manual-only (hand-cranked) mode.\n It is most useful for manual machines such as DRO equipped Bridgeport style mills that have been\n converted to CNC but still have the manual controls.\n MDRO is mouse and touch screen friendly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 829 / 1291\n \n Figure 10.50: MDRO Window\n \n 10.9.2 Getting Started\n If your configuration is not currently set up to use MDRO, you can change it by editing the INI file. In\n@@ -38041,15 +38041,15 @@\n When MDRO starts, a window like the one in the figure Figure 10.50 above opens.\n 10.9.2.1 INI File Options\n Other options that can be included on the [DISPLAY] section include:\n \u2022 MDRO_VAR_FILE = <file.var> - preload G54 - G57 coordinate system data.\n \u2013 Preload a .var file. This is typically the .var file used by the operational code.\n \u2022 POINT_SIZE = <n> - Set text point size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 830 / 1291\n \n \u2013 This option sets the size of the font used which sets the overall size of the window. The default\n point size is 20, Typical sizes are 20 to 30.\n \u2022 MM = 1 Set this if the DRO scales provide data scaled in millimeters.\n 10.9.2.2 Command Line Options\n@@ -38085,15 +38085,15 @@\n \u2013 a \u201dz\u201d button that zeros the value,\n \u2013 a \u201d1/2\u201d button that halves the value,\n \u2013 a entry field that can be used to set a user-defined value. This field can be set from the keyboard\n or from the on-screen keypad.\n \u2013 A \u201dI\u201d button that starts an index operation (see below),\n \u2022 a keypad used to set values in the entry field via a mouse or touchscreen,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 831 / 1291\n \n \u2022 coordinate system selection buttons:\n \u2013 The \u201dmcs\u201d button selects the machine coordinate system. These are the raw values from the\n encoders connected to the mdro.axis.n pins.\n \u2013 The \u201dcs1\u201d - \u201dcs4\u201d buttons allow the user to select among one of four user-defined coordinate\n@@ -38111,15 +38111,15 @@\n The easiest way to see how MDRO works is to try it in a simulation environment. Add this section to the\n end of your simulation HAL file, usually \u201dhallib/core_sim.hal\u201d:\n loadusr -W mdro -l sim.var XYZ\n net x-pos-fb => mdro.axis.0\n net y-pos-fb => mdro.axis.1\n net z-pos-fb => mdro.axis.2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 832 / 1291\n \n Chapter 11\n \n G-code Programming\n 11.1 Coordinate Systems\n@@ -38146,15 +38146,15 @@\n will move from the current position to the position where the machine coordinates of the three axes\n will be at zero. You can use this command if you have a fixed position for the tool change or if your\n machine has an automatic tool changer. You can also use this command to clear the work area and\n access the workpiece in the vise.\n G53 is a non modal command. It must be used in every block where a move in machine coordinate\n system is desired.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 833 / 1291\n \n 11.1.3 Coordinate Systems\n \n Figure 11.1: Coordinate Systems Example\n Coordinate System Offsets\n@@ -38177,15 +38177,15 @@\n In the VAR file scheme, the first variable number stores the X offset, the second the Y offset and so on\n for all nine axes. There are numbered sets like this for each of the coordinate system offsets.\n Each of the graphical interfaces has a way to set values for these offsets. You can also set these values\n by editing the VAR file itself and then restart LinuxCNC so that the LinuxCNC reads the new values\n however this is not the recommended way. Using G10, G52, G92, G28.1, etc are better ways to set\n the variables. For our example, we will directly edit the file so that G55 will take the following values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 834 / 1291\n \n Table 11.1: Example of G55 parameters\n Axis\n X\n Y\n@@ -38265,15 +38265,15 @@\n uses parameters of coordinate system 8(((G59.2)))\n uses parameters of coordinate system 9(((G59.3)))\n \n 11.1.3.1 Default Coordinate System\n One other variable in the VAR file becomes important when we think about offset systems. This\n variable is named 5220. In the default files its value is set to 1.00000. This means that when the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 835 / 1291\n \n LinuxCNC starts up it should use the first coordinate system as its default. If you set this to 9.00000 it\n would use the ninth offset system as its default for start up and reset. Any value other than an integer\n (decimal really) between 1 and 9, or a missing 5220 variable will cause the LinuxCNC to revert to the\n default value of 1.00000 on start up.\n@@ -38308,15 +38308,15 @@\n respectively. Axes unset in the command, such as Z in the previous example, will be unaffected: any\n previous G52 Z offset will remain in effect, and otherwise the Z offset will be zero.\n The temporary local offset may be canceled with G52 X0 Y0. Any axes not explicitly zeroed will retain\n the previous offset.\n G52 shares the same offset registers as G92, and thus G52 is visible on the DRO and preview labeled\n with G92.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 836 / 1291\n \n 11.1.5 G92 Axes Offsets\n G92 is the most misunderstood and cleverest command programmable with LinuxCNC. The way it\n works has changed a bit between the first versions and the current one. These changes have doubt\n baffled many users. They should be seen as a command producing a temporary offset, which applies\n@@ -38355,15 +38355,15 @@\n effect. However, the G92 was still in effect for all coordinates and did produce expected work offsets\n for the other coordinate systems.\n By default, G92 offsets are restored after the machine is started. Programmers that wish for Fanuc\n behavior, where G92 offsets are cleared at machine start and after a reset or program end, may disable\n G92 persistence by setting DISABLE_G92_PERSISTENCE = 1 in the [RS274NGC] section of the INI\n file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 837 / 1291\n \n Note\n It is good practice to clear the G92 offsets at the end of their use with G92.1 or G92.2. When starting\n up LinuxCNC with G92 persistence enabled (the default), any offsets in the G92 variables will be\n applied when an axis is homed. See G92 Persistence Cautions below.\n@@ -38395,15 +38395,15 @@\n \u2022 5214 - A Axis Offset\n \u2022 5215 - B Axis Offset\n \u2022 5216 - C Axis Offset\n \u2022 5217 - U Axis Offset\n \u2022 5218 - V Axis Offset\n \u2022 5219 - W Axis Offset\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 838 / 1291\n \n where 5210 is the G92 enable flag (1 for enabled, 0 for disabled) and 5211 to 5219 are the axis offsets.\n If you are seeing unexpected positions as the result of a commanded move, as a result of storing an\n offset in a previous program and not clearing them at the end then issue a G92.1 in the MDI window\n to clear the stored offsets.\n@@ -38447,15 +38447,15 @@\n We put these together in the following program:\n (a program for milling five small circles in a diamond shape)\n G10 L2 P1 X0 Y0 Z0 (ensure that G54 is machine zero)\n G10 L2 P2 X0.5 (offsets G55 X value by 0.5 inch)\n G10 L2 P3 X-0.5 (offsets G56 X value by -0.5 inch)\n G10 L2 P4 Y0.5 (offsets G57 Y value by 0.5 inch)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 839 / 1291\n \n G10 L2 P5 Y-0.5 (offsets G58 Y value by -0.5 inch)\n G54 G0 X-0.1 Y0 Z0 (center circle)\n G1 F1 Z-0.25\n G3 X-0.1 Y0 I0.1 J0\n@@ -38493,15 +38493,15 @@\n Using the Touch Off Screen in the AXIS interface you can update the tool table automatically.\n Typical steps for updating the tool table:\n \u2022 After homing load a tool with Tn M6 where n is the tool number.\n \u2022 Move tool to an established point using a gauge or take a test cut and measure.\n \u2022 Click the Touch Off button in the Manual Control tab (or hit the End button on your keyboard).\n \u2022 Select Tool Table in the Coordinate System drop down box.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 840 / 1291\n \n \u2022 Enter the gauge or measured dimension and select OK.\n The Tool Table will be changed with the correct Z length to make the DRO display the correct Z\n position and a G43 command will be issued so the new tool Z length will be in effect. Tool table touch\n off is only available when a tool is loaded with Tn M6.\n@@ -38523,15 +38523,15 @@\n directory as your configuration and is called tool.tbl by default. A file name may be specified with the\n INI file [EMCIO]TOOL_TABLE setting. The tools might be in a tool changer or just changed manually.\n The file can be edited with a text editor or be updated using G10 L1. See the Lathe Tool Table section\n for an example of the lathe tool table format. The maximum pocket number is 1000.\n The Tool Editor or a text editor can be used to edit the tool table. If you use a text editor make sure\n you reload the tool table in the GUI.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 841 / 1291\n \n 11.2.2.1 Tool Table Format\n Table 11.2: Tool Table Format\n T#\n ;\n@@ -38646,15 +38646,15 @@\n all be different.\n The pocket numbers will typically start at 1 and go up to the highest available pocket on your tool\n changer. But not all tool changers follow this pattern. Your pocket numbers will be determined by\n the numbers that your tool changer uses to refer to the pockets. So all this is to say that the pocket\n numbers you use will be determined by the numbering scheme used in your tool changer, and the\n pocket numbers you use must make sense on your machine.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 842 / 1291\n \n Data Offset Numbers (optional)\n The Data Offset columns (XYZABCUVW) contain real numbers which represent tool offsets in\n each axis. This number will be used if tool length offsets are being used and this tool is selected.\n These numbers can be positive, zero, or negative, and are in fact completely optional. Although\n@@ -38695,15 +38695,15 @@\n [EMCIO]RANDOM_TOOLCHANGER=type.\n 1. For RANDOM_TOOLCHANGER = 0, (0 is default and specifies a non-random toolchanger) idx is a\n number indicating the sequence in which tooldata was loaded.\n 2. For RANDOM_TOOLCHANGER = 1, idx is the current pocket number for the tool number specified\n by the G-code select tool command Tn.\n The io program provides HAL output pins to facilitate toolchanger management:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 843 / 1291\n \n 1. iocontrol.0.tool-prep-number\n 2. iocontrol.0.tool-prep-index\n 3. iocontrol.0.tool-prep-pocket\n 4. iocontrol.0.tool-from-pocket\n@@ -38729,15 +38729,15 @@\n 5. At M-code M6 (following iocontrol.0.tool-changed pin 0-->1):\n a. iocontrol.0.tool-from-pocket = pocket number used to retrieve tool\n Note\n At startup, iocontrol.0.tool-from-pocket = 0. An M61Qn (n!=0) command does not change the\n iocontrol.0.tool-from-pocket. An M61Q0 (n==0) command sets iocontrol.0.tool-from-pocket\n to 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 844 / 1291\n \n 11.2.2.3 Tool Changers\n LinuxCNC supports three types of tool changers: manual, random location and non-random or fixed\n location. Information about configuring a LinuxCNC tool changer is in the EMCIO Section of the INI\n chapter.\n@@ -38780,15 +38780,15 @@\n The effect of the tool length compensation is illustrated in the capture below. Note that the\n tool length is subtracted from Z so that the programmed control point corresponds to the tip of\n the tool. Note also that the effect of the length compensation is immediate when you see the\n compensation is immediate when the position of Z is seen as a relative coordinate, but it has no\n effect on the actual machine position until a Z movement is programmed.\n Tool length test program. Tool #1 is one inch long.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 845 / 1291\n \n N01 G1 F15 X0 Y0 Z0\n N02 G43 H1 Z0 X1\n N03 G49 X0 Z0\n N04 G0 X2\n@@ -38808,15 +38808,15 @@\n this imagine you were standing on the part walking behind the tool as it progresses across the part.\n G41 is your left side of the line and G42 is the right side of the line.\n The end point of each move depends on the next move. If the next move creates an outside corner the\n move will be to the end point of the compensated cut line. If the next move creates in an inside corner\n the move will stop short so to not gouge the part. The following figure shows how the compensated\n move will stop at different points depending on the next move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 846 / 1291\n \n Figure 11.3: Compensation End Point\n \n 11.2.4.1 Overview\n Cutter compensation uses the data from the tool table to determine the offset needed. The data can\n@@ -38824,46 +38824,46 @@\n Any move that is long enough to perform the compensation will work as the entry move. The minimum\n length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are\n issued after a G41/42 only the last one will move the tool to the compensated position.\n In the following figure you can see that the entry move is compensated to the right of the line. This\n puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end\n is at X0 the resulting profile would leave a bump due to the offset of the entry move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 847 / 1291\n \n Figure 11.4: Entry Move\n Z axis motion may take place while the contour is being followed in the XY plane. Portions of the\n contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the\n next start point.\n Rapid moves may be programmed while compensation is turned on.\n Start a program with G40 to make sure compensation is off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 848 / 1291\n \n 11.2.4.2 Examples\n \n Figure 11.5: Outside Profile\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 849 / 1291\n \n Figure 11.6: Inside Profile\n \n 11.3 Tool Edit GUI\n 11.3.1 Overview\n Note\n The tooledit elements described here are available since version 2.5.1 and later. In version 2.5.0, the\n graphical interface interface does not allow these adjustments.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 850 / 1291\n \n Figure 11.7: Tool Edit GUI - Overview\n The tooledit program can update the tool table file with edited changes by using the SaveFile button.\n The SaveFile button updates the system file but a separate action is required to update the tool table\n data used by a running LinuxCNC instance. With the AXIS GUI, both the file and the current tool\n@@ -38877,15 +38877,15 @@\n Figure 11.8: Tool Edit GUI - Column Sorting\n In Ubuntu Lucid 10.04 Tcl/Tk8.4 it is installed by default. The installation is performed as follows:\n sudo apt-get install tcl8.5 tk8.5\n \n Depending upon other applications installed on the system, it may be necessary to enable Tcl/Tk8.5\n with the commands:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n sudo update-alternatives --config tclsh\n sudo update-alternatives --config wish\n \n 851 / 1291\n \n ;# select the option for tclsh8.5\n@@ -38910,15 +38910,15 @@\n Stand Alone\n tooledit\n Usage:\n tooledit filename\n tooledit [column_1 ... column_n] filename\n Valid column names are: x y z a b c u v w diam front back orien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 852 / 1291\n \n To synchronize a standalone tooledit with a running LinuxCNC application, the filename must resolve\n to the same [EMCIO]TOOL_TABLE filename specified in the LinuxCNC INI file.\n When using the program tooledit while LinuxCNC is running, G-code command execution or other\n programs may alter tool table data and the tool table file. File changes are detected by tooledit and a\n@@ -38961,15 +38961,15 @@\n program may end before the end of a file. Lines of a file that occur after the end of a program are not\n to be executed. The interpreter does not even read them.\n \n 11.4.2 Format of a line\n A permissible line of input code consists of the following, in order, with the restriction that there is a\n maximum (currently 256) to the number of characters allowed on a line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 853 / 1291\n \n \u2022 an optional block delete character, which is a slash /.\n \u2022 an optional line number.\n \u2022 any number of words, parameter settings, and comments.\n \u2022 an end of line marker (carriage return or line feed or both).\n@@ -39012,15 +39012,15 @@\n B axis of machine\n C axis of machine\n Tool radius compensation number\n Feed rate\n General function (See table G-code Modal Groups)\n Tool length offset index\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 854 / 1291\n \n Table 11.3: (continued)\n Letter\n I\n J\n@@ -39077,15 +39077,15 @@\n \u2022 A number consists of:\n \u2013 an optional plus or minus sign, followed by\n \u2013 zero to many digits, followed, possibly, by\n \u2013 one decimal point, followed by\n \u2013 zero to many digits - provided that there is at least one digit somewhere in the number.\n \u2022 There are two kinds of numbers:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 855 / 1291\n \n \u2013 Integers, that does not have a decimal point,\n \u2013 Decimals, that do have a decimal point.\n \u2022 Numbers may have any number of digits, subject to the limitation on line length. Only about seventeen significant figures will be retained, however (enough for all known applications).\n \u2022 A non-zero number with no sign but the first character is assumed to be positive.\n@@ -39121,15 +39121,15 @@\n \u2022 Uninitialized global parameters, and unused subroutine parameters return the value zero when\n used in an expression.\n \u2022 Uninitialized named parameters signal an error when used in an expression.\n Mode\n Most parameters are read/write and may be assigned to within an assignment statement. However, for many predefined parameters this does not make sense, so they are are read-only - they\n may appear in expressions, but not on the left-hand side of an assignment statement.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 856 / 1291\n \n Persistence\n When LinuxCNC is shut down, volatile parameters lose their values. All parameters except numbered parameters in the current persistent range 1 are volatile. Persistent parameters are saved\n in the .var file and restored to their previous values when LinuxCNC is started again. Volatile\n numbered parameters are reset to zero.\n@@ -39170,15 +39170,15 @@\n 1 The range of persistent parameters may change as development progresses. This range is currently 5161- 5390. It is\n defined in the _required_parameters array in file the src/emc/rs274ngc/interp_array.cc .\n 2 The RS274/NGC interpreter maintains an array of numbered parameters.\n Its size is defined by the symbol\n RS274NGC_MAX_PARAMETERS in the file src/emc/rs274ngc/interp_internal.hh). This number of numerical parameters may\n also increase as development adds support for new parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 857 / 1291\n \n \u2022 5221-5230 - Coordinate System 1, G54 for X, Y, Z, A, B, C, U, V, W & R. R denotes the XY rotation\n angle around the Z axis. Persistent.\n \u2022 5241-5250 - Coordinate System 2, G55 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n \u2022 5261-5270 - Coordinate System 3, G56 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n@@ -39216,15 +39216,15 @@\n read by the Interpreter and written to the file as it exits.\n Missing Parameters in the persistent range will be initialized to zero and written with their current\n values on the next save operation.\n The parameter numbers must be arranged in ascending order. An Parameter file out of order error\n will be signaled if they are not in ascending order.\n The original file is saved as a backup file when the new file is written.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 858 / 1291\n \n Table 11.4: Parameter File Format\n Parameter Number\n 5161\n 5162\n@@ -39262,15 +39262,15 @@\n are deleted and cannot be referred to anymore.\n It is an error to use a non-existent named parameter within an expression, or at the right-hand side\n of an assignment. Printing the value of a non-existent named parameter with a DEBUG statement like (DEBUG, <no_such_parameter>) will display the string #.\n Global parameters, as well as local parameters assigned to at the global level, retain their value once\n assigned even when the program ends, and have these values when the program is run again.\n The EXISTS function tests whether a given named parameter exists.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 859 / 1291\n \n 11.4.3.4 Predefined Named Parameters\n The following global read only named parameters are available to access internal state of the interpreter and machine state. They can be used in arbitrary expressions, for instance to control flow of\n the program with if-then-else statements. Note that new predefined named parameters can be added\n easily without changes to the source code.\n@@ -39339,15 +39339,15 @@\n 190\n 171\n 181\n 191\n \n \u2022 #<_ccomp> - Status of cutter compensation. Return values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 860 / 1291\n \n Mode\n G40\n G41\n G41.1\n@@ -39404,15 +39404,15 @@\n \u2022 #<_spindle_css_mode> - Return 1 if constant surface speed mode (G96) is on, else 0.\n \u2022 #<_ijk_absolute_mode> - Return 1 if Absolute Arc distance mode (G90.1) is on, else 0.\n \u2022 #<_lathe_diameter_mode> - Return 1 if this is a lathe configuration and diameter (G7) mode is on,\n else 0.\n \u2022 #<_lathe_radius_mode> - Return 1 if this is a lathe configuration and radius (G8) mode is on, else\n 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 861 / 1291\n \n \u2022 #<_spindle_on> - Return 1 if spindle currently running (M3 or M4) else 0.\n \u2022 #<_spindle_cw> - Return 1 if spindle direction is clockwise (M3) else 0.\n \u2022 #<_mist> - Return 1 if mist (M7) is on.\n \u2022 #<_flood> - Return 1 if flood (M8) is on.\n@@ -39444,15 +39444,15 @@\n \u2022 #<_selected_pocket> - Return the tooldata index of the selected pocket post a T code. Default -1\n (no pocket selected).\n \u2022 #<_value> - Return value from the last O-word return or endsub. Default value 0 if no expression\n after return or endsub. Initialized to 0 on program start.\n \u2022 #<_value_returned> - 1.0 if the last O-word return or endsub returned a value, 0 otherwise. Cleared\n by the next O-word call.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 862 / 1291\n \n \u2022 #<_task> - 1.0 if the executing interpreter instance is part of milltask, 0.0 otherwise. Sometimes\n it is necessary to treat this case specially to retain proper preview, for instance when testing the\n success of a probe (G38.n) by inspecting #5070, which will always fail in the preview interpreter\n (e.g. Axis).\n@@ -39496,15 +39496,15 @@\n o100 endif\n \n This feature was motivated by the desire for stronger coupling between user interface components like\n GladeVCP and PyVCP to act as parameter source for driving NGC file behavior. The alternative - going\n through the M6x pins and wiring them - has a limited, non-mnemonic namespace and is unnecessarily\n cumbersome just as a UI/Interpreter communications mechanism.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 863 / 1291\n \n 11.4.5 Expressions\n An expression is a set of characters starting with a left bracket [ and ending with a balancing right\n bracket ] . In between the brackets are numbers, parameter values, mathematical operations, and\n other expressions. An expression is evaluated to produce a number. The expressions on a line are\n@@ -39543,15 +39543,15 @@\n less than 1e-6 (this value is defined as TOLERANCE_EQUAL in src/emc/rs274ngc/interp_internal.hh).\n \n 11.4.8 Functions\n The available functions are shown in following table. Arguments to unary operations which take angle\n measures (COS, SIN, and TAN ) are in degrees. Values returned by unary operations which return\n angle measures (ACOS, ASIN, and ATAN) are also in degrees.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 864 / 1291\n \n Table 11.10: G-code Functions\n Function Name\n ATAN[arg]/[arg]\n ABS[arg]\n@@ -39612,15 +39612,15 @@\n If a parameter setting of the same parameter is repeated on a line, #3=15 #3=6, for example, only\n the last setting will take effect. It is silly, but not illegal, to set the same parameter twice on the same\n line.\n If more than one comment appears on a line, only the last one will be used; each of the other comments\n will be read and its format will be checked, but it will be ignored thereafter. It is expected that putting\n more than one comment on a line will be very rare.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 865 / 1291\n \n 11.4.10 Item order\n The three types of item whose order may vary on a line (as given at the beginning of this section) are\n word, parameter setting, and comment. Imagine that these three types of item are divided into three\n groups by type.\n@@ -39661,15 +39661,15 @@\n F100 G1 @.5 ^90\n G91 @.5 ^90\n @.5 ^90\n @.5 ^90\n @.5 ^90\n G90 G0 X0 Y0 M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 866 / 1291\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 Figure 11.10: Polar Spiral\n@@ -39680,15 +39680,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 867 / 1291\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@@ -39712,15 +39712,15 @@\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81 G82, G83, G84, G85, G86, G87, G88,\n G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 868 / 1291\n \n Table 11.11: (continued)\n Modal Group Meaning\n Arc IJK Distance Mode\n (Group 4)\n@@ -39783,15 +39783,15 @@\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 11.4.14 Comments\n Comments are purely informative and have no influence on machine behaviour.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 869 / 1291\n \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 Comments may appear between words, but not between words and their corresponding parameter.\n@@ -39829,15 +39829,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 870 / 1291\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@@ -39871,15 +39871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 871 / 1291\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@@ -39914,15 +39914,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 872 / 1291\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@@ -39958,15 +39958,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 873 / 1291\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@@ -40000,15 +40000,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 874 / 1291\n \n 11.5.2 G-Code Quick Reference Table\n Code\n G0\n G1\n@@ -40114,15 +40114,15 @@\n Back-boring Cycle (not yet implemented)\n Boring Cycle, Stop, Manual Out (not yet\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -40170,15 +40170,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 876 / 1291\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@@ -40219,15 +40219,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 877 / 1291\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@@ -40262,15 +40262,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 <X- Z- Y- I- K- P->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 878 / 1291\n \n \u2022 Y - helix\n \u2022 I - X offset\n \u2022 K - Z offset\n \u2022 P - number of turns\n@@ -40302,28 +40302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 879 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 880 / 1291\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@@ -40342,15 +40342,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 881 / 1291\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@@ -40385,15 +40385,15 @@\n G5 X- Y- <I- J-> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 882 / 1291\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@@ -40430,15 +40430,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 883 / 1291\n \n 11.5.9 G5.2 G5.3 NURBS Block\n G5.2 <P-> <X- Y-> <L->\n X- Y- <P->\n ...\n@@ -40465,15 +40465,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 884 / 1291\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@@ -40483,15 +40483,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 885 / 1291\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@@ -40521,15 +40521,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 886 / 1291\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- <axes R->\n \n \u2022 P - coordinate system (0-9)\n@@ -40589,15 +40589,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 887 / 1291\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@@ -40631,15 +40631,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 888 / 1291\n \n 11.5.16 G10 L11 Set Tool Table\n G10 L11 P- axes <R- I- J- Q->\n \n \u2022 P - tool number\n@@ -40667,15 +40667,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 889 / 1291\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@@ -40709,15 +40709,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 890 / 1291\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@@ -40754,15 +40754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 891 / 1291\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@@ -40799,15 +40799,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 892 / 1291\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@@ -40842,15 +40842,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 893 / 1291\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@@ -40913,15 +40913,15 @@\n coordinate consisting of XYZABCUVW of each successful straight probe in it. The file must be closed\n with (PROBECLOSE). For more information see the Comments section.\n An example file smartprobe.ngc is included (in the examples directory) to demonstrate using probe\n moves to log to a file the coordinates of a part. The program smartprobe.ngc could be used with\n ngcgui with minimal changes.\n It is an error if:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 894 / 1291\n \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@@ -40953,15 +40953,15 @@\n tool number.\n Note\n G41/G42 D0 is a little special. Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the Tool Change section). On nonrandom tool changer machines,\n G41/G42 D0 applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no\n tool is in the spindle. On random tool changer machines, G41/G42 D0 applies the TLO of the tool T0\n defined in the tool table file (or causes an error if T0 is not defined in the tool table).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 895 / 1291\n \n To start cutter compensation to the left of the part profile, use G41. G41 starts cutter compensation\n to the left of the programmed line as viewed from the positive end of the axis perpendicular to the\n plane.\n To start cutter compensation to the right of the part profile, use G42. G42 starts cutter compensation\n@@ -40995,15 +40995,15 @@\n G43 <H->\n \n \u2022 H - tool number (optional)\n \u2022 G43 - enables tool length compensation. G43 changes subsequent motions by offsetting the axis\n coordinates by the length of the offset. G43 does not cause any motion. The next time a compensated\n axis is moved, that axis\u2019s endpoint is the compensated location.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 896 / 1291\n \n G43 without an H word uses the currently loaded tool from the last Tn M6.\n G43 Hn uses the offset for tool n.\n The active tool length compensation values are stored in the numbered parameters 5401-5409.\n Note\n@@ -41036,15 +41036,15 @@\n \n \u2022 See G90 & T & M6 sections for more information.\n It is an error if:\n \u2022 motion is commanded on the same line as G43.1\n Note\n G43.1 does not write to the tool table.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 897 / 1291\n \n 11.5.30 G43.2 Apply additional Tool Length Offset\n G43.2 H- axes-\n \n \u2022 H - tool number\n@@ -41074,15 +41074,15 @@\n \n 11.5.32 G52 Local Coordinate System Offset\n G52 axes\n \n G52 is used in a part program as a temporary \u201dlocal coordinate system offset\u201d within the workpiece\n coordinate system. More information on G52 is in the Local and Global Offsets section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 898 / 1291\n \n 11.5.33 G53 Move in Machine Coordinates\n G53 axes\n \n To move in the machine coordinate system, program G53 on the same line as a linear move. G53 is\n@@ -41223,15 +41223,15 @@\n 5270\n 5290\n 5310\n 5330\n 5350\n 5370\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 899 / 1291\n \n Table 11.16: (continued)\n Select CS\n G59.3 9\n \n@@ -41280,15 +41280,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 900 / 1291\n \n 11.5.38 G70 Lathe finishing cycle\n G70 Q- <X-> <Z-> <D-> <E-> <P->\n \n \u2022 Q - The subroutine number.\n@@ -41326,15 +41326,15 @@\n G71.1 Q- <X-> <Z-> <D-> <I-> <R->\n G71.2 Q- <X-> <Z-> <D-> <I-> <R->\n G72\n Q- <X-> <Z-> <D-> <I-> <R->\n G72.1 Q- <X-> <Z-> <D-> <I-> <R->\n G72.2 Q- <X-> <Z-> <D-> <I-> <R->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 901 / 1291\n \n \u2022 Q - The subroutine number.\n \u2022 X - The starting X position, defaults to the initial position.\n \u2022 Z - The starting Z position, defaults to the initial position.\n \u2022 D - The remaining distance to the profile, defaults to 0.\n@@ -41366,15 +41366,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 902 / 1291\n \n 11.5.40 G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- <L->\n \n \u2022 R - retract position along the Z axis.\n@@ -41405,15 +41405,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 903 / 1291\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@@ -41428,15 +41428,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 904 / 1291\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@@ -41476,15 +41476,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 905 / 1291\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@@ -41511,15 +41511,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 906 / 1291\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@@ -41553,15 +41553,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 907 / 1291\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@@ -41592,15 +41592,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 908 / 1291\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@@ -41623,15 +41623,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 909 / 1291\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@@ -41653,15 +41653,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 910 / 1291\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@@ -41690,15 +41690,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 911 / 1291\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@@ -41711,15 +41711,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 912 / 1291\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@@ -41740,27 +41740,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 913 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 914 / 1291\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@@ -41770,15 +41770,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 915 / 1291\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@@ -41811,15 +41811,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 916 / 1291\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@@ -41849,15 +41849,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 917 / 1291\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@@ -41889,15 +41889,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 918 / 1291\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@@ -41935,15 +41935,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 919 / 1291\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@@ -41981,15 +41981,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 920 / 1291\n \n 11.5.60 G96, G97 Spindle Control Mode\n G96 <D-> S- <$-> (Constant Surface Speed Mode)\n G97 S- <$-> (RPM Mode)\n \n@@ -42027,15 +42027,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 921 / 1291\n \n 11.6 M-Codes\n 11.6.1 M-Code Quick Reference Table\n Code\n M0 M1\n@@ -42101,15 +42101,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 922 / 1291\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@@ -42143,15 +42143,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 923 / 1291\n \n M4 $1\n \n And this will stop spindle 2 and leave the other spindles rotating:\n M5 $2\n@@ -42188,15 +42188,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 924 / 1291\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@@ -42231,15 +42231,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 925 / 1291\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@@ -42272,15 +42272,15 @@\n \n 11.6.13 M53 Feed Stop Control\n \u2022 M53 <P1> - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 926 / 1291\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@@ -42314,15 +42314,15 @@\n 11.6.16 M66 Wait on Input\n M66 P- | E- <L->\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 927 / 1291\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@@ -42358,15 +42358,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 928 / 1291\n \n 11.6.18 M68 Analog Output, Immediate\n M68 E- Q-\n \n \u2022 M68 - set an analog output immediately.\n@@ -42397,15 +42397,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 929 / 1291\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@@ -42443,15 +42443,15 @@\n g20 (imperial)\n g91 (relative mode)\n F5 (low feed)\n S300 (low rpm)\n (debug, in subroutine, state now:)\n o<showstate> call\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 930 / 1291\n \n O<imperialsub> endsub\n ; main program\n g21 (metric)\n g90 (absolute)\n@@ -42497,15 +42497,15 @@\n (debug, in main, state now:)\n o<showstate> call\n o<imperialsub> call\n (debug, back in main, state now:)\n o<showstate> call\n m2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 931 / 1291\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@@ -42547,15 +42547,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 932 / 1291\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@@ -42597,15 +42597,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 933 / 1291\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@@ -42639,15 +42639,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 934 / 1291\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@@ -42696,15 +42696,15 @@\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 (i.e. parameters\n whose names begin with the underscore character \u201d_\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 935 / 1291\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@@ -42750,15 +42750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 936 / 1291\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@@ -42824,15 +42824,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 937 / 1291\n \n o100 while [#1 LT 3]\n (msg, Loop Done!)\n M2\n \n@@ -42878,15 +42878,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 938 / 1291\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@@ -42927,15 +42927,15 @@\n M2\n \n Note\n The file names are lowercase letters only so o<MyFile> is converted to o<myfile> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 939 / 1291\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@@ -42971,15 +42971,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 940 / 1291\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@@ -43016,37 +43016,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 941 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 942 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 943 / 1291\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@@ -43056,15 +43056,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 944 / 1291\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@@ -43076,15 +43076,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 945 / 1291\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@@ -43118,15 +43118,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 946 / 1291\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@@ -43149,15 +43149,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 947 / 1291\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@@ -43181,15 +43181,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 948 / 1291\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@@ -43211,15 +43211,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 949 / 1291\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@@ -43256,28 +43256,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 950 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 951 / 1291\n \n Chapter 12\n \n Virtual Control Panels\n 12.1 PyVCP\n@@ -43287,15 +43287,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 952 / 1291\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 <pyvcp>\n@@ -43303,15 +43303,15 @@\n <pyvcp>\n <label text=\u201dThis is a LED indicator\u201d/>\n <led/>\n </pyvcp>\n \n Figure 12.2: Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 953 / 1291\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@@ -43356,15 +43356,15 @@\n </pyvcp>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 954 / 1291\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@@ -43382,15 +43382,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 955 / 1291\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@@ -43429,15 +43429,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 956 / 1291\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@@ -43474,15 +43474,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 957 / 1291\n \n \u2022 white\n \u2022 black\n \u2022 blue and blue1 - 4\n \u2022 cyan and cyan1 - 4\n@@ -43511,15 +43511,15 @@\n <font>(\u201dHelvetica\u201d,20)</font>\n </label>\n \n The above code produced this example:\n \n Figure 12.3: Simple Label Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 958 / 1291\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@@ -43556,15 +43556,15 @@\n red.\n \u2022 <height>n</height> - sets the height of the LED in pixels.\n \u2022 <width>n</width> - sets the width of the LED in pixels.\n \u2022 <disable_pin>false</disable_pin> - when true adds a disable pin to the led.\n \u2022 <disabled_color>color</disabled_color> - sets the color of the LED to color when the pin is disabled.\n Round LED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 959 / 1291\n \n <led>\n <halpin>\u201dmy-led\u201d</halpin>\n <size>50</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -43593,15 +43593,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 <padx>n</padx> - where n is the amount of extra horizontal extra space.\n \u2022 <pady>n</pady> - where n is the amount of extra vertical extra space.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 960 / 1291\n \n \u2022 <activebackground>\u201dcolor\u201d</activebackground> - the cursor over color set to color.\n \u2022 <fg>\u201dcolor\u201d</fg> - the foreground color set to color.\n \u2022 <bg>\u201dcolor\u201d</bg> - the background color set to color.\n \u2022 <disable_pin>True</disable_pin> - disable pin.\n@@ -43630,15 +43630,15 @@\n \n Figure 12.8: Checked button\n Checkbutton Code Example\n <checkbutton>\n <halpin>\u201dcoolant-chkbtn\u201d</halpin>\n <text>\u201dCoolant\u201d</text>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 961 / 1291\n \n <initval>1</initval>\n </checkbutton>\n <checkbutton>\n <halpin>\u201dchip-chkbtn\u201d</halpin>\n@@ -43666,15 +43666,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 <orient>HORIZONTAL</orient>\n to display horizontally.\n 12.1.6.7 Number Displays\n Number displays can use the following formatting options\n \u2022 <font>(\u201dFont Name\u201d,n)</font>, where n is the font size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 962 / 1291\n \n \u2022 <width>_n_</width>, where n is the overall width of the space used.\n \u2022 <justify>_pos_</justify>, where pos is LEFT, CENTER, or RIGHT (doesn\u2019t work).\n \u2022 <padx>_n_</padx>, where n is the amount of extra horizontal extra space.\n \u2022 <pady>_n_</pady>, where n is the amount of extra vertical extra space.\n@@ -43703,15 +43703,15 @@\n <width>6</width>\n </s32>\n \n The above code produced this example:\n \n Figure 12.12: Simple s32 Number Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 963 / 1291\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 <u32>.\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@@ -43746,15 +43746,15 @@\n </bar>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 964 / 1291\n \n <meter>\n <halpin>\u201dmymeter\u201d</halpin>\n <text>\u201dBattery\u201d</text>\n <subtext>\u201dVolts\u201d</subtext>\n@@ -43780,15 +43780,15 @@\n <spinbox>\n <halpin>\u201dmy-spinbox\u201d</halpin>\n <min_>-12</min_>\n <max_>33</max_>\n <initval>0</initval>\n <resolution>0.1</resolution>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 965 / 1291\n \n <format>\u201d2.3f\u201d</format>\n <font>(\u201dArial\u201d,30)</font>\n <param_pin>1</param_pin>\n </spinbox>\n@@ -43822,15 +43822,15 @@\n <min_>100</min_>\n <max_>0</max_>\n <param_pin>1</param_pin>\n </scale>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 966 / 1291\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@@ -43853,15 +43853,15 @@\n <edgecolor>\u201dgreen\u201d</edgecolor>\n <dotcolor>\u201dblack\u201d</dotcolor>\n <param_pin>1</param_pin>\n </dial>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 967 / 1291\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@@ -43873,15 +43873,15 @@\n <halpin>\u201dmy-wheel\u201d</halpin>\n <cpr>45</cpr>\n <size>250</size>\n </jogwheel>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 968 / 1291\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@@ -43895,15 +43895,15 @@\n </vbox>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 969 / 1291\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@@ -43916,15 +43916,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 970 / 1291\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@@ -43960,15 +43960,15 @@\n <text>\u201dRIDGE\u201d</text>\n <bd>3</bd>\n </button>\n </hbox>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 971 / 1291\n \n Figure 12.24: Containers Borders Showcase\n Fill Container fill are specified with the <boxfill fill=\u201d\u201d/> 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 <boxfill fill =\u201dstyle\u201d/>\n@@ -43995,15 +43995,15 @@\n The above code produced this example:\n \n Figure 12.25: Simple hbox Example\n Inside an Hbox, you can use the <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 972 / 1291\n \n <vbox>\n <relief>RIDGE</relief>\n <bd>6</bd>\n <label><text>\u201da vbox:\u201d</text></label>\n@@ -44029,15 +44029,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 <tablerow/> tag. A contained widget may span rows or columns through the use of the <tablespan\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 973 / 1291\n \n rows= cols=/> tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the <tablesticky sticky=/> tag. A table expands on its flexible rows and columns.\n Table Code Example\n <table flexible_rows=\u201d[2]\u201d flexible_columns=\u201d[1,4]\u201d>\n@@ -44081,15 +44081,15 @@\n <bar>\n <halpin>\u201dspindle-speed\u201d</halpin>\n <max_>5000</max_>\n </bar>\n </vbox>\n <vbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <label>\n <text>\u201d(this is the green eggs tab)\u201d</text>\n </label>\n </vbox>\n <vbox>\n <label>\n@@ -44098,15 +44098,15 @@\n </vbox>\n </tabs>\n \n The above code produced this example showing each tab selected.\n \n 974 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 975 / 1291\n \n Figure 12.29: Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -44127,15 +44127,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 976 / 1291\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@@ -44144,27 +44144,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\n will be built upon a StepConf Wizard generated configuration. First we run the StepConf Wizard\n and configure our machine, on the Advanced Configuration Options page we then make a couple of\n selections to add a blank PyVCP panel as shown in the following figure. For this example we named\n the configuration pyvcp_xyz on the Basic Machine Information page of the StepConf Wizard.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 977 / 1291\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 <pyvcp></pyvcp> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n In your custompanel.xml file we will add the description of the widgets.\n <pyvcp>\n <labelframe text=\u201dJog Buttons\u201d>\n <font>(\u201dHelvetica\u201d,16)</font>\n <!-- the X jog buttons -->\n <hbox>\n@@ -44218,15 +44218,15 @@\n </button>\n </hbox>\n <!-- the jog speed slider -->\n <vbox>\n \n 978 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 979 / 1291\n \n <relief>RAISED</relief>\n <bd>3</bd>\n <label>\n <text>\u201dJog Speed\u201d</text>\n@@ -44250,15 +44250,15 @@\n the error is a spelling or syntax error and it will be there.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 980 / 1291\n \n net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus\n # connect the Y PyVCP buttons\n net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus\n net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus\n@@ -44309,15 +44309,15 @@\n <relief>RIDGE</relief>\n <bd>2</bd>\n <label>\n <text>\u201dPin 10\u201d</text>\n <font>(\u201dHelvetica\u201d,14)</font>\n </label>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 981 / 1291\n \n <led>\n <halpin>\u201dled-10\u201d</halpin>\n <size>25</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -44357,15 +44357,15 @@\n start\n \n To run the HAL file we use the following command from a terminal window.\n ~$ halrun -I -f ptest.hal\n \n The following figure shows what a complete panel might look like.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 982 / 1291\n \n To add the rest of the parallel port pins just modify the XML and HAL files.\n To show the pins after running the HAL script use the following command at the halcmd prompt:\n halcmd: show pin\n Component Pins:\n@@ -44455,15 +44455,15 @@\n ptest.led-01 <== pin01\n ptest.led-02 <== pin02\n ptest.led-10 <== pin10\n ptest.led-11 <== pin11\n \n This will show you what pins are IN and what pins are OUT as well as any connections.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 983 / 1291\n \n 12.2.5 GS2 RPM Meter\n The following example uses the Automation Direct GS2 VDF driver and displays the RPM and other\n info in a PyVCP panel. This example is based on the GS2 example in the Hardware Examples section\n this manual.\n@@ -44513,15 +44513,15 @@\n <vbox>\n <relief>RAISED</relief>\n <bd>2</bd>\n <label>\n <text>\u201dFWD\u201d</text>\n <font>(\u201dHelvetica\u201d,18)</font>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <width>5</width>\n </label>\n <label width=\u201d2\u201d/>\n <rectled>\n <halpin>\u201dfwd-led\u201d</halpin>\n <height>\u201d30\u201d</height>\n@@ -44551,15 +44551,15 @@\n </hbox>\n </pyvcp>\n \n The above gives us a PyVCP panel that looks like the following.\n \n 984 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 985 / 1291\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@@ -44578,15 +44578,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 986 / 1291\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 <pyvcp>\n <!-- rapid to home button example -->\n@@ -44602,15 +44602,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 987 / 1291\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@@ -44641,15 +44641,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 GTK3 widget set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 988 / 1291\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@@ -44673,31 +44673,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 989 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 990 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 991 / 1291\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@@ -44712,15 +44712,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 992 / 1291\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@@ -44755,15 +44755,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 <file>.ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 993 / 1291\n \n \u2022 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with source <linuxcncdir>/scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNCspecific widgets.\n \u2022 When asked for unsaved preferences, just accept the defaults and hit Close.\n \u2022 From Toplevels (toolbar), pick GtkWindow (first entry) as top level window. Set window1 as ID in\n@@ -44781,15 +44781,15 @@\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 GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c <component name> option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 994 / 1291\n \n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n HAL containers have an associated HAL pin which is off by default, which causes all contained widgets to render inactive. A common use case would be to associate these container HAL pins with\n halui.machine.is-on or one of the halui.mode signals, to assure some widgets appear active only\n in a certain state.\n@@ -44825,15 +44825,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 995 / 1291\n \n Note\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@@ -44871,15 +44871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 996 / 1291\n \n [RS274NGC]\n # gladevcp Demo specific Oword subs live here\n SUBROUTINE_PATH = ../../nc_files/gladevcp_lib\n \n@@ -44925,15 +44925,15 @@\n Re-parent GladeVCP into an existing window XID instead of creating a new top level\n window\n \n \u2190-\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 997 / 1291\n \n -u FILE::\n Use File\u2019s as additional user defined modules with handlers\n -U USEROPT::\n pass USEROPTs to Python modules\n@@ -44966,15 +44966,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 <halcmd file> option (see previous section).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 998 / 1291\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@@ -45005,15 +45005,15 @@\n Exceptions to this rule currently are:\n \n \u2022 HAL_Spinbutton and HAL_ComboBox, which have two pins: a <widgetname>-f (float) and a <widgetname>\n (s32) pin\n \u2022 HAL_ProgressBar, which has a <widgetname>-value input pin, and a <widgetname>-scale input\n pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 999 / 1291\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 PyGObject API Reference.\n@@ -45051,15 +45051,15 @@\n doesn\u2019t make sense. You might use setp _pinname_ _value_ in the associated HAL file for testing\n though.\n \n It is perfectly OK to set an output HAL pin\u2019s value with halcomp[pinname] = value provided this HAL\n pin is not associated with a widget, that is, has been created by the hal_glib.GPin(halcomp.newpin(<name>\n method (see GladeVCP Programming for an example).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1000 / 1291\n \n 12.3.6.4 The hal-pin-changed signal\n Event-driven programming means that the UI tells your code when \u201dsomething happens\u201d - through\n a callback, like when a button was pressed. The output HAL widgets (those which display a HAL\n pin\u2019s value) like LED, Bar, VBar, Meter, etc., support the hal-pin-changed signal, which may cause a\n@@ -45077,15 +45077,15 @@\n \u2022 HAL_ToggleButton, HAL_CheckButton: retains on/off state. Important signal: toggled\n \u2022 HAL_RadioButton: a one-of-many group. Important signal: toggled (per button).\n \u2022 Important common methods: set_active(), get_active()\n \u2022 Important properties: label, image\n \n Figure 12.31: Check button\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1001 / 1291\n \n Figure 12.32: Radio buttons\n \n Figure 12.33: Toggle button\n Tip\n@@ -45103,15 +45103,15 @@\n <widgetname>-s\n out s32 pin\n To make a scale useful in Glade, add an Adjustment (General \u2192 Adjustment \u2192 New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set\n adjustment Page size and Page increment to zero to avoid warnings.\n \n Figure 12.34: Example HAL_HScale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1002 / 1291\n \n 12.3.6.7 SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n <widgetname>-f\n out FLOAT pin\n@@ -45141,15 +45141,15 @@\n <widgetname>-delta-scaled\n out FLOAT pin\n hal_dial has the following properties:\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 360\n default = 100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1003 / 1291\n \n show_counts\n Set this to False, if you want to hide the counts display in the middle of the widget.\n default = True\n label\n@@ -45194,15 +45194,15 @@\n \u2022 [widget name].get_scaled_value()\n Will return the counts value as a float\n \u2022 [widget name].get_delta_scaled_value()\n Will return the counts value as a float\n \u2022 [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1004 / 1291\n \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@@ -45227,15 +45227,15 @@\n \u2022 Wheel up = increase counts\n \u2022 Wheel down = reduce counts\n As moving the mouse the drag and drop way may be faster than the widget can update itself, you\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 its count value as HAL pin:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1005 / 1291\n \n <widgetname>-s\n out s32 pin\n jogwheel has the following properties:\n size\n@@ -45258,15 +45258,15 @@\n \u2022 [widget name].get_value()\n Will return the counts value as integer\n \u2022 [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n Figure 12.37: Example JogWheel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1006 / 1291\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 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@@ -45306,15 +45306,15 @@\n Float\n The min allowed value.\n Allowed values are 0.0 to 99999.0.\n Default is 0.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1007 / 1291\n \n max\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n@@ -45361,15 +45361,15 @@\n There are also Python methods to modify the widget:\n [widget name].set_adjustment(gtk-adjustment)\n \n You can assign a existing adjustment to the control, that way it is easy to replace existing sliders\n without many code changes. Be aware, that after changing the adjustment you may need to set a new\n increment, as it will be reset to its default (100 steps from MIN to MAX):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1008 / 1291\n \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@@ -45398,15 +45398,15 @@\n \u2022 State_Sensitive_Table\n \u2022 HAL_HBox (deprecated)\n These containers are meant to be used to insensitize (grey out) or hide their children.\n Insensitized children will not respond to input.\n HAL_HideTable\n Has one HAL BIT input pin which controls if its child widgets are hidden or not.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1009 / 1291\n \n Pin: , <Panel_basename>.<widgetname>\n in bit pin\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n@@ -45446,15 +45446,15 @@\n pick_color_on, pick_color_off\n Colors for ON and OFF states.\n These may be represented as #RRRRGGGGBBBB strings and are optional properties which have\n precedence over on_color and off_color.\n led_size\n LED radius (for square - half of LED\u2019s side)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1010 / 1291\n \n led_shape\n LED Shape.\n Valid values are 0 for round, 1 for oval and 2 for square shapes.\n led_blink_rate\n@@ -45488,15 +45488,15 @@\n scale\n Value scale.\n Sets the maximum absolute value of input. Same as setting the <widgetname>.scale pin.\n A float, range from -224 to +2 24.\n green_limit\n Green zone lower limit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1011 / 1291\n \n yellow_limit\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n@@ -45528,15 +45528,15 @@\n a float value from the ListStore.\n If you\u2019re confused like me about how to edit ComboBox ListStores and CellRenderer, see https://youtu.be/Z5_F-rW2cL8.\n 12.3.6.16 Bars\n HAL_Bar and HAL_VBar widgets for horizontal and vertical bars representing float values.\n HAL_Bar and HAL_VBar each have one input FLOAT HAL pin.\n HAL_Bar and HAL_VBar both bars have the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1012 / 1291\n \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@@ -45578,15 +45578,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1013 / 1291\n \n Figure 12.41: Horizontal bar\n \n Figure 12.42: Vertical bar\n \n@@ -45611,15 +45611,15 @@\n bg_color\n Background color of meter.\n z0_color, z1_color, z2_color\n Colors of different value zones.\n Defaults are green, yellow and red.\n For description of zones see z*_border properties.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1014 / 1291\n \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@@ -45645,15 +45645,15 @@\n show_velocity\n This displays the tool speed.\n Default = true.\n use_commanded\n This selects the DRO to use: commanded or actual values.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1015 / 1291\n \n metric_units\n This selects the DRO to use: metric or imperial units.\n Default = true.\n show_rapids\n@@ -45699,15 +45699,15 @@\n May be any of x, y, y2 , z, z2 , p (perspective).\n Defaults to z view.\n enable_dro\n Type = boolean.\n Whether to draw a DRO on the plot or not.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1016 / 1291\n \n mouse_btn_mode\n Type = integer.\n Mouse button handling: leads to different functions of the button:\n \u2022 0 = default: left rotate, middle move, right zoom\n@@ -45753,15 +45753,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 is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1017 / 1291\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@@ -45796,15 +45796,15 @@\n reference_type\n 0:G5x 1:tool 2:G92 3:Rotation around Z\n \n 12.3.6.21 DRO widget\n The DRO widget is used to display the current axis position.\n It has the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1018 / 1291\n \n display_units_mm\n Used to toggle the display units between metric and imperial. Default is False.\n actual\n Select actual (feedback) position or commanded position. Default is True.\n@@ -45860,15 +45860,15 @@\n \u2022 The DRO widget is a modified gtk label widget. As such, much of what can be done to a gtk\n label can be done to the DRO widget.\n \u2022 The font properties may also be set from a css stylesheet which has the highest priority and\n will override values set by GObject properties.\n There a couple ways to directly control the widget using Python.\n Using GObject to set the above listed properties\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1019 / 1291\n \n [widget name].set_property(\u201ddisplay_units_mm\u201d, True)\n [widget name].set_property(\u201dactual\u201d, True)\n [widget name].set_property(\u201ddiameter\u201d, True)\n [widget name].set_property(\u201dmm_text_template\u201d, \u201d%10.3f\u201d)\n@@ -45912,15 +45912,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1020 / 1291\n \n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis/joint numbers are:\n 0:X\n@@ -45969,15 +45969,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1021 / 1291\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@@ -46018,15 +46018,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1022 / 1291\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@@ -46061,15 +46061,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1023 / 1291\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@@ -46094,15 +46094,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1024 / 1291\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@@ -46146,15 +46146,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1025 / 1291\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@@ -46169,15 +46169,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1026 / 1291\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@@ -46212,15 +46212,15 @@\n font\n Display font to use\n hide_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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1027 / 1291\n \n lathe_display_type\n Show lathe format\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n@@ -46261,15 +46261,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1028 / 1291\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@@ -46296,15 +46296,15 @@\n mm_text_template\n You can use Python formatting to display the position with different precision.\n imperial_text_template\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1029 / 1291\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@@ -46330,15 +46330,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1030 / 1291\n \n Figure 12.48: Offsetpage Example\n \n 12.3.6.27 HAL_sourceview widget\n \n@@ -46359,15 +46359,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1031 / 1291\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@@ -46389,15 +46389,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1032 / 1291\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@@ -46410,15 +46410,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1033 / 1291\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@@ -46442,15 +46442,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1034 / 1291\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@@ -46484,15 +46484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1035 / 1291\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@@ -46512,15 +46512,15 @@\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 its current value as a parameter\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1036 / 1291\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@@ -46536,15 +46536,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1037 / 1291\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@@ -46581,15 +46581,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1038 / 1291\n \n \u2013 interp-idle\n \u2013 interp-paused\n \u2013 interp-reading\n \u2013 interp-waiting\n@@ -46630,15 +46630,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1039 / 1291\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@@ -46673,15 +46673,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 <module> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1040 / 1291\n \n For simple tasks it is 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@@ -46727,15 +46727,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1041 / 1291\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@@ -46770,15 +46770,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1042 / 1291\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@@ -46818,15 +46818,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1043 / 1291\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@@ -46867,15 +46867,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1044 / 1291\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@@ -46914,15 +46914,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1045 / 1291\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@@ -46964,15 +46964,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1046 / 1291\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17 Value-changed callback with hal_glib\n@@ -47011,15 +47011,15 @@\n window1.visible to False, and ignore an initial unmap event.\n 2. My GladeVCP program starts, but no window appears where I expect it to be?\n The window AXIS allocates for GladeVCP will obtain the natural size of all its child widgets\n combined. It is the child widget\u2019s job to request a size (width and/or height). However, not all\n widgets do request a width greater than 0, for instance the Graph widget in its current form. If\n there\u2019s such a widget in your Glade file and it is the one which defines the layout you might want\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1047 / 1291\n \n to set its width explicitly. Note that setting the window1 width and height properties in Glade\n does not make sense because this window will be orphaned during re-parenting and hence its\n geometry will have no impact on layout (see above). The general rule is: if you manually run a UI\n file with gladevcp <uifile> and its window has reasonable geometry, it should come up in AXIS\n@@ -47058,15 +47058,15 @@\n \u2022 If you\u2019re using HAL_table or HAL_HBox widgets, be aware they have an HAL pin associated with it\n which is off by default. This pin controls whether these container\u2019s children are active or not.\n \n 12.3.11 Implementation note: Key handling in AXIS\n We believe key handling works OK, but since it is new code, we\u2019re telling about it you so you can\n watch out for problems; please let us know of errors or odd behavior. This is the story:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1048 / 1291\n \n AXIS uses the TkInter widget set. GladeVCP applications use Gtk widgets and run in a separate\n process context. They are hooked into AXIS with the Xembed protocol. This allows a child application\n like GladeVCP to properly fit in a parent\u2019s window, and - in theory - have integrated event handling.\n However, this assumes that both parent and child application properly support the Xembed protocol,\n@@ -47102,15 +47102,15 @@\n identically-named files within subdirectories of the system directory specified by LINUXNC_AUX_GLADEVCP\n (e.g., /usr/share/linuxcnc/aux_gladevcp). This provision allows a developer to test an application by\n exporting GLADEVCP_EXTRAS to specify a private application directory without removing a systeminstalled application directory. Messages indicating rejected duplicates are printed to stdout.\n Note\n Support for auxiliary GladeVCP applications requires a Python module named importlib. This module\n may not be available in older installations like Ubuntu-Lucid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1049 / 1291\n \n 12.4 GladeVCP Library modules\n Libraries are prebuilt Python modules that give added features to GladeVCP. In this way you can select\n what features you want - yet don\u2019t have to build common ones yourself.\n \n@@ -47157,15 +47157,15 @@\n MAX_LINEAR_JOG_VEL = 300 units per minute\n DEFAULT_ANGULAR_JOG_VEL =\n MIN_ANGULAR_JOG_VEL =\n MAX_ANGULAR_JOG_VEL =\n MAX_FEED_OVERRIDE =\n MAX_TRAJ_VELOCITY =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1050 / 1291\n \n AVAILABLE_SPINDLES = int(self.INI.find(\u201dTRAJ\u201d, \u201dSPINDLES\u201d) or 1)\n DEFAULT_SPINDLE_0_SPEED = 200\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_0_OVERRIDE = 100\n@@ -47215,15 +47215,15 @@\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n INFO = Info()\n \n To access INFO data use this general syntax:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1051 / 1291\n \n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n@@ -47262,15 +47262,15 @@\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n ACTION.SET_MAX_VELOCITY_RATE(rate)\n ACTION.SET_RAPID_RATE(rate)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.SET_FEED_RATE(rate)\n ACTION.SET_SPINDLE_RATE(rate)\n ACTION.SET_JOG_RATE(rate)\n ACTION.SET_JOG_INCR(incr)\n ACTION.SET_JOG_RATE_ANGULAR(rate)\n ACTION.SET_JOG_INCR_ANGULAR(incr, text)\n@@ -47311,15 +47311,15 @@\n get_jog_info (num)\n jnum_check(num)\n ensure_mode(modes)\n open_filter_program(filename, filter)\n \n 1052 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1053 / 1291\n \n 12.5 QtVCP\n QtVCP is an infrastructure to build custom CNC screens or control panels for LinuxCNC.\n It displays a .ui file built with Qt Designer screen editor and combines this with Python programming\n to create a GUI screen for running a CNC machine.\n@@ -47327,54 +47327,54 @@\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 Figure 12.55: QtDragon - 3/4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.56: QtDefault - 3-Axis Sample\n \n 1054 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1055 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1056 / 1291\n \n Figure 12.58: Blender - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1057 / 1291\n \n Figure 12.59: X1mill - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.60: cam_align - Camera Alignment VCP\n \n 1058 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1059 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1060 / 1291\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@@ -47407,15 +47407,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1061 / 1291\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@@ -47449,15 +47449,15 @@\n The Qt Designer editor makes it relatively easy to build and edit this file.\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. Only one file is allowed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1062 / 1291\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@@ -47487,15 +47487,15 @@\n QtVCP will look for a folder named <screen_name> (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 <screen_name>.ui,\n \u2022 <screen_name>_handler.py, and\n \u2022 <screen_name>.qss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1063 / 1291\n \n 12.5.2.8 Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Stylesheets can be used to set Qt properties. If a widget uses properties then they usually can be\n modified by stylesheets.\n@@ -47538,15 +47538,15 @@\n # add a terminal message so we know this got loaded\n print(\u2019\\nCustom subclassed handler patch loaded.\\n\u2019)\n def init_pins(self):\n # call original handler init_pins function\n super().init_pins()\n # add jog pins X axis\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1064 / 1291\n \n pin = QHAL.newpin(\u201djog.axis.jog-x-plus\u201d, QHAL.HAL_BIT, QHAL.HAL_IN)\n pin.value_changed.connect(lambda s: self.kb_jog(s, 0, 1, fast = False, linear =\n True))\n \n@@ -47595,15 +47595,15 @@\n # You call this function without the usual preceding \u2019self.\u2019.\n # This is because will will not be patching it into the original handler class instance\n # It will only be called from code in this file.\n def test_function(obj):\n print(dir(obj))\n # This is a new function we will added to the existing handler class instance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1065 / 1291\n \n # Notice it calls the unbounded function with \u2019self\u2019 as an parameter \u2019self\u2019 is the only\n global reference available.\n # It references the window instance.\n def on_keycall_F10(self,event,state,shift,cntrl):\n@@ -47655,15 +47655,15 @@\n # that calls our new function (of the same name) defined in this file.\n self.after_override__ = types.MethodType(after_override__, self)\n \n If you wish to modify a stock screen with full control, copy its UI and handler file to your configuration folder.\n There is a QtVCP panel to help with this:\n \u2022 Open a terminal and run the following command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1066 / 1291\n \n qtvcp copy\n \n \u2022 Select the screen and destination folder in the dialog\n \u2022 If you wish to name your screen differently than the builtin screen\u2019s default name, change the\n@@ -47678,40 +47678,40 @@\n QtVCP can be used to create control panels that interface with HAL.\n 12.5.3.1 Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp <return> to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n 1067 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1068 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1069 / 1291\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1070 / 1291\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@@ -47720,15 +47720,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1071 / 1291\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -47777,15 +47777,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1072 / 1291\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@@ -47801,15 +47801,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1073 / 1291\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@@ -47845,15 +47845,15 @@\n This widget doesn\u2019t add anything visually but sets up some common options.\n It\u2019s recommended to always add this widget before any other.\n Right click on the main window, not the ScreenOptions widget, and set the layout as vertical to make\n the ScreenOptions fullsized.\n Add Panel Content On the right hand side there is a panel with tabs for a Property editor and an\n Object inspector.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1074 / 1291\n \n On the Object inspector click on the ScreenOptions.\n Then switch to the Property Editor and, under the ScreenOptions heading, toggle filedialog_option.\n Drag and drop a GCodeGraphics widget and a GcodeEditor widget.\n Place and resize them as you see fit leaving some room for buttons.\n@@ -47880,21 +47880,21 @@\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 \u2013 Under the Indicated_PushButton heading check the indicator_option.\n \u2013 Under the QAbstactButton heading check checkable.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1075 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1076 / 1291\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@@ -47927,15 +47927,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47982,15 +47982,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 1077 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1078 / 1291\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@@ -48041,15 +48041,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -48098,15 +48098,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 1079 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1080 / 1291\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@@ -48141,15 +48141,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1081 / 1291\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 class_patch__(self):\n@@ -48186,15 +48186,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1082 / 1291\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@@ -48225,15 +48225,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1083 / 1291\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@@ -48249,15 +48249,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1084 / 1291\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@@ -48274,15 +48274,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1085 / 1291\n \n 12.5.7 More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -48299,25 +48299,25 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1086 / 1291\n \n Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 spindle_belts\n This panel is designed to display additional RS485 VFD data and also to configure a 4 sheave, 2 belt\n spindle drive via a series of buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1087 / 1291\n \n In addition, it is also a useful template to use for your custom panel because it includes:\n \u2022 Display of additional HAL data\n \u2022 Buttons and button groups\n \u2022 Dynamic changes to button enabled/disabled state based on the state of other buttons\n@@ -48330,15 +48330,15 @@\n \u2022 A custom component that scales the VFD frequency to obtain the desired spindle speed.\n \u2022 A belt driven spindle that uses two belts and an intermediate idler pulley much like a drill press.\n \u2022 Connect the input pins qtdragon.belts.<pin-name> in your postgui HAL file.\n The belts are broken into two button groups, the front belts and the rear belts. These are numbered as\n per the plate on the machine. Buttons in a group are mutually exclusive, i.e., only one can be selected\n in the group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1088 / 1291\n \n Additionally, it\u2019s not possible to have both belts on the same level with this kind of mechanism because\n you cannot fit two belts to the one idler pulley sheave. So if a belt is selected, its opposite button is\n disabled. E.g., if belt 3 is selected, belt 7 is disabled.\n Add these lines to the [DISPLAY] section in your .ini file\n@@ -48365,15 +48365,15 @@\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 Figure 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.6.1.4 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 \u2022 You can add more buttons from the drop down menu.\n \u2022 You can load a Halmeter from the drop down menu.\n@@ -48395,15 +48395,15 @@\n \u2022 A combobox can be used to automatically select and connect to a pin/signal.\n \u2022 You can add more LEDs from the drop down menu.\n \u2022 The LED can be detached from the main windows.\n Here is how to load test_led from a HAL script:\n \n 1089 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1090 / 1291\n \n loadusr qtvcp test_led\n loadusr qtvcp -o 4 test_led\n \n The -o switch sets how many LEDs the panel starts with.\n@@ -48411,24 +48411,24 @@\n \n Figure 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.7 cam_align\n A camera display widget for rotational alignment.\n \n 1091 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1092 / 1291\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@@ -48442,15 +48442,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1093 / 1291\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@@ -48475,95 +48475,95 @@\n If you want to hide both, use a comma between them with no spaces.\n The -a option will make the panel always-on-top of all windows.\n loadusr qtvcp sim_panel\n \n Here we load the panel with no MPG selection buttons and the always-on-top option.\n loadusr qtvcp -a -o hide=groupBoxSelection sim_panel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1094 / 1291\n \n Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.9 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1095 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1096 / 1291\n \n Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2 QtVCP vismach_router_atc\n 3D OpenGL view of a 3-Axis router style, gantry bed milling machine.\n This particular panel shows how to define and connect the model parts in the handler file, rather then\n importing the pre-built model from QtVCP\u2019s vismach library.\n loadusr qtvcp vismach_router_atc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1097 / 1291\n \n Figure 12.78: QtVCP vismach_router_atc - 3-Axis Gantry Bed Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.79: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.4 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 1098 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.80: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.5 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 1099 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1100 / 1291\n \n Figure 12.81: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1101 / 1291\n \n Figure 12.82: 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@@ -48591,15 +48591,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1102 / 1291\n \n net bit-hide\n \n test_panel.checkbox_4\n \n@@ -48652,15 +48652,15 @@\n There are panels available that are included with LinuxCNC. To see a list open a terminal and type\n qtvcp and press return.\n You will get a help printout and a list of builtin screen and panels.\n Pick any of the names from the panel list and add that to the COMMAND entry after qtvcp.\n The builtin panel search path is share/qtvcp/panels/PANELNAME.\n Run-In-Place and installed versions of LinuxCNC have these in different locations on the system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1103 / 1291\n \n 12.6.4.3 Location of Custom Panels\n Custom panels can be embedded too -either a modified builtin panel or a new user-built one.\n When loading panels, QtVCP looks in the configuration folders path for qtvcp/panels/PANELNAME/PANELNAME.ui.\n PANNELNAME being any valid string with no spaces. If no path is found there, then looks in the\n@@ -48694,15 +48694,15 @@\n If the panel is not embedded, both refer to the panel window.\n 12.6.4.6 Handler Patching - Subclassing Builtin Panels\n We can have QtVCP load a subclassed version of the standard handler file. in that file we can manipulate the original functions or add new ones.\n Subclassing just means our handler file first loads the original handler file and adds our new code on\n top of it - so a patch of changes.\n This is useful for changing/adding behaviour while still retaining standard handler updates from LinuxCNC repositories.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1104 / 1291\n \n You may still need to use the handler copy dialog to copy the original handler file to decide how to\n patch it.\n There should be a folder in the config folder; for panel: named <CONFIG FOLDER>/qtvcp/panels/<PANEL\n NAME>/\n@@ -48741,15 +48741,15 @@\n You are free to use any available default widgets in the Qt Designer editor.\n There are also special widgets made for LinuxCNC that make integration easier. These are split in\n two, heading on the right side of the editor:\n \u2022 One is for HAL only widgets.\n \u2022 The other is for CNC control widgets.\n You are free to mix them in any way on your panel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1105 / 1291\n \n Note\n This description of widget properties can easily be out of date due to further development and lack\n of people to write docs (a good way to give back to the project). The definitive descriptions are found\n by looking in the source code.\n@@ -48774,15 +48774,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1106 / 1291\n \n alignment\n Qt alignment hint.\n state\n Current state of LED\n@@ -48802,15 +48802,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1107 / 1291\n \n 12.7.1.6 Gauge - Round Dial Gauge Widget\n \n Figure 12.84: QtVCP Gauge: Round Dial Gauge Widget\n Round Gauge can be used in a LinuxCNC GUI to display an input parameter on the dial face.\n@@ -48832,15 +48832,15 @@\n This is the number of ticks/gauge readings 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.\n zone1_color\n Zone1 extends from the maximum reading to the threshold point.\n It can be set to any RGB color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1108 / 1291\n \n zone2_color\n Zone2 extends from the threshold point to the minimum reading, which is 0.\n It can be set to any RGB color.\n bezel_color\n@@ -48867,15 +48867,15 @@\n This widget is used to indicate level or value, usually of a HAL s32/float pin.\n you can also disable the HAL pin and use Qt signals or python commands to change the level.\n HalBar is a subclass of the Bar widget, so it inherits these properties\n \n \u2022 stepColorList: a list of color strings, the number of colors defines the number of bars.\n \u2022 backgroundColor: a QColor definition of the background color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1109 / 1291\n \n \u2022 setMaximum: an integer that defines the maximum level of indication.\n \u2022 setMinimum: an integer that defines the lowest level of indication.\n \u2022 pinType: to select HAL pins type:\n \u2013 NONE no HAL pin will be added\n@@ -48892,15 +48892,15 @@\n qproperty-stepColorList: \u2019green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red \u2190,red\u2019;\n }\n \n 12.7.1.8 HALPad - HAL Buttons Joypad\n \n Figure 12.86: QtVCP HALPad: HAL Buttons Joypad\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1110 / 1291\n \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 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@@ -48937,15 +48937,15 @@\n File or resource path to an image to display in the described button location.\n If the reset button is pressed in the Qt Designer editor property, the image will not be displayed\n (allowing optional text).\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1111 / 1291\n \n true_color , false_color\n Color selection for the center LED ring to be displayed when the <BASENAME>.light.center HAL\n pin is True or False.\n text_color\n@@ -48963,15 +48963,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.10 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.87: 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.11 gridLayout - Grid Layout Widget\n@@ -48979,15 +48979,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.12 hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1112 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1113 / 1291\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@@ -49022,15 +49022,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1114 / 1291\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@@ -49061,15 +49061,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1115 / 1291\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@@ -49102,15 +49102,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1116 / 1291\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -49151,15 +49151,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1117 / 1291\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -49198,15 +49198,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1118 / 1291\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@@ -49236,15 +49236,15 @@\n If the button is set checkable, it will indicate which axis is selected.\n If you press and hold the button a pop up menu will show allowing one to:\n \u2022 Zero the axis\n \u2022 Divide the axis by 2\n \u2022 Set the axis arbitrarily\n \u2022 Reset the axis to the last number recorded\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1119 / 1291\n \n You must have selected an entry dialog that corresponds to the dialog_code_string, usually this is\n selected from the screenOptions widget.\n You can select the property halpin_option, it will then set a HAL pin true when the axis is selected.\n The property joint_number should be set to the appropriate joint number. The property axis_letter\n@@ -49279,15 +49279,15 @@\n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019%9.4f\u2019;\n qproperty-metric_template: \u2019%10.3f\u2019;\n qproperty-angular_template: \u2019%11.2f\u2019;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1120 / 1291\n \n DROLabel[isHomed=false] {\n color: red;\n }\n DROLabel[isHomed=true] {\n@@ -49333,15 +49333,15 @@\n qproperty-styleFont4: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont5: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont6: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont7: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFontMargin: \u201dTimes,14,-1,0,90,0,0,0,0,0\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1121 / 1291\n \n For GcodeDisplay widget\u2019s default G-code lexer:\n \u2022 styleColor0 = Default: Everything not part of the groups below\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@@ -49362,15 +49362,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1122 / 1291\n \n 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Figure 12.88: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -49387,15 +49387,15 @@\n \n _view (string)\n Sets the default view orientation on GUI load.\n Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.\n The following shows an example of how to set this property (referenced using the widget user\n selected name):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #gcodegraphics{\n qproperty-_view: z;\n }\n \n _dro (bool)\n Determines whether or not to show the DRO.\n@@ -49444,15 +49444,15 @@\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-overlay_color: blue;\n }\n \n 1123 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n background_color (primary, secondary, or RGBA formatted color)\n Sets the default background color.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-background_color: blue;\n }\n@@ -49499,15 +49499,15 @@\n qproperty-MouseButtonMode: 1;\n }\n \n There are 12 valid modes:\n \n 1124 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Mode\n 0\n 1\n 2\n 3\n 4\n@@ -49589,15 +49589,15 @@\n \u2022 rotate-up\n \u2022 rotate-down\n \u2022 overlay-dro-on\n \u2022 overlay-dro-off\n \u2022 overlay-offsets-on\n \u2022 overlay-offsets-off\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022 alpha-mode-on\n \u2022 alpha-mode-off\n \u2022 inhibit-selection-on\n \u2022 inhibit-selection-off\n \u2022 dimensions-on\n \u2022 dimensions-off\n@@ -49638,15 +49638,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 1126 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1127 / 1291\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@@ -49685,15 +49685,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1128 / 1291\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@@ -49732,15 +49732,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1129 / 1291\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -49769,15 +49769,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1130 / 1291\n \n Figure 12.89: 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@@ -49790,15 +49790,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1131 / 1291\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@@ -49832,15 +49832,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1132 / 1291\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@@ -49882,15 +49882,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1133 / 1291\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@@ -49928,15 +49928,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1134 / 1291\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@@ -49979,15 +49979,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1135 / 1291\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@@ -50027,15 +50027,15 @@\n \u2013 DONE\n \u2013 ATTENTION\n \u2013 RING\n \u2013 LOGIN\n \u2013 LOGOUT\n \u2013 BELL\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1136 / 1291\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@@ -50069,15 +50069,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1137 / 1291\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@@ -50113,15 +50113,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1138 / 1291\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -50158,15 +50158,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1139 / 1291\n \n 12.7.2.20 MacroTab - Special Macros Widget\n \n Figure 12.90: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -50184,15 +50184,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1140 / 1291\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@@ -50229,15 +50229,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1141 / 1291\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@@ -50274,15 +50274,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 <pin name>\n \u2022 Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1142 / 1291\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@@ -50294,15 +50294,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.91: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1143 / 1291\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@@ -50341,15 +50341,15 @@\n G90\n O<increment> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1144 / 1291\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@@ -50362,15 +50362,15 @@\n Figure 12.92: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1145 / 1291\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@@ -50409,15 +50409,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -50426,15 +50426,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 1146 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1147 / 1291\n \n 12.7.2.29 FileManager - File Loading Selector Widget\n \n Figure 12.93: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -50449,15 +50449,15 @@\n \n Stylesheets Properties\n doubleClickSelection (bool)\n Determines whether or not to require double clicking on a folder.\n Single clicking a folder (False) is enabled by default and is intended for touch screen users.\n The following shows an example of how to set this property:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1148 / 1291\n \n #filemanager {\n qproperty-doubleClickSelection: True;\n }\n \n@@ -50480,15 +50480,15 @@\n The tool settings can only be changed in LinuxCNC after homing and when the motion controller is\n idle.\n The display and entry will change between metric and imperial based on LinuxCNC\u2019s current G20/G21\n setting.\n The current in-use tool will be highlighted, and the current selected tool will be highlighted in a\n different color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1149 / 1291\n \n The checkbox beside each tool can be used to select too for an action that depends on extra code\n added either to a combined widget, like the toolOffsetView dialog or the screens handler code.\n Typical actions are load selected tool, delete selected tools, etc.\n Clicking on the columns and rows allows one to adjust the settings.\n@@ -50528,30 +50528,30 @@\n delete_tools()\n Deletes the currently checkbox selected tools.\n get_checked_list()\n Returns a list of tools selected by checkboxs.\n set_all_unchecked()\n Uncheck all selected tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 12.7.2.32 BasicProbe - Simple Mill Probing Widget\n \n Figure 12.95: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1150 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1151 / 1291\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Figure 12.96: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -50569,15 +50569,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1152 / 1291\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@@ -50618,15 +50618,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1153 / 1291\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK <spoken_message> .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -50636,15 +50636,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1154 / 1291\n \n 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget\n \n Figure 12.98: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -50660,15 +50660,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1155 / 1291\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@@ -50680,15 +50680,15 @@\n \n Figure 12.99: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1156 / 1291\n \n 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figure 12.100: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -50708,61 +50708,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1157 / 1291\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Figure 12.101: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Figure 12.102: 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 1158 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1159 / 1291\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figure 12.103: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1160 / 1291\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figure 12.104: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1161 / 1291\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Figure 12.105: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -50771,15 +50771,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1162 / 1291\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@@ -50816,15 +50816,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1163 / 1291\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@@ -50862,15 +50862,15 @@\n \n 12.7.4.3 WebWidget\n This widget will create a html/pdf viewing page using the QtWebKit or QtWebEngine libraries. The\n newer QtWebEngine is preferred if both are on the system.\n If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in\n Qesigner. This will be replaced with the QtWebEngine widget at run time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1164 / 1291\n \n 12.7.5 BaseClass/Mixin Widgets\n These widgets are used to combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n 12.7.5.1 IndicatedPushButtons\n@@ -50899,15 +50899,15 @@\n Indicated_PushButton #button_estop{\n qproperty-on_color: black;\n qproperty-off_color: yellow;\n }\n \n Options IndicatedPushButton have exclusive options:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1165 / 1291\n \n indicator_HAL_pin_option\n Adds a halpin, named <buttonname>-led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n@@ -50949,15 +50949,15 @@\n }\n \n Here is how you specify a particular widget by its objectName in Qt Designer:\n ActionButton #estop button [isEstopped=false] {\n color: yellow;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1166 / 1291\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@@ -50997,15 +50997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1167 / 1291\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@@ -51026,15 +51026,15 @@\n You can also specify subroutines to be pre-opened in tabs.\n [DISPLAY]\n # NGCGUI subroutine path.\n # This path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n # pre selected programs tabs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1168 / 1291\n \n # specify filenames only, files must be in the NGCGUI_SUBFILE_PATH\n NGCGUI_SUBFILE = slot.ngc\n NGCGUI_SUBFILE = qpocket.ngc\n \n@@ -51058,15 +51058,15 @@\n (info: feedrate -- simple example for setting feedrate)\n o<feedrate> sub\n #<feedrate>\n = #1 (= 6 Feed Rate) ; comments in brackets will be shown in ngcui\n f#<feedrate>\n o<feedrate> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1169 / 1291\n \n 12.7.6.6 Qt PDF\n Allows adding loadable PDFs to a screen.\n 12.7.6.7 Qt Vismach\n Use this to build/add OpenGl simulated machines.\n@@ -51099,15 +51099,15 @@\n For example, you can catch machine on and off messages.\n Note\n The example below shows the two common ways of connecting signals, one of them using lambda.\n lambda is used to strip off or manipulate arguments from the status message before calling the\n function. You can see the difference in the called function signature: The one that uses lambda does\n not accept the status object - lambda did not pass it to the function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1170 / 1291\n \n \u2022 Place these commands into the [INITIALIZE] section of the Python handler file:\n STATUS.connect(\u2019state-on\u2019, self.on_state_on)\n STATUS.connect(\u2019state-off\u2019, lambda: w, self.on_state_off())\n \n@@ -51152,15 +51152,15 @@\n GET_JOG_FROM_NAME = {\u2019X\u2019:0,\u2019Y\u2019:1,\u2019Z\u2019:2}\n NO_HOME_REQUIRED = False\n HOME_ALL_FLAG\n JOINT_TYPE = self.INI.find(section, \u201dTYPE\u201d) or \u201dLINEAR\u201d\n JOINT_SEQUENCE_LIST\n JOINT_SYNC_LIST\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1171 / 1291\n \n JOG_INCREMENTS = None\n ANGULAR_INCREMENTS = None\n GRID_INCREMENTS\n DEFAULT_LINEAR_JOG_VEL = 15 units per minute\n@@ -51204,15 +51204,15 @@\n \n 12.8.2.4 Helpers\n There are some helper functions - mostly used for widget support:\n \n get_error_safe_setting(_self_, _heading_, _detail_, default=_None_) , convert_metric_to_mac\n Get filter extensions in Qt format.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1172 / 1291\n \n 12.8.2.5 Usage\n \u2022 Import Info module\n Add this Python code to your import section:\n ############################\n@@ -51247,15 +51247,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.core import Action\n \n \u2022 Instantiate Action module\n Add this Python code to your instantiate section:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n ACTION = Action()\n \n \u2022 Access ACTION commands\n@@ -51296,15 +51296,15 @@\n ACTION.ZERO_G92_OFFSET()\n ACTION.ZERO_ROTATIONAL_OFFSET()\n ACTION.ZERO_G5X_OFFSET(num)\n ACTION.RECORD_CURRENT_MODE()\n \n 1173 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.RESTORE_RECORDED_MODE()\n ACTION.SET_SELECTED_AXIS(jointnum)\n ACTION.DO_JOG(jointnum, direction)\n ACTION.JOG(jointnum, direction, rate, distance=0)\n ACTION.TOGGLE_FLOOD()\n ACTION.SET_FLOOD_ON()\n@@ -51343,15 +51343,15 @@\n This library handles tool offset file changes.\n \n Warning\n LinuxCNC doesn\u2019t handle third party manipulation of the tool file well.\n \n 1174 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1175 / 1291\n \n 12.8.4.1 Helpers\n \n GET_TOOL_INFO(_toolnumber_)\n This will return a Python list of information on the requested tool number.\n@@ -51387,15 +51387,15 @@\n LinuxCNC supports tool wear by adding tool wear information into tool entries above 10000.\n Note\n This also requires remap code to add the wear offsets t tool change time.\n \n 12.8.5 Path\n Path module gives reference to important files paths.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.8.5.1 Referenced Paths\n \n PATH.PREFS_FILENAME\n The preference file path.\n PATH.WORKINGDIR\n The directory QtVCP was launched from.\n@@ -51434,15 +51434,15 @@\n PATH.PLUGIN\n The QtVCP widget plugin folder.\n PATH.VISMACHDIR\n Directory where prebuilt Vismach files are found.\n \n 1176 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1177 / 1291\n \n Not currently used:\n PATH.LOCALEDIR\n Locale translation folder.\n PATH.DOMAIN\n@@ -51476,15 +51476,15 @@\n \u2022 Import VCPWindow module\n Add this Python code to your import section:\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.qt_makegui import VCPWindow\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1178 / 1291\n \n \u2022 Instantiate VCPWindow module+ Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n@@ -51523,15 +51523,15 @@\n Load Calibration program:\n AUX_PRGM.load_calibration()\n \n keyboard_onboard()\n Load onboard/Matchbox keyboard\n AUX_PRGM.keyboard_onboard(<ARGS>)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1179 / 1291\n \n 12.8.7.2 Usage\n \u2022 Import Aux_program_loader module\n Add this Python code to your import section:\n ############################\n@@ -51566,15 +51566,15 @@\n Note\n Keylookup requires code under the processed_key_event function to call KEYBIND.call().\n Most handler files already have this code.\n \n In the handler file, under the initialized function use this general syntax to create keybindings:\n KEYBIND.add_call(\u201dDEFINED_KEY\u201d,\u201dFUNCTION TO CALL\u201d, USER DATA)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Here we add a keybinding for F10, F11 and F12:\n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # at this point:\n # the widgets are instantiated.\n@@ -51624,15 +51624,15 @@\n Qt.Key_Shift: \u201dKey_Shift\u201d,\n Qt.Key_Control: \u201dKey_Control\u201d,\n Qt.Key_Meta: \u201dKey_Meta\u201d,\n # Qt.Key_Alt: \u201dKey_Alt\u201d,\n \n 1180 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_AltGr: \u201dKey_AltGr\u201d,\n Qt.Key_CapsLock: \u201dKey_CapsLock\u201d,\n Qt.Key_NumLock: \u201dKey_NumLock\u201d,\n Qt.Key_ScrollLock: \u201dKey_ScrollLock\u201d,\n Qt.Key_F1: \u201dKey_F1\u201d,\n Qt.Key_F2: \u201dKey_F2\u201d,\n@@ -51691,15 +51691,15 @@\n Qt.Key_Asterisk: \u201dKey_Asterisk\u201d,\n Qt.Key_Plus: \u201dKey_Plus\u201d,\n Qt.Key_Comma: \u201dKey_Comma\u201d,\n Qt.Key_Minus: \u201dKey_Minus\u201d,\n \n 1181 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Period: \u201dKey_Period\u201d,\n Qt.Key_Slash: \u201dKey_Slash\u201d,\n Qt.Key_0: \u201dKey_0\u201d,\n Qt.Key_1: \u201dKey_1\u201d,\n Qt.Key_2: \u201dKey_2\u201d,\n Qt.Key_3: \u201dKey_3\u201d,\n@@ -51744,15 +51744,15 @@\n _PINNAME\n Basename of the HAL pin(s).\n _TYPE\n Specifies whether it is a:\n \n 1182 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1183 / 1291\n \n \u2022 Status message - shown in the status bar and the notify dialog.\n Requires no user intervention.\n \u2022 OK message - requiring the user to click OK to close the dialog.\n OK messages have two HAL pins:\n@@ -51795,15 +51795,15 @@\n 12.8.10 Notify\n Notify module is used to send messages that are integrated into the desktop.\n It uses the pynotify library.\n Ubuntu/Mint does not follow the standard so you can\u2019t set how long the message stays up for.\n I suggest fixing this with the notify-osd package available from this PPA (DISCONTINUED due to\n move of Ubuntu to Gnome).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1184 / 1291\n \n Notify keeps a list of all the alarm messages since starting in self.alarmpage.\n If you click \u2019Show all messages\u2019 in the notify popup, it will print them to the terminal.\n The ScreenOptions widget can automatically set up the notify system.\n Typically STATUS messages are used to sent notify messages.\n@@ -51836,15 +51836,15 @@\n \u2022 play sounds using the beep library (currently blocks while beeping),\n \u2022 speak words using the espeak library (non blocking while speaking).\n There are default alert sounds using Mint or FreeDesktop default sounds.\n You can play arbitrary sounds or even songs by specifying the path.\n STATUS has messages to control Player module.\n The ScreenOptions widget can automatically set up the audio system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1185 / 1291\n \n 12.8.12.1 Sounds\n Alerts There are default alerts to choose from:\n \u2022 ERROR\n \u2022 READY\n@@ -51878,15 +51878,15 @@\n 12.8.12.3 Example\n To play sounds upon STATUS messages, use these general syntaxes:\n STATUS.emit(\u2019play-alert\u2019,\u2019LOGOUT\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019BEEP\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019SPEAK This is a test screen for Q t V C P\u2019)\n STATUS.emit(\u2019play-sound\u2019, \u2019PATH TO SOUND\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1186 / 1291\n \n 12.8.13 Virtual Keyboard\n This library allows you to use STATUS messages to launch a virtual keyboard.\n It uses Onboard or Matchbox libraries for the keyboard.\n \n@@ -51913,15 +51913,15 @@\n # **** instantiate libraries section **** #\n ###########################################\n TOOLBAR = ToolBarActions()\n \n 12.8.14.4 Examples\n \u2022 Assigning Tool Actions To Toolbar Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1187 / 1291\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -51962,15 +51962,15 @@\n Some require HAL pins to be connected for movement.\n From a terminal (pick one):\n qtvcp vismach_mill_xyz\n qtvcp vismach_scara\n qtvcp vismach_millturn\n qtvcp vismach_5axis_gantry\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1188 / 1291\n \n 12.8.15.2 Primitives Library\n Provides the basic building blocks of a simulated machine.\n Collection\n A collection is an object of individual machine parts.\n@@ -52010,15 +52010,15 @@\n \n Track\n Move and rotate an object to point from one capture() \u2019d coordinate system to another.\n Base object to hold coordinates for primitive shapes.\n CylinderX, CylinderY, CylinderZ\n Build a cylinder on the X, Y or Z axis by giving endpoint (X, Y, or Z) and radii coordinates.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1189 / 1291\n \n Sphere\n Build a sphere from center and radius coordinates.\n \n TriangleXY, TriangleXZ, TriangleYZ\n@@ -52057,15 +52057,15 @@\n # **** IMPORT SECTION **** #\n ############################\n import mill_xyz as MILL\n \n Instantiate and use the simulation widget Instantiate the simulation widget and add it to the\n screen\u2019s main layout:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1190 / 1291\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -52084,30 +52084,30 @@\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1191 / 1291\n \n Figure 12.107: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\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 A Vismach model takes the form of a Python script and can use standard Python syntax.\n This means that there is more than one way to lay out the script, but in the examples given in this\n document the simplest and most basic of them will be used.\n The basic sequence in creating the Vismach model is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1192 / 1291\n \n 1. Create the parts\n 2. Define how they move\n 3. Assemble into movement groups\n \n@@ -52176,15 +52176,15 @@\n |\n |---tool\n |\n |---tooltip\n |\n |---(tool cylinder function)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1193 / 1291\n \n As you can see, the lowest parts must exist first before those can be grouped with others into an\n assembly. So you build upwards from lowest point in tree and assemble them together.\n The same is applicable for any design of machine: look at the machine arm example and you will see\n that it starts with the tip and adds to the larger part of the arm, then it finally groups with the base.\n@@ -52221,15 +52221,15 @@\n part = AsciiOBJ(data=\u201dv 0.123 0.234 0.345 1.0 ...\u201d)\n \n \u2022 STL model parts are added to the Vismach space in the same locations as they were created in the\n STL or OBJ space, i.e. ideally with a rotational point at their origin.\n Note\n It is much easier to move while building if the origin of the model is at a rotational pivot point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1194 / 1291\n \n 12.9.5.2 Build from Geometric Primitives\n Alternatively parts can be created inside the model script from a range of shape primitives.\n Many shapes are created at the origin and need to be moved to the required location after creation.\n \n@@ -52264,15 +52264,15 @@\n 12.9.6.1 Translating Model parts\n part1 = Translate([part1], x, y, z)\n Move part1 the specified distances in x, y and z.\n 12.9.6.2 Rotating Model Parts\n part1 = Rotate([part1], theta, x, y, z)\n Rotate the part by angle theta [degrees] about an axis between the origin and x, y, z.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1195 / 1291\n \n 12.9.7 Animating Parts\n To animate the model controlled by the values of HAL pins there are four functions: HalTranslate,\n HalRotate, HalToolCylinder and HalToolTriangle.\n For parts to move inside an assembly they need to have their HAL motions defined before being\n@@ -52311,15 +52311,15 @@\n Defines the axis of rotation from the origin the point of coordinates (x,y,z).\n When the part is moved back away from the origin to its correct location, the axis of rotation\n can be considered to remain \u201dembedded\u201d in the part.\n angle_scale\n Rotation angles are in degrees, so for a rotary joint with a 0-1 scaling you would need to use\n an angle scale of 360.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1196 / 1291\n \n 12.9.7.3 HalToolCylinder\n \n tool = HalToolCylinder()\n Make a cylinder to represent a cylindrical mill tool, based on the tool table and current loaded\n@@ -52350,15 +52350,15 @@\n \u2022 Move the head to the spindle or spindle to the head.\n \u2022 Create the draw bar.\n \u2022 Define the motion of the draw bar.\n \u2022 Assemble the three parts into a head assembly.\n \u2022 Define the motion of the head assembly.\n In this example the spindle rotation is indicated by rotation of a set of drive dogs:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1197 / 1291\n \n #Drive dogs\n dogs = Box(-6,-3,94,6,3,100)\n dogs = Color([1,1,1,1],[dogs])\n dogs = HalRotate([dogs],c,\u201dspindle\u201d,360,0,0,1)\n@@ -52400,15 +52400,15 @@\n For example [1,0,0,0.5] for a 50% opacity red.\n myhud = Hud()\n Creates a heads-up display in the Vismach GUI to display items such as axis positions, titles, or\n messages.\n myhud = Hud()\n myhud.show(\u201dMill_XYZ\u201d)\u2018\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1198 / 1291\n \n myhud = HalHud()\n A more advanced version of the Hud that allows HAL pins to be displayed:\n myhud = HalHud()\n myhud.set_background_color(0,.1,.2,0)\n@@ -52450,15 +52450,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52501,15 +52501,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 1199 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1200 / 1291\n \n 12.9.12 Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10 QtVCP: Building Custom Widgets\n@@ -52537,15 +52537,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1201 / 1291\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@@ -52598,15 +52598,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1202 / 1291\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -52678,15 +52678,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -52736,15 +52736,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1203 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1204 / 1291\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@@ -52814,15 +52814,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52883,15 +52883,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1206 / 1291\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@@ -52938,15 +52938,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1207 / 1291\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -52986,15 +52986,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1208 / 1291\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@@ -53037,15 +53037,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1209 / 1291\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -53092,15 +53092,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53145,15 +53145,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1210 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53202,15 +53202,15 @@\n def domXml(self):\n return \u2019<widget class=\u201dSystemToolButton\u201d name=\u201dsystemtoolbutton\u201d />\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1211 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1212 / 1291\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@@ -53256,15 +53256,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53305,15 +53305,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1213 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1214 / 1291\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -53352,15 +53352,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1215 / 1291\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@@ -53395,15 +53395,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1216 / 1291\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@@ -53447,15 +53447,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1217 / 1291\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog. In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we\n know the message is for us. ENTRY or CALCULATOR dialogs return a float number.\n \n@@ -53490,15 +53490,15 @@\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 \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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1218 / 1291\n \n Instantiate ToolBarActions module in the INSTANTIATE LIBRARY SECTION\n TOOLBAR = ToolBarActions()\n \n Configure submenus and actions in the SPECIAL FUNCTIONS SECTION Under the def initialized_\n@@ -53545,15 +53545,15 @@\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 self.w.filemanager.load()\n elif tab == self.w.tab_mdi:\n self.w.mditouchy.run_command()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1219 / 1291\n \n This function assumes there is a Tab widget, named mainTab, that has tabs with the names tab_auto,\n tab_graphics, tab_filemanager and tab_mdi.\n In this way the cycle start button works differently depending on what tab is shown.\n This is simplified - checking state and error trapping might be helpful.\n@@ -53592,15 +53592,15 @@\n \u2022 Call it btn_toggle_continuous.\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 See Using Qt Designer To Add Slots section for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1220 / 1291\n \n Then add this code snippets to the handler file under the initialized__ function:\n # at this point:\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n@@ -53645,15 +53645,15 @@\n We can \u201dclass patch\u201d the library to redirect the function call. In the IMPORT SECTION add:\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 2. Redirect the class to call our custom function (2) in the handler file instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1221 / 1291\n \n ##########################################\n # Special Functions called from QtVCP\n #\n ##########################################\n@@ -53699,15 +53699,15 @@\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def our_load(self,fname):\n print(fname)\n self.w.filemanager.super__load(fname)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1222 / 1291\n \n 12.11.11 Adding Widgets Programmatically\n In some situation it is only possible to add widgets with Python code rather then using the Qt\n Designer editor.\n When adding QtVCP widgets programmatically, sometimes there are extra steps to be taken.\n@@ -53749,15 +53749,15 @@\n def __init__(self,halcomp,widgets,paths):\n self.hal = halcomp\n self.w = widgets\n self.PATHS = paths\n STATUS.connect(\u2019actual-spindle-speed-changed\u2019, \\\n lambda w,speed: self.update_spindle(speed))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1223 / 1291\n \n Add the widgets to the tab We need to make sure the Qt Designer widgets are already built before\n we try to add to them. For this, we add a call to self.make_corner_widgets() function to build our\n extra widgets at the right time, i.e. under the initialized__() function:\n ##########################################\n@@ -53862,15 +53862,15 @@\n 4\n \n This sets it as green when on.\n This is the extra function call required with some QtVCP widgets.\n If HAL_NAME is omitted it will use the widget\u2019s objectName if there is one.\n It gives the special widgets reference to:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1224 / 1291\n \n self.HAL_GCOMP\n the HAL component instance\n self.HAL_NAME\n This widget\u2019s name as a string\n@@ -53963,15 +53963,15 @@\n 12.11.12 Update/Read Objects Periodically\n Sometimes you need to update a widget or read a value regularly that isn\u2019t covered by normal\n libraries.\n Here we update an LED based on a watched HAL pin every 100 ms.\n We assume there is an LED named led in the Qt Designer UI file.\n Load the Qhal library for access to QtVCP\u2019s HAL component In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1225 / 1291\n \n from qtvcp.core import Qhal\n \n Instantiate Qhal In the INSTANTIATE LIBRARY SECTION add:\n QHAL = Qhal()\n@@ -54013,15 +54013,15 @@\n ########################\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 # directly select ZMQ message receiving\n self.w.screen_options.setProperty(\u2019use_receive_zmq_option\u2019,True)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1226 / 1291\n \n This allows an external program to call functions in the handler file.\n Add a function to be called on ZMQ message reception Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n #####################\n@@ -54080,15 +54080,15 @@\n \n 1\n \n You will need to know the signature of the function you wish to call. Also note that the message is\n converted to a JSON object. This is because ZMQ sends byte messages not Python objects. json\n converts Python objects to bytes and will be converted back when received.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1227 / 1291\n \n 12.11.13.2 ZMQ Messages Writing\n You may also want to communicate with an external program from the screen.\n In the ScreenOptions widget, you can select the property use_send_zmq_message. You can also set\n this property directly in the handler file, as in this sample.\n@@ -54132,15 +54132,15 @@\n topic, message = sock.recv_multipart()\n print(\u2019{} sent message:{}\u2019.format(topic,json.loads(message)))\n \n 12.11.14 Sending Messages To Status Bar Or Desktop Notify Dialogs\n There are several ways to report information to the user.\n A status bar is used for short information to show the user.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1228 / 1291\n \n Note\n Not all screens have a status bar.\n \n Status bar usage example\n@@ -54181,15 +54181,15 @@\n #####################\n # general functions #\n #####################\n def focusInChanged(self, widget):\n if isinstance(widget.parent(),type(self.w.gcode_editor.editor)):\n print(\u2019G-code Editor\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1229 / 1291\n \n elif isinstance(widget,type(self.w.gcodegraphics)):\n print(\u2019G-code Display\u2019)\n elif isinstance(widget.parent(),type(self.w.mdihistory) ):\n print(\u2019MDI History\u2019)\n@@ -54232,15 +54232,15 @@\n # if the -o option has \u2019camnumber=\u2019 in it, assume it\u2019s the camera number \u2190to use\n elif \u2019camnumber=\u2019 in self.w.USEROPTIONS_[num]:\n try:\n number = int(self.w.USEROPTIONS_[num].strip(\u2019camnumber=\u2019))\n except Exception as e:\n #\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1230 / 1291\n \n print(\u2019Error with cam_align camera selection - not a number - using \u21900\u2019)\n # set the camera number either as default or if -o option changed the \u2019number\u2019\n variable, to that number.\n self.w.camview._camNum = number\n@@ -54272,15 +54272,15 @@\n \u2022 the .ui file,\n \u2022 the handler file, and\n \u2022 possibly the .qss theme file.\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1231 / 1291\n \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@@ -54314,15 +54314,15 @@\n CONFIGPATH\n Path of the launched configuration\n BASEDIR\n General path, used to derive all paths\n BASENAME\n Generic name used to derive all paths\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1232 / 1291\n \n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n@@ -54359,15 +54359,15 @@\n Warning\n Keybinding is always a difficult-to-get-right-in-all-cases affair.\n \n Custom keybinding functions are to be defined in the handler file.\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1233 / 1291\n \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@@ -54398,15 +54398,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1234 / 1291\n \n Chapter 13\n \n User Interface Programming\n 13.1 Panelui\n@@ -54433,15 +54433,15 @@\n A typical HAL file will have these commands added:\n # commands needed for panelui loading\n #\n # sampler is needed for panelui\n # cfg= must always be u for panelui. depth sets the available buffer\n loadrt sampler cfg=u depth=1025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1235 / 1291\n \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@@ -54483,15 +54483,15 @@\n HAL Prefix\n [HAL_PREFIX]\n NAME= Yourname\n \n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1236 / 1291\n \n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n@@ -54544,15 +54544,15 @@\n STATUS_PIN = True\n TRUE_STATE = 20\n TRUE_COMMAND = NONE, NONE\n FALSE_COMMAND = NONE, NONE\n FALSE_STATE = 0\n DEFAULT = false\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1237 / 1291\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@@ -54597,15 +54597,15 @@\n There are a number of internal commands you may use.\n home_selected\n \u2022 required argument: axis number (int)\n unhome_selected\n \u2022 required argument: axis number (int)\n spindle_forward_adjust\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1238 / 1291\n \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@@ -54632,15 +54632,15 @@\n \u2022 required arguments: axis number (int), direction (int), distance (float)\n quill_up\n \u2022 optional arguments: machine Z axis absolute position (float)\n \u2022 Description: Move Z axis to the given machine position\n feed_hold\n \u2022 required argument: state (bool 0 or 1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n feed_override\n \u2022 required argument: rate (float)\n rapid_override\n \u2022 required argument: rate (float 0-1)\n spindle_override\n \u2022 required argument: rate (float)\n@@ -54661,15 +54661,15 @@\n \u2022 Description: records the current mode, calls commands and then returns to mode.\n mdi\n \u2022 required argument: G-code command(s)\n \u2022 Description: sets mode to MDI, calls commands.\n \n 1239 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1240 / 1291\n \n 13.1.5 ZMQ Messages\n Panelui can send ZMQ based messages on button presses.\n In this way panelui can interact will other programs such as QtVCP screens.\n [TOGGLE_BUTTONS]\n@@ -54710,15 +54710,15 @@\n # This will be pretty standard to gain access to everything\n # linuxcnc_stat: is the python status instance of LinuxCNC\n # linuxcnc_cmd: is the python command instance of LinuxCNC\n # commands: is the command instance so one can call the internal routines\n # master: give access to the master functions/data\n def __init__(self, linuxcnc_stat, linuxcnc_cmd, commands, master):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1241 / 1291\n \n self.parent = commands\n self.current_mode = 0\n # command functions are expected to have this layout:\n # def some_name(self, widget_instance, arguments from widget):\n@@ -54763,15 +54763,15 @@\n and monitor results by observing the LinuxCNC status structure, as well as the error reporting channel.\n Programmatic access to NML is through a C++ API; however, the most important parts of the NML\n interface to LinuxCNC are also available to Python programs through the linuxcnc module.\n Beyond the NML interface to the command, status and error channels, the linuxcnc module also\n contains:\n \u2022 support for reading values from INI files\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1242 / 1291\n \n 13.2.2 Usage Patterns for the LinuxCNC NML interface\n The general pattern for linuxcnc usage is roughly like this:\n \u2022 import the linuxcnc module\n \u2022 establish connections to the command, status and error NML channels as needed\n@@ -54808,15 +54808,15 @@\n acceleration\n (returns float) - default acceleration, reflects the INI entry [TRAJ]DEFAULT_ACCELERATION.\n active_queue\n (returns integer) - number of motions blending.\n actual_position\n (returns tuple of floats) - current trajectory position, (x y z a b c u v w) in machine units.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1243 / 1291\n \n adaptive_feed_enabled\n (returns boolean) - status of adaptive feedrate override (0/1).\n ain\n (returns tuple of floats) - current value of the analog input pins.\n@@ -54857,15 +54857,15 @@\n dtg\n (returns tuple of floats) - remaining distance of current move for each axis, as reported by trajectory planner.\n echo_serial_number\n (returns integer) - The serial number of the last completed command sent by a UI to task. All\n commands carry a serial number. Once the command has been executed, its serial number is\n reflected in echo_serial_number.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1244 / 1291\n \n enabled\n (returns boolean) - trajectory planner enabled flag.\n estop\n (returns integer) - Returns either STATE_ESTOP or not.\n@@ -54908,15 +54908,15 @@\n (returns boolean) - machine-in-position flag.\n input_timeout\n (returns boolean) - flag for M66 timer in progress.\n interp_state\n (returns integer) - current state of RS274NGC interpreter. One of INTERP_IDLE, INTERP_READING,\n INTERP_PAUSED, INTERP_WAITING.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1245 / 1291\n \n interpreter_errcode\n (returns integer) - current RS274NGC interpreter return code. One of INTERP_OK, INTERP_EXIT,\n INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. see\n src/emc/nml_intf/interp_return.hh\n@@ -54960,15 +54960,15 @@\n \n One of TRAJ_MODE_COORD,\n \n motion_type\n (returns integer) - The type of the currently executing motion. One of:\n \u2022 MOTION_TYPE_TRAVERSE\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1246 / 1291\n \n \u2022 MOTION_TYPE_FEED\n \u2022 MOTION_TYPE_ARC\n \u2022 MOTION_TYPE_TOOLCHANGE\n \u2022 MOTION_TYPE_PROBING\n@@ -55009,15 +55009,15 @@\n settings\n (returns tuple of floats) - current interpreter settings. settings[0] = sequence number, settings[1]\n = feed rate, settings[2] = speed, settings[3] = G64 P blend tolerance, settings[4] = G64 Q naive\n CAM tolerance.\n spindle\n \u2019 (returns tuple of dicts) \u2019 - returns the current spindle status, see The spindle dictionary\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1247 / 1291\n \n spindles\n (returns integer) - number of spindles. Reflects [TRAJ]SPINDLES INI value.\n state\n (returns integer) - current command execution status. One of RCS_DONE, RCS_EXEC, RCS_ERROR.\n@@ -55058,15 +55058,15 @@\n max_position_limit\n (returns float) - maximum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MAX_LIMIT.\n min_position_limit\n (returns float) - minimum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1248 / 1291\n \n 13.2.3.3 The joint dictionary\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n@@ -55104,15 +55104,15 @@\n max_soft_limit\n non-zero means max_position_limit was exceeded, int\n min_ferror\n (returns float) - configuration parameter, reflects [JOINT_n]MIN_FERROR.\n min_hard_limit\n (returns integer) - non-zero means min hard limit exceeded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1249 / 1291\n \n min_position_limit\n (returns float) - minimum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n min_soft_limit\n (returns integer) - non-zero means min_position_limit was exceeded.\n@@ -55145,15 +55145,15 @@\n override\n (returns float) - spindle speed override scale.\n override_enabled\n (returns boolean) - value of the spindle override enabled flag.\n speed\n (returns float) - spindle speed value, rpm, > 0: clockwise, < 0: counterclockwise.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1250 / 1291\n \n 13.2.4 Preparing to send commands\n \n Some commands can always be sent, regardless of mode and state; for instance, the linuxcnc.command.abor\n method can always be called.\n@@ -55190,15 +55190,15 @@\n c.auto(linuxcnc.AUTO_RESUME)\n c.brake(linuxcnc.BRAKE_ENGAGE)\n c.brake(linuxcnc.BRAKE_RELEASE)\n c.flood(linuxcnc.FLOOD_ON)\n c.flood(linuxcnc.FLOOD_OFF)\n c.home(2)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n c.jog(linuxcnc.JOG_STOP,\n c.jog(linuxcnc.JOG_CONTINUOUS,\n c.jog(linuxcnc.JOG_INCREMENT,\n \n 1251 / 1291\n \n@@ -55240,15 +55240,15 @@\n error_msg(string)\n sends a operator error message to the screen. (max 254 characters)\n feedrate(float)\n set the feedrate override, 1.0 = 100%.\n flood(int)\n turn on/off flooding.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1252 / 1291\n \n Syntax\n flood(command)\n flood(linuxcnc.FLOOD_ON)\n flood(linuxcnc.FLOOD_OFF)\n@@ -55293,15 +55293,15 @@\n mist(linuxcnc.MIST_OFF)\n Constants\n MIST_ON\n MIST_OFF\n mode(int)\n set mode (MODE_MDI, MODE_MANUAL, MODE_AUTO).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1253 / 1291\n \n override_limits()\n set the override axis limits flag.\n program_open(string)\n open an NGC file.\n@@ -55338,15 +55338,15 @@\n \n Warning\n MDI commands will ignore this. \u201dS1000\u201d after this will turn the spindle off.\n \n text_msg(string)\n sends a operator text message to the screen. (max 254 characters)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1254 / 1291\n \n #!/usr/bin/env python3\n import linuxcnc\n c = linuxcnc.command()\n # Increase speed of spindle 0 by 100rpm. Spindle must be on first.\n@@ -55385,15 +55385,15 @@\n 13.2.6 Reading the error channel\n To handle error messages, connect to the error channel and periodically poll() it.\n Note that the NML channel for error messages has a queue (other than the command and status\n channels), which means that the first consumer of an error message deletes that message from the\n queue; whether your another error message consumer (e.g. Axis) will see the message is dependent\n on timing. It is recommended to have just one error channel reader task in a setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n e = linuxcnc.error_channel()\n error = e.poll()\n if error:\n kind, text = error\n@@ -55431,15 +55431,15 @@\n import linuxcnc\n stat = linuxcnc.stat()\n stat.poll()\n inifile = linuxcnc.ini(stat.ini_filename)\n \n 1255 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1256 / 1291\n \n # See example above for usage of \u2019inifile\u2019 object\n \n 13.2.8 The linuxcnc.positionlogger type\n Some usage hints can be gleaned from src/emc/usr_intf/gremlin/gremlin.py.\n@@ -55468,15 +55468,15 @@\n #!/usr/bin/env python3\n import hal, time\n h = hal.component(\u201dpassthrough\u201d)\n h.newpin(\u201din\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n h.newpin(\u201dout\u201d, hal.HAL_FLOAT, hal.HAL_OUT)\n h.ready()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1257 / 1291\n \n 13.3.2 Functions\n component\n + The component itself is created by a call to the constructor hal.component. The arguments\n are the HAL component name and (optionally) the prefix used for pin and parameter names. If\n@@ -55511,15 +55511,15 @@\n set_msg_level\n Set the current Realtime msg level. used for debugging information.\n connect\n Connect a pin to a signal.\n Example\n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n disconnect\n Disconnect a pin from a signal.\n Example\n hal.disconnect(\u201dpinname\u201d)\n \n get_value\n@@ -55556,15 +55556,15 @@\n \n pin_has_writer\n Does the specified pin have a driving pin connected.\n Returns True or False.\n \n 1258 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n h.in.pin_has_writer()\n \n get_name\n Get the HAL object name.\n Return a string.\n h.in.get_name()\n@@ -55601,15 +55601,15 @@\n set_p\n Set a pin value of any pin in the HAL system.\n Example\n hal.set_p(\u201dpinname\u201d,\u201d10\u201d)\n \n 1259 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1260 / 1291\n \n 13.4 GStat Python Module\n 13.4.1 Intro\n GStat is a Python class used to send messages from LinuxCNC to other Python programs. It uses\n GObject to deliver messages, making it easy to listen for specific information. This is referred to\n@@ -55645,15 +55645,15 @@\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n # callback to change HAL pin state\n def mode_changed(obj, data):\n h[\u2019g20\u2019] = not data\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1261 / 1291\n \n h[\u2019g21\u2019] = data\n # Make a component and pins\n h = hal.component(\u201dmetric_status\u201d)\n h.newpin(\u201dg20\u201d, hal.HAL_BIT, hal.HAL_OUT)\n@@ -55692,15 +55692,15 @@\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 def update_estate_label(self,text):\n self.builder.get_object(\u2019e_state_label\u2019).set_label(\u201dE State: %s\u201d % (text))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1262 / 1291\n \n def update_interp_label(self,text):\n self.builder.get_object(\u2019interp_state_label\u2019).set_label(\u201dInterpreter State: %s\u201d % ( \u2190text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n@@ -55733,15 +55733,15 @@\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n 13.4.3 Messages\n periodic\n (returns nothing) - sent every 100 ms.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1263 / 1291\n \n state-estop\n (returns nothing) - Sent when LinuxCNC is goes into estop.\n state-estop-reset\n (returns nothing) - Sent when LinuxCNC comes out of estop.\n@@ -55779,15 +55779,15 @@\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 interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1264 / 1291\n \n jograte-changed\n (returns float) - Sent when jog rate has changed.\n LinuxCNC does not have an internal jog rate.\n This is GStat\u2019s internal jog rate.\n@@ -55831,15 +55831,15 @@\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 current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1265 / 1291\n \n current-x-rel-position\n (returns float) - Sent every 100 ms.\n current-position\n (returns pyobject, pyobject, pyobject, pyobject) - Sent every 100 ms.\n@@ -55883,15 +55883,15 @@\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1266 / 1291\n \n flood-changed\n (returns bool) - Sent when flood coolant state changes.\n mist-changed\n (returns bool ) - Sent when mist coolant state changes.\n@@ -55932,15 +55932,15 @@\n \u2022 y (string): Y extents (bounds) 1\n \u2022 y_zero_rxy (string): Y extents without rotation around z (bounds) 1\n \u2022 z (string): Z extents (bounds) 1\n \u2022 z_zero_rxy (string): Z extents without rotation around z (bounds) 1\n \u2022 machine_unit_sys (string): Machine units (Metric or Imperial)\n \u2022 gcode_units (string): Units in G-code file (mm or in)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1267 / 1291\n \n Note\n 1. See the images\n better understanding.\n \n@@ -55987,15 +55987,15 @@\n (returns integer) - intended to be sent when requesting a DRO widget to change its reference.\n 0 = machine, 1 = relative, 3 = distance-to-go\n This depends on the widget/libraries used.\n show-preferences\n (returns None) - intended to be sent when requesting the screen preferences to be displayed.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1268 / 1291\n \n shutdown\n (returns None) - intended to be sent when requesting LinuxCNC to shutdown.\n This depends on the widget/libraries used.\n error\n@@ -56035,15 +56035,15 @@\n (Nothing) - x = GSTAT.get_jograte() would return GSTAT\u2019s current internal jograte (float).\n set_jograte_angular\n (float) get_jograte_angular\n (None) set_jog_increment_angular\n (float, string) get_jog_increment_angular\n (None) -\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1269 / 1291\n \n set_jog_increments\n (float, string) get_jog_increments\n (None) is_all_homed\n (nothing) - This will return the current state of all_homed (BOOL).\n@@ -56079,15 +56079,15 @@\n \u2022 false if mode is 0\n \u2022 false if machine is busy\n \u2022 true if LinuxCNC is in the requested mode\n \u2022 None if possible to change, but not in requested mode\n get_current_mode\n (nothing) - returns integer: the current LinuxCNC mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1270 / 1291\n \n set_selected_joint\n (integer) - records the selected joint number internally.\n requests the joint to be selected by emitting the\n joint-selection-changed message.\n@@ -56116,30 +56116,30 @@\n state-tags branch.\n \n 13.5 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1271 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1272 / 1291\n \n \u2022 Define how they move.\n \u2022 Assemble into movement groups.\n \n 13.5.1 Start the script\n@@ -56179,15 +56179,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1273 / 1291\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@@ -56225,15 +56225,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1274 / 1291\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@@ -56274,15 +56274,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1275 / 1291\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@@ -56323,15 +56323,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -56342,23 +56342,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 1276 / 1291\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1277 / 1291\n \n Part III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1278 / 1291\n \n Chapter 14\n \n Overleaf\n \n@@ -56378,15 +56378,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1279 / 1291\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@@ -56420,15 +56420,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1280 / 1291\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@@ -56473,15 +56473,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1281 / 1291\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@@ -56524,15 +56524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1282 / 1291\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -56576,15 +56576,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1283 / 1291\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -56626,28 +56626,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1284 / 1291\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1285 / 1291\n \n Chapter 16\n \n Copyright\n 16.1 Legal Section\n@@ -56675,15 +56675,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1286 / 1291\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@@ -56732,15 +56732,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1287 / 1291\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@@ -56786,15 +56786,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1288 / 1291\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@@ -56835,15 +56835,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1289 / 1291\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@@ -56871,15 +56871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1290 / 1291\n \n Chapter 17\n \n LinuxCNC History\n 17.1 Origin\n@@ -56911,15 +56911,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1291 / 1291\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Getting Started V2.9.3, 25 Jan 2025'\n+Title: 'Getting Started V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Getting Started V2.9.3, 25 Jan 2025\n+Getting Started V2.9.3, 26 Jan 2025\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.2.3 Command line - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iii\n \n 3.2.4 Command line - MacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n@@ -267,15 +267,15 @@\n 7.2 GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 30\n 30\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iv\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@@ -293,15 +293,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 1 / 34\n \n Chapter 1\n \n About LinuxCNC\n 1.1 The Software\n@@ -328,15 +328,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 2 / 34\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@@ -369,15 +369,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 3 / 34\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@@ -387,15 +387,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 4 / 34\n \n Chapter 2\n \n System Requirements\n 2.1 Minimum Requirements\n@@ -420,15 +420,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 5 / 34\n \n 2.2 Kernel and Version requirements\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@@ -466,24 +466,24 @@\n compile from source to do this.\n \n 2.3 Problematic Hardware\n 2.3.1 Laptops\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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 6 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 7 / 34\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@@ -510,15 +510,15 @@\n This section describes some methods for downloading the Live/Install image.\n \n 3.1.1 Normal Download\n Software for LinuxCNC to download is presented on the project\u2019s Downloads page. Most users\n will aim for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 8 / 34\n \n Note\n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n@@ -556,15 +556,15 @@\n but there are alternatives. More information can be found at: How To MD5SUM\n \n 3.2 Write the image to a bootable device\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 9 / 34\n \n 3.2.1 Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n@@ -599,15 +599,15 @@\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 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 10 / 34\n \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@@ -638,15 +638,15 @@\n At the time of writing the Live Image is only available with the preempt-rt kernel and a matching\n LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental\n version available using the RTAI realtime kernel which will often give better latency.\n \n 3.4 Installing LinuxCNC\n To install LinuxCNC from the Live CD select Install (Graphical) at bootup.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 11 / 34\n \n 3.5 Updates to LinuxCNC\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@@ -730,15 +730,15 @@\n \n Preempt-RT kernels The Preempt-rt kernels are available for Debian from the regular debian.org\n archive. The package is called linux-image-rt-*. Simply install the package in the same way as any\n other package from the Synaptic Package manager or with apt-get at the command-line.\n RTAI Kernels The RTAI kernels are available for download from the linuxcnc.org debian archive. The\n apt source is:\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 12 / 34\n \n \u2022 Debian Bookworm: deb http://linuxcnc.org bookworm base\n \u2022 Debian Bullseye: deb http://linuxcnc.org bullseye base\n \u2022 Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n@@ -773,15 +773,15 @@\n this document.\n 4. Add the LinuxCNC Archive Signing Key to your apt keyring by downloading [the LinuxCNC installer script](https://www.linuxcnc.org/linuxcnc-install.sh) You will need to make the script executable to run it:\n chmod +x linuxcnc-install.sh\n \n Then you can run the installer:\n sudo ./linuxcnc-install.sh\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 13 / 34\n \n 3.7.2 Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n@@ -796,15 +796,15 @@\n Reboot the machine, ensuring that the system boots from the new 5.4.258-rtai kernel.\n \n 3.7.3 Installing on Raspbian 12\n Don\u2019t do that. The latencies are too bad with the default kernel and the PREEMPT_RT (the RT is\n important) kernel of Debian does not boot on the Pi (as of 1/2024). Please refer to the images provided\n online. You can create them yourself following the scripts provided online.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 14 / 34\n \n Chapter 4\n \n Running LinuxCNC\n 4.1 Invoking LinuxCNC\n@@ -831,15 +831,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 craftsman - Touch Screen GUI (no longer maintained ???)\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 15 / 34\n \n \u2022 gmoccapy - Touch Screen GUI\n \u2022 gscreen - Touch Screen GUI\n \u2022 pyvcp_demo - Python Virtual Control Panel\n \u2022 qtaxis - Touch Screen GUI, axis lookalike\n@@ -870,15 +870,15 @@\n \u2022 tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n 2. demonstrations of applications that can be used with linuxcnc\n \u2022 info - creates a file with system information that may be useful for problem diagnosis.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 16 / 34\n \n \u2022 gladevcp - Example GladeVCP applications.\n \u2022 halrun - Starts halrun in an terminal.\n \u2022 latency - Applications to investigate latency\n \u2013 latency-histogram-1 - histogram for single servo thread\n@@ -895,15 +895,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 17 / 34\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@@ -930,15 +930,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 18 / 34\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@@ -970,15 +970,15 @@\n \n You should be running on Debian Buster, Bullseye or Bookworm or Ubuntu 20.04 \u201dFocal Fossa\u201d or\n newer. LinuxCNC 2.9.y will not run on older distributions than these.\n You will also need to check which realtime kernel is being used:\n uname -r\n 6.1.0-10-rt-amd64\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 19 / 34\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. RTAI packages are available for Bookworm and Buster but not currently for Bullseye.\n@@ -1015,29 +1015,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 20 / 34\n \n Figure 5.1: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n 5.1.2.1 Debian Buster, Bullseye and Bookworm\n Debian uses the Synaptic Package Manager.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 21 / 34\n \n \u2022 Open Synaptic using the instructions in Setting apt sources above.\n \u2022 Click the Reload button.\n \u2022 Use the Search function to search for linuxcnc.\n \u2022 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n@@ -1074,15 +1074,15 @@\n sudo dpkg -i linuxcnc_2.9.2.deb\n \n 5.3 Updating Configuration Files for 2.9\n 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 22 / 34\n \n A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting.\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 Since 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@@ -1118,25 +1118,25 @@\n qtplasmac-setup sim-torch svd-ps_vfd\n \n 5.5.2 Realtime\n \n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_su\n tof ton\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 23 / 34\n \n 5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n \n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 24 / 34\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@@ -1170,15 +1170,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 25 / 34\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@@ -1223,15 +1223,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 26 / 34\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@@ -1274,15 +1274,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 27 / 34\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -1326,15 +1326,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 28 / 34\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -1376,28 +1376,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 29 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 30 / 34\n \n Chapter 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -1424,15 +1424,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 31 / 34\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@@ -1481,15 +1481,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 32 / 34\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@@ -1535,15 +1535,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 33 / 34\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@@ -1584,15 +1584,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 34 / 34\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Integrator Information V2.9.3, 25 Jan 2025'\n+Title: 'Integrator Information V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Integrator Information V2.9.3, 25 Jan 2025\n+Integrator Information V2.9.3, 26 Jan 2025\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 Stepper Information\n \n 1\n@@ -125,15 +125,15 @@\n \n 18\n \n 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 1 / 18\n \n Chapter 1\n \n Stepper Information\n 1.1 Stepper Motor Operation\n@@ -152,15 +152,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -179,15 +179,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -232,15 +232,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -378,15 +378,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 7 / 18\n \n Gecko\n@@ -479,15 +479,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 8 / 18\n \n Gecko\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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 9 / 18\n \n *Motion\n@@ -858,15 +858,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1105,15 +1105,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1292,15 +1292,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 12 / 18\n \n Chapter 3\n \n Best Wiring Practices\n 3.1 Electrical Noise\n@@ -1329,15 +1329,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1378,15 +1378,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1424,15 +1424,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1472,15 +1472,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1515,15 +1515,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1557,15 +1557,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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": "@@ -5688,15 +5688,15 @@\n Modbus slave address\n \n LICENSE\n GPLv2 or greater\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 119\n \n \fpmx485-test(1)\n \n LinuxCNC Documentation\n \n@@ -7312,15 +7312,15 @@\n Computed resistance of the thermistor.\n \n LICENSE\n GPL\n \n 158\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTOOLEDIT (1)\n \n The Enhanced Machine Controller\n \n@@ -7858,15 +7858,15 @@\n Modbus slave address\n \n LICENSE\n GPLv2 or greater\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 169\n \n \fXHC-HB04-ACCELS(1)\n \n The Enhanced Machine Controller\n \n@@ -12169,15 +12169,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 262\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fABS_S32(9)\n \n HAL Component\n \n@@ -12208,15 +12208,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 263\n \n \fHAL Component\n \n AND2(9)\n \n@@ -12248,15 +12248,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 264\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fANGLEJOG(9)\n \n HAL Component\n \n@@ -12300,15 +12300,15 @@\n anglejog.N.max-vel \ufb02oat in\n vector max velocity magnitude\n anglejog.N.max-accel \ufb02oat in\n vector max acceleration magnitude\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 265\n \n \fANGLEJOG(9)\n \n HAL Component\n \n@@ -12343,15 +12343,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 266\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fAT_PID(9)\n \n HAL Component\n \n@@ -12419,15 +12419,15 @@\n Chris S. Morley\n \n LICENSE\n GPL\n \n 268\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBIN2GRAY (9)\n \n HAL Component\n \n@@ -12455,15 +12455,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 269\n \n \fBIQUAD(9)\n \n HAL Component\n \n@@ -12517,15 +12517,15 @@\n biquad.N.n1 \ufb02oat rw (default: 0.0)\n 1st-delayed numerator coef\n biquad.N.n2 \ufb02oat rw (default: 0.0)\n 2nd-delayed numerator coef\n \n 270\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBIQUAD(9)\n \n HAL Component\n \n@@ -12535,15 +12535,15 @@\n Peter G. Vavaroutsos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 271\n \n \fBITSLICE(9)\n \n HAL Component\n \n@@ -12572,15 +12572,15 @@\n Andy Pugh\n \n LICENSE\n GPL2+\n \n 272\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBITWISE(9)\n \n HAL Component\n \n@@ -12617,15 +12617,15 @@\n Andy Pugh\n \n LICENSE\n GPL 2+\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 273\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12667,15 +12667,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 274\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12723,15 +12723,15 @@\n bldc.N.C8 bit in [if ( personality & 0x10 )]\n Fanuc Gray-code bit 3 input\n bldc.N.value \ufb02oat in\n PWM master amplitude input\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 275\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12778,15 +12778,15 @@\n bldc.N.A-high \ufb02oat out [if ( personality & 0xF00 ) == 0x200]\n High-side driver for phase A\n bldc.N.B-high \ufb02oat out [if ( personality & 0xF00 ) == 0x200]\n High-side driver for phase B\n \n 276\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBLDC(9)\n \n HAL Component\n \n@@ -12835,15 +12835,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 \ufb02oat out\n Current output, including the effect of the dir pin and the alignment sequence.\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 277\n \n \fHAL Component\n \n BLDC(9)\n \n@@ -12880,15 +12880,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 278\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n BLDC(9)\n \n@@ -13188,15 +13188,15 @@\n 001\n 101\n 011\n 001\n 000\n 100\n \n-2025-01-26\n+2026-03-02\n \n BLDC(9)\n \n B-C\n 100\n 101\n 100\n@@ -13258,15 +13258,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n 280\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fBLEND(9)\n \n HAL Component\n \n@@ -13300,15 +13300,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 281\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13352,15 +13352,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 \ufb01nal latching move, and set thedecel-time to a suitable value. Once the decel-\n \n 282\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13407,15 +13407,15 @@\n and sense-1 is the pocket sensor.\n carousel.N.rev-pulse \ufb02oat in\n The duration in seconds for which a ratchet changer (Boxford, Emco) should pulse the reverse pin\n to lock the holder\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 283\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13465,15 +13465,15 @@\n \n PARAMETERS\n carousel.N.state s32 r (default: 0)\n Current component state\n \n 284\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCAROUSEL(9)\n \n HAL Component\n \n@@ -13497,15 +13497,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 285\n \n \fCHARGE_PUMP(9)\n \n HAL Component\n \n@@ -13541,15 +13541,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 286\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCLARKE2(9)\n \n HAL Component\n \n@@ -13587,15 +13587,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 287\n \n \fCLARKE3(9)\n \n HAL Component\n \n@@ -13634,15 +13634,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 288\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCLARKEINV (9)\n \n HAL Component\n \n@@ -13680,15 +13680,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 289\n \n \fCLASSICLADDER(9)\n \n HAL Component\n \n@@ -13804,15 +13804,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 292\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONSTANT (9)\n \n HAL Component\n \n@@ -13837,15 +13837,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 293\n \n \fCONV_BIT_FLOAT (9)\n \n HAL Component\n \n@@ -13869,15 +13869,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 294\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONV_BIT_S32(9)\n \n HAL Component\n \n@@ -13901,15 +13901,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 295\n \n \fCONV_BIT_U32(9)\n \n HAL Component\n \n@@ -13933,15 +13933,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 296\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONV_FLOAT_S32(9)\n \n HAL Component\n \n@@ -13971,15 +13971,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 297\n \n \fCONV_FLOAT_U32(9)\n \n HAL Component\n \n@@ -14009,15 +14009,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 298\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONV_S32_BIT (9)\n \n HAL Component\n \n@@ -14047,15 +14047,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 299\n \n \fCONV_S32_FLOAT (9)\n \n HAL Component\n \n@@ -14079,15 +14079,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 300\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONV_S32_U32(9)\n \n HAL Component\n \n@@ -14117,15 +14117,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 301\n \n \fCONV_U32_BIT (9)\n \n HAL Component\n \n@@ -14155,15 +14155,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 302\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCONV_U32_FLOAT (9)\n \n HAL Component\n \n@@ -14187,15 +14187,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 303\n \n \fCONV_U32_S32(9)\n \n HAL Component\n \n@@ -14225,15 +14225,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 304\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCOREXY_BY_HAL(9)\n \n HAL Component\n \n@@ -14277,15 +14277,15 @@\n corexy-by-hal.N.alpha-cmd \ufb02oat out\n typ: command to alpha motor\n corexy-by-hal.N.beta-cmd \ufb02oat out\n typ: command to beta ts motor\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 305\n \n \fCOREXY_BY_HAL(9)\n \n HAL Component\n \n@@ -14295,15 +14295,15 @@\n Dewey Garrett based on forum post from nbremond\n \n LICENSE\n GPL\n \n 306\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fCOUNTER(9)\n \n HAL Component\n \n@@ -14384,15 +14384,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 308\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fDDT (9)\n \n HAL Component\n \n@@ -14424,15 +14424,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 309\n \n \fDEADZONE(9)\n \n HAL Component\n \n@@ -14462,15 +14462,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 310\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fDEBOUNCE(9)\n \n HAL Component\n \n@@ -14555,15 +14555,15 @@\n Andy Pugh\n \n LICENSE\n GPL 2+\n \n 312\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fDIFFERENTIAL(9)\n \n HAL Component\n \n@@ -14600,15 +14600,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 313\n \n \fHAL Component\n \n DIV2(9)\n \n@@ -14647,15 +14647,15 @@\n Noel Rodes\n \n LICENSE\n GPL\n \n 314\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fEDGE(9)\n \n HAL Component\n \n@@ -14693,15 +14693,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 315\n \n \fENCODER(9)\n \n HAL Component\n \n@@ -15040,15 +15040,15 @@\n eoffset-per-angle.N.rfraction \ufb02oat in (default: 0.1)\n Offset amplitude (+/- fraction of radius_ref)\n eoffset-per-angle.N.fmult \ufb02oat in (default: 6)\n Offset frequency multiplier\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 323\n \n \fEOFFSET_PER_ANGLE(9)\n \n HAL Component\n \n@@ -15085,15 +15085,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 324\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n ESTOP_LATCH(9)\n \n@@ -15155,15 +15155,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 325\n \n \fFEEDCOMP(9)\n \n HAL Component\n \n@@ -15199,15 +15199,15 @@\n Eric H. Johnson\n \n LICENSE\n GPL\n \n 326\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fFILTER_KALMAN (9)\n \n HAL Component\n \n@@ -15257,30 +15257,30 @@\n Estimation of the noise covariances (observation).\n \n AUTHOR\n Dmian Wrobel <dwrobel@ertelnet.rybnik.pl>\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 327\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 328\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fFLIPFLOP(9)\n \n HAL Component\n \n@@ -15313,15 +15313,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 329\n \n \fGANTRY (9)\n \n HAL Component\n \n@@ -15377,15 +15377,15 @@\n Charles Steinkuehler\n \n LICENSE\n GPL\n \n 330\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fGANTRYKINS(9)\n \n Kinematics Module\n \n@@ -15452,15 +15452,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n 332\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fGENTRIVKINS(9)\n \n Kernel Developer\u2019s Manual\n \n@@ -15538,15 +15538,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 335\n \n \fhal_bb_gpio(9)\n \n HAL Component\n \n@@ -15864,15 +15864,15 @@\n histobins.N.nbins u32 in (default: 20)\n histobins.N.binsize \ufb02oat in (default: 1)\n histobins.N.minvalue \ufb02oat in (default: 0)\n histobins.N.index s32 in\n \n 342\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHISTOBINS(9)\n \n HAL Component\n \n@@ -15896,15 +15896,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 343\n \n \fHAL Component\n \n HM2_7I43(9)\n \n@@ -16492,15 +16492,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 356\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHOSTMOT2(9)\n \n HAL Component\n \n@@ -17856,15 +17856,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 384\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fILOWPASS(9)\n \n HAL Component\n \n@@ -17906,15 +17906,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 385\n \n \fINTEG(9)\n \n HAL Component\n \n@@ -17943,15 +17943,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 386\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fINVERT (9)\n \n HAL Component\n \n@@ -17985,15 +17985,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 387\n \n \fJOYHANDLE(9)\n \n HAL Component\n \n@@ -18037,15 +18037,15 @@\n Paul Willutzki\n \n LICENSE\n GPL\n \n 388\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fKinematics Modules\n \n KINS(9)\n \n@@ -18368,15 +18368,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 395\n \n \fLATENCYBINS(9)\n \n HAL Component\n \n@@ -18431,30 +18431,30 @@\n latencybins.N.availablebins s32 out (default: 1000)\n \n AUTHOR\n Dewey Garrett\n \n 396\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fLATENCYBINS(9)\n \n HAL Component\n \n LATENCYBINS(9)\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 397\n \n \fHAL Component\n \n LCD(9)\n \n@@ -18618,15 +18618,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 401\n \n \fLIMIT2(9)\n \n HAL Component\n \n@@ -18655,15 +18655,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 402\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fLIMIT3(9)\n \n HAL Component\n \n@@ -18701,15 +18701,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 403\n \n \fLIMIT_AXIS(9)\n \n HAL Component\n \n@@ -18762,15 +18762,15 @@\n limit-axis.N.max-limit-MM \ufb02oat in (MM=00..personality)\n The array of macimum limits\n limit-axis.N.min-range-MM \ufb02oat in (MM=00..personality)\n De\ufb01nes the range of values with which the fb is compared to set the range\n \n 404\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fLIMIT_AXIS(9)\n \n HAL Component\n \n@@ -18791,15 +18791,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 405\n \n \fLINCURVE(9)\n \n HAL Component\n \n@@ -18844,15 +18844,15 @@\n Andy Pugh\n \n LICENSE\n GPL\n \n 406\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fLINEARDELTAKINS(9)\n \n Kinematics Component\n \n@@ -18969,15 +18969,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 408\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n LOGIC(9)\n \n@@ -18993,15 +18993,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 409\n \n \fLOWPASS(9)\n \n HAL Component\n \n@@ -19050,15 +19050,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 410\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n LUT5(9)\n \n@@ -19086,15 +19086,15 @@\n 0xfffffffe. Because every weight except 0x1 is true the function is the sum of every line except the \ufb01rst 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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 411\n \n \fHAL Component\n \n LUT5(9)\n \n@@ -19316,15 +19316,15 @@\n lut5.N.function u32 rw\n \n SEE ALSO\n and(9), logic(9), not(9), or2(9), xor2(9).\n \n 412\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n LUT5(9)\n \n@@ -19334,15 +19334,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 413\n \n \fMAJ3(9)\n \n HAL Component\n \n@@ -19370,15 +19370,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 414\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMATCH8(9)\n \n HAL Component\n \n@@ -19419,15 +19419,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 415\n \n \fMATRIX_KB(9)\n \n HAL Component\n \n@@ -19552,15 +19552,15 @@\n max31855.N.fault.M bit out (M=0..( personality & 0xf ))\n Fault condition detected.\n max31855.N.fault-\ufb02ags.M u32 out (M=0..( personality & 0xf ))\n Fault \ufb02ags: 0x1 = open sensor, 0x2 short to gnd, 0x3 short to vcc.\n \n 418\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMAX31855(9)\n \n HAL Component\n \n@@ -19570,15 +19570,15 @@\n Joseph Calderon\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 419\n \n \fMESA_7I65(9)\n \n HAL Component\n \n@@ -19621,15 +19621,15 @@\n Andy Pugh / Cliff Blackburn\n \n LICENSE\n GPL\n \n 420\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMESA_PKTGYRO_TEST (9)\n \n HAL Component\n \n@@ -19673,15 +19673,15 @@\n Boris Skegin\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 421\n \n \fMESA_UART (9)\n \n HAL Component\n \n@@ -19727,25 +19727,25 @@\n Andy Pugh andy@bodgesoc.org\n \n LICENSE\n GPL\n \n 422\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMESA_UART (9)\n \n LinuxCNC Documentation\n \n HAL Component\n \n-2025-01-26\n+2026-03-02\n \n MESA_UART (9)\n \n 423\n \n \fMESSAGE(9)\n \n@@ -19795,15 +19795,15 @@\n Les Newell\n \n LICENSE\n GPL v2\n \n 424\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMILLTURN (9)\n \n HAL Component\n \n@@ -19837,15 +19837,15 @@\n David Mueller\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 425\n \n \fMINMAX(9)\n \n HAL Component\n \n@@ -19871,15 +19871,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 426\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMOTION (9)\n \n HAL Component\n \n@@ -20445,15 +20445,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 ini\ufb01le settings, controlled by a GUI, or managed by other HAL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 439\n \n \fMOVEOFF(9)\n \n HAL Component\n \n@@ -20498,15 +20498,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 440\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMOVEOFF(9)\n \n HAL Component\n \n@@ -20553,15 +20553,15 @@\n Dewey Garrett and Andy Pugh\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 441\n \n \fMULT2(9)\n \n HAL Component\n \n@@ -20589,15 +20589,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 442\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMULTICLICK (9)\n \n HAL Component\n \n@@ -20646,15 +20646,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 443\n \n \fMULTICLICK (9)\n \n HAL Component\n \n@@ -20673,15 +20673,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n GPL\n \n 444\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n MULTISWITCH(9)\n \n@@ -20718,15 +20718,15 @@\n ArcEye schooner30@tiscali.co.uk / Andy Pugh andy@bodgesoc.org\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 445\n \n \fHAL Component\n \n MUX16(9)\n \n@@ -20775,30 +20775,30 @@\n mux2(9), mux4(9), mux8(9), mux_generic(9).\n \n AUTHOR\n Chris S Morley\n \n 446\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMUX16(9)\n \n HAL Component\n \n MUX16(9)\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 447\n \n \fMUX2(9)\n \n HAL Component\n \n@@ -20827,15 +20827,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 448\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n MUX4(9)\n \n@@ -20876,15 +20876,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 449\n \n \fHAL Component\n \n MUX8(9)\n \n@@ -20938,15 +20938,15 @@\n Stuart Stevenson\n \n LICENSE\n GPL\n \n 450\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fMUX_GENERIC(9)\n \n HAL Component\n \n@@ -21060,15 +21060,15 @@\n Chris Radek\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 453\n \n \fNOT (9)\n \n HAL Component\n \n@@ -21094,15 +21094,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 454\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fOFFSET (9)\n \n HAL Component\n \n@@ -21136,15 +21136,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 455\n \n \fOHMIC(9)\n \n HAL Component\n \n@@ -21195,15 +21195,15 @@\n ohmic.N.ohmic-on bit out\n True if ohmic circuit is closed (material is sensed)\n ohmic.N.ohmic-volts \ufb02oat out\n Calculated ohmic voltage\n \n 456\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fOHMIC(9)\n \n HAL Component\n \n@@ -21236,15 +21236,15 @@\n Rod Webster\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 457\n \n \fONESHOT (9)\n \n HAL Component\n \n@@ -21291,15 +21291,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n 458\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fOPTO_AC5(9)\n \n HAL Component\n \n@@ -21402,15 +21402,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 461\n \n \fORIENT (9)\n \n HAL Component\n \n@@ -21459,15 +21459,15 @@\n orient.N.angle \ufb02oat in\n orient target position in degrees, 0 <= angle < 360\n orient.N.command \ufb02oat out\n target spindle position, input to PID command\n \n 462\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fORIENT (9)\n \n HAL Component\n \n@@ -21484,15 +21484,15 @@\n Michael Haberler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 463\n \n \fHAL Component\n \n PID(9)\n \n@@ -21858,15 +21858,15 @@\n plasmac.arc-voltage-offset \ufb02oat in\n offset to set arc voltage to 0 at 0 volts\n plasmac.arc-voltage-scale \ufb02oat in\n scale to convert arc_voltage input to actual volts\n \n 470\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21915,15 +21915,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 471\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -21972,15 +21972,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 472\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22029,15 +22029,15 @@\n plasmac.paused-motion-speed \ufb02oat in\n multiplier for speed of motion when paused, from -1 to 1\n plasmac.pid-d-gain \ufb02oat in\n derivative gain input [mode 0 & mode 1]\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 473\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22086,15 +22086,15 @@\n plasmac.scribe-start bit in\n start a new scribe, connect to spindle.1.on\n plasmac.setup-feed-rate \ufb02oat in\n feed rate for moves to pierce and cut heights (machine units per minute)\n \n 474\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22143,15 +22143,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 475\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22200,15 +22200,15 @@\n plasmac.offset-scale \ufb02oat out\n offset scale, connect to axis.<x y z>.eoffset-scale\n plasmac.ohmic-enable bit out\n on only while probing\n \n 476\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22257,15 +22257,15 @@\n plasmac.torch-on bit out\n turn torch on, connect to your torch on input\n plasmac.torch-time \ufb02oat out\n torch on time of current job\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 477\n \n \fPLASMAC(9)\n \n HAL Component\n \n@@ -22302,15 +22302,15 @@\n Phillip A Carter & Gregory D Carl\n \n LICENSE\n GPLv2 or greater\n \n 478\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fPWMGEN (9)\n \n HAL Component\n \n@@ -22472,15 +22472,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n 482\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL User\u2019s Manual\n \n SAMPLER(9)\n \n@@ -22594,15 +22594,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 485\n \n \fSCALED_S32_SUMS(9)\n \n HAL Component\n \n@@ -22637,15 +22637,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n 486\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSELECT8(9)\n \n HAL Component\n \n@@ -22676,15 +22676,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 487\n \n \fSERPORT (9)\n \n HAL Component\n \n@@ -22734,15 +22734,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 488\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSERPORT (9)\n \n HAL Component\n \n@@ -22751,15 +22751,15 @@\n serport.N.ioaddr u32 r\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 489\n \n \fSETSERIAL(9)\n \n HAL Component\n \n@@ -22990,15 +22990,15 @@\n sim-axis-hardware.N.Zmaxsw-lower \ufb02oat in\n sim-axis-hardware.N.Amaxsw-lower \ufb02oat in\n sim-axis-hardware.N.Umaxsw-lower \ufb02oat in\n sim-axis-hardware.N.Vmaxsw-lower \ufb02oat in\n \n 494\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n@@ -23053,15 +23053,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 495\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n@@ -23118,15 +23118,15 @@\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 \ufb02oat in (default: .01)\n how much the limit switches are offset from inputted position. added to max, subtracted from min\n \n 496\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSIM_AXIS_HARDWARE(9)\n \n HAL Component\n \n@@ -23136,15 +23136,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 497\n \n \fSIM_ENCODER(9)\n \n HAL Component\n \n@@ -23257,15 +23257,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 500\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSIM_MATRIX_KB(9)\n \n HAL Component\n \n@@ -23304,15 +23304,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 501\n \n \fSIM_PARPORT (9)\n \n HAL Component\n \n@@ -23363,15 +23363,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 502\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSIM_PARPORT (9)\n \n HAL Component\n \n@@ -23429,15 +23429,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 503\n \n \fSIM_PARPORT (9)\n \n HAL Component\n \n@@ -23466,15 +23466,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n 504\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSIM_SPINDLE(9)\n \n HAL Component\n \n@@ -23507,15 +23507,15 @@\n Michael Haberler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 505\n \n \fSIMPLE_TP(9)\n \n HAL Component\n \n@@ -23550,15 +23550,15 @@\n Chris S Morley\n \n LICENSE\n GPL\n \n 506\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSPHEREPROBE(9)\n \n HAL Component\n \n@@ -23591,15 +23591,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 507\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23650,15 +23650,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 508\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23703,15 +23703,15 @@\n spindle.N.speed-tolerance.x \ufb02oat in\n Tolerance for \u2019at-speed\u2019 signal (in RPM). Actual spindle speeds within this amount of the commanded speed will cause the at-speed signal to go TRUE.\n spindle.N.zero-tolerance.x \ufb02oat in\n Tolerance for \u2019zero-speed\u2019 signal (in RPM).\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 509\n \n \fSPINDLE(9)\n \n HAL Component\n \n@@ -23726,15 +23726,15 @@\n Les Newell\n \n LICENSE\n GPL\n \n 510\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSPINDLE_MONITOR(9)\n \n HAL Component\n \n@@ -23765,15 +23765,15 @@\n Sebastian Kuzminsky\n \n LICENSE\n gpl v2 or higher\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 511\n \n \fSSERIAL(9)\n \n HAL Component\n \n@@ -24470,15 +24470,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 525\n \n \fLinuxCNC Documentation\n \n STREAMER(9)\n \n@@ -24607,15 +24607,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 528\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fSUPPLY (9)\n \n HAL Component\n \n@@ -24709,15 +24709,15 @@\n thc.requested-vel \ufb02oat in\n Connect to motion.requested-vel\n thc.volts-requested \ufb02oat in\n Tip Volts current_vel >= min_velocity requested\n \n 530\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n THC(9)\n \n@@ -24760,15 +24760,15 @@\n John Thornton\n \n LICENSE\n GPLv2 or greater\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 531\n \n \fTHCUD(9)\n \n HAL Component\n \n@@ -24812,15 +24812,15 @@\n net thc-enable thcud.enable <= pyvcp.thc-enable\n \n FUNCTIONS\n thcud (requires a \ufb02oating-point thread)\n \n 532\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTHCUD(9)\n \n HAL Component\n \n@@ -24864,15 +24864,15 @@\n John Thornton\n \n LICENSE\n GPLv2 or greater\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 533\n \n \fTHREADS(9)\n \n HAL Component\n \n@@ -24941,15 +24941,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 535\n \n \fHAL Component\n \n TIME(9)\n \n@@ -25003,15 +25003,15 @@\n loadrt time\n addf time.0 servo-thread\n net cycle-timer\n time.0.start <= halui.program.is-running\n \n 536\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n TIME(9)\n \n@@ -25057,15 +25057,15 @@\n John Thornton, itaib, Moses McKnight\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 537\n \n \fTIMEDELAY (9)\n \n HAL Component\n \n@@ -25095,15 +25095,15 @@\n Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich\n \n LICENSE\n GPL\n \n 538\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTIMEDELTA(9)\n \n HAL Component\n \n@@ -25147,15 +25147,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 539\n \n \fHAL Component\n \n TOF(9)\n \n@@ -25187,15 +25187,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n 540\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTOGGLE(9)\n \n HAL Component\n \n@@ -25228,15 +25228,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 541\n \n \fTOGGLE2NIST (9)\n \n HAL Component\n \n@@ -25278,15 +25278,15 @@\n Anders Wallin\n \n LICENSE\n GPL\n \n 542\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTON (9)\n \n HAL Component\n \n@@ -25318,15 +25318,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 543\n \n \fHAL Component\n \n TP(9)\n \n@@ -25358,15 +25358,15 @@\n Chad Woitas\n \n LICENSE\n GPL\n \n 544\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTPCOMP(9)\n \n HAL Component\n \n@@ -25401,15 +25401,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 545\n \n \fTRISTATE_BIT (9)\n \n HAL Component\n \n@@ -25437,15 +25437,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 546\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fTRISTATE_FLOAT (9)\n \n HAL Component\n \n@@ -25473,15 +25473,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 547\n \n \fUPDOWN (9)\n \n HAL Component\n \n@@ -25522,15 +25522,15 @@\n Stephen Wille Padnos\n \n LICENSE\n GPL\n \n 548\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fUSERKINS(9)\n \n HAL Component\n \n@@ -25585,15 +25585,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 LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 549\n \n \fUSERKINS(9)\n \n HAL Component\n \n@@ -25613,15 +25613,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 550\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n WATCHDOG(9)\n \n@@ -25704,15 +25704,15 @@\n Jeff Epler\n \n LICENSE\n GPL\n \n 552\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fWEIGHTED_SUM(9)\n \n HAL Component\n \n@@ -25812,15 +25812,15 @@\n Dewey Garrett\n \n LICENSE\n GPL\n \n 554\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \fHAL Component\n \n XOR2(9)\n \n@@ -25853,15 +25853,15 @@\n John Kasunich\n \n LICENSE\n GPL\n \n LinuxCNC Documentation\n \n-2025-01-26\n+2026-03-02\n \n 555\n \n \fXYZAB_TDR_KINS(9)\n \n HAL Component\n \n@@ -25893,12 +25893,12 @@\n David Mueller\n \n LICENSE\n GPL\n \n 556\n \n-2025-01-26\n+2026-03-02\n \n LinuxCNC Documentation\n \n \f\n"}]}]}]}]}, {"source1": "linuxcnc-doc-es_2.9.3-2_all.deb", "source2": "linuxcnc-doc-es_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n -rw-r--r-- 0 0 0 1192 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 27608028 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 27609328 2025-01-26 08:13: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-es\n Source: linuxcnc\n Version: 2.9.3-2\n Architecture: all\n Maintainer: LinuxCNC Developers <emc-developers@lists.sourceforge.net>\n-Installed-Size: 30376\n+Installed-Size: 30378\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 2025-01-26 08:13:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 331 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-documentation_es.desktop\n -rw-r--r-- 0 root (0) root (0) 357 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gcoderef_es.desktop\n -rw-r--r-- 0 root (0) root (0) 372 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gettingstarted_es.desktop\n -rw-r--r-- 0 root (0) root (0) 361 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-integratorinfo_es.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 843857 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf\n--rw-r--r-- 0 root (0) root (0) 29522458 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf\n--rw-r--r-- 0 root (0) root (0) 493583 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf\n--rw-r--r-- 0 root (0) root (0) 150275 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 843943 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 29524378 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 493636 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf\n+-rw-r--r-- 0 root (0) root (0) 150312 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf\n -rw-r--r-- 0 root (0) root (0) 2093 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/asciidoc-markup_es.adoc.gz\n -rw-r--r-- 0 root (0) root (0) 14667 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/gcode_es.html\n -rw-r--r-- 0 root (0) root (0) 2001 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/rtfaults_es.adoc\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-es/\n -rw-r--r-- 0 root (0) root (0) 11212 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-es/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2024-07-06 08:41:36.000000 ./usr/share/doc/linuxcnc-doc-es/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13: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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Developer Manual V2.9.3, 25 Jan 2025'\n+Title: 'Developer Manual V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Developer Manual V2.9.3, 25 Jan 2025\n+Developer Manual V2.9.3, 26 Jan 2025\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n ii\n \n \u00cdndice general\n 1. Introduction\n \n 1\n@@ -117,15 +117,15 @@\n \n 15\n \n 3.8.3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iii\n \n 3.8.3.2. Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n@@ -281,15 +281,15 @@\n \n 19\n \n 3.8.16.1.Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iv\n \n 3.8.16.2.Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n@@ -449,15 +449,15 @@\n \n 3.21.3.Process line\n \n 27\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n v\n \n 3.21.4.Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 28\n \n@@ -625,15 +625,15 @@\n \n 40\n \n 4.14.Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 40\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vi\n \n 5. Coding Style\n \n 41\n \n@@ -781,15 +781,15 @@\n \n 8.4.1. LinuxCNC official Git repo\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vii\n \n 8.4.2. Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 57\n \n@@ -876,15 +876,15 @@\n 10.2.GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 67\n 67\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 1 / 71\n \n Cap\u00edtulo 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 2 / 71\n \n Cap\u00edtulo 2\n \n HAL General Reference\n 2.1. HAL Entity Names\n@@ -941,15 +941,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -989,15 +989,15 @@\n channels (due to hardware limitations). The frequency parameter should use \u201d0-3\u201d as the channel\n number.\n 1 Underlined characters have been removed, but there are still a few cases of broken mixture, for example pid.0.Pgain in\n place of pid.0.p-gain.\n 2 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 4 / 71\n \n <specific-name>\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@@ -1039,15 +1039,15 @@\n ppmc.0.write\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n 3 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 5 / 71\n \n Cap\u00edtulo 3\n \n Code Notes\n 3.1. Intended audience\n@@ -1077,15 +1077,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 6 / 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@@ -1115,19 +1115,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 7 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 8 / 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@@ -1158,19 +1158,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 9 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 10 / 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@@ -1184,15 +1184,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 11 / 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@@ -1211,26 +1211,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 12 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 3.7. Homing\n 3.7.1. Homing state diagram\n \n 13 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 14 / 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@@ -1246,15 +1246,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 15 / 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@@ -1286,15 +1286,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 16 / 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@@ -1329,15 +1329,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 17 / 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@@ -1365,15 +1365,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 18 / 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@@ -1400,15 +1400,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 19 / 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@@ -1436,15 +1436,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 20 / 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@@ -1474,15 +1474,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 21 / 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@@ -1519,15 +1519,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 22 / 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@@ -1560,15 +1560,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 23 / 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@@ -1586,15 +1586,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 24 / 71\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1642,15 +1642,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 25 / 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@@ -1684,15 +1684,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 26 / 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@@ -1710,15 +1710,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 27 / 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@@ -1752,15 +1752,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 28 / 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@@ -1798,15 +1798,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 29 / 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@@ -1845,15 +1845,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 30 / 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@@ -1878,15 +1878,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 has got\n an empty spindle.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 31 / 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@@ -1923,15 +1923,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 32 / 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@@ -1971,15 +1971,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 33 / 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@@ -2020,15 +2020,15 @@\n to pocket 0 (the spindle) in interp\u2019s copy of the tool table, settings->tool_table. (This copy\n is not needed on random tool changer machines because there, tools don\u2019t have a home pocket\n and instead we just updated the tool in pocket 0 directly.). The relevant numbered parameters\n (#5400-#5413) are updated from the tool information in the spindle (by copying the information\n from interp\u2019s settings->tool_table to settings->parameters). (FIXME: this is a buglet, the\n params should only be updated if it was the current tool that was modified).\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 34 / 71\n \n 5. 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 3.24.3.5. M61\n@@ -2062,15 +2062,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 35 / 71\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 settings.selected_pocket\n@@ -2110,15 +2110,15 @@\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 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 36 / 71\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@@ -2146,15 +2146,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2186,15 +2186,15 @@\n EMC_JOINT_UNHOME_TYPE\n EMC_JOINT_STAT_TYPE\n \n 4.3. AXIS\n \n 37 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2240,15 +2240,15 @@\n EMC_TRAJ_RIGID_TAP_TYPE\n EMC_TRAJ_STAT_TYPE\n \n 4.6. MOTION\n \n 38 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2294,15 +2294,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 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2341,15 +2341,15 @@\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 40 / 71\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 41 / 71\n \n Cap\u00edtulo 5\n \n Coding Style\n This chapter describes the source code style preferred by the LinuxCNC team.\n@@ -2374,15 +2374,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 42 / 71\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2425,15 +2425,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 43 / 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@@ -2471,15 +2471,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 44 / 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@@ -2514,24 +2514,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 45 / 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 46 / 71\n \n Cap\u00edtulo 6\n \n Building LinuxCNC\n 6.1. Introduction\n@@ -2559,15 +2559,15 @@\n To retrieve the source tree you have two options:\n Download tarball\n On the LinuxCNC project page in GitHub find a reference to the \u201dreleases\u201d or \u201dtags\u201d, click that\n hyperlink to the archive page and download the latest .tar file. You will find that file compressed\n as a .tar.xz or .tar.gz file. This file, commonly referred to as a \u201dtarball\u201d is an archive very analogous\n to a .zip. Your Linux desktop will know how to treat that file when double-clicking on it.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 47 / 71\n \n Prepare a local copy of the LinuxCNC repository\n You would first install the tool \u201dgit\u201d on your machine if it is not available already (sudo apt\n install git). Then prepare a local instance of the source tree as follows: .\n $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir\n@@ -2607,15 +2607,15 @@\n \n 6.3. Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint. 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 48 / 71\n \n 6.3.1. En tiempo real\n LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version\n of LinuxCNC supports the following platforms. The first three listed are realtime operating systems:\n RTAI\n@@ -2647,15 +2647,15 @@\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments. List all arguments to src/configure by running this:\n $ cd linuxcnc-source-dir/src\n $ ./configure --help\n \n The most commonly used arguments are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 49 / 71\n \n --with-realtime=uspace\n Build for any realtime platform, or for non-realtime. The resulting LinuxCNC executables will run\n on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a\n vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).\n@@ -2691,15 +2691,15 @@\n in a Debian package, complete with dependency information. This process by default also includes\n the building of the documentation, which takes its time because of all the I/O for many languages, but\n that can be skipped. LinuxCNC is then installed as part of those packages on the same machines or on\n whatever machine of the same architecture that the .deb files are copied to. LinuxCNC cannot be run\n until the Debian packages are installed on a target machine and then the executables are available in\n /usr/bin and /usr/lib just like other regular software of the sytem.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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 does not have the build environment installed, or that does\n not have internet access.\n To build packages is primarily useful when packaging the software for delivery to end users. Developers among themselves exchange only the source code, likely supported by the LinuxCNC GitHub\n@@ -2738,15 +2738,15 @@\n 6.4.2.1. LinuxCNC\u2019s debian/configure arguments\n The LinuxCNC source tree has a debian directory with all the info about how the Debian package\n shall be built, but some key files within are only distributed as templates. The debian/configure\n script readies those build instructions for the regular Debian packaging utilities and must thus be run\n prior to dpkg-checkbuilddeps or dpkg-buildpackage.\n The debian/configure script takes a single argument which specifies the underlying realtime or nonrealtime platform to build for. The regular values for this argument are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 51 / 71\n \n no-docs\n Skip building documentation.\n uspace\n Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).\n@@ -2785,15 +2785,15 @@\n \n which will install all the dependencies required but available. The . is part of the command line, i.e. an\n instruction to retrieve the dependencies for the source tree at hand, not for dependencies of another\n package. This completes the installation of build-dependencies.\n The remainder of this section describes a semi-manual approach. The list of dependencies in debian/control is long and it is tedious to compare the current state of packages already installed with it.\n Debian systems provide a program called dpkg-checkbuilddeps that parses the package meta-data\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 52 / 71\n \n and compares the packages listed as build dependencies against the list of installed packages, and\n tells you what\u2019s missing.\n First, install the dpkg-checkbuilddeps program by running:\n $ sudo apt-get install dpkg-dev\n@@ -2831,15 +2831,15 @@\n -b\n Only compiles the architecture-dependent packages (like the linuxcnc binaries and GUIs). This\n is very helpful to avoid compiling what is hardware-independent, which for LinuxCNC is the\n documentation. That documentation is available online anyway.\n If you happen to run into difficulties while compiling, check the LinuxCNC forum online. Currently\n emerging is the support for the DEB_BUILD_OPTIONS environment variable. Set it to\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 53 / 71\n \n nodocs\n to skip building the documentation, preferably instead use the -B flag to dpkg-buildpackage.\n nocheck\n to skip self-tests of the LinuxCNC build process. This saves some time and reduces the demand\n@@ -2877,25 +2877,25 @@\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\n favorite text editor (e.g., sudo gedit /etc/security/limits.d/linuxcnc.conf). The file should contain the following line:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 54 / 71\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 $ ulimit -l\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 55 / 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@@ -2906,15 +2906,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 56 / 71\n \n Cap\u00edtulo 8\n \n Contributing to LinuxCNC\n 8.1. Introduction\n@@ -2935,15 +2935,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 57 / 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@@ -2978,15 +2978,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. Explain what\n you are doing, and why.\n Clone the git repo.\n Make your changes in a local branch.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 58 / 71\n \n Adding documentation and writing tests is an important part of adding a new feature. Otherwise,\n others won\u2019t know how to use your feature, and if other changes break your feature it can go\n unnoticed without a test.\n Share your changes with the other project developers in one of these ways:\n@@ -3020,15 +3020,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 59 / 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@@ -3069,15 +3069,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n 60 / 71\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n@@ -3108,15 +3108,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 61 / 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@@ -3150,15 +3150,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 62 / 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@@ -3201,15 +3201,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 63 / 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@@ -3252,15 +3252,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 64 / 71\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -3305,15 +3305,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 65 / 71\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -3355,28 +3355,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 66 / 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 67 / 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@@ -3402,15 +3402,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 68 / 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@@ -3459,15 +3459,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 69 / 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@@ -3514,15 +3514,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 70 / 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@@ -3563,15 +3563,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 71 / 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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'LinuxCNC V2.9.3, 25 Jan 2025'\n+Title: 'LinuxCNC V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-LinuxCNC V2.9.3, 25 Jan 2025\n+LinuxCNC V2.9.3, 26 Jan 2025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ii\n \n \u00cdndice general\n \n I Getting Started & Configuration\n \n@@ -116,15 +116,15 @@\n \n 7\n \n 1.3.2.1. Raspberry Pi Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iii\n \n 1.3.2.2. AMD-64 (x86-64, PC) Image using GUI tools\n \n . . . . . . . . . . . . . . . . . .\n \n@@ -284,15 +284,15 @@\n \n 1.6.4. Man Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n 1.6.3. Terminal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iv\n \n 1.6.5. List Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n@@ -450,15 +450,15 @@\n \n 44\n \n 2.3.2.2. Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n v\n \n 2.3.2.3. Tool Radius Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n@@ -618,15 +618,15 @@\n \n 53\n \n 2.5.3.3. Optional Program Stop Switch . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 53\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vi\n \n 2.5.4. Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n@@ -780,15 +780,15 @@\n \n 72\n \n 2.7.13.Hole And Small Shape Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 72\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vii\n \n 2.7.14.I/O Pins For Plasma Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 73\n \n@@ -942,15 +942,15 @@\n \n 93\n \n 3.1.8.3. Determining Spindle Calibration . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 93\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n viii\n \n 3.1.9. Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 94\n \n@@ -1029,15 +1029,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n 4.1.4.6. Manual tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5. RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5.1. ACPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ix\n \n 4.2. Latency Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.1. What is latency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.2. Latency Tests\n \n@@ -1085,15 +1085,15 @@\n \n 4.4.2.11.[KINS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157\n 4.4.2.12.[AXIS_<letter>] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157\n 4.4.2.13.[JOINT_<num>] Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158\n 4.4.2.14.[SPINDLE_<num>] Section(s)) . . . . . . . . . . . . . . . . . . . . . . . . . . 164\n 4.4.2.15.[EMCIO] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n x\n \n 4.5. Homing Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.2. Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n 4.5.3. Separate Home Switch Example Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n@@ -1137,15 +1137,15 @@\n 4.8.2. Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179\n 4.8.3. Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.4. Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.5. Pinout Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.6. Mechanical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.9. Stepper Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xi\n \n 4.9.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.2. Maximum step rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3. Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3.1. Standard Pinout HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183\n@@ -1192,15 +1192,15 @@\n 5.1.3.4. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.3.5. Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.4. HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198\n 5.1.5. HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.1.6. Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.2. HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xii\n \n 5.2.1. HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n 5.2.1.1. loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.2. addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.3. loadusr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n@@ -1248,15 +1248,15 @@\n 5.4.2.2. Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.2.3. The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3. A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.1. Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.2. Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.3. Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiii\n \n 5.4.3.4. Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219\n \n@@ -1306,15 +1306,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n \n 5.6.5. INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.6.5.1. Pins )\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiv\n \n 5.7. HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1.1. User Interfaces (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n 5.7.1.2. Motion (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n@@ -1355,15 +1355,15 @@\n 5.8.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n 5.8.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.5.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6. Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xv\n \n 5.8.6.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n 5.8.7. SigGen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n@@ -1411,15 +1411,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291\n \n 5.9.16.Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10.HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10.1.Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10.2.Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvi\n \n 5.10.3.Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.10.4.Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.10.5.Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.10.6.Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n@@ -1486,15 +1486,15 @@\n \n 5.13.Creating Non-realtime Python Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305\n 5.13.1.Basic usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305\n 5.13.2.Non-realtime components and delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.3.Create pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.3.1.Changing the prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvii\n \n 5.13.4.Reading and writing pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.4.1.Driving output (HAL_OUT) pins . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.4.2.Driving bidirectional (HAL_IO) pins . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.5.Exiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n@@ -1531,15 +1531,15 @@\n 5.15.3.Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.15.4.Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315\n 5.15.5.Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315\n 5.15.6.Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.15.7.HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.15.8.Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6. Hardware Drivers\n \n xviii\n \n 321\n \n@@ -1581,15 +1581,15 @@\n 6.3.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.3.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.3.6. Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.3.6.1. CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.3.6.2. RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.6.3. EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xix\n \n 6.3.6.4. Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.6.5. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.7. RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.3.7.1. Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n@@ -1634,15 +1634,15 @@\n 6.7.2. Firmware Binaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354\n 6.7.3. Installing Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.4. Loading HostMot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.5. Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xx\n \n 6.7.6. HostMot2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.7. Pinouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.8. PIN Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n 6.7.9. Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n@@ -1684,15 +1684,15 @@\n 6.8.5.2. fnct_02_read_discrete_inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374\n 6.8.5.3. fnct_03_read_holding_registers\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 374\n \n 6.8.5.4. fnct_04_read_input_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxi\n \n 6.8.5.5. fnct_05_write_single_coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.5.6. fnct_06_write_single_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.5.7. fnct_15_write_multiple_coils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.5.8. fnct_16_write_multiple_registers . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n@@ -1731,15 +1731,15 @@\n 6.13.1.4.LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386\n 6.13.1.5.Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.1.6.PC interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.1.7.Rebuilding the FPGA firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.1.8.For more information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.2.Pluto Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxii\n \n 6.13.2.1.Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.2.2.Input latching and output updating . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.13.2.3.HAL Functions, Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.2.4.Compatible driver hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390\n@@ -1773,15 +1773,15 @@\n 6.17.6.Panel operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401\n 6.17.7.Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401\n 6.17.8.Configuring the VFS11 VFD for Modbus usage . . . . . . . . . . . . . . . . . . . . . . 401\n 6.17.8.1.Connecting the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401\n 6.17.8.2.Modbus setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401\n 6.17.9.Programming Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 7. Hardware Examples\n \n xxiii\n \n 403\n \n@@ -1822,15 +1822,15 @@\n 8.2.5.4. Symbol Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421\n 8.2.5.5. The Editor window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422\n 8.2.5.6. Config Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423\n 8.2.6. Ladder objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425\n 8.2.6.1. CONTACTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425\n 8.2.6.2. IEC TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiv\n \n 8.2.6.3. TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.4. MONOSTABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.5. COUNTERS\n \n@@ -1880,15 +1880,15 @@\n 9.1.3.2. Inverse transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460\n 9.1.4. Implementation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460\n 9.1.4.1. Kinematics module using the userkins.comp template . . . . . . . . . . . . . 461\n 9.2. Setting up \u201dmodified\u201d Denavit-Hartenberg (DH) parameters for genserkins . . . . . . . . 461\n 9.2.1. Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 9.2.2. General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxv\n \n 9.2.3. Modified DH-Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462\n \n@@ -1936,15 +1936,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505\n \n 9.4.6. User kinematics provisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505\n 9.4.7. Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.4.8. Code Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.5. PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvi\n \n 9.5.1. PID Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.5.1.1. Control loop basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5.1.2. Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5.1.3. Loop Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n@@ -1997,15 +1997,15 @@\n 9.6.7. Creating new G-code cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527\n 9.6.8. Configuring Embedded Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527\n 9.6.8.1. Python plugin : INI file configuration . . . . . . . . . . . . . . . . . . . . . . . 527\n 9.6.8.2. Executing Python statements from the interpreter . . . . . . . . . . . . . . . 528\n 9.6.9. Programming Embedded Python in the RS274NGC Interpreter . . . . . . . . . . . . 528\n 9.6.9.1. The Python plugin namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 528\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvii\n \n 9.6.9.2. The Interpreter as seen from Python . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.9.3. The Interpreter __init__ and __delete__ functions . . . . . . . . . . . . . 529\n 9.6.9.4. Calling conventions: NGC to Python . . . . . . . . . . . . . . . . . . . . . . . . 529\n 9.6.9.5. Calling conventions: Python to NGC . . . . . . . . . . . . . . . . . . . . . . . . 532\n@@ -2050,15 +2050,15 @@\n . . . . . . . . . . . . . . . . . . . . . 546\n \n 9.6.17.1.Interpreter state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546\n 9.6.17.2.Task and Interpreter interaction, Queuing and Read-Ahead . . . . . . . . . 546\n 9.6.17.3.Predicting the machine position . . . . . . . . . . . . . . . . . . . . . . . . . . 546\n 9.6.17.4.Queue-busters break position prediction . . . . . . . . . . . . . . . . . . . . . 547\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxviii\n \n 9.6.17.5.How queue-busters are dealt with . . . . . . . . . . . . . . . . . . . . . . . . . 547\n 9.6.17.6.Word order and execution order . . . . . . . . . . . . . . . . . . . . . . . . . . 548\n 9.6.17.7.Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548\n 9.6.17.8.Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548\n@@ -2101,15 +2101,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561\n \n 9.10.Tool Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561\n 9.10.1.Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561\n 9.10.1.1.INI file Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxix\n \n 9.10.1.2.db_program operation (v2.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n 9.10.1.3.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563\n 9.10.1.4.Example program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 9.10.1.5.Python tooldb module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n@@ -2166,15 +2166,15 @@\n 10.1.12.1.\n Program Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588\n 10.1.12.2.\n The X Resource Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589\n 10.1.12.3.\n Jogwheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxx\n \n 10.1.12.4.\n ~/.axisrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589\n 10.1.12.5.\n USER_COMMAND_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n@@ -2241,15 +2241,15 @@\n 10.2.4.1.The DISPLAY Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601\n 10.2.4.2.The TRAJ Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602\n 10.2.4.3.Macro Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603\n 10.2.4.4.Embedded Tabs and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605\n 10.2.4.5.User Created Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608\n 10.2.4.6.Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxi\n \n 10.2.4.7.User Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n 10.2.4.8.User CSS File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n 10.2.4.9.Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n 10.2.5.HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611\n@@ -2304,15 +2304,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640\n \n 10.2.12.1.\n Strange numbers in the info area . . . . . . . . . . . . . . . . . . . . . . . . . 640\n 10.2.12.2.\n Not ending macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxii\n \n 10.3.The Touchy Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641\n 10.3.1.Panel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n 10.3.1.1.HAL connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n 10.3.1.2.Recommended for any setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643\n@@ -2355,15 +2355,15 @@\n 10.5.2.6.Jogging increments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.5.2.7.Jog speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.5.2.8.User message dialog system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.5.2.9.Embed Custom VCP Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663\n 10.5.2.10.\n Subroutine Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiii\n \n 10.5.2.11.\n Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665\n 10.5.2.12.\n Program Extensions/Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665\n@@ -2434,15 +2434,15 @@\n 10.5.17.6.\n Probe Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n 10.5.17.7.\n Camview Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n 10.5.17.8.\n G-codes Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiv\n \n 10.5.17.9.\n Setup Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687\n 10.5.17.10.\n Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n@@ -2489,15 +2489,15 @@\n 10.7.3.2.Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712\n 10.7.3.3.Coordinate Display Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712\n 10.7.3.4.TkLinuxCNC Interpreter / Automatic Program Control . . . . . . . . . . . . 712\n 10.7.3.5.Manual Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712\n 10.7.3.6.Code Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.7.Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxv\n \n 10.7.3.8.Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.7.3.9.Spindle speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.7.4.Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.8.QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n@@ -2534,15 +2534,15 @@\n 10.8.8.2.MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739\n 10.8.8.3.Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745\n 10.8.8.4.CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745\n 10.8.8.5.PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n 10.8.8.6.SETTINGS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751\n 10.8.8.7.STATISTICS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvi\n \n 10.8.9.Using QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755\n 10.8.9.1.Units Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n 10.8.9.2.Preamble and Postamble Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n 10.8.9.3.Mandatory Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n@@ -2610,15 +2610,15 @@\n 10.8.9.36.\n Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785\n 10.8.9.37.\n MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786\n 10.8.10.\n Conversational Shape Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvii\n \n 10.8.10.1.\n Conversational Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789\n 10.8.10.2.\n Conversational Lines And Arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . 789\n@@ -2696,15 +2696,15 @@\n 10.8.15.15.\n Hypertherm PowerMax Communications . . . . . . . . . . . . . . . . . . . . . 814\n 10.8.16.\n Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815\n 10.8.17.\n Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxviii\n \n 10.8.17.1.\n Example Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816\n 10.8.17.2.\n NGC Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817\n@@ -2765,15 +2765,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841\n \n 11.2.2.3.Tool Changers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842\n 11.2.3.Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842\n 11.2.4.Cutter Radius Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843\n 11.2.4.1.Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxix\n \n 11.2.4.2.Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846\n 11.3.Tool Edit GUI\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847\n@@ -2833,15 +2833,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868\n \n 11.4.22.\n File Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xl\n \n 11.4.23.\n G-code Order of Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869\n 11.4.24.\n G-code Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n@@ -2911,15 +2911,15 @@\n 11.5.28.\n G43 Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893\n 11.5.29.\n G43.1 Dynamic Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894\n 11.5.30.\n G43.2 Apply additional Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . 895\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xli\n \n 11.5.31.\n G49 Cancel Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n 11.5.32.\n G52 Local Coordinate System Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n@@ -3002,15 +3002,15 @@\n G93, G94, G95 Feed Rate Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917\n 11.5.60.\n G96, G97 Spindle Control Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.5.61.\n G98, G99 Canned Cycle Return Level . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.6.M-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlii\n \n 11.6.1.M-Code Quick Reference Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n 11.6.2.M0, M1 Program Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n 11.6.3.M2, M30 Program End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n 11.6.4.M60 Pallet Change Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920\n@@ -3072,15 +3072,15 @@\n 11.7.6.Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935\n 11.7.7.Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936\n 11.7.8.Indirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936\n 11.7.9.Calling Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936\n 11.7.10.\n Subroutine return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliii\n \n 11.7.11.\n Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n 11.8.Other Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n 11.8.1.F: Set Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n@@ -3160,15 +3160,15 @@\n 11.11.\n RS274/NGC Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.11.1.\n Changes from RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n 11.11.2.\n Additions to RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliv\n \n 12.Virtual Control Panels\n \n 948\n \n@@ -3219,15 +3219,15 @@\n 12.3.2.A Quick Tour with the Example Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985\n 12.3.2.1.Exploring the example panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988\n 12.3.2.2.Exploring the User Interface description . . . . . . . . . . . . . . . . . . . . . 989\n 12.3.2.3.Exploring the Python callback . . . . . . . . . . . . . . . . . . . . . . . . . . . 989\n 12.3.3.Creating and Integrating a Glade user interface . . . . . . . . . . . . . . . . . . . . . 989\n 12.3.3.1.Prerequisite: Glade installation . . . . . . . . . . . . . . . . . . . . . . . . . . . 989\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlv\n \n 12.3.3.2.Running Glade to create a new user interface . . . . . . . . . . . . . . . . . . 989\n 12.3.3.3.Testing a panel\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990\n@@ -3298,15 +3298,15 @@\n HAL_sourceview widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027\n 12.3.6.28.\n MDI history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028\n 12.3.6.29.\n Animated function diagrams: HAL widgets in a bitmap . . . . . . . . . . . . 1029\n 12.3.7.Action Widgets Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvi\n \n 12.3.7.1.VCP Action Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030\n 12.3.7.2.VCP Action Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030\n 12.3.7.3.VCP ToggleAction widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031\n 12.3.7.4.The Action_MDI Toggle and Action_MDI widgets . . . . . . . . . . . . . . . . 1032\n@@ -3367,15 +3367,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046\n \n 12.4.2.Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048\n 12.5.QtVCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050\n 12.5.1.Showcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050\n 12.5.2.Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvii\n \n 12.5.2.1.QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057\n 12.5.2.2.INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057\n 12.5.2.3.Qt Designer UI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058\n 12.5.2.4.Handler Files\n@@ -3422,15 +3422,15 @@\n 12.5.6.3.Python Handler Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081\n 12.5.7.More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.6.QtVCP Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.6.1.Builtin Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.6.1.1.copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082\n 12.6.1.2.spindle_belts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlviii\n \n 12.6.1.3.test_dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085\n 12.6.1.4.test_button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086\n 12.6.1.5.test_led . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086\n 12.6.1.6.test_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087\n@@ -3481,15 +3481,15 @@\n 12.7.1.13.\n LCDNumber - LCD Style Number Readout Widget . . . . . . . . . . . . . . . . 1110\n 12.7.1.14.\n DoubleScale - Spin Button Entry Widget . . . . . . . . . . . . . . . . . . . . . 1111\n 12.7.1.15.\n GeneralHALInput - General Signals/Slots Input Connection Widget . . . . 1111\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlix\n \n 12.7.1.16.\n GeneralHALOutput - General Signals/Slots Output Connection Widget . . . 1111\n 12.7.1.17.\n WidgetSwitcher - Multi-widget Layout View Switcher Widget . . . . . . . . 1111\n@@ -3560,15 +3560,15 @@\n BasicProbe - Simple Mill Probing Widget . . . . . . . . . . . . . . . . . . . . 1147\n 12.7.2.33.\n VersaProbe - Mill Probing Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1148\n 12.7.3.Dialog Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148\n 12.7.3.1.LcncDialog - General Message Dialog Widget . . . . . . . . . . . . . . . . . 1149\n 12.7.3.2.ToolDialog - Manual Tool Change Dialog Widget . . . . . . . . . . . . . . . 1150\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n l\n \n 12.7.3.3.FileDialog - Load and Save File Chooser Dialog Widget . . . . . . . . . . . 1151\n 12.7.3.4.OriginOffsetDialog - Origin Offset Setting Dialog Widget . . . . . . . . . 1152\n 12.7.3.5.ToolOffsetDialog - Tool Offset Setting Dialog Widget . . . . . . . . . . . . 1153\n 12.7.3.6.MacroTabDialog - Macro Launch Dialog Widget . . . . . . . . . . . . . . . . 1153\n@@ -3607,15 +3607,15 @@\n 12.8.2.5.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.3.Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.3.1.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.3.2.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169\n 12.8.4.Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171\n 12.8.4.1.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n li\n \n 12.8.5.Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172\n 12.8.5.1.Referenced Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173\n 12.8.5.2.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174\n 12.8.5.3.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174\n@@ -3681,15 +3681,15 @@\n 12.9.3.Start the script\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190\n \n 12.9.4.HAL pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190\n 12.9.5.Creating Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lii\n \n 12.9.5.1.Import STL or OBJ Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190\n 12.9.5.2.Build from Geometric Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . 1191\n 12.9.6.Moving Model Parts\n \n@@ -3758,15 +3758,15 @@\n 12.11.3.\n Add A Basic Style Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212\n 12.11.4.\n Request Dialog Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213\n 12.11.5.\n Speak a Startup Greeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liii\n \n 12.11.6.\n ToolBar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214\n 12.11.7.\n Add HAL Pins That Call Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215\n@@ -3838,15 +3838,15 @@\n 13.1.3.panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232\n 13.1.4.Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234\n 13.1.5.ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237\n 13.1.6.Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237\n 13.2.The LinuxCNC Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238\n 13.2.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liv\n \n 13.2.2.Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1239\n 13.2.3.Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 13.2.3.1.linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 13.2.3.2.The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244\n@@ -3893,15 +3893,15 @@\n \n 1274\n \n 14.Overleaf\n \n 1275\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lv\n \n 15.Glossary\n \n 1276\n \n@@ -3916,23 +3916,23 @@\n \n 1287\n \n 17.1.Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287\n 17.1.1.Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288\n 17.1.2.Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1 / 1288\n \n Parte I\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 2 / 1288\n \n Cap\u00edtulo 1\n \n Getting Started with LinuxCNC\n 1.1. About LinuxCNC\n@@ -3960,15 +3960,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3 / 1288\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@@ -4005,15 +4005,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 / 1288\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@@ -4043,15 +4043,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5 / 1288\n \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@@ -4084,15 +4084,15 @@\n compile from source to do this.\n \n 1.2.3. Problematic Hardware\n 1.2.3.1. Laptops\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6 / 1288\n \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@@ -4125,15 +4125,15 @@\n for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n nota\n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 7 / 1288\n \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@@ -4168,15 +4168,15 @@\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n 1.3.2.1. Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8 / 1288\n \n 1.3.2.2. AMD-64 (x86-64, PC) Image using GUI tools\n Download and install [Balena Etcher](https://etcher.balena.io/#download-etcher) (Linux, Windows,\n Mac) and write the downloaded image to a USB drive.\n If your image fails to boot then please also try Rufus. It looks more complicated but seems to be more\n@@ -4210,15 +4210,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9 / 1288\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@@ -4253,15 +4253,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 10 / 1288\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@@ -4345,15 +4345,15 @@\n Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n systems that can not run a 64-bit OS.\n 1.3.7.1. Installing on Debian Bookworm (with Preempt-RT kernel)\n 1. Install Debian Bookworm (Debian 12), amd64 version. You can download the installer here:\n https://www.debian.org/distrib/\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11 / 1288\n \n 2. After burning the iso and booting up if you don\u2019t want Gnome desktop select Advanced Options\n > Alternative desktop environments and pick the one you like. Then select Install or Graphical\n Install.\n \n@@ -4389,15 +4389,15 @@\n 1.3.7.2. Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n running the installer script as decribed above. If an RTAI kernel is detected it will stop before\n installing any packages.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12 / 1288\n \n 3. Update the package list from linuxcnc.org\n sudo apt-get update\n \n 4. Install the new realtime kernel, RTAI and the rtai version of linuxcnc.\n@@ -4432,15 +4432,15 @@\n \u2022 by_machine - Configurations organized by machine.\n \u2022 apps - Applications that do not require starting linuxcnc but may be useful for testing or trying\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13 / 1288\n \n axis - Keyboard and Mouse GUI\n craftsman - Touch Screen GUI (no longer maintained ???)\n gmoccapy - Touch Screen GUI\n gscreen - Touch Screen GUI\n@@ -4471,15 +4471,15 @@\n sherline\n smithy\n tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 14 / 1288\n \n 2. demonstrations of 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@@ -4494,15 +4494,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 15 / 1288\n \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@@ -4540,15 +4540,15 @@\n \n 1.5. Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n from 2.9.1 to 2.9.2) is an automatic process if your PC is connected to the internet. You will see an\n update prompt after a minor release along with other software updates. If you don\u2019t have an internet\n connection to your PC see Updating without Network.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 16 / 1288\n \n 1.5.1. Upgrade to the new version\n This section describes how to upgrade LinuxCNC from version 2.8.x to a 2.9.y version. It assumes that\n 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@@ -4589,15 +4589,15 @@\n \u2022 Ubuntu Precise:\n \u25e6 Click on the Dash Home icon in the top left.\n \u25e6 In the Search field, type \u201dsoftware\u201d, then click on the Ubuntu Software Center icon.\n \u25e6 In the Ubuntu Software Center window, click on the Edit menu, then click on Software Sources...\n to open the Software Sources window.\n \u2022 Ubuntu Lucid:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 17 / 1288\n \n \u25e6 Click the System menu, then Administration, then Synaptic Package Manager.\n \u25e6 In Synaptic, click on the Settings menu, then click on Repositories to open the Software\n Sources window.\n In the Software Sources window, select the Other Software tab.\n@@ -4617,29 +4617,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 18 / 1288\n \n Figura 1.2: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 1.5.1.2. Upgrading to the new version\n Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n Debian uses the Synaptic Package Manager.\n Open Synaptic using the instructions in Setting apt sources above.\n Click the Reload button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 19 / 1288\n \n Use the Search function to search for linuxcnc.\n The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n Click the check box to mark the new linuxcnc and linuxcnc-doc-* packages for upgrade. The package\n manager may select a number of additional packages to be installed, to satisfy dependencies that\n@@ -4678,15 +4678,15 @@\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 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 Since 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 20 / 1288\n \n 1.5.3.2. Canterp\n If you just run regular G-code and you don\u2019t use the canterp pluggable interpreter, then this section\n does not affect you.\n In the extremely unlikely event that you are using canterp, know that the module has moved from\n@@ -4717,15 +4717,15 @@\n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_sums tof ton\n \n 1.5.6. New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 21 / 1288\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 1.6.1. Automatic Login\n@@ -4755,15 +4755,15 @@\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 Example:\n linuxcnc /home/mill/linuxcnc/config/mill/mill.ini\n \n The documentation refers to your respective .ini file as INI-file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 22 / 1288\n \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@@ -4800,15 +4800,15 @@\n you can open and view most root files, but they will open in read only mode.\n 1.6.6.1. The Command Line Way\n Open a terminal and type\n sudo gedit\n \n Open the file with File > Open > Edit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 23 / 1288\n \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@@ -4838,15 +4838,15 @@\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 or\n ls\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 24 / 1288\n \n 1.6.7.4. Finding a File\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@@ -4882,15 +4882,15 @@\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 After boot up open a terminal and type:\n dmesg|grep parport\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 25 / 1288\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@@ -4914,15 +4914,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26 / 1288\n \n Cap\u00edtulo 2\n \n General User Information\n 2.1. User Foreword\n@@ -4951,15 +4951,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 27 / 1288\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@@ -4997,15 +4997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 28 / 1288\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@@ -5027,15 +5027,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 29 / 1288\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@@ -5063,85 +5063,85 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 30 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 31 / 1288\n \n Figura 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 32 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 33 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 34 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 35 / 1288\n \n Figura 2.7: TkLinuxCNC graphical interface\n \n QtDragon\n QtDragon, a touch screen GUI based on QtVCP using the PyQt5 library. It comes in two versions\n QtDragon and QtDragon_hd. They are very similar in features but QtDragon_hd is made for larger\n monitors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 36 / 1288\n \n Figura 2.8: QtDragon, a touch screen GUI based on QtVCP\n \n QtPlasmaC\n QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP using the PyQt5 library. It comes\n in three aspect ratios, 16:9, 4:3, and 9:16.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 37 / 1288\n \n Figura 2.9: QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP\n \n 2.2.4. User Interfaces\n These User interfaces are a way to interact with LinuxCNC outside of the graphical user interfaces.\n@@ -5155,41 +5155,41 @@\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 PyVCP\n PyVCP, a Python-based virtual control panel that can be added to the AXIS GUI. PyVCP only\n utilises virtual signals contained within the Hardware Abstraction Layer, such as the spindle-atspeed indicator or the Emergency Stop output signal, and has a simple no-frills appearance. This\n makes it an excellent choice if the user wants to add a Virtual Control Panel with minimal fuss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 38 / 1288\n \n Figura 2.10: PyVCP Example Embedded Into AXIS GUI\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 39 / 1288\n \n Figura 2.11: GladeVCP Example Embedded Into AXIS GUI\n \n QtVCP\n QtVCP, a PyQt5-based virtual control panel that can be added to most GUIs or run as a standalone\n panel. QtVCP has the advantage over PyVCP in that it is not limited to the display or control of\n HAL virtual signals, but can include other external interfaces outside LinuxCNC such as window\n or network events by extending with python code. QtVCP is also more flexible in how it may be\n configured to appear on the GUI with many special widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 40 / 1288\n \n Figura 2.12: QtVCP Example Embedded Into QtDragon GUI\n \n 2.2.6. Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -5205,15 +5205,15 @@\n lessons learned. A beautiful finish, tight tolerances and caution during the work are evidence of lessons\n learned. No machine nor program can replace human experience.\n Now that you start working with the LinuxCNC software, you have to put yourself in the shoes of an\n operator. You must be in the role of someone in charge of a machine. It\u2019s a machine that will wait\n for your commands and then execute the orders that you will give it. In these pages, we will give the\n explanations which will help you to become a good CNC operator with LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 41 / 1288\n \n 2.2.8. 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@@ -5256,15 +5256,15 @@\n cam detector is not employed with G64 Pn.\n The basic acceleration and deceleration described above is not complex and there is no compromise\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 For more information on the Trajectory Planner INI options see the Trajectory Section in the INI\n chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 42 / 1288\n \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 It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new\n@@ -5304,15 +5304,15 @@\n that a specification of G64 P0 has the same effect as G64 alone (above), which is necessary for\n backward compatibility for old G-code programs. See the G64 section of the G-code chapter.\n Blending without tolerance\n The controlled point will touch each specified movement at at least one point. The machine will\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 43 / 1288\n \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@@ -5347,15 +5347,15 @@\n the feed rate in units per second, the acceleration time is ta = F/A and the acceleration distance is\n da = F*ta /2. The deceleration time and distance are the same, making the critical distance d = da +\n dd = 2 * da = F2 /A.\n For example, for a feed rate of 1 inch per second and an acceleration of 10 inches/sec2 , the critical\n distance is 12 /10 = 1/10 = 0.1 inches.\n For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 44 / 1288\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@@ -5387,15 +5387,15 @@\n There are several options when doing manual tool changes. See the [EMCIO] section for information\n on configuration of these options. Also see the G28 and G30 section of the G-code chapter.\n \n 2.3.5. Coordinate Systems\n The Coordinate Systems can be confusing at first. Before running a CNC machine you must understand the basics of the coordinate systems used by LinuxCNC. In depth information on the LinuxCNC\n Coordinate Systems is in the Coordinate System section of this manual.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 45 / 1288\n \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@@ -5427,22 +5427,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 46 / 1288\n \n Figura 2.14: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 2.15: 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] [<INI-file>]\n@@ -5457,15 +5457,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 INI file\n \n 47 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 48 / 1288\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -r: Disable redirection of stdout and stderr to ~/linuxcnc_print.txt and\n@@ -5491,15 +5491,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 49 / 1288\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@@ -5515,15 +5515,15 @@\n two motors for one axis is better handled by kinematics rather than by a second linear axis.\n nota\n If the motion of mechanical components is not independent, as with hexapod machines, the\n RS274/NGC language and the canonical machining functions will still be usable, as long as the lower\n levels of control know how to control the actual mechanisms to produce the same relative motion of\n tool and workpiece as would be produced by independent axes. This is called kinematics.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 50 / 1288\n \n nota\n With LinuxCNC, the case of the XYYZ gantry machine with two motors for one axis is better handled\n by the kinematics than by an additional linear axis.\n \n@@ -5554,15 +5554,15 @@\n \n 2.5.2. Control and Data Components\n 2.5.2.1. Linear Axes\n The X, Y, and Z axes form a standard right-handed coordinate system of orthogonal linear axes. Positions of the three linear motion mechanisms are expressed using coordinates on these axes.\n The U, V and W axes also form a standard right-handed coordinate system. X and U are parallel, Y and\n V are parallel, and Z and W are parallel (when A, B, and C are rotated to zero).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 51 / 1288\n \n 2.5.2.2. Rotational Axes\n The rotational axes are measured in degrees as wrapped linear axes in which the direction of positive\n rotation is counterclockwise when viewed from the positive end of the corresponding X, Y, or Z-axis.\n By wrapped linear axis, we mean one on which the angular position increases without limit (goes\n@@ -5602,15 +5602,15 @@\n 1. If any of XYZ are moving, F is in units per minute in the XYZ cartesian system, and all other axes\n (ABCUVW) move so as to start and stop in coordinated fashion.\n 2. Otherwise, if any of UVW are moving, F is in units per minute in the UVW cartesian system, and\n all other axes (ABC) move so as to start and stop in coordinated fashion.\n 3. Otherwise, the move is pure rotary motion and the F word is in rotary units in the ABC pseudocartesian system.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 52 / 1288\n \n 2.5.2.6. Cooling\n Flood or droplets cooling can be enabled separately. RS274/NGC language stops them together. See\n section about cooling control.\n 2.5.2.7. Dwell\n@@ -5638,15 +5638,15 @@\n 2.5.2.11. Tool Carousel\n Zero or one tool is assigned to each slot in the tool carousel.\n 2.5.2.12. Tool Change\n A machining center may be commanded to change tools.\n 2.5.2.13. Pallet Shuttle\n The two pallets may be exchanged by command.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 53 / 1288\n \n 2.5.2.14. Speed Override\n The speed override buttons can be activated (they function normally) or rendered inoperative (they no\n longer have any effect). The RS274/NGC language has a command that activates all the buttons and\n another that disables them. See inhibition and activation speed correctors. See also here for further\n@@ -5675,15 +5675,15 @@\n 2.5.3.2. Block Delete Switch\n If the block delete switch is on, lines of G-code which start with a slash (the block delete character)\n are not interpreted. If the switch is off, such lines are interpreted. Normally the block delete switch\n should be set before starting the NGC program.\n 2.5.3.3. Optional Program Stop Switch\n If this switch is on and an M1 code is encountered, program execution is paused.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 54 / 1288\n \n 2.5.4. Tool Table\n A tool table is required to use the Interpreter. The file tells which tools are in which tool changer slots\n and what the size and type of each tool is. The name of the tool table is defined in the INI file:\n [EMCIO]\n@@ -5732,15 +5732,15 @@\n 0.0\n 0.0\n \n Comment\n G28 Home X\n G28 Home Y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 55 / 1288\n \n See the Parameters section for more information.\n \n 2.6. Lathe User Information\n This chapter will provide information specific to lathes.\n@@ -5771,30 +5771,30 @@\n There is also a built-in tool table editor in the AXIS display. The maximum number of entries in the\n tool table is 56. The maximum tool and pocket number is 99999.\n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines. Just ignore the parts of the tool table that\n don\u2019t pertain to your machine, or which you don\u2019t need to use. For more information on the specifics\n of the tool table format, see the Tool Table Section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 56 / 1288\n \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.16: Lathe Tool Orientations\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 57 / 1288\n \n 2.6.4. Tool Touch Off\n When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off\n window. If you have a tool turret you normally have Touch off to fixture selected when setting up your\n turret. When setting the material Z zero you have Touch off to material selected. For more information\n@@ -5820,15 +5820,15 @@\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 use the spindle nose or chuck face. This gives you the ability to change to a new tool and set its Z\n offset without having to reset all the tools.\n A typical session might be:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 58 / 1288\n \n 1. Home each axis if not homed.\n 2. Make sure no offsets are in effect for the current coordinate system.\n 3. Set the current tool with Tn M6 G43 where n is the tool number.\n 4. Select the Z axis in the Manual Control window.\n@@ -5861,15 +5861,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 59 / 1288\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@@ -5897,15 +5897,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 60 / 1288\n \n Figura 2.17: 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@@ -5913,28 +5913,28 @@\n same as long as we are moving in an X or Z direction only.\n \n Figura 2.18: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 61 / 1288\n \n Figura 2.19: 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 Figura 2.20: Turning Cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 62 / 1288\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@@ -5942,15 +5942,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 Figura 2.22: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 63 / 1288\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 Figura 2.23: Face Cut\n@@ -5971,15 +5971,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 64 / 1288\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@@ -5995,15 +5995,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 65 / 1288\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@@ -6028,15 +6028,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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 66 / 1288\n \n nota\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@@ -6062,15 +6062,15 @@\n Blowback start to minimise electrical noise to simplify construction\n A Machine torch is preferred but many have used hand torches.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 67 / 1288\n \n Dry Contacts for ArcOK\n Terminals for Arc On switch\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@@ -6114,15 +6114,15 @@\n A plasma table builder should connect one side of these pins to field power and the other to an input\n pin. This then allows the CNC controller to know when a valid arc is established and also when an\n arc is lost unexpectedly. There is a potential trap here when the input is a high impedance circuit\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 68 / 1288\n \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 resistor should be mounted in such a way that the generated heat does not damage anything whilst\n@@ -6162,15 +6162,15 @@\n of the material surface. This ohmic sensing circuit is operating in an extremely hostile environment\n so a number of failsafes need to be implemented to ensure safety of both the CNC electronics and\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 69 / 1288\n \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@@ -6192,15 +6192,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 70 / 1288\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@@ -6217,15 +6217,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 71 / 1288\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -6258,15 +6258,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 72 / 1288\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@@ -6297,15 +6297,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 73 / 1288\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@@ -6342,15 +6342,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 74 / 1288\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@@ -6380,15 +6380,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 75 / 1288\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@@ -6431,15 +6431,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 76 / 1288\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@@ -6490,15 +6490,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 77 / 1288\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@@ -6531,15 +6531,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 78 / 1288\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@@ -6577,15 +6577,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 79 / 1288\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@@ -6630,15 +6630,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 80 / 1288\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@@ -6678,29 +6678,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 81 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 82 / 1288\n \n Cap\u00edtulo 3\n \n Configuration Wizards\n 3.1. Stepper Configuration Wizard\n@@ -6711,15 +6711,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 83 / 1288\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@@ -6730,15 +6730,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 84 / 1288\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@@ -6750,15 +6750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 85 / 1288\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@@ -6786,15 +6786,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 86 / 1288\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@@ -6810,15 +6810,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 87 / 1288\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@@ -6827,15 +6827,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 88 / 1288\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@@ -6847,15 +6847,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 89 / 1288\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@@ -6866,15 +6866,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 90 / 1288\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@@ -6903,15 +6903,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 91 / 1288\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@@ -6934,15 +6934,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 92 / 1288\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@@ -6954,15 +6954,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 93 / 1288\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@@ -7006,29 +7006,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 94 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 95 / 1288\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@@ -7053,15 +7053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 96 / 1288\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@@ -7088,15 +7088,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 97 / 1288\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@@ -7119,15 +7119,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 98 / 1288\n \n 3.2.1. Step by Step Instructions\n \n Figura 3.13: PnCconf Splash\n \n@@ -7139,15 +7139,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 99 / 1288\n \n 3.2.3. Basic Machine Information\n \n Figura 3.14: PnCconf Basic\n \n@@ -7159,15 +7159,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 100 / 1288\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@@ -7214,15 +7214,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 101 / 1288\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@@ -7251,15 +7251,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 102 / 1288\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@@ -7270,15 +7270,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 103 / 1288\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@@ -7295,15 +7295,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 104 / 1288\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@@ -7314,15 +7314,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 105 / 1288\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@@ -7362,15 +7362,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 106 / 1288\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@@ -7386,15 +7386,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 107 / 1288\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@@ -7404,15 +7404,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 108 / 1288\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@@ -7436,49 +7436,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 109 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 110 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 111 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 112 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 113 / 1288\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@@ -7490,15 +7490,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 114 / 1288\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@@ -7544,15 +7544,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 115 / 1288\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@@ -7569,25 +7569,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 116 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 117 / 1288\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@@ -7598,15 +7598,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 118 / 1288\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@@ -7650,15 +7650,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 119 / 1288\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@@ -7697,30 +7697,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 120 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 121 / 1288\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@@ -7732,15 +7732,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 122 / 1288\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@@ -7755,25 +7755,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 123 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 124 / 1288\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@@ -7784,15 +7784,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 125 / 1288\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@@ -7824,15 +7824,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 126 / 1288\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@@ -7843,15 +7843,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 127 / 1288\n \n Cap\u00edtulo 4\n \n Configuration\n 4.1. Integrator Concepts\n@@ -7871,15 +7871,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 128 / 1288\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@@ -7913,15 +7913,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 129 / 1288\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@@ -7953,15 +7953,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 130 / 1288\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@@ -7979,15 +7979,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 131 / 1288\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@@ -8015,15 +8015,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 132 / 1288\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@@ -8060,15 +8060,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 133 / 1288\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@@ -8092,15 +8092,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 134 / 1288\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@@ -8122,15 +8122,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 135 / 1288\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@@ -8172,15 +8172,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n --logscale\n --text\n --show\n --nobase\n --verbose\n --nox\n@@ -8209,15 +8209,15 @@\n and they all may benefit from tuning for optimal latency.\n A primary goal in tuning the system for LinuxCNC is to reserve a CPU for the exclusive use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not interfere\n with LinuxCNC\u2019s access to that CPU.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 137 / 1288\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@@ -8253,15 +8253,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 138 / 1288\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@@ -8300,15 +8300,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 139 / 1288\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@@ -8354,15 +8354,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 140 / 1288\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@@ -8407,15 +8407,15 @@\n 4.4. INI Configuration\n 4.4.1.\n \n The INI File Components\n \n A typical INI file follows a rather simple layout that includes;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 141 / 1288\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@@ -8460,15 +8460,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 142 / 1288\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@@ -8512,15 +8512,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 143 / 1288\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -8563,15 +8563,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.\n \n INI File Sections\n \n 4.4.2.1.\n \n@@ -8611,15 +8611,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 % of\n the programmed feed rate.\n MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means 50 %\n of the programmed spindle speed. (This is used to set the minimum spindle speed.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 145 / 1288\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@@ -8654,15 +8654,15 @@\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 146 / 1288\n \n EMBED_TAB_NAME = GladeVCP demo\n \n EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\\} -u ./glad\n ./gladevcp/manual-example.ui\n@@ -8700,15 +8700,15 @@\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 FOAM = 1 - Any non-empty value (including \u201d0\u201d) causes axis to change the display for foam-cutter\n mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 147 / 1288\n \n GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of a\n sequence of axis letters and control characters, optionally preceded with a \u201d-\u201d sign:\n 1. The letters X, Y, Z specify translation along the named coordinate.\n 2. The letters A, B, C specify rotation about the corresponding axes X, Y, Z.\n@@ -8749,15 +8749,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 148 / 1288\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@@ -8799,15 +8799,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 149 / 1288\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@@ -8852,15 +8852,15 @@\n PARAMETER_FILE = myfile.var - The file located in the same directory as the INI file which contains\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 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.1 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 150 / 1288\n \n SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:)\n separated list of up to 10 directories to be searched when single-file subroutines are specified in\n G-code. These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified) and before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order\n that they are listed. The first matching subroutine file found in the search is used. Directories are\n@@ -8912,15 +8912,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 to\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 151 / 1288\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@@ -8962,15 +8962,15 @@\n [TASK] Section\n \n TASK = milltask - Specifies the name of the task executable. The task executable does various\n things, such as\n \u2022 communicate with the UIs over NML,\n \u2022 communicate with the realtime motion planner over non-HAL shared memory, and\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 152 / 1288\n \n \u2022 interpret G-code. Currently there is only one task executable that makes sense for 99.9 % of users,\n 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@@ -9010,15 +9010,15 @@\n HALFILE = LIB:halcheck.tcl [nopopup]\n \n nota\n The LIB:halcheck.tcl line should be the last [HAL]HALFILE. Specify the nopopup option to suppress\n the popup message and allow immediate starting. Connections made using a POSTGUI_HALFILE are\n not checked.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 153 / 1288\n \n TWOPASS = ON - Use twopass processing for loading HAL components. With TWOPASS processing,\n lines of files specified in [HAL]HALFILE are processed in two passes. In the first pass (pass0), all\n HALFILES are read and multiple appearances of loadrt and loadusr commands are accumulated.\n These accumulated load commands are executed at the end of pass0. This accumulation allows load\n@@ -9063,15 +9063,15 @@\n (first character is / or ~), a relative filename (first characters of filename are ./), or as a file in the\n INI file directory. If no executable file is found using these names, then the user search PATH is\n used to find the application.\n Examples:\n \u2022 Simulate inputs to HAL pins for testing (using sim_pin \u2014 a simple GUI to set inputs to parameters,\n unconnected pins, or signals with no writers):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 154 / 1288\n \n APP = sim_pin motion.probe-input halui.abort motion.analog-in-00\n \n \u2022 Invoke halshow with a previuosly saved watchlist. Since LinuxCNC sets the working directory to\n the directory for the INI file, you can refer to files in that directory (example: my.halshow):\n@@ -9117,15 +9117,15 @@\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 depth\n unless you have lots of very short segments. If during testing, you notice strange slowdowns and\n can\u2019t figure out where they come from, first try increasing this depth using the formula above.\n If you still see strange slowdowns, it may be because you have short segments in the program. If\n this is the case, try adding a small tolerance for Naive CAM detection. A good rule of thumb is this:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 155 / 1288\n \n # min_length ~= v_req * t_c\n # where:\n # v_req = desired velocity in UU / sec\n # t_c = servo period (seconds)\n@@ -9171,15 +9171,15 @@\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 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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 156 / 1288\n \n name more than once (e.g., X Y Y Z for a gantry machine). For the common trivkins kinematics,\n joint numbers are assigned in sequence according to the trivkins parameter coordinates=. So, for\n trivkins coordinates=xz, joint0 corresponds to X and joint1 corresponds to Z. See the kinematics\n man page ($ man kins) for information on trivkins and other kinematics modules.\n@@ -9222,15 +9222,15 @@\n 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 default\n (tpmod). Module parameters (tp_parms) may be included if supported by the named module. The\n setting may be overridden from the command line using the -t option ($ linuxcnc -h).\n NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.\n NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.11.\n \n 157 / 1288\n \n [KINS] Section\n \n@@ -9277,15 +9277,15 @@\n offsets:\n axis.<letter>.eoffset-enable\n axis.<letter>.eoffset-count\n axis.<letter>.eoffset-scale\n \n See the chapter: External Axis Offsets for usage information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.13.\n \n 158 / 1288\n \n [JOINT_<num>] Sections\n \n@@ -9323,15 +9323,15 @@\n COMP_FILE = file.extension - The compensation file consists of map of position information for the\n joint. Compensation file values are in machine units. Each set of values are are on one line separated by a space. The first value is the nominal value (the commanded position). The second and\n third values depend on the setting of COMP_FILE_TYPE. Points in between nominal values are interpolated between the two nominals. Compensation files must start with the smallest nominal and be\n in ascending order to the largest value of nominals. File names are case sensitive and can contain\n letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.\n If COMP_FILE is specified for a joint, BACKLASH is not used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 159 / 1288\n \n COMP_FILE_TYPE = 0 or 1 - Specifies the type of compensation file. The first value is the nominal\n (commanded) position for both types.\n A COMP_FILE_TYPE must be specified for each COMP_FILE.\n \u2022 Type 0: The second value specifies the actual position as the joint is moving in the positive direction (increasing value). The third value specifies the actual position as the joint is moving in the\n@@ -9373,15 +9373,15 @@\n produce a ramp of error trip points. You could think of this as a graph where one dimension is speed\n and the other is permitted following error. As speed increases the amount of following error also\n increases toward the FERROR value.\n FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference\n between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI\n file, velocity-proportional following errors are used. Here, the maximum allowable following error is\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 160 / 1288\n \n proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and\n proportionally smaller following errors for slower speeds. The maximum allowable following error\n will always be greater than MIN_FERROR. This prevents small following errors for stationary axes\n from inadvertently aborting motion. Small following errors will always be present due to vibration,\n@@ -9421,15 +9421,15 @@\n Additional sequences may be specified with numbers increasing by 1 (in absolute value). Skipping\n of sequence numbers is not allowed. If a HOME_SEQUENCE is omitted, the joint will not be homed\n by the \u201dHome All\u201d function. More than one joint can be homed at the same time by specifying the\n same sequence number for more than one joint. A negative sequence number is used to defer the\n final move for all joints having that (negative or positive) sequence number. For additional info, see:\n HOME SEQUENCE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 161 / 1288\n \n VOLATILE_HOME = 0 - When enabled (set to 1) this joint will be unhomed if the Machine Power is\n off or if E-Stop is on. This is useful if your machine has home switches and does not have position\n feedback such as a step and direction driven machine.\n These parameters are relevant to joints controlled by servos.\n@@ -9462,15 +9462,15 @@\n for the motor amplifier. The units on the I gain are volts per machine unit second, e.g.,\n D = 0 - The derivative gain for the joint servo. The value multiplies the difference between the\n current and previous errors, resulting in a contribution to the computed voltage for the motor amplifier. The units on the D gain are volts per machine unit per second, e.g.,\n FF0 = 0 - The 0th order feed forward gain. This number is multiplied by the commanded position,\n resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF0\n gain are volts per machine unit, e.g.,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 162 / 1288\n \n FF1 = 0 - The 1st order feed forward gain. This number is multiplied by the change in commanded\n position per second, resulting in a contribution to the computed voltage for the motor amplifier. The\n units on the FF1 gain are volts per machine unit per second, e.g.,\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@@ -9510,15 +9510,15 @@\n -10\n -9\n \n Measured\n -9.93\n -8.83\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 163 / 1288\n \n Cuadro 4.1: (continued)\n Raw\n 0\n 1\n@@ -9557,15 +9557,15 @@\n section. For stepper systems, this is the number of step pulses issued per machine unit. For a linear\n joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is\n equal to the setting in ANGULAR_UNITS. For servo systems, this is the number of feedback pulses per\n machine unit. A second number, if specified, is ignored.\n For example, on a 1.8 degree stepper motor with half-stepping, and 10 revs/inch gearing, and desired\n machine units of inch, we have:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 164 / 1288\n \n nota\n Old INI and HAL files used INPUT_SCALE for this value.\n \n ENCODER_SCALE = 20000 (Optionally used in PnCconf built configs) - Specifies the number of pulses\n@@ -9605,15 +9605,15 @@\n must not be run in reverse. In this context \u201dmax\u201d refers to the absolute magnitude of the spindle\n speed.\n MIN_REVERSE_VELOCITY = 3000 \u0300This setting is equivalent to MIN_FORWARD_VELOCITY but for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted.\n INCREMENT = 200 Sets the step size for spindle speed increment / decrement commands. This can\n have a different value for each spindle. This setting is effective with AXIS and Touchy but note that\n some control screens may handle things differently.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 165 / 1288\n \n HOME_SEARCH_VELOCITY = 100 - FIXME: Spindle homing not yet working. Sets the homing speed\n (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the\n spindle index is located, at which point the spindle position will be set to zero. Note that it makes\n no sense for the spindle home position to be any value other than zero, and so there is no provision\n@@ -9654,15 +9654,15 @@\n absolute encoders. Homing seems simple enough - just move each joint to a known location, and set\n LinuxCNC\u2019s internal variables accordingly. However, different machines have different requirements,\n and homing is actually quite complicated.\n nota\n While it is possible to use LinuxCNC without homing switches/home procedures or limit switches, It\n defeats the extra security of the soft limits.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 166 / 1288\n \n 4.5.2. Prerequisite\n Homing relies on some fundamental machine assumptions.\n The negative and positive directions are based on Tool Movement which can be different from the\n actual machine movement. I.e., on a mill typically the table moves rather then the tool.\n@@ -9689,15 +9689,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 167 / 1288\n \n Figura 4.6: Demonstrative Separate Switch Layout\n A is the negative soft limit\n B is the G53 machine coordinate Origin\n C is the home switch trip point\n@@ -9716,15 +9716,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 168 / 1288\n \n Figura 4.7: Demonstrative Shared Switch Layout\n A is the negative soft limit.\n B is the G53 machine coordinate Origin.\n C is the home switch trip point shared with (-L) minimum limit trip.\n@@ -9742,21 +9742,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 169 / 1288\n \n Figura 4.8: Homing Sequences\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 170 / 1288\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@@ -9810,15 +9810,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 171 / 1288\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@@ -9850,15 +9850,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 172 / 1288\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@@ -9894,15 +9894,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 173 / 1288\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@@ -9945,15 +9945,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 174 / 1288\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@@ -9999,15 +9999,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 175 / 1288\n \n nota\n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale,\n joint.N.counts).\n \n@@ -10038,15 +10038,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 176 / 1288\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@@ -10077,15 +10077,15 @@\n iocontrol.0.tool-prepared (bit, in) Should be driven TRUE when a tool prepare is completed.\n iocontrol.0.user-enable-out (bit, out) FALSE when an internal E-stop condition exists\n iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-stop 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 aborttool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until emcabort-ack is raised.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 177 / 1288\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 operations are executed.\n start-change-ack: (bit, in) acknowledgment line for start-change.\n@@ -10121,15 +10121,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 178 / 1288\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@@ -10164,15 +10164,15 @@\n [DISPLAY]\n DISPLAY = axis\n LATHE = 1\n ...\n [KINS]\n KINEMATICS = trivkins\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 179 / 1288\n \n JOINTS = 3\n [TRAJ]\n COORDINATES = X Z\n ...\n@@ -10214,15 +10214,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 180 / 1288\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@@ -10321,15 +10321,15 @@\n \n Leadscrew\n Teeth\n \n Leadscrew\n Pitch\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Axis\n \n Steps/Rev.\n \n 181 / 1288\n \n@@ -10379,15 +10379,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 182 / 1288\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@@ -10425,15 +10425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -10479,15 +10479,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 183 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 184 / 1288\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@@ -10523,15 +10523,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 the code gets executed every few tens of microseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 185 / 1288\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@@ -10565,15 +10565,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 186 / 1288\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@@ -10603,15 +10603,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 187 / 1288\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@@ -10657,15 +10657,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 188 / 1288\n \n 4.11. Filter Programs\n 4.11.1. Introduction\n Most of LinuxCNC\u2019s screens have the ability to send loaded files through a filter program or use the\n filter program to make G-code. Such a filter can do any desired task: Something as simple as making\n@@ -10687,15 +10687,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 189 / 1288\n \n Figura 4.9: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -10715,15 +10715,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 190 / 1288\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@@ -10766,15 +10766,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 191 / 1288\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -10796,15 +10796,15 @@\n else:\n path = None\n app = QApplication(sys.argv)\n w = CustomDialog(path=path)\n w.show()\n sys.exit( app.exec_() )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 192 / 1288\n \n Cap\u00edtulo 5\n \n HAL (Hardware Abstraction Layer)\n 5.1. HAL Introduction\n@@ -10828,15 +10828,15 @@\n of what CNC machines need to do, or space craft.\n Any machine controller needs to know:\n about its internal state and how this maps to the environment (machine coordinates, state of switches/regulators),\n how actuators are expected to change that state,\n how allow for updates of the internal state by sensors (encoders, probes).\n The HAL layer consists of parts (referred to as \u201dcomponents\u201d) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 193 / 1288\n \n are connected with each other, e.g., to update position data or have the planning algorithm tell the\n motors about the next step.\n may know how to communicate with hardware,\n may simply process incoming data and provide data outputs to other components,\n@@ -10869,15 +10869,15 @@\n from within C/C++ programs,\n but none of these interfaces are HAL itself.\n HAL itself is not a program, it consists of one or more lists of loaded programs (the components) that\n are periodically executed (in strict sequence), and an area of shared-memory that these components\n use to interchange data. The main HAL script runs only once at machine startup, setting up the realtime threads and the shared-memory locations, loading the components and setting up the data links\n between them (the \u201dsignals\u201d and \u201dpins\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 194 / 1288\n \n In principle multiple machines could share a common HAL to allow them to inter-operate, however\n the current implementation of LinuxCNC is limited to a single interpreter and a single Task module.\n Currently this is almost always a G-code interpreter and \u201dmilltask\u201d (which was found to also work well\n for lathes and adequately for robots) but these modules are selectable at load-time. With an increasing\n@@ -10918,15 +10918,15 @@\n number of components that know a lot about CNC and present that information via pins. There are\n pins representing\n static information about the machine\n the current state of the machine\n \u2022 end switches\n \u2022 positions counted by steppers or as measured by encoders\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 195 / 1288\n \n recipients for instructions\n \u2022 manual control of machine position (\u201djogging\u201d)\n \u2022 positions that stepper motors should take next\n In a analogy to electronic cables, pins can be wired, so the value changing in one pin serves as input to\n@@ -10966,15 +10966,15 @@\n \u2022 developing over time.\n \n 5.1.3. HAL System Design\n HAL is based on traditional system design techniques. HAL is based on the same principles that\n are used to design hardware circuits and systems, so it is useful to examine those principles first.\n Any system, including a CNC machine, consists of interconnected components. For the CNC machine,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 196 / 1288\n \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 aselect, mount and wire these pieces together to make a complete system.\n \n@@ -10996,15 +10996,15 @@\n black boxes. During the design stage, he decides which parts he is going to use - steppers or servos,\n which brand of servo amp, what kind of limit switches and how many, etc. The integrator\u2019s decisions\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 197 / 1288\n \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 5.1.3.2. Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n@@ -11030,15 +11030,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.3.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 198 / 1288\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@@ -11063,15 +11063,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 199 / 1288\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. + + Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be meant to\n be connected to a physical pin on the device to communicate with it, hence the names. But most\n often this is not the case. Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements\n@@ -11112,15 +11112,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 200 / 1288\n \n Function\n Real hardware components tend to act immediately on their inputs. For example, if the input\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@@ -11162,15 +11162,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 201 / 1288\n \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@@ -11185,15 +11185,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 202 / 1288\n \n Figura 5.3: HAL Configuration Window\n \n 5.2.1.1.\n \n@@ -11213,15 +11213,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. A negative position\n indicates the position with respect to the end of the thread. For example 1 is start of thread, -1 is the\n end of the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 203 / 1288\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@@ -11293,15 +11293,15 @@\n if the component has a name option.\n to wait for the program to exit\n to ignore the program return value (with -w)\n name a component when it is a valid option for that component.\n \n Syntax and Examples of loadusr\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 204 / 1288\n \n loadusr <component> <options>\n loadusr halui\n loadusr -Wn spindle gs2_vfd -n spindle\n \n@@ -11326,15 +11326,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 205 / 1288\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\n the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -11360,15 +11360,15 @@\n \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 Syntax and Examples of setp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 206 / 1288\n \n setp <pin/parameter-name> <value>\n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6.\n@@ -11411,15 +11411,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 <signame> and the data type of <type>.\n Type must be bit, s32, u32 or float. Error if <signame> already exists.\n Syntax and Examples of newsig\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 207 / 1288\n \n newsig <signame> <type>\n newsig Xstep bit\n \n More information can be found in the HAL manual or the man pages for halrun.\n@@ -11460,15 +11460,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 208 / 1288\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@@ -11517,15 +11517,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.2.\n \n 209 / 1288\n \n not\n \n@@ -11581,15 +11581,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.4.\n \n 210 / 1288\n \n xor2\n \n@@ -11644,15 +11644,15 @@\n \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 Syntax for loading component weighted_sum\n loadrt weighted_sum wsum_sizes=size[,size,...]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 211 / 1288\n \n Creates groups of \u0300 \u0300weighted_sum \u0300 \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 to servo thread\n addf process_wsums servo-thread\n@@ -11741,15 +11741,15 @@\n loadrt and2 count=3\n \n Configurations are more readable if you specify with the names= option for components where it is\n supported, e.g.:\n Example load command resulting in explicitly named components aa, ab, ac.\n loadrt and2 names=aa,ab,ac\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 212 / 1288\n \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@@ -11790,15 +11790,15 @@\n use a derivative component to estimate the velocities and accelerations on each (x,y,z) coordinate,\n using the count= method will give arcane component names like ddt.0, ddt.1, ddt.2, etc.\n Alternatively, using the names= option like:\n loadrt ddt names=xvel,yvel,zvel\n ...\n loadrt ddt names=xaccel,yaccel,zaccel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 213 / 1288\n \n results in components sensibly named xvel, yvel, zvel, xaccel, yaccel, zaccel.\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@@ -11839,15 +11839,15 @@\n the simple names= (or count=) parameters accepted by the HAL Component Generator (halcompile)\n are expected. More complex parameter items included in specialized LinuxCNC components may not\n be handled properly.\n A .hal file may be excluded from TWOPASS processing by including a magic comment line anywhere in\n the .hal file. The magic comment line must begin with the string: #NOTWOPASS. Files specified with this\n magic comment are sourced by halcmd using the -k (keep going if failure) and -v (verbose) options.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 214 / 1288\n \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@@ -11881,15 +11881,15 @@\n 5.4. HAL Tutorial\n 5.4.1. Introduction\n Configuration moves from theory to device \u2014 HAL device that is. For those who have had just a bit of\n computer programming, this section is the Hello World of the HAL.\n halrun can be used to create a working system. It is a command line or text file tool for configuration\n and tuning. The following examples illustrate its setup and operation.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 215 / 1288\n \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@@ -11927,15 +11927,15 @@\n Linux. Unfortunately, each RTOS does things a little differently.\n To address these differences, the LinuxCNC team came up with RTAPI, which provides a consistent\n way for programs to talk to the RTOS. If you are a programmer who wants to work on the internals\n of LinuxCNC, you may want to study linuxcnc/src/rtapi/rtapi.h to understand the API. But if you are\n a normal person, all you need to know about RTAPI is that it (and the RTOS) needs to be loaded into\n the memory of your computer before you do anything with HAL.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 216 / 1288\n \n 5.4.3. A Simple Example\n 5.4.3.1. Loading a component\n For this tutorial, we are going to assume that you have successfully installed the Live CD and, if using\n a RIP 1 , invoke the rip-environment script to prepare your shell. In that case, all you need to do is load\n@@ -11985,15 +11985,15 @@\n step. The RT under Type indicates that siggen is a realtime component. The User under Type indicates\n it is a non-realtime component.\n Next, let\u2019s see what pins siggen makes available:\n Show Pins\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 217 / 1288\n \n halcmd: show pin\n Component Pins:\n Owner\n Type\n@@ -12088,15 +12088,15 @@\n to any threads, so users is zero 2 .\n 5.4.3.3. Making realtime code run\n To actually run the code contained in the function siggen.0.update, we need a realtime thread. The\n component called threads that is used to create a new thread. Lets create a thread called \u201dtest-thread\u201d\n with a period of 1 ms (1,000 \u00b5s or 1,000,000 ns):\n 2 CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 218 / 1288\n \n halcmd: loadrt threads name1=test-thread period1=1000000\n \n Let\u2019s see if that worked:\n Show Threads\n@@ -12191,15 +12191,15 @@\n Owner\n Type Dir\n \n Value\n \n Name\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12312,15 +12312,15 @@\n Most of what we have done with halcmd so far has simply been viewing things with the show command.\n However two of the commands actually changed things. As we design more complex systems with HAL,\n we will use many commands to configure things just the way we want them. HAL has the memory of\n an elephant, and will retain that configuration until we shut it down. But what about next time? We\n don\u2019t want to manually enter a bunch of commands every time we want to use the system.\n Saving the configuration of the entire HAL with a single command.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 220 / 1288\n \n halcmd: save\n # components\n loadrt threads name1=test-thread period1=1000000\n loadrt siggen\n@@ -12356,15 +12356,15 @@\n file saved.hal to add it there).\n 5.4.3.8. Removing HAL from memory\n If an unexpected shutdown of a HAL session occurs you might have to unload HAL before another\n session can begin. To do this type the following command in a terminal window.\n Removing HAL\n halrun -U\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.4.4.\n \n 221 / 1288\n \n Halmeter\n \n@@ -12406,27 +12406,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 222 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 223 / 1288\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@@ -12500,15 +12500,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12674,15 +12674,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 225 / 1288\n \n halcmd: show sig\n Signals:\n Type\n float\n@@ -12761,15 +12761,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 226 / 1288\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@@ -12844,15 +12844,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 227 / 1288\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@@ -12887,24 +12887,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 228 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 229 / 1288\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@@ -12916,33 +12916,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 230 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 231 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 232 / 1288\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@@ -12953,15 +12953,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 233 / 1288\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@@ -12969,29 +12969,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 234 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 235 / 1288\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@@ -13001,15 +13001,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 236 / 1288\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@@ -13018,15 +13018,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 237 / 1288\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@@ -13035,15 +13035,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 238 / 1288\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@@ -13055,15 +13055,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 239 / 1288\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@@ -13125,15 +13125,15 @@\n pin. From the direction arrow you can see that the button is and output and the or2.0.in0 is an input.\n 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\n Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 240 / 1288\n \n tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is\n best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to\n 1. load the hal_manualtoolchange component,\n 2. then send the iocontrol tool change to the hal_manualtoolchange change and\n@@ -13173,15 +13173,15 @@\n Make the connections.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 241 / 1288\n \n In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per\n minute (IPM) that we get from the ddt.0.out.\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@@ -13195,15 +13195,15 @@\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 a signal changes.\n In this example we have a servo motor driving a lathe spindle. If we just used the commanded\n spindle speeds on the servo it will try to go from present speed to commanded speed as fast as it\n can. This could cause a problem or damage the drive. To slow the rate of change we can send the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 242 / 1288\n \n spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to\n new settings more slowly.\n Three built-in components that limit a signal are:\n limit2 limits the range and first derivative of a signal.\n@@ -13242,15 +13242,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 243 / 1288\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@@ -13264,15 +13264,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 244 / 1288\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@@ -13311,15 +13311,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 245 / 1288\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@@ -13358,15 +13358,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 246 / 1288\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@@ -13405,15 +13405,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 247 / 1288\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@@ -13443,15 +13443,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 - Receives and processes motion commands\n motion-controller - Runs the LinuxCNC motion controller\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 248 / 1288\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@@ -13489,15 +13489,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 249 / 1288\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@@ -13535,15 +13535,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 non-realtime I/O commands via NML, interacts with HAL .\n iocontrol\u2019s HAL pins are turned on and off in non-realtime context. If you have strict timing requirements or simply need more I/O, consider using the realtime synchronized I/O provided by motion\n instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 250 / 1288\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 exists.\n@@ -13573,15 +13573,15 @@\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 ini.L.max_acceleration - (float, in) [AXIS_L]MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 251 / 1288\n \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 and max_acceleration pins are sampled when the machine is on and the motion_state is free (homing\n@@ -13613,15 +13613,15 @@\n If you do not find the man page or the name of the man page is already taken by another UNIX tool\n with the LinuxCNC man page residing in another section, then try to explicitly specify the section, as\n in man _sectionno_ axis, with sectionno = 1 for non-realtime and 9 for realtime components.\n nota\n See also the Man Pages section of the docs main page or the directory listing. To search in the man\n pages, use the UNIX tool apropos.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 252 / 1288\n \n 5.7.1.1. User Interfaces (non-realtime)\n axis\n axis-remote\n gmoccapy\n@@ -13702,15 +13702,15 @@\n gs2_vfd\n hy_gt_vfd\n \n Communicate with Mesa ethernet cards\n HAL non-realtime component for Automation Direct GS2 VFDs\n HAL non-realtime component for Huanyang GT-series VFDs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n hy_vfd\n mb2hal\n mitsub_vfd\n monitorxhc-hb04\n pi500_vfd\n pmx485\n@@ -13793,15 +13793,15 @@\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 sserial\n hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics\n HostMot2 Smart-Serial remote cards\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n thc\n \n 254 / 1288\n \n Torch Height Control using a Mesa THC card or any analog to velocity input\n \n@@ -13884,15 +13884,15 @@\n Toggles between a specified number of output bits\n Inverter\n One-shot pulse generator\n Two-input OR gate\n 8-bit binary match detector.\n IEC TOF timer - delay falling edge on a signal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 255 / 1288\n \n toggle\n toggle2nist\n ton\n timedelay\n@@ -13985,15 +13985,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 256 / 1288\n \n bin2gray\n Converts a number to the gray-code representation\n bitslice\n Converts an unsigned-32 input into individual bits\n@@ -14061,15 +14061,15 @@\n \n Accepts NML motion commands, interacts with HAL in realtime\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 257 / 1288\n \n 5.7.1.9. Motor control (Realtime)\n at_pid\n bldc\n clarke2\n@@ -14140,15 +14140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -14199,15 +14199,15 @@\n rtapi_exit.3rtapi\n rtapi_get_clocks.3rtapi\n rtapi_get_msg_level.3rtapi\n rtapi_get_time.3rtapi\n \n 258 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 259 / 1288\n \n rtapi_inb.3rtapi\n rtapi_init.3rtapi\n rtapi_module_param.3rtapi\n RTAPI_MP_ARRAY_INT.3rtapi\n@@ -14251,21 +14251,21 @@\n velocity mode, it drives a motor at the commanded speed, while obeying velocity and acceleration limits. It is a realtime component only, and depending on CPU speed, etc., is capable of maximum step\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 5.19: Step Pulse Generator Block Diagram position mode\n \n 260 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 261 / 1288\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type=<type-array> [ctrl_type=<ctrl_array>]\n \n <type-array>\n@@ -14314,15 +14314,15 @@\n (bit) stepgen. \u0300\n __<chan>__.phase-C \u0300 - Phase C output (step types 3-14 only).\n (bit) stepgen. \u0300\n __<chan>__.phase-D \u0300 - Phase D output (step types 5-14 only).\n (bit) stepgen. \u0300\n __<chan>__.phase-E \u0300 - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 262 / 1288\n \n 5.8.1.2. Parameters\n (float) stepgen. \u0300\n __<chan>__.position-scale \u0300 - Steps per position unit. This parameter is used for\n both output and feedback.\n@@ -14371,15 +14371,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)\u2019. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 263 / 1288\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@@ -14391,33 +14391,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 5.21: Two-and-Three-Phase Step Types\n \n 264 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 265 / 1288\n \n Figura 5.22: Four-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 266 / 1288\n \n Figura 5.23: Five-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 267 / 1288\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@@ -14452,15 +14452,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 <config-array> is not not specified, no PWM generator will be installed. The maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator\n is independent, but all are updated by the same function(s), at the same time. In the descriptions that\n follow, <chan> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 268 / 1288\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@@ -14504,15 +14504,15 @@\n to zero when disabled, regardless of this setting).\n (float) pwmgen. \u0300\n __<chan>__.max-dc \u0300 - Maximum duty cycle, between 0.0 and 1.0.\n (float) pwmgen. \u0300\n __<chan>__.curr-dc \u0300 - Current duty cycle - after all limiting and rounding (read\n only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 269 / 1288\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@@ -14533,15 +14533,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 270 / 1288\n \n Figura 5.24: Encoder Counter Block Diagram\n Loading Encoder\n halcmd: loadrt encoder [num_chan=<counters>]\n \n@@ -14555,15 +14555,15 @@\n \n 5.8.3.1. Pins\n encoder._<chan>_.counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true,\n the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is\n useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in\n quadrature mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 271 / 1288\n \n encoder._<chan>_.missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index.\n This allows a single IO pin to provide both position and index information. If the encoder wheel has\n 58 teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then\n the position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should\n@@ -14602,15 +14602,15 @@\n pulse.\n encoder._<chan>_.reset (bit, In) - When True, force counts and position to zero immediately.\n encoder._<chan>_.velocity (float, Out) - Velocity in scaled units per second. encoder uses an\n 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 is\n 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 272 / 1288\n \n encoder._<chan>_.x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it only\n counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for\n some jogwheels.\n 5.8.3.2. Parameters\n@@ -14626,15 +14626,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 273 / 1288\n \n Figura 5.25: PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=<loops>] [debug=1]\n \n@@ -14646,15 +14646,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 274 / 1288\n \n (float) pid. \u0300\n __<loopnum>__.command \u0300 - The desired position, as commanded by another system\n component.\n (float) pid. \u0300\n@@ -14691,15 +14691,15 @@\n (float) pid.<loopnum>.deadband - Amount of error that will be ignored\n (float) pid.<loopnum>.maxerror - Limit on error\n (float) pid.<loopnum>.maxerrorI - Limit on error integrator\n (float) pid.<loopnum>.maxerrorD - Limit on error derivative\n (float) pid.<loopnum>.maxcmdD - Limit on command derivative\n (float) pid.<loopnum>.maxcmdDD - Limit on command 2nd derivative\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 275 / 1288\n \n (float) pid.<loopnum>.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.<loopnum>.errorI - Integral of error.\n@@ -14732,15 +14732,15 @@\n __<chan-num>__.phase-A \u0300 - Quadrature output.\n (bit) sim-encoder. \u0300\n __<chan-num>__.phase-B \u0300 - Quadrature output.\n (bit) sim-encoder. \u0300\n __<chan-num>__.phase-Z \u0300 - Index pulse output.\n When .speed is positive, .phase-A leads .phase-B.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 276 / 1288\n \n 5.8.5.2. Parameters\n (u32) sim-encoder. \u0300\n __<chan-num>__.ppr \u0300 - Pulses Per Revolution.\n (float) sim-encoder. \u0300\n@@ -14777,15 +14777,15 @@\n 5.8.6.1. Pins\n Each individual filter has two pins.\n (bit) debounce. \u0300\n __<G>__.__<F>__.in \u0300 - Input of filter <F> in group <G>.\n (bit) debounce. \u0300\n __<G>__.__<F>__.out \u0300 - Output of filter <F> in group <G>.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 277 / 1288\n \n 5.8.6.2. Parameters\n Each group of filters has one parameter6 .\n (s32) debounce. \u0300\n __<G>__.delay \u0300 - Filter delay for all filters in group <G>.\n@@ -14823,15 +14823,15 @@\n (float) siggen. \u0300\n __<chan>__.triangle \u0300 - Triangle wave output.\n (float) siggen. \u0300\n __<chan>__.square \u0300 - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 278 / 1288\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. \u0300\n __<chan>__.frequency \u0300 - Sets the frequency in Hertz, default value is 1 Hz.\n@@ -14909,15 +14909,15 @@\n 0\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 279 / 1288\n \n Cuadro 5.22: (continued)\n Bit 4\n 0\n 0\n@@ -15100,15 +15100,15 @@\n function is 0xa. The hexadecimal prefix is 0x.\n \n 5.9. HAL Component Generator\n 5.9.1. Introduction\n This section introduces to the compilation HAL components, i.e. the addition of some machinists\u2019\n knowledge on how to deal with the machine. It should be noted that such components do not ne-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 280 / 1288\n \n cessarily deal with the hardware directly. They often do, but not necessarily, e.g. there could be a\n component to convert between imperial and metric scales, so this section does not require to dive\n into the interaction with hardware.\n Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions\n@@ -15148,15 +15148,15 @@\n loadrt threads name1=servo-thread period1=1000000\n loadrt ddt\n addf ddt.0 servo-thread\n \n More information on loadrt and addf can be found in the HAL Basics.\n To test your component you can follow the examples in the HAL Tutorial.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 281 / 1288\n \n 5.9.4. Definitions\n component - A component is a single real-time module, which is loaded with halcmd loadrt. One\n .comp file specifies one component. The component name and file name must match.\n instance - A component can have zero or more instances. Each instance of a component is created\n@@ -15190,15 +15190,15 @@\n option OPT (VALUE);\n variable CTYPE STARREDNAME ([SIZE]);\n description DOC;\n examples DOC;\n notes DOC;\n see_also DOC;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 282 / 1288\n \n license LICENSE;\n author AUTHOR;\n include HEADERFILE;\n Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate\n@@ -15249,15 +15249,15 @@\n MAXSIZE : CONDSIZE - A number that gives the maximum size of the array, followed by an expression involving the variable personality and which always evaluates to less than MAXSIZE. When the\n array is created its size will be CONDSIZE.\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 283 / 1288\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@@ -15295,15 +15295,15 @@\n items for numbered instances are named component-name.<num>.item-name.\n option default_count number - (default: 1) Normally, the module parameter count defaults to 1. If\n specified, the count will default to this value instead.\n 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 284 / 1288\n \n 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 \u2018int rtapi_app_main(void);\u2018\n@@ -15349,15 +15349,15 @@\n Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename .\n option tpmod yes - (default: no)\n Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename .\n If an option\u2019s VALUE is not specified, then it is equivalent to specifying option \u2026 yes.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 285 / 1288\n \n 5.9.7.3. License and Authorship\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 \u2018license \u201dGPL\u201d; // indicates GPL v2 or later\u2018\n@@ -15390,15 +15390,15 @@\n comp_id\n fperiod\n rtapi_app_main\n rtapi_app_exit\n extra_setup\n extra_cleanup\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 286 / 1288\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@@ -15441,15 +15441,15 @@\n component, to allow for a variable number of input pins to each logic gate and to allow for a selection\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 287 / 1288\n \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@@ -15487,15 +15487,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 288 / 1288\n \n 5.9.14. Compiling non-realtime components outside the source tree\n halcompile can process, compile, install, and document non-realtime components:\n halcompile non-rt-example.comp\n halcompile --compile non-rt-example.comp\n@@ -15535,15 +15535,15 @@\n pin in float theta;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n #include <rtapi_math.h>\n FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 289 / 1288\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 <asm/io.h>. It\n@@ -15588,15 +15588,15 @@\n \n 5.9.15.4. hal_loop\n component hal_loop;\n pin out float example;\n \n This fragment of a component illustrates the use of the hal_ prefix in a component name.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 290 / 1288\n \n loop is a common name, and the hal_ prefix avoids potential name collisions with other unrelated\n software. For example, on RTAI realtime systems realtime code runs in the kernel, so if the component\n were named just loop it could easily conflict with the standard loop kernel module.\n When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by\n@@ -15640,15 +15640,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 291 / 1288\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@@ -15695,15 +15695,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 292 / 1288\n \n set(&out1);\n unset(&out2);\n }else if (in >0){\n unset(&out2);\n@@ -15743,15 +15743,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 293 / 1288\n \n addf, alias,\n delf, delsig,\n getp, gets\n ptype,\n@@ -15802,15 +15802,15 @@\n not a list.\n When the value could contain special characters (quote characters, curly-brace characters, embedded\n whitespace, and other characters that have special meaning in Tcl) then it 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 294 / 1288\n \n [HOSTMOT2]\n DRIVER=hm2_eth\n IPADDR=\u201d10.10.10.10\u201d\n BOARD=7i92\n@@ -15848,15 +15848,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 295 / 1288\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@@ -15895,15 +15895,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 296 / 1288\n \n 5.11. HAL User Interface\n 5.11.1. Introduction\n Halui is a HAL based user interface for LinuxCNC, it connects HAL pins to NML commands. Most of\n the functionality (buttons, indicators etc.) that is provided by a traditional GUI (AXIS, GMOCCAPY,\n@@ -15951,15 +15951,15 @@\n IN FALSE halui.mdi-command-02 <== call-mysub\n ...\n \n When a halui MDI pin is set (pulsed) true, halui will send the MDI command defined in the INI. This\n will not always succeed depending on the current operating mode (e.g., while in AUTO halui can\u2019t\n successfully send MDI commands).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 297 / 1288\n \n 5.11.3. Example Configuration\n An example sim config (configs/sim/axis/halui_pyvcp/halui.ini) is included in the distribution.\n \n 5.11.4. Halui Pin Reference\n@@ -15985,15 +15985,15 @@\n halui.feed-override.scale (float, in) - pin for setting the scale for increase and decrease of feedoverride.\n halui.feed-override.value (float, out) - current FO value\n 5.11.4.4. Mist\n halui.mist.is-on (bit, out) - indicates mist is on\n halui.mist.off (bit, in) - pin for requesting mist off\n halui.mist.on (bit, in) - pin for requesting mist on\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 298 / 1288\n \n 5.11.4.5. Flood\n halui.flood.is-on (bit, out) - indicates flood is on\n halui.flood.off (bit, in) - pin for requesting flood off\n halui.flood.on (bit, in) - pin for requesting flood on\n@@ -16018,15 +16018,15 @@\n setting counts directly.\n halui.max-velocity.decrease (bit, in) - pin for decreasing max velocity\n halui.max-velocity.increase (bit, in) - pin for increasing max velocity\n halui.max-velocity.scale (float, in) - the amount applied to the current maximum velocity with each\n transition from off to on of the increase or decrease pin in machine units per second.\n halui.max-velocity.value (float, out) - is the maximum linear velocity in machine units per second.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 299 / 1288\n \n 5.11.4.10. MDI\n halui.mdi-command-<nn> (bit, in) - halui will try to send the MDI command defined in the INI.\n <nn> is a two digit number starting at 00.\n If the command succeeds then it will place LinuxCNC in the MDI mode and then back to Manual\n@@ -16063,15 +16063,15 @@\n positive software limit\n halui.joint.selected.on-soft-min-limit (bit out) - status pin telling that the selected joint is on the\n negative software limit\n halui.joint.selected.override-limits (bit out) - status pin telling that the selected joint\u2019s limits are\n temporarily overridden\n halui.joint.selected.unhome (bit in) - pin for unhoming the selected joint\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 300 / 1288\n \n 5.11.4.12. Joint Jogging\n N = joint number (0 \u2026 num_joints-1)\n halui.joint.jog-deadband (float in) - pin for setting jog analog deadband (jog analog inputs smaller/slower than this - in absolute value - are ignored)\n halui.joint.jog-speed (float in) - pin for setting jog speed for plus/minus jogging.\n@@ -16099,15 +16099,15 @@\n L = axis letter (xyzabcuvw)\n halui.axis.L.select (bit) - pin for selecting axis by letter\n halui.axis.L.is-selected (bit out) - status pin that axis L is selected\n halui.axis.L.pos-commanded (float out) - Commanded axis position in machine coordinates\n halui.axis.L.pos-feedback float out) - Feedback axis position in machine coordinates\n halui.axis.L.pos-relative (float out) - Feedback axis position in relative coordinates\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 301 / 1288\n \n 5.11.4.14. Axis Jogging\n L = axis letter (xyzabcuvw)\n halui.axis.jog-deadband (float in) - pin for setting jog analog deadband (jog analog inputs smaller/slower than this (in absolute value) are ignored)\n halui.axis.jog-speed (float in) - pin for setting jog speed for plus/minus jogging.\n@@ -16140,15 +16140,15 @@\n halui.mode.is-mdi (bit, out) - indicates MDI mode is on\n halui.mode.is-teleop (bit, out) - indicates coordinated jog mode is on\n halui.mode.joint (bit, in) - pin for requesting joint by joint jog mode\n halui.mode.manual (bit, in) - pin for requesting manual mode\n halui.mode.mdi (bit, in) - pin for requesting MDI mode\n halui.mode.teleop (bit, in) - pin for requesting coordinated jog mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 302 / 1288\n \n 5.11.4.16. Program\n halui.program.block-delete.is-on (bit, out) - status pin telling that block delete is on\n halui.program.block-delete.off (bit, in) - pin for requesting that block delete is off\n halui.program.block-delete.on (bit, in) - pin for requesting that block delete is on\n@@ -16182,15 +16182,15 @@\n halui.spindle.N.override.direct-value (bit, in) - false when using encoder to change counts, true\n when setting counts directly.\n halui.spindle.N.override.increase (bit, in) - pin for increasing the SO (+=scale)\n halui.spindle.N.override.scale (float, in) - pin for setting the scale on changing the SO\n halui.spindle.N.override.value (float, out) - current SO value\n halui.spindle.N.override.reset (bit, in) - pin for resetting the SO value (scale=1.0)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 303 / 1288\n \n 5.11.4.19. Spindle\n halui.spindle.N.brake-is-on (bit, out) - indicates brake is on\n halui.spindle.N.brake-off (bit, in) - pin for deactivating spindle/brake\n halui.spindle.N.brake-on (bit, in) - pin for activating spindle-brake\n@@ -16216,15 +16216,15 @@\n halui.tool.diameter (float out) - Current tool diameter, or 0 if no tool is loaded.\n halui.tool.number (u32, out) - indicates current selected tool\n \n 5.12. Halui Examples\n For any Halui examples to work you need to add the following line to the [HAL] section of the ini file.\n HALUI = halui\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 304 / 1288\n \n 5.12.1. Remote Start\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@@ -16246,15 +16246,15 @@\n This example was developed to allow LinuxCNC to move a rotary axis on a signal from an external\n machine. The coordination between the two systems will be provided by two Halui components:\n halui.program.is-paused\n halui.program.resume\n In your customized HAL file, add the following two lines that will be connected to your I/O to turn on\n the program pause or to resume when the external system wants LinuxCNC to continue.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 305 / 1288\n \n net ispaused halui.program.is paused => \u201dyour output pin\u201d\n net resume halui.program.resume <= \u201dyour input pin\u201d\n \n Your input and output pins are connected to the pins wired to the other controller. They may be parallel\n@@ -16295,15 +16295,15 @@\n \n Copy the above listing into a file named \u201dpassthrough\u201d, make it executable (chmod +x), and place it\n on your $PATH. Then try it out:\n Screen copy with details on the execution of the newly created passthrough HAL module.\n $ halrun\n halcmd: loadusr passthrough\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 306 / 1288\n \n halcmd: show pin\n Component Pins:\n Owner Type Dir\n 03\n@@ -16376,15 +16376,15 @@\n \n The full pin or parameter name is formed by joining the prefix and the suffix with a \u201d.\u201d, so in the\n example the pin created is called passthrough.in.\n h.ready()\n \n Once all the pins and parameters have been created, call the .ready() method.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 307 / 1288\n \n 5.13.3.1. Changing the prefix\n The prefix can be changed by calling the .setprefix() method. The current prefix can be retrieved by\n calling the .getprefix() method.\n \n@@ -16418,15 +16418,15 @@\n unload request arrives, the process should either exit in a short time, or call the .exit() method on\n the component if substantial work (such as reading or writing files) must be done to complete the\n shutdown process.\n \n 5.13.6. Helpful Functions\n See Python HAL Interface for an overview of available functions.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 308 / 1288\n \n 5.13.7. Constants\n Use these to specify details rather then the value they hold.\n HAL_BIT\n HAL_FLOAT\n@@ -16457,15 +16457,15 @@\n Note that only the _<io-type>_ and _<specific-name>_ fields are defined for a canonical device. The\n _<device-name>, _<device-num>_, and _<chan-num>_ fields are set based on the characteristics of\n the real device.\n \n 5.14.2. Digital Input\n The canonical digital input (I/O type field: digin) is quite simple.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 309 / 1288\n \n 5.14.2.1. Pins\n \n (bit) in\n State of the hardware input.\n@@ -16492,15 +16492,15 @@\n \n (funct) write\n Read out and invert, and set hardware output accordingly.\n \n 5.14.4. Analog Input\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 310 / 1288\n \n 5.14.4.1. Pins\n \n (float) value\n The hardware reading, scaled according to the scale and offset parameters.\n@@ -16530,15 +16530,15 @@\n \n (float) value\n The value to be written. The actual value output to the hardware will depend on the scale and\n offset parameters.\n (bit) enable\n If false, then output 0 to the hardware, regardless of the value pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 311 / 1288\n \n 5.14.5.2. Parameters\n \n (float) offset\n This will be added to the value before the hardware is updated.\n@@ -16574,15 +16574,15 @@\n the man page available:\n cd toplevel_directory_for_rip_build\n . scripts/rip-environment\n man halcmd\n \n The HAL Tutorial has a number of examples of halcmd usage, and is a good tutorial for halcmd.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 312 / 1288\n \n 5.15.2. Halmeter\n Halmeter is a voltmeter for the HAL. It lets you look at a pin, signal, or parameter, and displays the\n current value of that item. It is pretty simple to use. Start it by typing halmeter in an X windows shell.\n Halmeter is a GUI application. It will pop up a small window, with two buttons labeled \u201dSelect\u201d and\n@@ -16607,23 +16607,23 @@\n displays the value. Multiple \u0300 \u0300halmeter \u0300 \u0300s can be open at the same time. If you use a script to open\n multiple \u0300 \u0300halmeter \u0300 \u0300s you can set the position of each one with -g X Y relative to the upper left corner\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 313 / 1288\n \n Figura 5.27: Halmeter selection window\n \n Figura 5.28: Halmeter watch window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 314 / 1288\n \n 5.15.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@@ -16639,15 +16639,15 @@\n Notes:\n Create watchfile in halshow using: \u2019File/Save Watch List\u2019.\n LinuxCNC must be running for standalone usage.\n \n Figura 5.29: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 315 / 1288\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@@ -16694,15 +16694,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 316 / 1288\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@@ -16723,15 +16723,15 @@\n \n Figura 5.30: sim_pin Window\n \n 5.15.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 317 / 1288\n \n Figura 5.31: simulate_probe Window\n \n 5.15.7. HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n@@ -16776,15 +16776,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 318 / 1288\n \n Figura 5.32: hal-histogram Window\n \n 5.15.8. Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -16795,15 +16795,15 @@\n 3. Each pin\u2019s component_function, thread, and addf-order.\n 4. Non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 319 / 1288\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@@ -16879,15 +16879,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 320 / 1288\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@@ -16901,15 +16901,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 321 / 1288\n \n Cap\u00edtulo 6\n \n Hardware Drivers\n 6.1. Parallel Port Driver\n@@ -16942,15 +16942,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 322 / 1288\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@@ -16974,15 +16974,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 <config-string> does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 323 / 1288\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@@ -17042,15 +17042,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 324 / 1288\n \n Cuadro 6.1: (continued)\n Pin\n 14\n 15\n@@ -17113,15 +17113,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 get under the hood and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 325 / 1288\n \n 6.1.3. Pins\n parport.<p>.pin- \u0300\n __<n>__-out \u0300 (bit) Drives a physical output pin.\n parport.<p>.pin- \u0300\n@@ -17165,15 +17165,15 @@\n in the same thread as write. If -reset is TRUE, then the reset function will set the pin to the value\n of -out-invert. This can be used in conjunction with stepgen\u2019s doublefreq to produce one step per\n period. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 326 / 1288\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@@ -17215,15 +17215,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 327 / 1288\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@@ -17262,15 +17262,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.<boardnum>.read \u2014 Reads all digital inputs on one board.\n (funct) ax5214.<boardnum>.write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 328 / 1288\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@@ -17288,15 +17288,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 329 / 1288\n \n Figura 6.2: GM6-PCI card connectors and LEDs\n \n 6.3.1. I/O connectors\n \n@@ -17332,15 +17332,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 330 / 1288\n \n gm.<card_no>.gpio.<gpio_con_no>\n \n where <gpio_con_no> is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n@@ -17389,15 +17389,15 @@\n When True, pin value will be inverted.\n Used when pin is configured as output.\n \n 6.3.2. Axis connectors\n \n Figura 6.4: Pin numbering of axis connectors\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 331 / 1288\n \n Cuadro 6.6: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17425,15 +17425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 332 / 1288\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@@ -17497,15 +17497,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 333 / 1288\n \n Cuadro 6.8: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17580,15 +17580,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 334 / 1288\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@@ -17659,15 +17659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 335 / 1288\n \n Cuadro 6.10: (continued)\n Parameters\n .control-type\n \n@@ -17724,15 +17724,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 336 / 1288\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@@ -17750,15 +17750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 337 / 1288\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n # 2000 ns = 2 \u00b5s\n \n@@ -17811,15 +17811,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 338 / 1288\n \n Cuadro 6.12: (continued)\n Pins\n \n Type and\n@@ -17880,15 +17880,15 @@\n gm.<card_no>.can-gm.<axis_no>\n \n where <axis_no> 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.<card_no>.write\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 339 / 1288\n \n 6.3.3.1. Pins\n Cuadro 6.14: CAN module pins\n Pins\n \n@@ -17934,15 +17934,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 340 / 1288\n \n Cuadro 6.17: Watchdog parameters\n Parameters\n \n Type and\n@@ -18047,15 +18047,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 341 / 1288\n \n gm.<card_no>.joint.<axis_no>\n \n where <axis_no> 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@@ -18111,15 +18111,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 342 / 1288\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@@ -18144,15 +18144,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 343 / 1288\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@@ -18182,15 +18182,15 @@\n Type and\n direction\n (bit, Out)\n \n Pin description\n Output pin for relay\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 344 / 1288\n \n Cuadro 6.23: Relay output module parameters\n Parameters\n \n Type and\n@@ -18253,15 +18253,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 345 / 1288\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.<card_no>.rs485\n@@ -18333,15 +18333,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 346 / 1288\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.<card_no>.rs485\n@@ -18424,15 +18424,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 347 / 1288\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@@ -18465,15 +18465,15 @@\n number you set on the GS2.\n -v or --verbose Turn on debug messages.\n -A or --accel-seconds <n> (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.\n -D or --decel-seconds <n> (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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 348 / 1288\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@@ -18503,15 +18503,15 @@\n <name>.spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n <name>.status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n <name>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 349 / 1288\n \n 6.4.3. Parameters\n With <name> being gs2_vfd or the name given during loading with the -n option:\n <name>.error-count (s32, RW)\n <name>.loop-time (float, RW) how often the modbus is polled (default: 0.1)\n@@ -18559,15 +18559,15 @@\n 0x00000004\n \n Pin Num\n 3\n 5\n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 350 / 1288\n \n Cuadro 6.29: (continued)\n GPIO Num\n 5\n 6\n@@ -18681,15 +18681,15 @@\n \n 6.5.4. Parameters\n Only the standard timing parameters which are created for all components exist.\n *hal_pi_gpio.read.tmax *hal_pi_gpio.read.tmax-increased *hal_pi_gpio.write.tmax *hal_pi_gpio.write.tmaxincreased\n For unknown reasons the driver also creates HAL pins to indicate timing\n *hal_pi_gpio.read.time *hal_pi_gpio.write.time\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 351 / 1288\n \n 6.5.5. Functions\n hal_pi_gpio.read - Add this to the base thread to update the HAL pin values to match the physical\n input values.\n hal_pi_gpio.write - Add this to the base thread to update the physical pins to match the HAL values.\n@@ -18727,15 +18727,15 @@\n reset=GPIO21,GPIO22\n \n This driver relies on the libgpiod-dev library and the gpiod package, which contains a number of\n utilities for configuring and querying GPIO. The GPIO pin names in the \u201dloadrt\u201d line of the HAL given\n above should be the names given by the gpioinfo command.\n Sample output (truncated):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n $ gpioinfo\n gpiochip0 - 54 lines:\n line\n 0:\n \u201dID_SDA\u201d\n line\n@@ -18875,15 +18875,15 @@\n opendrain\n opensource\n biasdisable\n pulldown\n pullup\n The version of libgpiod-dev installed can be determined by the command gpioinfo -v\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 353 / 1288\n \n 6.6.3. Pins\n hal_gpio.NAME-in - HAL_OUT The value of an input pin presented in to HAL\n hal_gpio.NAME-in-not - HAL_OUT An inverted version of the above, for convenience\n hal_gpio.NAME-out - HAL_IN use this pin to transfer a HAL bit value to a physical output\n@@ -18920,15 +18920,15 @@\n SUBSYSTEM==\u201dbcm2835-gpiomem\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/ \u2190virtual/gpio;\\\n chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 354 / 1288\n \n \u2019\u201d\n SUBSYSTEM==\u201dpwm*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\\\n chown -R root:gpio /sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 \u2190/sys/devices/platform/soc/*.pwm/pwm/pwmchip*\\\n@@ -18961,15 +18961,15 @@\n 5I22 (96 I/O pins): using hm2_pci module\n \u2022 16-channel servo\n \u2022 8-channel servo plus 24 step/dir generators\n 5I20, 5I23, 4I65, 4I68 (72 I/O pins): using hm2_pci module\n \u2022 12-channel servo\n \u2022 8-channel servo plus 4 step/dir generators\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 355 / 1288\n \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@@ -19008,15 +19008,15 @@\n because the I/O Pins have become inputs).\n Resetting the watchdog resets the I/O pins to the configuration chosen at load-time.\n If the firmware includes a watchdog, the following HAL objects will be exported:\n 6.7.5.1. Pins\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 356 / 1288\n \n 6.7.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@@ -19056,15 +19056,15 @@\n connections to your card based on your configuration.\n An example of a 5I20 configuration:\n [HOSTMOT2]\n DRIVER=hm2_pci\n BOARD=5i20\n CONFIG=\u201dfirmware=hm2/5i20/SVST8_4.BIT num_encoders=1 num_pwmgens=1 num_stepgens=3\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 357 / 1288\n \n The above configuration produced this printout.\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@@ -19108,15 +19108,15 @@\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware-<board> package. There is more information about firmware and configuration in the Configurations section.\n \n 6.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 358 / 1288\n \n Figura 6.9: 5i20 HAL Pins\n \n 6.7.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@@ -19132,15 +19132,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19353,15 +19353,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19466,15 +19466,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 361 / 1288\n \n 6.7.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@@ -19511,15 +19511,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 362 / 1288\n \n 6.7.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@@ -19554,15 +19554,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.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 363 / 1288\n \n 6.7.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@@ -19604,15 +19604,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.7.15. Encoder\n Encoders have names like hm2_<BoardType>.<BoardNum>.encoder.<Instance>.. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 364 / 1288\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@@ -19650,15 +19650,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 365 / 1288\n \n 6.7.16. 5I25 Configuration\n 6.7.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@@ -19692,15 +19692,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 366 / 1288\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@@ -19732,15 +19732,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 367 / 1288\n \n 6.8.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@@ -19820,15 +19820,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 368 / 1288\n \n Value\n Type\n Required\n Description\n@@ -19921,15 +19921,15 @@\n parameter above.\n \n 6.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 369 / 1288\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@@ -19965,15 +19965,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 370 / 1288\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@@ -20018,15 +20018,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 371 / 1288\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@@ -20110,15 +20110,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 372 / 1288\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20181,15 +20181,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20246,15 +20246,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 373 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 374 / 1288\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20287,15 +20287,15 @@\n 6.8.5.3. fnct_03_read_holding_registers\n mb2hal.m.n.float float out\n mb2hal.m.n.int s32 out\n 6.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 375 / 1288\n \n 6.8.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.8.5.6. fnct_06_write_single_register\n@@ -20326,15 +20326,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 376 / 1288\n \n 6.9.1. Command Line Options\n The command line options are:\n -b or --baud <rate> : set the baud rate - all networked VFDs must be the same\n -p or --port <device path> : sets the port to use such as /dev/ttyUSB0\n@@ -20360,15 +20360,15 @@\n <n>.scale-fb (float, in) Scales the motor-fb pin to arbitrary units. default 1 = Hertz.\n <n>.scale-amps (float, in) Scales the motor-amps pin to arbitrary units. default 1 = amps.\n <n>.scale-power (float, in) Scales the motor-power pin to arbitrary units. default 1 = .\n <n>.estop (bit, in) puts the VFD into emergency-stopped status.\n <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 377 / 1288\n \n 6.9.3. HAL example\n #\n # example usage of the Mitsubishi VFD driver\n #\n@@ -20427,15 +20427,15 @@\n Fr-A700 F700 E700 D700 technical manual for the 700 series\n The VFD must have PR settings adjusted manually for serial communication.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 378 / 1288\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 (maximum) COM errors then VFD faults.\n@@ -20470,15 +20470,15 @@\n (bit) motenc.<board>.enc-<channel>-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.<board>.dac-<channel>-value - Analog output value for DAC (in user units, see -gain\n and -offset)\n (float) motenc.<board>.adc-<channel>-value - Analog input value read by ADC (in user units, see\n -gain and -offset)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 379 / 1288\n \n (bit) motenc.<board>.in-<channel> - State of digital input pin, see canonical digital input.\n (bit) motenc.<board>.in-<channel>-not - Inverted state of digital input pin, see canonical digital\n input.\n (bit) motenc.<board>.out-<channel> - Value to be written to digital output, seen canonical digital\n@@ -20524,15 +20524,15 @@\n (funct) motenc.<board>.encoder-read - Reads all encoder counters.\n (funct) motenc.<board>.adc-read - Reads the analog-to-digital converters.\n (funct) motenc.<board>.digital-in-read - Reads digital inputs.\n (funct) motenc.<board>.dac-write - Writes the voltages to the DACs.\n (funct) motenc.<board>.digital-out-write - Writes digital outputs.\n (funct) motenc.<board>.misc-update - Updates misc stuff.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 380 / 1288\n \n 6.11. Opto22 Driver\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n 6.11.1. The Adapter Card\n@@ -20567,15 +20567,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 381 / 1288\n \n 6.11.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@@ -20612,15 +20612,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 382 / 1288\n \n 6.11.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@@ -20663,15 +20663,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 383 / 1288\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@@ -20712,15 +20712,15 @@\n timestamp=0x00 option.\n (All float output) ppmc.<port>.encoder.<channel>.position - Encoder position, in user units.\n (All bit bidir) ppmc.<port>.encoder.<channel>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 384 / 1288\n \n (PPMC float output) ppmc.<port>.DAC.<channel>.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.<port>.pwm.<channel>.enable - Enables a PWM generator.\n@@ -20759,15 +20759,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.<port>.pwm.<channel>.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.<port>.pwm.<channel>.max-dc - Maximum duty cycle, from 0.0 to 1.0.\n (UPC float) ppmc.<port>.pwm.<channel>.min-dc - Minimum duty cycle, from 0.0 to 1.0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 385 / 1288\n \n (UPC float) ppmc.<port>.pwm.<channel>.duty-cycle - Actual duty cycle (used mostly for troubleshooting.)\n (UPC bit) ppmc.<port>.pwm.<channel>.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@@ -20801,15 +20801,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.13. Pluto P Driver\n 6.13.1. General Info\n The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 386 / 1288\n \n 6.13.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@@ -20845,15 +20845,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.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 387 / 1288\n \n 6.13.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@@ -20884,15 +20884,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 388 / 1288\n \n 6.13.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@@ -20922,15 +20922,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 389 / 1288\n \n Cuadro 6.41: (continued)\n Primary function\n \n Alternate Function\n@@ -21042,15 +21042,15 @@\n Read same value\n \n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 390 / 1288\n \n Quadrature positions for each channel are latched at different times.\n 6.13.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@@ -21077,15 +21077,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 391 / 1288\n \n Figura 6.11: Pluto-Step Pinout\n \n 6.13.3.2. Input latching and output updating\n Step frequencies for each channel are updated at different times.\n@@ -21094,15 +21094,15 @@\n Feedback positions for each channel are latched at different times.\n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 392 / 1288\n \n Figura 6.12: Pluto-Step Timings\n \n 6.13.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@@ -21117,15 +21117,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 393 / 1288\n \n 6.14.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@@ -21156,15 +21156,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.14.3. Reference:\n Hypertherm Application Note #807220\n \u201dPowermax45 XP/65/85/105/125\u00ae Serial Communication Protocol\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 394 / 1288\n \n 6.15. 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@@ -21204,15 +21204,15 @@\n 6.15.2. Pins\n stg.<channel>.counts - (s32) Tracks the counted encoder ticks.\n stg.<channel>.position - (float) Outputs a converted position.\n stg.<channel>.dac-value - (float) Drives the voltage for the corresponding DAC.\n stg.<channel>.adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n stg.in-<pinnum> - (bit) Tracks a physical input pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 395 / 1288\n \n stg.in-<pinnum>-not - (bit) Tracks a physical input pin, but inverted.\n stg.out-<pinnum> - (bit) Drives a physical output pin\n For each pin, <channel> is the axis number, and <pinnum> 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@@ -21246,15 +21246,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 396 / 1288\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@@ -21292,15 +21292,15 @@\n <Prefix>.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 <Prefix>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 397 / 1288\n \n 6.17. VFS11 VFD Driver\n This is a non-realtime HAL program to control the S11 series of VFDs 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@@ -21334,15 +21334,15 @@\n in registers F500 and F501 respectively. Used in PID loops to choose shorter ramp times to avoid\n oscillation.\n <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 <n>.at-speed (bit, out) when drive is at commanded speed (see speed-tolerance below)\n <n>.current-load-percentage (float, out) reported from the VFD\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 398 / 1288\n \n <n>.dc-brake (bit, in) engage the DC brake. Also turns off spindle-on.\n <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 <n>.err-reset (bit, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may\n@@ -21379,15 +21379,15 @@\n <n>.status (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function\n Instruction Manual, register FD01). A bitmap.\n <n>.trip-code (s32, out) trip code if VF-S11 is in tripped state.\n <n>.error-count (s32, out) number of Modbus transactions which returned an error\n <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 399 / 1288\n \n 6.17.3. Parameters\n Where <n> is vfs11_vfd or the name given during loading with the -n option.\n <n>.frequency-limit (float, RO) upper limit read from VFD setup.\n <n>.loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n@@ -21423,15 +21423,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21470,15 +21470,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 400 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 401 / 1288\n \n 6.17.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@@ -21511,30 +21511,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 402 / 1288\n \n 6.17.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 403 / 1288\n \n Cap\u00edtulo 7\n \n Hardware Examples\n 7.1. PCI Parallel Port\n@@ -21565,15 +21565,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 404 / 1288\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@@ -21609,15 +21609,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 405 / 1288\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@@ -21659,15 +21659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 406 / 1288\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@@ -21707,15 +21707,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 407 / 1288\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@@ -21754,15 +21754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 408 / 1288\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@@ -21809,15 +21809,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 409 / 1288\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@@ -21860,15 +21860,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 410 / 1288\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 non-realtime component for the Automation Direct GS2 VFDs\n@@ -21897,15 +21897,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 411 / 1288\n \n Cap\u00edtulo 8\n \n ClassicLadder\n 8.1. ClassicLadder Introduction\n@@ -21935,15 +21935,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 412 / 1288\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@@ -21973,15 +21973,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 413 / 1288\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@@ -22013,15 +22013,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8.2.\n \n 414 / 1288\n \n ClassicLadder Programming\n \n@@ -22053,15 +22053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 415 / 1288\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@@ -22140,15 +22140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 416 / 1288\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@@ -22182,29 +22182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 417 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 418 / 1288\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@@ -22222,15 +22222,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 did not 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 419 / 1288\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@@ -22241,27 +22241,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 420 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 421 / 1288\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@@ -22269,30 +22269,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 422 / 1288\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 423 / 1288\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@@ -22321,21 +22321,21 @@\n Compare - creates a compare block to compare variable to values or other variables, e.g. %W1<=5\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, e.g. %W2=7\n or %W1= %W2. ASSIGNMENT functions can only be placed at the right most side of the section 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 424 / 1288\n \n Figura 8.7: Config Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 425 / 1288\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@@ -22370,15 +22370,15 @@\n The time intervals can be set in multiples of 100&8239;ms, 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 426 / 1288\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@@ -22408,15 +22408,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 427 / 1288\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@@ -22449,15 +22449,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 428 / 1288\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@@ -22475,23 +22475,23 @@\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\n when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will be set\n to True.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 8.8: Assign/Compare Ladder Example\n \n Figura 8.9: Assignment Expression Example\n \n 429 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 430 / 1288\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@@ -22517,15 +22517,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 431 / 1288\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@@ -22572,15 +22572,15 @@\n %M \u0300\n __xx__.P \u0300 - Monostable xx preset (integer)\n %C \u0300\n __xx__.D \u0300 - Counter xx done (Boolean, user read only)\n %C \u0300\n __xx__.E \u0300 - Counter xx empty overflow (Boolean, user read only)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 432 / 1288\n \n %C \u0300\n __xx__.F \u0300 - Counter xx full overflow (Boolean, user read only)\n %C \u0300\n __xx__.V \u0300 - Counter xx current value (integer)\n@@ -22619,15 +22619,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 433 / 1288\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 - shows the variable that must be true for control to pass through to the next step.\n@@ -22638,15 +22638,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 434 / 1288\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 %X \u0300\n __xxx__ (e.g., \u0300%X5) is used to see if a step is active. The variable %X \u0300\n@@ -22677,21 +22677,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 non-realtime program this page\n will not be displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 435 / 1288\n \n Figura 8.12: Modbus I/O Config\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 436 / 1288\n \n Figura 8.13: Modbus Communication Config\n SERIAL PORT - For IP blank. For serial the location/name of serial driver, e.g., /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@@ -22705,15 +22705,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 437 / 1288\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@@ -22752,15 +22752,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 438 / 1288\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@@ -22790,24 +22790,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 439 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 440 / 1288\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@@ -22836,15 +22836,15 @@\n (2\n 1 to 125 (0x7D)\n Bytes)\n (2 by- Calculated\n tes)\n automatically\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 441 / 1288\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 <Data-21 0 0 1 8E 36\n \n Slave address-1\n@@ -22887,15 +22887,15 @@\n Exception code meaning:\n 1 - illegal Function\n 2 - illegal data address\n 3 - illegal data value\n 4 - slave device failure\n Here is an example received command as printed in the terminal (all Hex):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 442 / 1288\n \n INFO CLASSICLADDERModbus I/O module received: Lgt=5 ->\n code-83 ) 2 C0 F1\n \n (Slave address-1\n@@ -22954,15 +22954,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 443 / 1288\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@@ -22981,15 +22981,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 444 / 1288\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@@ -23005,47 +23005,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 445 / 1288\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 446 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 447 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 448 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 449 / 1288\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@@ -23056,15 +23056,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 450 / 1288\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@@ -23074,15 +23074,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 451 / 1288\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@@ -23096,15 +23096,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 452 / 1288\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@@ -23116,15 +23116,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 453 / 1288\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@@ -23158,36 +23158,36 @@\n <halpin>\u201dpy-reset\u201d</halpin>\n <text>\u201dReset\u201d</text>\n </button>\n </pyvcp>\n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 454 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 455 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 456 / 1288\n \n Cap\u00edtulo 9\n \n Temas avanzados\n 9.1. Kinematics\n@@ -23215,15 +23215,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 457 / 1288\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@@ -23277,15 +23277,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 458 / 1288\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@@ -23306,15 +23306,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 459 / 1288\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@@ -23346,15 +23346,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 460 / 1288\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@@ -23389,15 +23389,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 461 / 1288\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@@ -23430,15 +23430,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 462 / 1288\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@@ -23481,15 +23481,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 463 / 1288\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@@ -23520,87 +23520,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 464 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 465 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 466 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 467 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 468 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 469 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 470 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 471 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 472 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 473 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 474 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 475 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 476 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 477 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 478 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 479 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 480 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 481 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 482 / 1288\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@@ -23629,27 +23629,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 483 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 484 / 1288\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@@ -23659,15 +23659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 485 / 1288\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@@ -23675,43 +23675,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 486 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 487 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 488 / 1288\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@@ -23730,56 +23730,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 489 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 490 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 491 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 492 / 1288\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@@ -23793,42 +23793,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 493 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 494 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 495 / 1288\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@@ -23843,15 +23843,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 496 / 1288\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@@ -23895,15 +23895,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 497 / 1288\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@@ -23925,29 +23925,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9.3.8. Figures\n \n Figura 9.10: Table tilting/rotating configuration\n \n 498 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 9.11: Spindle/table tilting configuration\n \n 499 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 500 / 1288\n \n Figura 9.12: Spindle tilting/rotary configuration\n \n 9.3.9. REFERENCES\n 1. AXIS MACHINE TOOLS: Kinematics and Vismach Implementation in LinuxCNC, RJ du Preez,\n@@ -23964,15 +23964,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 501 / 1288\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@@ -24006,15 +24006,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 502 / 1288\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@@ -24046,15 +24046,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 503 / 1288\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@@ -24093,15 +24093,15 @@\n XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 504 / 1288\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@@ -24144,15 +24144,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 505 / 1288\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@@ -24197,15 +24197,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 506 / 1288\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@@ -24237,15 +24237,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 507 / 1288\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@@ -24287,15 +24287,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 508 / 1288\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@@ -24379,15 +24379,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 509 / 1288\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@@ -24417,15 +24417,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<test> call [1.234] [4.65]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 510 / 1288\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@@ -24462,15 +24462,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 511 / 1288\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@@ -24503,15 +24503,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 512 / 1288\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@@ -24548,15 +24548,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 513 / 1288\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@@ -24594,15 +24594,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=<Python function name>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 514 / 1288\n \n prolog=<Python function name>\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=<Python function name>\n@@ -24641,15 +24641,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 515 / 1288\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@@ -24691,15 +24691,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#<q>]]\n (debug, Q word set: #<q>)\n o100 endif\n o<m400> endsub\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 516 / 1288\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@@ -24740,15 +24740,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 517 / 1288\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@@ -24792,15 +24792,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 518 / 1288\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@@ -24844,15 +24844,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 519 / 1288\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@@ -24887,15 +24887,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 520 / 1288\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@@ -24946,15 +24946,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 521 / 1288\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@@ -25000,15 +25000,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 522 / 1288\n \n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n@@ -25046,15 +25046,15 @@\n M6 (change_prolog): #<tool_in_spindle>, #<selected_tool>, #<current_pocket>, #<selected_pocket>\n M61 (settool_prolog): #<tool> , #<pocket>\n S (setspeed_prolog): #<speed>\n F (setfeed_prolog): #<feed>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 523 / 1288\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@@ -25104,15 +25104,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 524 / 1288\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@@ -25160,15 +25160,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 525 / 1288\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@@ -25217,15 +25217,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 526 / 1288\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@@ -25260,15 +25260,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 527 / 1288\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@@ -25312,15 +25312,15 @@\n [PYTHON]\n TOPLEVEL = <filename>\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 = <directory>\n Prepend this directory to PYTHON_PATH. A repeating group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 528 / 1288\n \n PATH_APPEND = <directory>\n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = <integer>\n Log level of plugin-related actions. Increase this if you suspect problems. Can be very verbose.\n@@ -25359,15 +25359,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.<funct\n and remap.<function> Python calls are methods of this Interp class, although there is no explicit\n Python definition of this class (it is a Boost.Python wrapper instance) and hence receive the as the\n first parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 529 / 1288\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@@ -25406,15 +25406,15 @@\n \u2022 when a comment like ;py,<Python statement> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 530 / 1288\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@@ -25452,15 +25452,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 531 / 1288\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n a message text\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25497,15 +25497,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 532 / 1288\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@@ -25547,15 +25547,15 @@\n return \u201dtestparam forgot to assign #<result>\u201d\n return INTERP_OK\n o<testparam> sub\n (debug, call_level=#<_call_level> myname=#<myname>)\n ; try commenting out the next line and run again\n #<result> = [#<myname> * 3]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 533 / 1288\n \n #1 = [#1 * 5]\n #2 = [#2 * 3]\n o<testparam> endsub\n m2\n@@ -25597,15 +25597,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 534 / 1288\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@@ -25642,15 +25642,15 @@\n Import that module from the TOPLEVEL script.\n # namedparams.py\n # trivial example\n def _pi(self):\n return 3.1415926535\n #<circumference> = [2 * #<radius> * #<_pi>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 535 / 1288\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@@ -25680,15 +25680,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 #<tool> and #<pocket> 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(#<tool>) is executed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 536 / 1288\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@@ -25717,15 +25717,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 #<selected_pocket> 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(#<selected_pocket>) is executed.\n The new tool parameters (offsets, diameter etc) are set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 537 / 1288\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@@ -25758,15 +25758,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 538 / 1288\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@@ -25820,15 +25820,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 539 / 1288\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@@ -25848,15 +25848,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<pydevd> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 540 / 1288\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@@ -25872,15 +25872,15 @@\n Now, what about preview of this procedure? At preview time, of course it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 541 / 1288\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@@ -25924,15 +25924,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 542 / 1288\n \n Cuadro 9.6: Table of Allocated G-codes 10-19\n #\n 10\n 11\n@@ -26015,15 +26015,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 543 / 1288\n \n Cuadro 9.9: (continued)\n #\n 43\n 44\n@@ -26104,15 +26104,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 544 / 1288\n \n Cuadro 9.12: (continued)\n #\n 76\n 77\n@@ -26205,15 +26205,15 @@\n \n Mx7\n \n Mx8\n \n Mx9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 545 / 1288\n \n Cuadro 9.15: (continued)\n #\n 10-19\n 20-29\n@@ -26343,15 +26343,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 546 / 1288\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@@ -26385,15 +26385,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 547 / 1288\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G1 Y20 Z-5\n N40 G0 Z30\n@@ -26434,15 +26434,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 548 / 1288\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@@ -26479,15 +26479,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 549 / 1288\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@@ -26524,15 +26524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 550 / 1288\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@@ -26566,15 +26566,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 551 / 1288\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@@ -26617,15 +26617,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 552 / 1288\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 component 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@@ -26668,15 +26668,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 553 / 1288\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@@ -26718,15 +26718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 554 / 1288\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@@ -26769,15 +26769,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 555 / 1288\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@@ -26842,15 +26842,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 556 / 1288\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@@ -26888,15 +26888,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 557 / 1288\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@@ -26927,15 +26927,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 558 / 1288\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@@ -26973,15 +26973,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 559 / 1288\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@@ -27016,15 +27016,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 560 / 1288\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@@ -27062,15 +27062,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 561 / 1288\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@@ -27105,15 +27105,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 562 / 1288\n \n nota\n INI file settings for [EMCIO]TOOL_TABLE are ignored when a db_program is specified.\n \n nota\n@@ -27149,15 +27149,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 563 / 1288\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@@ -27201,15 +27201,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 564 / 1288\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@@ -27254,15 +27254,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 565 / 1288\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@@ -27282,50 +27282,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 566 / 1288\n \n Parte II\n \n Usage\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 567 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 568 / 1288\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\n and the Axis Section of the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 569 / 1288\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@@ -27359,15 +27359,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 570 / 1288\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@@ -27403,15 +27403,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 571 / 1288\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@@ -27447,15 +27447,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 572 / 1288\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@@ -27496,15 +27496,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 573 / 1288\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@@ -27536,15 +27536,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 574 / 1288\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@@ -27576,15 +27576,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 575 / 1288\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>\n (Tool Change) will not show on the preview until after the first feed move. To turn either of these\n@@ -27617,15 +27617,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 576 / 1288\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@@ -27645,15 +27645,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 577 / 1288\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@@ -27679,15 +27679,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 578 / 1288\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@@ -27701,15 +27701,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 579 / 1288\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@@ -27723,15 +27723,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 580 / 1288\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@@ -27808,15 +27808,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 581 / 1288\n \n Cuadro 10.1: (continued)\n Keystroke\n R\n P\n@@ -27859,15 +27859,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 582 / 1288\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@@ -27884,15 +27884,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 583 / 1288\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@@ -27922,50 +27922,50 @@\n rs274 provides additional tools for working with rs274ngc files\n hal allows the creation of non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 584 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 585 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 586 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 587 / 1288\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@@ -27973,15 +27973,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=<filename> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 588 / 1288\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@@ -28003,15 +28003,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 589 / 1288\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@@ -28047,15 +28047,15 @@\n Example of .axisrc file\n root_window.bind(\u201d<Control-q>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 590 / 1288\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@@ -28091,15 +28091,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 591 / 1288\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@@ -28182,15 +28182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 592 / 1288\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@@ -28229,15 +28229,15 @@\n root_window.bind(\u2019<Control-Key-5>\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019<Control-Key-6>\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019<Control-Key-7>\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019<Control-Key-8>\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019<Control-Key-9>\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019<Control-Key-0>\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n root_window.bind(\u2019<Key-quoteleft>\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019<Key-1>\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019<Key-2>\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019<Key-3>\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019<Key-4>\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019<Key-5>\u2019,lambda event: set_feedrate(50))\n@@ -28276,15 +28276,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 593 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 594 / 1288\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@@ -28325,15 +28325,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 595 / 1288\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@@ -28389,15 +28389,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 596 / 1288\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28494,15 +28494,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 597 / 1288\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@@ -28532,15 +28532,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 598 / 1288\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@@ -28576,15 +28576,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 599 / 1288\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@@ -28595,15 +28595,15 @@\n other versions, please inform about problems and / or solutions on the LinuxCNC forum or the German\n CNC Ecke Forum or LinuxCNC users mailing list.\n The minimum screen resolution for GMOCCAPY for the normal layout (without side panels) is 980 x\n 750 Pixel, so it should fit to every standard screen. It is recommended to use screens with minimum\n resolution of 1024x768. There is also a configuration which fits for 800x600 screens (introduced in\n GMOCCAPY 3.4.8).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 600 / 1288\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 CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n@@ -28616,15 +28616,15 @@\n edit the settings of the machine.\n -logo <path to logo file>: 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 601 / 1288\n \n gmoccapy.ini\n gmoccapy_4_axis.ini\n lathe_configs/gmoccapy_lathe.ini\n lathe_configs/gmoccapy_lathe_imperial.ini\n@@ -28658,15 +28658,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 602 / 1288\n \n nota\n If no path or file is given, GMOCCAPY will use as default <your_machinename>.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@@ -28701,15 +28701,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 603 / 1288\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@@ -28749,15 +28749,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 604 / 1288\n \n ; Test file \u201dgo to position\u201d\n ; will jog the machine to a given position\n O<go_to_position> sub\n G17\n@@ -28777,15 +28777,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 605 / 1288\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@@ -28799,15 +28799,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 606 / 1288\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@@ -28844,29 +28844,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 607 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ntb_preview\n \n 608 / 1288\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -28889,15 +28889,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 <span background=\u201d#ff0000\u201d foreground=\u201d#ffffff\u201d>info-message</span \u2190> test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 609 / 1288\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>small</small>, <big>big</big>, <b>bold</b <i>italic</i>,\n@@ -28938,15 +28938,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 \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 610 / 1288\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 being applied to the GUI.\n@@ -28990,15 +28990,15 @@\n \n You can specify where to save the log file:\n [DISPLAY]\n LOG_FILE = gmoccapy.log\n \n If LOG_FILE is not set, logging happens to $HOME/<base_log_name>.log.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 611 / 1288\n \n 10.2.5. HAL Pins\n GMOCCAPY exports several HAL pins to be able to react to hardware devices. The goal is to get a\n GUI that may be operated in a tool shop, completely/mostly without mouse or keyboard.\n nota\n@@ -29033,15 +29033,15 @@\n For the bottom (horizontal) buttons they are:\n gmoccapy.h-button.button-0 (bit IN)\n gmoccapy.h-button.button-1 (bit IN)\n gmoccapy.h-button.button-2 (bit IN)\n gmoccapy.h-button.button-3 (bit IN)\n gmoccapy.h-button.button-4 (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 612 / 1288\n \n gmoccapy.h-button.button-5 (bit IN)\n gmoccapy.h-button.button-6 (bit IN)\n gmoccapy.h-button.button-7 (bit IN)\n gmoccapy.h-button.button-8 (bit IN)\n@@ -29142,15 +29142,15 @@\n zero G92\n unhome all\n back\n \n set selected\n back\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 613 / 1288\n \n Cuadro 10.5: Functional assignment of horizontal buttons\n (3)\n Pin\n Tool Mode\n@@ -29199,15 +29199,15 @@\n back\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 a touch panel, or protect it from\n excessive use by placing hardware buttons around the panel. They are available in a sample configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 614 / 1288\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@@ -29219,15 +29219,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 615 / 1288\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@@ -29257,15 +29257,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 616 / 1288\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@@ -29300,15 +29300,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 617 / 1288\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-<your fourth axis letter >-plus (bit IN)\n gmoccapy.jog.jog-<your fourth axis letter >-minus (bit IN)\n@@ -29339,15 +29339,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 618 / 1288\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@@ -29381,15 +29381,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 619 / 1288\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@@ -29409,15 +29409,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 620 / 1288\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@@ -29433,15 +29433,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 621 / 1288\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@@ -29470,15 +29470,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 622 / 1288\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@@ -29494,15 +29494,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. INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 623 / 1288\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 <on_abort> call\n@@ -29544,15 +29544,15 @@\n toplevel.py\n remap.py\n stdglue.py\n From <your_linuxcnc-dev_directory>/configs/sim/gmoccapy/macros copy\n on_abort.ngc\n change.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 624 / 1288\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@@ -29588,15 +29588,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 625 / 1288\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@@ -29607,15 +29607,15 @@\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 Window decorated - Allows the title bar to be hidden. (default: title bar visible)\n hide cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 626 / 1288\n \n hide tooltips - Hides the tool tips.\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@@ -29640,15 +29640,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 627 / 1288\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@@ -29659,15 +29659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 628 / 1288\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@@ -29705,15 +29705,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 629 / 1288\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@@ -29730,15 +29730,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 630 / 1288\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@@ -29754,15 +29754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 631 / 1288\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@@ -29793,15 +29793,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 632 / 1288\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@@ -29816,15 +29816,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 633 / 1288\n \n 10.2.7.3. Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n nota\n@@ -29837,15 +29837,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 634 / 1288\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@@ -29879,15 +29879,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 635 / 1288\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@@ -29924,15 +29924,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 636 / 1288\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -29981,25 +29981,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 637 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 638 / 1288\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@@ -30010,15 +30010,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 639 / 1288\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@@ -30030,15 +30030,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 640 / 1288\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@@ -30058,15 +30058,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 641 / 1288\n \n 10.2.12.2. Not ending macro\n If you use a macro without movement, like this one:\n o<zeroxy> sub\n G92.1\n@@ -30093,15 +30093,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 642 / 1288\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=<filename>.\n Typically <filename> would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -30114,15 +30114,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 643 / 1288\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@@ -30154,15 +30154,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 644 / 1288\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@@ -30193,39 +30193,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 645 / 1288\n \n Figura 10.21: Gscreen Default Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 10.22: Gscreen Silverdragon Screen\n \n 646 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 647 / 1288\n \n Figura 10.23: Gscreen Spartan Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 648 / 1288\n \n Figura 10.24: Gscreen Gaxis Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 649 / 1288\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@@ -30233,15 +30233,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 is programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 650 / 1288\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@@ -30286,15 +30286,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 651 / 1288\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@@ -30325,15 +30325,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 652 / 1288\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@@ -30346,15 +30346,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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 653 / 1288\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@@ -30362,15 +30362,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 its 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 654 / 1288\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@@ -30411,15 +30411,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 655 / 1288\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@@ -30466,15 +30466,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 656 / 1288\n \n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n@@ -30516,15 +30516,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 657 / 1288\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 non-realtime 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@@ -30561,15 +30561,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 658 / 1288\n \n 10.4.6. INI Settings\n Under the [DISPLAY] heading:\n DISPLAY = gscreen -c tester\n options:\n@@ -30610,15 +30610,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 659 / 1288\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@@ -30662,15 +30662,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 660 / 1288\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@@ -30684,15 +30684,15 @@\n \n 10.5.1.1. QtDragon\n \n Figura 10.26: QtDragon - 3 or 4 axis 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 661 / 1288\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@@ -30707,15 +30707,15 @@\n You can only have one of each section (e.g., [HAL]) in the INI file. If you see in these docs multiple\n section options, place them all under the one appropriate section name.\n \n 10.5.2.1. Display\n In the section [DISPLAY] change the DISPLAY = assignment to read:\n qtdragon for a small version\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 662 / 1288\n \n qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for (respectably) verbose, debug, info or quiet output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n@@ -30752,15 +30752,15 @@\n [DISPLAY]\n DEFAULT_SPINDLE_0_SPEED = 500\n SPINDLE_INCREMENT = 200\n MIN_SPINDLE_0_SPEED = 100\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_POWER = 1500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 663 / 1288\n \n 10.5.2.6. Jogging increments\n Set selectable jogging increments.\n These increments can be user changed.\n [DISPLAY]\n@@ -30807,15 +30807,15 @@\n panel.\n If using stackedWidget_mainTab, a button labelled User will appear.\n Pressing this button will cycle through displaying all available panels (specified for this location) on\n the main tab area.\n Sample adding a builtin panel to the utilities tab, i.e., a graphical animated machine using\n the vismach library.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 664 / 1288\n \n [DISPLAY]\n EMBED_TAB_NAME = Vismach demo\n EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz\n EMBED_TAB_LOCATION = tabWidget_utilities\n@@ -30839,15 +30839,15 @@\n ~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap- \u2190subroutines: \\\n ~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib\n \n QtVCP\u2019s NGCGUI program also need to know where to open for subroutine selection and pre-selection.\n NGCGUI_SUBFILE_PATH must point to an actual path on your system and also a path described in\n SUBROUTINE_PATHS.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 665 / 1288\n \n [DISPLAY]\n # NGCGUI subroutine path.\n # Thr path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n@@ -30889,15 +30889,15 @@\n jpg = image-to-gcode\n py = python\n \n 10.5.2.13. Probe/Touchplate/Laser Settings\n QtDragon has INI entries for two optional probing tab screens available. Comment/uncomment which\n ever you prefer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 666 / 1288\n \n Versa probe is a QtVCP ported version of a popular GladeVCP probing panel.\n Basic Probe is a QtVCP ported version based on the third party basic probe screen.\n Both perform similar probing routines, though Versa probe optionally handles auto tool measurement.\n [PROBE]\n@@ -30938,15 +30938,15 @@\n RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9\n \n 10.5.2.16. Macro Buttons\n QtDragon has up to ten convenience buttons for calling macro actions.\n These could also call OWord routines if desired.\n In the sample configurations they are labelled for moving between current user system origin (zero\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 667 / 1288\n \n point) and Machine system origin.\n User origin is the first MDI command in the INI list, machine origin is the second.\n This example shows how to move Z axis up first. The commands are separated by the ;.\n The label is set after the comma. The symbols \\n adds a line break.\n@@ -30986,15 +30986,15 @@\n F1 - Estop on/off\n F2 - Machine on/off\n F12 - Style Editor\n Home - Home All Joint of the Machine\n Escape - Abort Movement\n Pause - Pause Machine Movement\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 668 / 1288\n \n 10.5.4. Buttons\n Buttons that are checkable will change their text colour when checked. This is controlled by the\n stylesheet/theme\n \n@@ -31042,15 +31042,15 @@\n qtdragon.spindle-fault\n qtdragon.spindle-volts\n \n This bit pin is an output to the spindle control to pause it.\n You would connect it to spindle.0.inhibit.\n qtdragon.spindle-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 669 / 1288\n \n QtDragon spindle speed display and spindle-at-speed LED require that spindle.0.speed-in be connected to spindle speed feedback.\n Encoder or VFD feedback could be used, as long as the feedback is in revolutions per second (RPS).\n If no feedback is available you can have the display show the requested speed by connecting pins like\n so:\n@@ -31106,15 +31106,15 @@\n <=\n <=\n \n iocontrol.0.tool-change\n iocontrol.0.tool-changed\n iocontrol.0.tool-prep-number\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 670 / 1288\n \n 10.5.9. Spindle\n The screen is intended to interface to a VFD, but will still work without it.\n There are a number of VFD drivers included in the LinuxCNC distribution.\n It is up to the end user to supply the appropriate driver and HAL file connections according to his own\n@@ -31161,15 +31161,15 @@\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 \n Z level compensation is a bed levelling/distortion correction function typically used in 3D printing\n or engraving. It uses a HAL non-realtime component which utilizes the external offsets feature of\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 671 / 1288\n \n LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of\n cubic, linear or nearest (0, 1, 2 respectively). If none is specified or if an invalid number is specified,\n the default is assumed to be cubic.\n When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must\n@@ -31186,15 +31186,15 @@\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 In qtdragon_hd, switch to the file tab and press the load G-code Ripper button.\n Set origin to match the origin of the G-code file to be probed.\n Under G-Code Operations, check Auto Probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 672 / 1288\n \n File -> Open G-Code File (The file you will run after compensation)\n If necessary, make adjustments and press Recalculate.\n Press Save G-Code File - Probe Only.\n Save the generated file to the nc_files folder.\n@@ -31251,15 +31251,15 @@\n z_level_compensation.z-pos\n \n => logic-and.in-01\n <= axis.x.pos-cmd\n <= axis.y.pos-cmd\n <= axis.z.pos-cmd\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n net z_compensation_on\n net eoffset-zlevel-count\n count\n \n z_level_compensation.enable-in\n z_level_compensation.counts\n@@ -31293,15 +31293,15 @@\n 1. how far above the table the probe trigger point is (tool setter height) and\n 2. how far above the table the top of the workpiece is.\n This operation has to be done every time the tool is changed as the tool length is not saved.\n For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0\n or use a probing routine, the height from table to top of workpiece parameter is not taken into account\n and can be ignored. It is only for the tool setter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 674 / 1288\n \n 10.5.12.1. Versa Probe\n \n Figura 10.29: QtDragon - Versa Probe Option\n Versa probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n@@ -31318,15 +31318,15 @@\n SEARCH:: This is the feed rate at which the probe searches for the target workpiece in machine\n units per minute. The search speed should be slow enough to give an acceptable initial accuracy,\n but fast enough to not waste time waiting for movement. Recommendation: 200-500 mm/min.\n PROBE:: Once initial contact has been made and the probe is retracted, it will wait for 0.5 seconds\n before performing the search again at a lower speed, the probe velocity. This lower speed ensures\n the machine can stop movement as quickly as possible on contact with the workpiece.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 675 / 1288\n \n RAPID:: Axis movements not associated with searching are done at the speed defined by RAPID in\n machine units per minute.\n SIDE/EDGE LENGTH:: This is the distance the probe will move at the rapid rate to the position\n where it will begin a search. If measuring a corner, it will move EDGE LENGTH units away from\n@@ -31346,15 +31346,15 @@\n CLEARANCE to 0.\n There are three toggle buttons:\n Auto Zero This selects if after probing the relevant axis is set to zero in the current user system.\n Auto Skew This selects if after probing, the system will be rotated or just display the calculated\n rotation.\n Tool Measure This (if integrated) turns auto tool probing on and off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 676 / 1288\n \n 10.5.12.2. Basic probe\n \n Figura 10.30: QtDragon - Basic Probe Option\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles. The\n@@ -31367,15 +31367,15 @@\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 Probe Diameter: the size of the probe tip\n Probe Rapid: the speed of rapid moves in machine units\n Probe Search: the speed of the first rough search in machine units\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 677 / 1288\n \n Probe Feed: the speed of the second fine search in machine units\n Step Off : back off and re-probe distance\n Max XY Distance: the maximum distance the probe will search for in X and Y before failing with\n error\n@@ -31406,15 +31406,15 @@\n EDGE WIDTH - distance along edge wall (away from corner) to start probing.\n nota\n These distance are always to be set in machine units (mm for metric machine, inch for imperial\n machine).\n \n Preset:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 678 / 1288\n \n manual set probe at the intersection of the edges (ie corner) of material as described by the green\n bullseye on the button. Set it Z CLEARANCE above the top of material. These can be done by eye.\n set EXTRA CLEARANCE to a value that you want the probe to go below the top of material. (So the\n probe will move from its start position down Z Clearance + Extra Clearance distance.)\n@@ -31430,15 +31430,15 @@\n 3. probe wall twice (rough and fine),\n 4. move diagonally to the other wall as set by EDGE WIDTH and XY CLEARANCE,\n 5. probe wall twice,\n 6. raise probe up by Z CLEARANCE + EXTRA DEPTH (returns to starting height),\n 7. rapid back to starting corner (now calculated using the probed walls),\n 8. if auto zero button is enabled, set X and Y of the current user system to zero.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 679 / 1288\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@@ -31457,15 +31457,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 680 / 1288\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@@ -31480,15 +31480,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 681 / 1288\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@@ -31503,15 +31503,15 @@\n Probe down in Z to maximum defined in the INI\u2019s [VERSA_TOOLSETTER] MAXPROBE\n Return Z to position defined in the INI\u2019s [TOOL_CHANGE] Z\n nota\n The [TOOL_CHANGE] Z position should be high enough so the tool will not hit the tool probe when\n moving to the [VERSA_TOOLSETTER] X and Y position. MAXPROBE distance needs to be high enough\n for the tool to touch the probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 682 / 1288\n \n 10.5.14.1. Work Piece Height Probing\n \n Figura 10.33: QtDragon_hd - Work piece Height probing\n This program probes 2 user specified locations in the Z axis and calculates the difference in heights.\n@@ -31524,15 +31524,15 @@\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 683 / 1288\n \n the X, Y and Z coordinates specify where the first probing routine should start, in current WCS\n Machine Probe At\n the X, Y and Z coordinates specify where the second probing routine should start, in current WCS\n Z Safe Travel Height\n@@ -31567,15 +31567,15 @@\n Reflects screen entry.\n qtversaprobe.probeheight (HAL_FLOAT) the toolsetter probe switch height. Reflects screen entry.\n qtversaprobe.searchvel (HAL_FLOAT) the velocity to search for the tool probe switch\n qtversaprobe.probevel (HAL_FLOAT) the velocity to probe tool length. Reflects screen entry.\n qtversaprobe.backoffdist (HAL_FLOAT) the distance the probe backs off after triggering. Reflects\n screen entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 684 / 1288\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@@ -31615,15 +31615,15 @@\n wait for manual tool change acknowledgement\n go to VERSA_TOOLSETTER XY position\n go to VERSA_TOOLSETTER Z position\n fast probe\n slow probe\n go to TOOLCHANGE Z position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 685 / 1288\n \n Z_MAX_CLEAR is the Z position to go to before moving to the tool setter when using the Travel to\n Toolsetter button.\n Travel to Toolsetter Action sequence:\n \n@@ -31667,15 +31667,15 @@\n mode. A dialog will be shown allowing the spindle direction and speed to be preset. The start line is\n indicated in the box labelled LINE, next to the CYCLE START button. The run from line feature can\n be disabled in the settings page.\n nota\n LinuxCNC\u2019s run-from-line is not very user friendly. E.g., it does not start the spindle or confirm the\n proper tool. Also, it does not handle subroutines well. If used it is best to start on a rapid move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 686 / 1288\n \n 10.5.16. Laser buttons\n The LASER ON/OFF button in intended to turn an output on or off which is connected to a small laser\n crosshair projector. When the crosshair is positioned over a desired reference point on the workpiece,\n the REF LASER button can be pushed, which then sets the X and Y offsets to the values indicated by\n@@ -31707,15 +31707,15 @@\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. When this tab is selected the individual home buttons in the DRO area will\n change to tool offset setting buttons. They will return to home buttons when you select another tab.\n Pressing this tool button will drop down a when menu of options:\n Set Current Tool Position\n Adjust Current Tool Position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 687 / 1288\n \n Zero Current Tool Position\n Set Tool Offset Directly\n Reset To Last\n 10.5.17.5. Status Tab\n@@ -31747,15 +31747,15 @@\n Some program, such as Fusion 360 and Aspire will create these files for you. You can also write your\n own HTML docs with the included SetUp Writer button.\n There are three sub tabs:\n HTML - any loaded HTML pages are displayed here. The navigation buttons work on this page.\n PDF - any loaded PDF setup pages are displayed here.\n PROPERTIES - when a program is loaded its G-code properties are displayed here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 688 / 1288\n \n There are navigation buttons for HTML page:\n The up arrow returns you to the default HTML page.\n The left arrow moves backward one HTML page.\n The right arrow moves forward one HTML page.\n@@ -31770,15 +31770,15 @@\n The settings tab is used to set running options, probing/touchplate/laser/camera offsets and load debugging external programs.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 689 / 1288\n \n NGCGUI: is a QtVCP version of the popular G-code subroutine builder/selector, see Widgets-NGCGUI.\n \n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_uti\n 10.5.17.12. User Tab\n@@ -31806,15 +31806,15 @@\n DROLabel,\n StatusLabel#status_rpm {\n border: 1px solid black;\n border-radius: 4px;\n font: 20pt \u201dNoto Mono\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To change the DRO display font and display format:\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@@ -31866,15 +31866,15 @@\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 690 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 691 / 1288\n \n To have the manual spindle buttons also incrementally increase/decrease speed:\n #action_spindle_fwd{\n qproperty-spindle_up_action: true;\n }\n@@ -31893,15 +31893,15 @@\n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/qtdragonrc.py\n \n See Modifying Screens for more information about customization.\n \n Figura 10.36: QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 692 / 1288\n \n 10.6. NGCGUI\n \n Figura 10.37: NGCGUI embedded into AXIS\n \n@@ -31911,15 +31911,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 693 / 1288\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@@ -31951,15 +31951,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 694 / 1288\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@@ -31999,15 +31999,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 695 / 1288\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@@ -32044,15 +32044,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 696 / 1288\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@@ -32105,15 +32105,15 @@\n \n 10.6.4.2. Standalone PyNGCGUI\n For usage, type in a terminal:\n pyngcgui --help\n Usage:\n pyngcgui [Options] [<sub_filename>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 697 / 1288\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@@ -32165,15 +32165,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 698 / 1288\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@@ -32204,15 +32204,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 699 / 1288\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@@ -32286,15 +32286,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 700 / 1288\n \n GCMC_INCLUDE_PATH = /home/myname/gcmc_includes\n TTT\n TTT_PREAMBLE\n \n@@ -32340,15 +32340,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 701 / 1288\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@@ -32386,15 +32386,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 702 / 1288\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@@ -32440,15 +32440,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 703 / 1288\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@@ -32492,15 +32492,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 704 / 1288\n \n #<xparm> = #1\n #<yparm> = #2\n #<zparm> = #3\n \n@@ -32549,15 +32549,15 @@\n o<helper> call [#<x1>] [#<x2>] (call a subroutine)\n #<xresult> = #<_helper:answer> (immediately localize the helper global result)\n #<_helper:answer> = 0.0\n (nullify global named parameter used by subroutine)\n ...\n o<examp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 705 / 1288\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@@ -32599,15 +32599,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 706 / 1288\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@@ -32649,28 +32649,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n This photo shows the backplot of the DB25 subroutine.\n \n 707 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 708 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 709 / 1288\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@@ -32688,15 +32688,15 @@\n #<feedrate> = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i#<ra> f#<feedrate>\n g3 i[0-#<radius_b>]\n o<simp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 710 / 1288\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@@ -32712,15 +32712,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 711 / 1288\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@@ -32752,15 +32752,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 712 / 1288\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@@ -32792,15 +32792,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 713 / 1288\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@@ -32823,15 +32823,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 714 / 1288\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@@ -32880,15 +32880,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 715 / 1288\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. Version\n history can be seen by visiting this link which will show the latest available version. The installed\n@@ -32908,25 +32908,25 @@\n there are 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 716 / 1288\n \n Figura 10.40: 16:9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 717 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 718 / 1288\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@@ -32934,15 +32934,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 from here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 719 / 1288\n \n Following these instructions will yield a machine with the current stable branch of LinuxCNC (v2.9)\n on Debian 12 (Bookworm).\n 10.8.4.2. Package Installation (Buildbot) If The User Has Linux on Debian 12 (Bookworm)\n Follow the instructions from the Updating LinuxCNC on Debian Bookworm section from here.\n@@ -32983,15 +32983,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 720 / 1288\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@@ -33072,15 +33072,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -33146,15 +33146,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 722 / 1288\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@@ -33186,47 +33186,47 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 10.43: PnCConf QtPlasmaC Options\n \n 723 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 10.44: StepConf QtPlasmaC Options\n \n 724 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 725 / 1288\n \n Figura 10.45: QtPlasmaC User Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 726 / 1288\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 directory: ~/linuxcnc/configs/<machine_name>.\n The way the newly created QtPlasmaC configuration can be run from the terminal command line\n slightly differs depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 727 / 1288\n \n For a run in place installation:\n ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n After running the above command LinuxCNC should be running with the QtPlasmaC GUI visible.\n@@ -33249,25 +33249,25 @@\n For a run in place installation enter the following command in a terminal window:\n ~/linuxcnc-dev/lib/python/qtvcp/designer/install_script\n \n 10.8.5.6. Initial Setup\n The following heights diagram will help the user visualize the different heights involved in plasma\n cutting and how they are measured:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 728 / 1288\n \n Click on the Parameters Tab to view the CONFIGURATION section which shows the user settable\n parameters. It is necessary to ensure every one of these settings is tailored to the machine.\n To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following\n steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on\n the Z axis position while running a G-code program. These steps simply allow the user to more easily\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 729 / 1288\n \n set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to\n Z axis MINIMUM_LIMIT.\n nota\n The user should be familiar with the recommended Z Axis Settings.\n@@ -33304,15 +33304,15 @@\n 9. If the table has a laser or camera for sheet alignment, a scribe, or uses offset probing then the\n required offsets need to be applied by following the procedure described in Peripheral Offsets.\n 10. CONGRATULATIONS! The user should now have a working QtPlasmaC Configuration.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 730 / 1288\n \n importante\n IF USING A Mesa Electronics THCAD THEN THE Voltage Scale VALUE WAS OBTAINED\n MATHEMATICALLY. IF THE USER INTENDS TO USE CUT VOLTAGES FROM A MANUFACTURE\u2019S\n CUT CHART THEN IT WOULD BE ADVISABLE TO DO MEASUREMENTS OF ACTUAL VOLTAGES\n@@ -33340,15 +33340,15 @@\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-plasmac2qt\n \n The following screen will be displayed:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 731 / 1288\n \n Cuadro 10.10: Mandatory Settings\n Field\n INI FILE IN\n EXISTING\n@@ -33376,15 +33376,15 @@\n 2 - Estop is a button.\n \n ESTOP:1\n \n Optional Setting - This setting is not required unless the machine has a laser for sheet\n alignment. Leave this blank if it is not used/required. Leave this blank if it is not used/required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Field\n Laser On HAL Pin\n \n Description\n Power on a laser crosshair for sheet\n alignment.\n@@ -33426,15 +33426,15 @@\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 733 / 1288\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@@ -33448,15 +33448,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 734 / 1288\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@@ -33492,15 +33492,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 735 / 1288\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page VI of the finder General Technical\n Information document.\n Calculations:\n@@ -33537,15 +33537,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs/<machine_name>/<machine_name>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 736 / 1288\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@@ -33602,15 +33602,15 @@\n nota\n The configuration files (<machine_name>.ini and <machine_name>.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 <machine_name>.prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 737 / 1288\n \n 10.8.7.6. INI File\n QtPlasmaC has some specific <machine_name>.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@@ -33659,15 +33659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 738 / 1288\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@@ -33708,15 +33708,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 739 / 1288\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@@ -33733,15 +33733,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 740 / 1288\n \n Cuadro 10.14: (continued)\n Name\n PH:\n PD:\n@@ -33817,15 +33817,15 @@\n CYCLE START\n CYCLE PAUSE\n \n CYCLE STOP\n \n FEED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 741 / 1288\n \n Cuadro 10.15: (continued)\n Name\n RAPID\n \n@@ -33897,15 +33897,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 742 / 1288\n \n Cuadro 10.18: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -33997,15 +33997,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\n option is configured in the [POWERMAX] section of the\n <machine_name>.prefs file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 743 / 1288\n \n Cuadro 10.18: (continued)\n Name\n Status\n \n@@ -34073,15 +34073,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -34161,15 +34161,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 745 / 1288\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@@ -34182,30 +34182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 746 / 1288\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 hide 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 747 / 1288\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 This tab is used to display configuration parameters that are modified infrequently.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n@@ -34227,15 +34227,15 @@\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 This sets the number of times QtPlasmaC will attempt to start\n the arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 748 / 1288\n \n Cuadro 10.25: (continued)\n Name\n Retry Delay\n \n@@ -34312,15 +34312,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 749 / 1288\n \n Cuadro 10.27: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34371,15 +34371,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 750 / 1288\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@@ -34467,15 +34467,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 751 / 1288\n \n Cuadro 10.32: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34537,15 +34537,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 752 / 1288\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 hide this tab so machine settings cannot be modified by unauthorized personnel. This\n may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a\n@@ -34561,15 +34561,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 753 / 1288\n \n Cuadro 10.33: (continued)\n Name\n LED\n Background\n@@ -34647,15 +34647,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 754 / 1288\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@@ -34693,15 +34693,15 @@\n where <machine_name> is the machine name entered in the configuration wizard, <version> is the\n current QtPlasmaC version the user is on, <date> is the current date (YY-MM-DD), and <time> is the\n current time (HH-MM-SS).\n Prior to the backup being made, the machine log will be saved to a file in the configuration directory named machine_log_<date>_<time>.txt where <date> and <time> are formatted as described\n above. This file along with up to five previous machine logs will also be included in the backup.\n These files are not required by QtPlasmaC and are safe to delete at any time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 755 / 1288\n \n 10.8.8.7. STATISTICS Tab\n The STATISTICS Tab provides statistics to allow for the tracking of consumable wear and job run times.\n These statistics are shown for the current job as well as the running total. Previous job statistics are\n reset once the next program is run. The total values may be reset either individually by clicking the\n@@ -34714,15 +34714,15 @@\n of the configuration from the SETTINGS Tab then the machine log is also included in the backup.\n \n 10.8.9. Using QtPlasmaC\n Once QtPlasmaC is successfully installed, no Z axis motion is required to be part of the G-code cut\n program. In fact, if any Z axis references are present in the cut program, the standard QtPlasmaC\n configuration will remove them during the program loading process.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 756 / 1288\n \n For reliable use of QtPlasmaC the user should NOT use any Z axis offsets other than the coordinate\n system offsets (G54-G59.3).\n QtPlasmaC will automatically add a line of G-code to move the Z axis to the correct height at the\n beginning of every G-code program.\n@@ -34759,15 +34759,15 @@\n Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code\n syntax for QtPlasmaC to run a G-code program using a torch for cutting is M3 $0 S1 to begin a cut\n and M5 $0 to end a cut.\n For backwards compatibility it is permissible to use M3 S1 in lieu of M3 $0 S1 to begin a cutting job\n and M5 in lieu of M5 $0 to end a cutting job. Note, that this applies to cutting jobs only, for scribe and\n spotting jobs the $n tool identifier is mandatory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 757 / 1288\n \n 10.8.9.4. Coordinates\n See recommended Z axis settings.\n Each time LinuxCNC (QtPlasmaC) is started Joint homing is required. This allows LinuxCNC (QtPlasmaC) to establish the known coordinates of each axis and set the soft limits to the values specified in\n the <machine_name>.ini file in order to prevent the machine from crashing into a hard stop during\n@@ -34803,15 +34803,15 @@\n QtPlasmaC does not require the use of a material file. Instead, the user could change the cut parameters manually from the MATERIAL section of the PARAMETERS Tab. It is also not required to use\n the automatic material changes. If the user does not wish to use this feature they can simply omit the\n material change codes from the G-code file.\n It is also possible to not use the material file and automatically load materials from within the G-code\n file.\n Material numbers in the materials file do not need to be consecutive nor do they need to be in numerical order.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 758 / 1288\n \n The following variables are mandatory and an error message will appear if any are not found when\n the material file is loaded.\n PIERCE_HEIGHT\n PIERCE_DELAY\n@@ -34862,15 +34862,15 @@\n PAUSE_AT_END\n = value\n GAS_PRESSURE\n = value (only used for PowerMax communications)\n CUT_MODE\n = value (only used for PowerMax communications)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 759 / 1288\n \n It is possible to add new material, delete material, or edit existing material from the PARAMETERS\n tab.. It is also possible to achieve this by using magic comments in a G-code file.\n The material file may be edited with a text editor while LinuxCNC is running. After any changes have\n been saved, press Reload in the MATERIAL section of the PARAMETERS Tab to reload the material\n@@ -34910,15 +34910,15 @@\n M66 P3 L3 Q1\n F#<_hal[plasmac.cut-feed-rate]>\n M3 $0 S1\n .\n .\n M5 $0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 760 / 1288\n \n nota\n Returning to the default material prior to the end of the program is possible with the code M190 P-1.\n \n 10.8.9.9. Material Addition Via Magic Comments In G-code\n@@ -34964,15 +34964,15 @@\n o\n nu\n \n Description\n Selects the option to be used.\n Sets the material number (not used for option 0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n na\n ph\n pd\n ch\n fr\n@@ -35035,42 +35035,42 @@\n For a run in place installation enter the following two commands in a terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-materials\n \n This will bring up the Material Converter Main dialog box with Manual selected as the default.\n Select one of:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Manual - to manually create a new material file.\n \n SheetCam - to convert a SheetCam tool file.\n \n For SheetCam only, select whether the user requires a metric or imperial output file.\n Fusion 360 - to convert a Fusion 360 tool file.\n \n To convert:\n \n 762 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 763 / 1288\n \n 1. Select the Input File to be converted, press INPUT to bring up a file selector or directly enter\n the file in the entry box.\n 2. Select the Output File to write to, press OUTPUT to bring up a file selector or directly enter the file in the entry box. This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg. If\n necessary, the user could select a different file and hand edit the <machine_name>_material.cfg\n file.\n 3. Click CREATE/CONVERT and the new material file will be created.\n For both a Manual creation or a Fusion 360 conversion, a dialog box will show with all available\n parameters displayed for input. Any entry marked with *** is mandatory and all other entries are\n optional depending on the user\u2019s configuration needs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 764 / 1288\n \n nota\n If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it\n will be overwritten.\n \n@@ -35107,15 +35107,15 @@\n 3. Jog until the laser cross hairs are at the edge of the material a suitable distance away from the\n desired origin point.\n 4. Press MARK EDGE. The MARK EDGE button label will change to SET ORIGIN.\n 5. Jog until the laser cross hairs are at the origin point of the material.\n 6. Press SET ORIGIN. The SET ORIGIN button label will change to MARK EDGE and the HAL\n pin named qtplasmac.laser_on will be turned off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 765 / 1288\n \n 7. The torch will now move to the X0 Y0 position.\n 8. The offset is now successfully set.\n To turn the laser off and cancel an alignment:\n 1. Press the LASER button and hold for longer than 750 mSec.\n@@ -35125,15 +35125,15 @@\n If an alignment laser has been set up then it is possible to use the laser during CUT RECOVERY for\n accurate positioning of the new start coordinates.\n 10.8.9.12. CAMERA\n \n QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 766 / 1288\n \n are not parallel to the machine\u2019s X/Y axes. The CAMERA button will be enabled after the machine is\n homed.\n To use this feature, the user must set the camera\u2019s offset from the torch center by following the\n procedure described in Peripheral Offsets.\n@@ -35164,15 +35164,15 @@\n 6. The offset is now successfully set.\n In the CAMVIEW panel, the mouse can affect the cross hairs and the zoom level as follows:\n Mouse Wheel Scroll - Change cross hair diameter.\n Mouse Wheel Button Double Click - Restores cross hair diameter to default.\n Mouse Left Button Clicked + Wheel Scroll - Changes camera zoom level.\n Mouse Left Button Clicked + Wheel Button Double Click - Restores default camera zoom level.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 767 / 1288\n \n 10.8.9.13. Path Tolerance\n Path tolerance is set with a G64 command and a following P value. The P value corresponds to the\n amount that the actual cut path followed by the machine may deviate from the programmed cut path.\n The default LinuxCNC path tolerance is set for maximum speed which will severely round corners\n@@ -35214,15 +35214,15 @@\n \n TOOL #\n 0\n \n Description\n Used for normal Plasma cutting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Scribe\n Plasma Torch\n \n TOOL #\n 1\n@@ -35265,15 +35265,15 @@\n M67 E3 Q60 would set the velocity to 60 % of CutFeedRate.\n M67 E3 Q100 would set the velocity to 100 % of CutFeedRate.\n The minimum percentage allowed is 10 %, values below this will be set to 10 %.\n The maximum percentage allowed is 100 %, values above this will be set to 100 %.\n If the user intends to use this feature it would be prudent to add M68 E3 Q0 to both the preamble and\n postamble of the G-code program so the machine starts and ends in a known state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 769 / 1288\n \n importante\n G-CODE THC AND VELOCITY BASED THC ARE NOT ABLE TO BE USED IF CUTTER COMPENSATION IS IN EFFECT; AN ERROR MESSAGE WILL BE DISPLAYED.\n \n aviso\n@@ -35308,15 +35308,15 @@\n It is important to thoroughly understand the difference between Synchronized with Motion and\n Immediate:\n M62 and M63 (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for\n example) will happen at the beginning of the next motion command. If there is no subsequent motion\n command, the output changes will not occur. It is best practice to program a motion code (G0 or G1\n for example) right after a M62 or M63.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 770 / 1288\n \n M64 and M65 (Immediate) - These commands happen immediately as they are received by the motion\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n@@ -35351,15 +35351,15 @@\n 1. If the THC is disabled, or the THC is enabled but not active, then the IHS skip will occur if the\n start of the cut is less than Skip IHS distance from the last successful probe.\n 2. If the THC is enabled and active, then the IHS skip will occur if the start of the cut is less than\n Skip IHS distance from the end of the last cut.\n A value of zero for Skip IHS will disable all IHS skipping.\n Any errors encountered during a cut will disable IHS skipping for the next cut if Skip IHS is enabled.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 771 / 1288\n \n 10.8.9.21. Probing\n Probing may be done with either ohmic sensing or a float switch. It is also possible to combine the\n two methods, in which case the float switch will provide a fallback to ohmic probing. An alternative\n to ohmic probing is Offset Probing\n@@ -35398,15 +35398,15 @@\n Ohmic Offset in the PROBING frame of the CONFIGURATION section of the PARAMETERS Tab is\n used to set the correct measured height.\n The probe could be a mechanically deployed probe, a permanently mounted proximity sensor or even\n simply a stiff piece of wire extending about 0.5 mm (0.2\u201d) below the torch tip. If the probe is mechanically deployed then it needs to extend/retract rather quickly to avoid excessive probing times and\n would commonly be pneumatically operated.\n To use this feature, the user must set the probe\u2019s offset from the torch center by following the procedure described in Peripheral Offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 772 / 1288\n \n To modify the offsets manually, the user could edit either or both the following options in the [OFFSET_PROBING] section of the <machine_name>.prefs file:\n X axis = n.n\n Y axis = n.n\n Delay = t.t\n@@ -35443,15 +35443,15 @@\n cut type is toggled.\n 10.8.9.24. Hole Cutting - Intro\n It is recommended that any holes to be cut have a diameter no less than one and a half times the\n thickness of the material to be cut.\n It is also recommended that holes with a diameter of less than 32 mm (1.26\u201d) are cut at 60 % of the\n feed rate used for profile cuts. This should also lock out THC due to velocity constraints.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 773 / 1288\n \n QtPlasmaC can utilize G-code commands usually set by a CAM Post Processor (PP) to aid in hole cutting\n or if the user does not have a PP or the user\u2019s PP does not support these methods then QtPlasmaC\n can automatically adapt the G-code to suit. This automatic mode is disabled by default.\n There are three methods available for improving the quality of small holes:\n@@ -35495,15 +35495,15 @@\n the M-Codes M62 (Synchronized with Motion)* or M64 (Immediate). After turning the torch off it is\n necessary to allow the torch to be turned on again before beginning the next cut by resetting the\n motion.digital-out-03 pin with the M-Codes M63 or M65, this will be done automatically by the\n QtPlasmaC G-code parser if it reaches an M5 command without seeing a M63 P3 or M65 P3.\n After the torch is turned off the hole path will be followed for a default length of 4 mm (0.157\u201d). This\n distance may be specified by adding #<oclength> = n to the G-code file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 774 / 1288\n \n M62 P3 will turn the torch off (Synchronized with Motion)\n M63 P3 will allow the torch to be turned on (Synchronized with Motion)\n M64 P3 will turn the torch off (Immediately)\n M65 P3 will allow the torch to be turned on (Immediately)\n@@ -35544,15 +35544,15 @@\n G-code parameters to select the desired hole sensing mode:\n #<holes> = 0 - Causes QtPlasmaC to disable hole sensing if it was previously enabled.\n #<holes> = 1 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) to 60 % of\n CutFeedRate.\n #<holes> = 2 - Causes QtPlasmaC to Over cut the hole in addition to the velocity changes in setting\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 775 / 1288\n \n #<holes> = 3 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) and arcs\n less than 16 mm (0.63\u201d) to 60 % of CutFeedRate.\n #<holes> = 4 - Causes QtPlasmaC to Over cut the hole in addition to the velocity change in setting\n 3.\n@@ -35594,15 +35594,15 @@\n to running a G-code program.\n The machine needs to be homed before commencing a single cut.\n A single cut will commence from the machine\u2019s current X/Y position.\n Automatic Single Cut\n This is the preferred method. The parameters for this method are entered in the following dialog box\n that is displayed after pressing a user button which has been coded to run single cut:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 776 / 1288\n \n 1. Jog to the required X/Y start position.\n 2. Set required appropriate material, or edit the Feed Rate for the default material in the PARAMETERS Tab.\n 3. Press the assigned single cut user button.\n 4. Enter the length of the cut along the X and/or Y axes.\n@@ -35617,15 +35617,15 @@\n 6. When the cut is complete stop the spindle.\n 7. The torch will turn off and the Z axis will return to the starting position.\n Manual Single Cut\n Manual single cut requires that either keyboard shortcuts are enabled in the GUI SETTINGS section\n of the SETTINGS Tab, or a custom user button is specified as a manual cut button.\n If the user is using a custom user button then substitute F9 with User Button in the following description.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 777 / 1288\n \n 1. Jog to the required X/Y start position.\n 2. Start the procedure by pressing F9. The jog speed will be automatically set to the feed rate of the\n currently selected material. The jog label will blink to indicate that the jog speed is temporarily\n being overridden (jog speed manipulation will be disabled while a manual cut is active). CYCLE\n@@ -35663,15 +35663,15 @@\n the Pierce Height\n Setting for Puddle Jump are described in cut parameters\n The recommended option is to use Pierce Only due to it being able to utilise near end of life consumables.\n \n importante\n PUDDLE JUMP IS DISABLED DURING CUT RECOVERY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 778 / 1288\n \n 10.8.9.29. Mesh Mode (Expanded Metal Cutting)\n QtPlasmaC is capable of cutting of expand (mesh) metal provided the machine has a pilot arc torch\n and it is capable of Constant Pilot Arc (CPA) mode.\n Mesh Mode disables the THC and also ignores a lost Arc OK signal during a cut. It can be selected\n@@ -35702,15 +35702,15 @@\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n This mode may also be used in conjunction with Mesh Mode if the user doesn\u2019t require an Arc OK\n signal to begin the cut.\n Both Mesh Mode and Ignore Arc OK can be enabled/disabled at any time during a job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 779 / 1288\n \n 10.8.9.31. Cut Recovery\n \n This feature will produce a CUT RECOVERY panel that will allow the torch to be moved away from\n the cut path during a paused motion event in order to position the torch over a scrap portion of the\n@@ -35734,15 +35734,15 @@\n JOGGING panel. It will not reset any REV or FWD motion.\n If an alignment laser has been set up then it is possible to use the laser during cut recovery for very\n accurate positioning of the new start coordinates. If either the X axis offset or Y axis offset for the\n laser would cause the machine to move out of bounds then an error message will be displayed.\n To use a laser for cut recovery when paused during a cut:\n 1. Click the LASER button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 780 / 1288\n \n 2. LASER button will change to disabled, the HAL pin named qtplasmac.laser_on will be turned on\n and the X and Y axis will offset so that the laser cross hairs will indicate the starting coordinates\n of the cut when it is resumed.\n 3. Continue the cut recovery as described above.\n@@ -35770,15 +35770,15 @@\n subroutine and clicks \u201dSELECTED nn\u201d then an error message will be displayed that includes the\n O-code name of the subroutine.\n It is not possible to use Run From Line if previous G-code has set cutter compensation active. If the\n user selects a line while cutter compensation is active and clicks \u201dSELECTED nn\u201d then an error\n message will be displayed.\n It is possible to select a new line while Run From Line is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n USE LEADIN\n LEADIN LENGTH\n LEADIN ANGLE\n \n CANCEL\n@@ -35816,15 +35816,15 @@\n 3. Clicking RELOAD in the G-code window header - this method will cancel the Run From Line\n process if LOAD was clicked on the Run From Line dialog box and \u201drfl.ngc\u201d is displayed as the\n loaded file name in the G-code window header. This will return the user to the originally loaded\n file.\n 10.8.9.33. Scribe\n A scribe may be operated by QtPlasmaC in addition to the plasma torch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 782 / 1288\n \n Using a scribe requires the use of the LinuxCNC tool table. Tool 0 is assigned to the plasma torch\n and Tool 1 is assigned to the scribe. The scribe X and Y axes offsets from the plasma torch need to be\n entered into the LinuxCNC tool table. This is done by editing the tool table via the main GUI, or by\n editing the tool.tbl file in the <machine_name> configuration directory. This will be done after the\n@@ -35870,15 +35870,15 @@\n The user can switch between the torch and the scribe any number of times during a program by using\n the appropriate G-codes.\n Issuing M3 S1 (without $n) will cause the machine to behave as if an M3 $0 S1 had been issued\n and issuing M5 (without $n) will cause the machine to behave as if an M5 $0 had been issued. This\n will control the torch firing by default in order to provide backward compatibility for previous G-code\n files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 783 / 1288\n \n aviso\n If there is an existing manual tool change parameter set in the <machine_name>.hal file then\n QtPlasmaC will convert it to an automatic tool change.\n \n@@ -35919,30 +35919,30 @@\n The high feed rate of 99999 is to ensure that the motion is at the machine\u2019s highest feed rate.\n \n importante\n SOME PLASMA CUTTERS WILL NOT BE SUITABLE FOR THIS FEATURE.\n IT IS RECOMMENDED THAT THE USER CARRY OUT SOME TEST SPOTTING TO ENSURE THAT THE\n PLASMA CUTTER IS CAPABLE OF UTILIZING THIS FEATURE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 784 / 1288\n \n 10.8.9.35. Virtual Keyboard Custom Layouts\n Virtual keyboard support is available for only the \u201donboard\u201d onscreen keyboard. If it is not already on\n the system it may be installed by typing the following in a terminal:\n sudo apt install onboard\n \n The following two custom layouts are used for soft key support:\n \n Figura 10.48: Number keypad - used for the CONVERSATIONAL Tab and the PARAMETERS Tab\n \n Figura 10.49: Alpha-numeric keypad - used for G-code editing and file management.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 785 / 1288\n \n If the virtual keyboard has been repositioned and on the next opening of a virtual keyboard it is not\n visible then clicking twice on the onboard icon in the system tray will reposition the virtual keyboard\n so the move handle is visible.\n 10.8.9.36. Keyboard Shortcuts\n@@ -36019,15 +36019,15 @@\n Jogs the Y axis positive.\n Jogs the Y axis negative.\n Jogs the Z axis positive.\n Jogs the Z axis negative.\n Jogs the A axis positive.\n Jogs the A axis negative.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Keyboard\n Shortcut\n .\n ,\n SHIFT (+ Jog Key)\n + (+Jog Key)\n@@ -36051,15 +36051,15 @@\n QtPlasmaC can be used to access several other handy features. The following link outlines the features\n and their use: Secci\u00f3n 12.7.2.21[MDILine Widget]\n nota\n M3, M4, and M5 are not allowed in the QtPlasmaC MDI.\n \n In addition, pressing RETURN (or ENTER) with no entry in the MDI will close the MDI window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 787 / 1288\n \n 10.8.10. Conversational Shape Library\n \n The Conversational Shape Library consists of several basic shapes and functions to assist the user\n with generating quick G-code at the machine to cut simple shapes quickly. This feature is found on\n@@ -36069,15 +36069,15 @@\n what can be achieved.\n \n Blank entries in the shape input boxes will use the current setting at the time the G-code was generated. For example, if X start was left blank then the current X axis position would be used.\n All leadins and leadouts are arcs except for Circles and Stars:\n Circles:\n If the circle is external then any leadin or leadout will be an arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 788 / 1288\n \n If the circle is internal and a small hole then any leadin will be perpendicular and there will be no\n lead out.\n If the circle is internal and not a small hole then any leadin and leadout will be an arc. If the leadin\n has a length greater than half the radius then the leadin will revert to perpendicular and there will\n@@ -36137,15 +36137,15 @@\n required then it can be removed by pressing the NEW button.\n If there is an added shape that is unsaved or unsent then it is not possible to switch tabs in the GUI.\n To re-enable switching tabs it is necessary to either SAVE the shape, SEND the shape, or press NEW\n to remove the shape.\n If NEW is pressed to remove an added shape that is unsaved or unsent then a warning dialog will be\n displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 789 / 1288\n \n nota\n All distances are in machine units relative to the current User Coordinate System and all angles are\n in degrees.\n \n@@ -36173,15 +36173,15 @@\n G21\\nG40\\nG49\\nG64p0.1\\nG80\\nG90\\nG92.1\\nG94\\nG97\n \n Pressing the RELOAD button will discard any changed but unsaved settings.\n Pressing the SAVE button will save all the settings as displayed.\n Pressing the EXIT button will close the setting panel and return to the previous shape.\n 10.8.10.2. Conversational Lines And Arcs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 790 / 1288\n \n Lines and arcs have an additional option in that they may be strung together to create a complex\n shape.\n There are two line types and three arc types available:\n 1. Line given a start point and an end point.\n@@ -36203,15 +36203,15 @@\n segment of the shape. If a leadout is required it will need to be the last segment of the shape.\n nota\n At this stage there is no automatic option for a leadin/leadout creation if the shape is closed.\n \n 10.8.10.3. Conversational Single Shape\n The following shapes are available for creation:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 791 / 1288\n \n To create a shape:\n 1. Select the corresponding icon for the shape to create. The available parameters will be displayed.\n 2. Choose the material from the MATERIAL drop down. If no material is chosen, the default material\n (00000) will be used.\n@@ -36222,15 +36222,15 @@\n For CIRCLE, the OVER CUT button will become valid when a CUT TYPE of INTERNAL is selected\n and the value entered in the DIAMETER field is less than the Small Hole Diameter parameter in the\n Conversational SETTINGS section.\n For BOLT CIRCLE the OVER CUT button will become valid if the value entered in the HOLE DIA\n field is less than the SMALL HOLES DIAMETER parameter in the Conversational SETTINGS section.\n For the following shapes, KERF OFFSET will become active once a LEAD IN is specified:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 792 / 1288\n \n 1. TRIANGLE\n 2. RECTANGLE\n 3. POLYGON\n 4. SLOT\n@@ -36257,15 +36257,15 @@\n using the Conversational Shape Library that has been previously loaded from the MAIN Tab.\n A previously saved Block G-code file may also be loaded from the MAIN Tab and then have any of its\n operations edited using the Conversational Block feature.\n Block operations:\n Rotate\n Scale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 793 / 1288\n \n Array\n Mirror\n Flip\n To create a block:\n@@ -36302,15 +36302,15 @@\n 10.8.11. Error Messages\n 10.8.11.1. Error Logging\n All errors are logged into the machine log which is able to be viewed in the STATISTICS Tab. The log\n file is saved into the configuration directory when QtPlasmaC is shutdown. The five last logfiles are\n kept, after which the oldest logfile is deleted each time a new log file is created. These saved log files\n may be viewed with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 794 / 1288\n \n 10.8.11.2. Error Message Display\n By default, QtPlasmaC will display error messages via a Operator Error popup window. In addition,\n QtPlasmaC will alert the user that an error has been sent to the machine log by displaying the message\n \u201dERROR SENT TO MACHINE LOG\u201d in the lower left portion of the status bar.\n@@ -36344,15 +36344,15 @@\n ohmic probe detected before probing program is paused\n float switch detected before probing program is paused\n breakaway switch detected before probing program is paused\n The Arc OK signal was lost during cutting motion, before the M5 command was reached:\n valid arc lost program is paused\n The Z axis reached the bottom limit before the work piece was detected:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 795 / 1288\n \n bottom limit reached while probing down program is paused\n The work piece is too high for any safe rapid removes:\n material too high for safe traverse, program is paused\n One of these values in MATERIAL section of the PARAMETERS Tab is invalid (For example: if they are\n@@ -36381,15 +36381,15 @@\n Warning messages will not pause a running program and are informational only.\n These messages indicate the corresponding sensor was activated before a probe test commenced:\n ohmic probe detected before probing probe test aborted\n float switch detected before probing probe test aborted\n breakaway switch detected before probing probe test aborted\n This indicates that the corresponding sensor was activated during a consumable change:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 796 / 1288\n \n breakaway, float, or ohmic activated during consumable change, motion is paused\n WARNING: MOTION WILL RESUME IMMEDIATELY UPON RESOLVING THIS CONDITION!\n \n aviso\n@@ -36421,15 +36421,15 @@\n released. QtPlasmaC will then automatically update its configuration the first time it is run after a\n LinuxCNC update.\n LinuxCNC is normally updated by entering the following commands into a terminal window (one at a\n time):\n sudo apt update\n sudo apt dist-upgrade\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 797 / 1288\n \n 10.8.12.2. Continuous Update\n Enhancements and bug fixes will not be available on a standard installation until a new minor release\n of LinuxCNC has been released. If the user wishes to update whenever a new QtPlasmaC version has\n been pushed, they could use the LinuxCNC Buildbot repository rather than the standard LinuxCNC\n@@ -36467,15 +36467,15 @@\n #led_torch_on {\n qproperty-diameter: 30;\n qproperty-color: green }\n #torch_enable::indicator {\n width: 30;\n height: 30}\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 798 / 1288\n \n 10.8.14.2. Create A New Style\n Custom stylesheets are enabled by setting the following option in the [GUI_OPTIONS] section of the\n <machine_name>.prefs file. This option must be set to the filename of the stylesheet as shown below.\n Custom style = the_cool_style.qss\n@@ -36535,15 +36535,15 @@\n background of active camera/laser buttons\n foreground of G-code editor cursor\n background of G-code display active line\n \n 10.8.14.3. Returning To The Default Styling\n The user may return to the default styling at any time by following the following steps:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 799 / 1288\n \n 1. Close QtPlasmaC if open.\n 2. Delete qtplasmac.qss from the machine config directory.\n 3. Delete qtplasmac_custom.qss from the machine config directory (if it exists).\n 4. Open <machine_name>.prefs file.\n@@ -36583,15 +36583,15 @@\n Function\n custom_pre_process This does basic processing of each line before any processing is done in\n the filter.\n custom_pre_parse\n This parses any G-code from a line before any parsing done in the filter.\n custom_post_parse This parses any G-code from a line after any parsing done in the filter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 800 / 1288\n \n These methods are applied by the following procedure:\n Define the method with an argument for the incoming data.\n Add any required code to manipulate the data.\n Return the resultant data.\n@@ -36627,15 +36627,15 @@\n 9:16 - Minimum 15, Maximum 20\n The user will need to run QtPlasmaC at the desired screen size to determine how many user buttons\n are available for use.\n All <machine_name>.prefs file settings for the buttons are found in the [BUTTONS] section.\n Button Names The text that appears on the button is set the following way:\n n Name = HAL Show\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 801 / 1288\n \n Where n is the button number and HAL Show is the text.\n For text on multiple lines, split the text with a \\ (backslash):\n n Name = HAL\\Show\n \n@@ -36670,15 +36670,15 @@\n .py extension. It is valid to use the ~ character as a shortcut for the users home directory.\n n Code = %halshow\n \n G-code\n To run G-code, just enter the code to be run.\n n Code = G0 X100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 802 / 1288\n \n To run an existing subroutine.\n n Code = o<the_subroutine> call\n \n <machine_name>.ini file variables can be entered by using the standard LinuxCNC G-code format. If\n@@ -36719,15 +36719,15 @@\n n Code = toggle-halpin the-hal-pin-name runcritical\n \n Toggle Alignment Laser HAL Pin\n The following code will allow the user to use a button to invert the current state of the alignment laser\n HAL bit pin:\n n Code = toggle-laser\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 803 / 1288\n \n This code is also able to be used as a multiple command with G-code or external commands but may\n control only the alignment laser HAL bit pin.\n The button colors will follow the state of the alignment laser HAL pin.\n After setting the code, upon clicking, the button will invert colors and the alignment laser HAL pin\n@@ -36768,15 +36768,15 @@\n n Code = probe-test 6\n \n nota\n Enabling a user button as a Probe Test button will add an external HAL pin that may be connected\n from a pendant etc. HAL connections to this HAL pin needs to be specified in a postgui HAL file as\n the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 804 / 1288\n \n Ohmic Test\n QtPlasmaC will enable the Ohmic Probe Enable output signal and if the Ohmic Probe input is sensed,\n the LED indicator in the SENSOR Panel will light. The main purpose of this is to allow a quick test for\n a shorted torch tip.\n@@ -36815,15 +36815,15 @@\n HAL file as the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n Load\n Loading a G-code program from the directory specified by the PROGRAM_PREFIX variable in the\n <machine_name>.ini file (usually ~/linuxcnc/nc_files) is possible by using the following format:\n n Code = load G-code.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 805 / 1288\n \n If the user\u2019s G-code file is located in a sub-directory of the PROGRAM_PREFIX directory, it would be\n accessed by adding the sub-directory name to the beginning of the G-code file name. Example for a\n sub-directory named plasma:\n n Code = load plasma/G-code.ngc\n@@ -36865,15 +36865,15 @@\n portion of the button code. If the feed rate is omitted from the button code, framing motion velocity\n will default to the feed rate for the currently selected material.\n The following GUI buttons and Keyboard Shortcuts (if enabled in the SETTINGS Tab) are valid during\n Framing motion:\n 1. Pressing CYCLE STOP or the ESC keyboard shortcut - Stops Framing motion.\n 2. Pressing CYCLE PAUSE or the SPACE BAR keyboard shortcut- Pauses Framing motion.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 806 / 1288\n \n 3. Pressing CYCLE RESUME or the CTRL+r keyboard shortcut- Resumes paused Framing motion.\n 4. Changing the FEED SLIDER or any of the CTRL+0-9 keyboard shortcuts - Slows the feed rate.\n nota\n IF THE FEED RATE IS CHANGED FOR THE FRAMING MOTION, IT WILL BE NECESSARY TO RETURN THE\n@@ -36909,15 +36909,15 @@\n n Code = latest-file /home/me/linuxcnc/nc_files/qtplasmac-test\n \n User Manual\n This allows the showing/hiding of the online HTML user manual specific to the version of LinuxCNC\n currently running. Note that internet access is required for this functionality.\n n Code = user-manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 807 / 1288\n \n 10.8.15.2. Peripheral Offsets (Laser, Camera, Scribe, Offset Probe)\n Use the following sequence to set the offsets for a laser, camera, scribe, or offset probe:\n 1. Place a piece of scrap material under the torch.\n 2. The machine must be homed and idle before proceeding.\n@@ -36931,15 +36931,15 @@\n 7. Click the appropriate button to activate the peripheral.\n 8. The Get Peripheral Offsets dialog will now be showing.\n \n 9. Raise the Z axis so the torch and peripheral are clear of the material.\n 10. Jog the X/Y axes so that the peripheral is centered in the mark from the torch.\n 11. Click the GET OFFSETS button to get the offsets and a confirmation dialog will open.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 808 / 1288\n \n 12. Click SET OFFSETS and the offsets will now be saved.\n Canceling may be done at any stage by pressing the CANCEL button which will close the dialog and\n no changes will be saved.\n If CAMERA was selected at item 7 above and more than one camera exists then a camera selection\n@@ -36949,15 +36949,15 @@\n If PROBE was selected at item 7 above then a delay dialog will show prior to the confirmation dialog\n at item 11. This is for the delay required for the probe to deploy to its working position.\n \n nota\n It may be necessary to click the preview window to enable jogging. By following the above procedure\n the offsets are available for use immediately and no restart of LinuxCNC is required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 809 / 1288\n \n 10.8.15.3. Keep Z Motion\n By default, QtPlasmaC will remove all Z motion from a loaded G-code file and add an initial Z movement\n to bring the torch near the top of travel at the beginning of the file. If the user wishes to use their\n table with a marker, a drag knife, diamond scribe, etc. mounted in the torch holder, QtPlasmaC has\n@@ -37054,15 +37054,15 @@\n qtplasmac.ext_ignore_arc_ok\n IGNORE OK\n qtplasmac.ext_cutrec_fwd\n CUT RECOVERY FWD\n qtplasmac.ext_cutrec_rev\n CUT RECOVERY REV\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n User Button Function\n Cancel any Cut Recovery\n movement\n Move up\n Move down\n Move right\n@@ -37132,15 +37132,15 @@\n Hide run = True\n Hide pause = True\n Hide abort = True\n \n For the 16:9 or 4:3 GUIs, the hiding of each of these GUI buttons will expose two more custom user\n buttons in the GUI.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 811 / 1288\n \n 10.8.15.6. Tuning Mode 0 Arc OK\n Mode 0 Arc OK relies on the arc voltage to set the Arc OK signal. This is accomplished by sampling the\n arc voltage every servo thread cycle. There needs to be a specified number of consecutive samples,\n all within a specified threshold for the Arc OK signal to be set. These voltages are also required to be\n@@ -37179,15 +37179,15 @@\n many different variables (electrical noise, incorrect THCAD tuning, etc.).\n After all contributing factors have been mitigated, if a small fluctuation still exists it is possible to\n eliminate it by widening the voltage window for which QtPlasmaC will display 0 V.\n The pin for adjusting this value is named plasmac.zero-window and the default value is set to 0.1. To\n change this value, add the pin and the required value to the custom.hal file.\n The following example would set the voltage window to be displayed as 0 V from -5 V to +5 V:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 812 / 1288\n \n setp plasmac.zero-window 5\n \n 10.8.15.9. Tuning Void Sensing\n In addition to the Void Slope setting in the PARAMETERS Tab there are two HAL pins to aid in the\n@@ -37219,15 +37219,15 @@\n setp qtplasmac.tabs_always_enabled 1\n \n aviso\n It is the responsibility of the operator to ensure that the machine is equipped with a suitable,\n working hardware E-stop. If using only a touchscreen to navigate the QtPlasmaC GUI, there is\n no way to stop automated machine motion on any tab but the MAIN tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 813 / 1288\n \n 10.8.15.12. Override Jog Inhibit Via Z+ Jog\n It is possible to override the jog inhibit by using the GUI or keyboard to jog in the Z+ direction rather\n than checking the Override Jog box on the SETTINGS Tab.\n This is done by changing the following option to True in the [GUI_OPTIONS] of the <machine_name>.prefs\n@@ -37322,15 +37322,15 @@\n cut recovery is deactivated\n \n The DEBUG state is for testing purposes only and will not normally be encountered.\n 10.8.15.14. QtPlasmaC Debug Print\n The plasmac HAL component has a HAL pin named plasmac.debug-print which if set to 1 (true) will\n print to terminal every state change as a debug aid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 814 / 1288\n \n 10.8.15.15. Hypertherm PowerMax Communications\n Communications can be established with a Hypertherm PowerMax plasma cutter that has a RS485\n port. This feature enables the setting of Cut Mode, Cutting Amperage and Gas Pressure automatically from the Cut Parameters of the material file. In addition, the user will be able to view the\n PowerMax\u2019s Arc On Time in hh:mm:ss format on the STATISTICS Tab.\n@@ -37367,15 +37367,15 @@\n 1. Disable PowerMax Comms from the MAIN Tab\n 2. Close LinuxCNC which will put the PowerMax into local mode during shutdown.\n 3. Turn the PowerMax off for 30 seconds and then power it back on.\n sugerencia\n If PowerMax communications is active then selecting Mesh Mode will automatically select CPA mode\n on the PowerMax unit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 815 / 1288\n \n nota\n To use the PowerMax communications feature it is necessary to have the Python pyserial module\n installed.\n If pyserial is not installed an error message will be displayed.\n@@ -37424,15 +37424,15 @@\n \n pylupdate5\n \n .py\n \n ../.py\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 816 / 1288\n \n The editing of the translation is done with the linguist application:\n linguist\n \n 1. Open the TS file and translate the strings\n@@ -37466,15 +37466,15 @@\n as:\n 1. ARC VOLTAGE\n 2. OHMIC SENSE\n 3. FLOAT SWITCH\n 4. BREAKAWAY SWITCH\n 5. ESTOP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 817 / 1288\n \n 10.8.17.2. NGC Samples\n There are some sample G-code files in the ~/linuxcnc/nc_files/examples/plasmac directory.\n 10.8.17.3. QtPlasmaC Specific G-codes\n Description\n@@ -37553,15 +37553,15 @@\n #<holes> = 2\n for holes less than 32 mm (1.26\u201d) diameter\n over cut length = 4 mm (0.157\u201d)\n #<holes> = 3\n for holes less than 32 mm (1.26\u201d) diameter\n for arcs less than 16 mm (0.63\u201d) radius\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut holes and arcs at 60 %\n feed rate, turn torch off at hole\n end, continue hole path for\n over cut.\n Specify hole diameter for\n@@ -37640,15 +37640,15 @@\n M67 E3 Q60 (reduce feed rate to 60 %)\n G3 I10 (the hole)\n M67 E3 Q100 (restore feed rate to 100 %)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut a hole with 60 % reduced\n speed using the #<holes>\n command\n \n Cut a hole with over cut using\n@@ -37714,15 +37714,15 @@\n M3 $0 S1 (start cut)\n G1 X0\n G3 I10 (the hole)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Select scribe and select torch\n at end of scribing\n \n Hole center spotting.\n \n@@ -37785,15 +37785,15 @@\n F/32\n \n This value is required to be entered into PnCconf during installation.\n nota\n If using a parallel port it may be necessary for the user to adjust the jumper setting and the subsequent scaling values on the Parameters Tab to achieve optimal results. Symptoms may include\n random torch raises or dives during otherwise stable cutting. Halscope plots may be useful in diagnosing these issues.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 821 / 1288\n \n Located on the rear of the THCAD is a calibration sticker showing:\n THCAD-nnn\n 0V\n 5V\n@@ -37836,15 +37836,15 @@\n nota\n These values can be calculated by using this online calculator.\n \n nota\n There is a lowpass filter available which may be useful if using a THCAD and there is a lot of noise on\n the returned arc voltage.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 822 / 1288\n \n 10.8.17.6. RS485 Connections\n Hypertherm RS485 Wiring Diagram (wire colors inside the Hypertherm in parentheses):\n Connection at Machine Pin #\n 1 - Tx+ (Red)\n@@ -37857,56 +37857,56 @@\n DTECH DT-5019 USB to RS-485 converter adapter:\n \n Connection at Breakout Board\n ->RXD+\n ->RXD->T/R+\n ->T/R->GND\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 823 / 1288\n \n The following is necessary to convert a motherboard Serial connection or Serial card (RS232) to\n RS485:\n DTECH RS-232 to RS-485 converter:\n \n Serial card example (Sunnix SER5037A PCI Card shown with Breakout Board):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 824 / 1288\n \n 10.8.17.7. Arc OK With A Reed Relay\n An effective and very reliable method of obtaining an Arc OK signal from a plasma power supply\n without a CNC port is to mount a reed relay inside a non-conductive tube and wrap and secure three\n turns of the work lead around the tube.\n This assembly will now act as a relay that will switch on when current is flowing through the work\n lead which only occurs when a cutting arc has been established.\n This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the QtPlasmaC\n Modes sections for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 825 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 826 / 1288\n \n 10.8.17.8. Contact Load Schematics\n \n A full description is at Contact Load.\n \n 10.8.18. Known Issues\n 10.8.18.1. Keyboard Jogging\n There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and\n starting during jogging. This issue can be prevented by disabling the Operating System\u2019s autorepeat\n feature for all keys. QtPlasmaC uses this disabling feature by default for all keys only when the MAIN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 827 / 1288\n \n Tab is visible, with the following exceptions when autorepeat is allowed with the MAIN Tab visible: Gcode editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System\u2019s autorepeat\n feature will be enabled for all keys.\n If the user wishes to prevent QtPlasmaC from changing the Operating System\u2019s autorepeat settings,\n enter the following option in the [GUI_OPTIONS] section of the <machine_name>.prefs file:\n@@ -37928,15 +37928,15 @@\n MDRO is a simple graphical front-end for LinuxCNC providing a display of data from Digital Read\n Out (DRO) scales. It provides functionality similar to a normal machinist\u2019s DRO display, allowing the\n user to use the DRO scales on the machine when operating in a manual-only (hand-cranked) mode.\n It is most useful for manual machines such as DRO equipped Bridgeport style mills that have been\n converted to CNC but still have the manual controls.\n MDRO is mouse and touch screen friendly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 828 / 1288\n \n Figura 10.50: MDRO Window\n \n 10.9.2. Getting Started\n If your configuration is not currently set up to use MDRO, you can change it by editing the INI file.\n@@ -37946,15 +37946,15 @@\n When MDRO starts, a window like the one in the figure Figura 10.50 above opens.\n 10.9.2.1. INI File Options\n Other options that can be included on the [DISPLAY] section include:\n MDRO_VAR_FILE = <file.var> - preload G54 - G57 coordinate system data.\n \u2022 Preload a .var file. This is typically the .var file used by the operational code.\n POINT_SIZE = <n> - Set text point size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 829 / 1288\n \n \u2022 This option sets the size of the font used which sets the overall size of the window. The default\n point size is 20, Typical sizes are 20 to 30.\n MM = 1 Set this if the DRO scales provide data scaled in millimeters.\n 10.9.2.2. Command Line Options\n@@ -37990,15 +37990,15 @@\n \u2022 a \u201dz\u201d button that zeros the value,\n \u2022 a \u201d1/2\u201d button that halves the value,\n \u2022 a entry field that can be used to set a user-defined value. This field can be set from the keyboard\n or from the on-screen keypad.\n \u2022 A \u201dI\u201d button that starts an index operation (see below),\n a keypad used to set values in the entry field via a mouse or touchscreen,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 830 / 1288\n \n coordinate system selection buttons:\n \u2022 The \u201dmcs\u201d button selects the machine coordinate system. These are the raw values from the\n encoders connected to the mdro.axis.n pins.\n \u2022 The \u201dcs1\u201d - \u201dcs4\u201d buttons allow the user to select among one of four user-defined coordinate\n@@ -38016,15 +38016,15 @@\n The easiest way to see how MDRO works is to try it in a simulation environment. Add this section to the\n end of your simulation HAL file, usually \u201dhallib/core_sim.hal\u201d:\n loadusr -W mdro -l sim.var XYZ\n net x-pos-fb => mdro.axis.0\n net y-pos-fb => mdro.axis.1\n net z-pos-fb => mdro.axis.2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 831 / 1288\n \n Cap\u00edtulo 11\n \n G-code Programming\n 11.1. Coordinate Systems\n@@ -38051,15 +38051,15 @@\n will move from the current position to the position where the machine coordinates of the three axes\n will be at zero. You can use this command if you have a fixed position for the tool change or if your\n machine has an automatic tool changer. You can also use this command to clear the work area and\n access the workpiece in the vise.\n G53 is a non modal command. It must be used in every block where a move in machine coordinate\n system is desired.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 832 / 1288\n \n 11.1.3. Coordinate Systems\n \n Figura 11.1: Coordinate Systems Example\n Coordinate System Offsets\n@@ -38082,15 +38082,15 @@\n In the VAR file scheme, the first variable number stores the X offset, the second the Y offset and so on\n for all nine axes. There are numbered sets like this for each of the coordinate system offsets.\n Each of the graphical interfaces has a way to set values for these offsets. You can also set these values\n by editing the VAR file itself and then restart LinuxCNC so that the LinuxCNC reads the new values\n however this is not the recommended way. Using G10, G52, G92, G28.1, etc are better ways to set the\n variables. For our example, we will directly edit the file so that G55 will take the following values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 833 / 1288\n \n Cuadro 11.1: Example of G55 parameters\n Axis\n X\n Y\n@@ -38156,15 +38156,15 @@\n uses parameters of \u2190coordinate system 4G58\n uses parameters of coordinate system 5G59\n uses \u2190parameters of coordinate system 6G59.1\n uses parameters of coordinate system 7G59.2 \u2190uses parameters of coordinate system 8G59.3\n uses parameters of coordinate system \u21909---=== Default Coordinate System\n One other variable in the VAR file becomes important when we think about offset systems. \u2190This variable is named 5220. In the default files its value is set to 1.00000. This \u2190means that when the LinuxCNC starts up it should use the first coordinate system as its \u2190default. If you set this to 9.00000 it would use the ninth offset system as its default \u2190for start up and reset. Any value other than an integer (decimal really) between 1 and \u21909, or a missing 5220 variable will cause the LinuxCNC to revert to the default value of \u21901.00000 on start up.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 834 / 1288\n \n === Setting Coordinate System Offsets\n The G10 L2x command can be used to set coordinate system offsets:\n * \u2019G10 L2 P(1-9)\u2019 - Set offset(s) to a value. Current position irrelevant (see <<gcode:g10- \u2190l2,G10 L2>> for details).\n * \u2019G10 L20 P(1-9)\u2019 - Set offset(s) so current position becomes a value (see <<gcode:g10-l20 \u2190,G10 L20>> for details).\n@@ -38187,15 +38187,15 @@\n \n \u2190-\n \n [[sec:g92-axes-offsets]]\n == G92 Axes Offsets\n G92 is the most misunderstood and cleverest command programmable with LinuxCNC. The way it \u2190works has changed a bit between the first versions and the current one. These changes \u2190have doubt baffled many users. They should be seen as a command producing a temporary \u2190offset, which applies to all the other offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 835 / 1288\n \n [[sec:g92-commands]]\n === The G92 commands\n \u2019G92\u2019 is typically used in two conceptually different ways: as a \u201dglobal coordinate system\n offset\u201d or as a \u201dlocal coordinate system offset\u201d.\n@@ -38222,15 +38222,15 @@\n \n \u2190\u2190\u2190-\n \n [NOTE]\n It is good practice to clear the \u2019G92\u2019 offsets at the end of their use with \u2019G92.1\u2019 or \u2019G92 \u2190.2\u2019. When starting up LinuxCNC with \u2019G92\u2019 persistence enabled (the default), any offsets \u2190in the \u2019G92\u2019 variables will be applied when an axis is homed. See <<sec:g92-persistence \u2190-cautions,G92 Persistence Cautions>> below.\n === Setting G92 Values\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 836 / 1288\n \n There are at least two ways to set G92 values:\n * With a right click on the position displays in tklinuxcnc, a window opens where it is\n possible to enter a value.\n * With the G92 command\n@@ -38264,15 +38264,15 @@\n * 5218 - V Axis Offset\n * 5219 - W Axis Offset\n where 5210 is the \u2019G92\u2019 enable flag (1 for enabled, 0 for disabled) and 5211 to 5219 are \u2190the axis offsets. If you are seeing unexpected positions as the result of a commanded \u2190move, as a result of storing an offset in a previous program and not clearing them at \u2190the end then issue a G92.1 in the MDI window to clear the stored offsets.\n If G92 values exist in the VAR file when LinuxCNC starts up, the G92 values in the var file \u2190will be applied to the values of the current location of each axis. If this is home \u2190position and home position is set as machine zero everything will be correct. Once home \u2190has been established using real machine switches, or by moving each axis to a known home \u2190position and issuing an axis home command, any G92 offsets will be applied. If you have \u2190a G92 X1 in effect when you home the X axis the DRO will read \u2019X: 1.000\u2019 instead of the \u2190expected \u2019X: 0.000\u2019 because the G92 was applied to the machine origin. If you issue a \u2190G92.1 and the DRO now reads all zeros then you had a G92 offset in effect when you last \u2190ran LinuxCNC.\n Unless your intention is to use the same G92 offsets in the next program, the best practice \u2190is to issue a G92.1 at the end of any G code files where you use G92 offsets.\n When a program is aborted during processing that has \u2019G92\u2019 offsets in effect a startup will \u2190cause them to become active again. As a safeguard, always have your preamble to set the \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 837 / 1288\n \n environment as you expect it. Additionally, \u2019G92\u2019 persistence may be disabled by \u2190setting \u2019DISABLE_G92_PERSISTENCE = 1\u2019 in the \u2019[RS274NGC]\u2019 section of the INI file.\n [[sec:g92-g52-interaction-cautions]]\n === G92 and G52 Interaction Cautions\n \u2019G52\u2019 and \u2019G92\u2019 share the same offset registers. Unless \u2019G92\u2019 persistence is disabled in \u2190the INI file (see <<sec:g92-commands,G92 Commands>>), \u2019G52\u2019 offsets will also persist \u2190after machine reset, \u2019M02\u2019 or \u2019M30\u2019. Beware that a \u2019G52\u2019 offset in effect during a \u2190program abort may result in unintended offsets when the next program is run. See <<sec: \u2190g92-persistence-cautions,G92 Persistence Cautions>> above.\n@@ -38306,15 +38306,15 @@\n running in each case at Z0. If the mill were at the zero position, a G92 Z1.0000 issued at the head\n of the program would shift everything an inch. You might also shift the whole pattern around in the\n XY plane by adding some X and Y offsets with G92. If you do this you should add a G92.1 command\n just before the M2 that ends the program. If you do not, other programs that you might run after this\n one will also use that G92 offset. Furthermore it would save the G92 values when you shut down the\n LinuxCNC and they will be recalled when you start up again.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 838 / 1288\n \n 11.1.4.1. Sample Program Using G52 Offsets\n (To be written)\n \n 11.2. Tool Compensation\n@@ -38334,15 +38334,15 @@\n \n 11.2.1.1. Using G10 L1/L10/L11\n The G10 L1/L10/L11 commands can be used to set tool table offsets:\n G10 L1 P__n__ - Set offset(s) to a value. Current position irrelevant (see G10 L1 for details).\n G10 L10 P__n__ - Set offset(s) so current position w/ fixture 1-8 becomes a value (see G10 L10 for\n details).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 839 / 1288\n \n G10 L11 P__n__ - Set offset(s) so current position w/ fixture 9 becomes a value (see G10 L11 for\n details).\n nota\n This is only a brief presentation, refer to the reference guide of the G-code for more detailed explanations.\n@@ -38454,15 +38454,15 @@\n Tool numbers should be unique. Lines beginning with a semicolon are ignored.\n The units used for the length, diameter, etc., are in machine units.\n You will probably want to keep the tool entries in ascending order, especially if you are going to be\n using a randomizing tool changer. Although the tool table does allow for tool numbers in any order.\n One line may contain as many as 16 entries, but will likely contain much fewer. The entries for T (tool\n number) and P (pocket number) are required. The last entry (a remark or comment, preceded by a\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 840 / 1288\n \n semicolon) is optional. It makes reading easier if the entries are arranged in columns, as shown in\n the table, but the only format requirement is that there be at least one space or tab after each of the\n entries on a line and a newline character at the end of each entry.\n The meanings of the entries and the type of data to be put in each are as follows.\n@@ -38501,15 +38501,15 @@\n tool, it does not matter what number is in this column.\n The Comment column may optionally be used to describe the tool. Any type of description is OK. This\n column is for the benefit of human readers only. The comment must be preceded by a semicolon.\n nota\n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 841 / 1288\n \n 11.2.2.2. Tool IO\n The non-realtime program specified by [EMCIO]EMCIO = io is conventionally used for tool changer\n management (and other io functions for enabling LinuxCNC and the control of coolant/lube hardware).\n The HAL pins used for tool management are prefixed with iocontrol.0..\n@@ -38542,15 +38542,15 @@\n c. iocontrol.0.tool-prep-pocket = 0\n 5. At M-code M6 (following iocontrol.0.tool-changed pin 0-->1):\n a. iocontrol.0.tool-from-pocket = pocket number used to retrieve tool\n 1. Tool number n==0 is not special.\n 2. Pocket number 0 is special as it indicates the spindle.\n 3. The current pocket number for tool n is the tooldata index (idx) for tool n.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 842 / 1288\n \n 4. At G-code command Tn:\n a. iocontrol.0.tool-prep-index = tooldata index (idx) for tool n\n b. iocontrol.0.tool-prep-number = n\n c. iocontrol.0.tool-prep-pocket = pocket number for tool n\n@@ -38590,15 +38590,15 @@\n \n 11.2.3. Tool Length Compensation\n The tool length compensations are given as positive numbers in the tool table. A tool compensation\n is programmed using G43 H_n_, where n is the index number of the desired tool in the tool table.\n It is intended that all entries in the tool table are positive. The value of H is checked, it must be a\n non-negative integer when read. The interpreter behaves as follows:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 843 / 1288\n \n 1. If G43 H_n_ is programmed, a call to the function USE_TOOL_LENGTH_OFFSET( \u0300\n __length__) \u0300 is\n made (where length is the length difference, read from the tool table, of the indexed tool n),\n tool_length_offset is repositioned in the machine settings model and the value of current_z in\n@@ -38626,15 +38626,15 @@\n 11.2.4. Cutter Radius Compensation\n Cutter Compensation allows the programmer to program the tool path without knowing the exact tool\n diameter. The only caveat is the programmer must program the lead in move to be at least as long as\n the largest tool radius that might be used.\n There are two possible paths the cutter can take since the cutter compensation can be on to the left\n or right side of a line when facing the direction of cutter motion from behind the cutter. To visualize\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 844 / 1288\n \n this imagine you were standing on the part walking behind the tool as it progresses across the part.\n G41 is your left side of the line and G42 is the right side of the line.\n The end point of each move depends on the next move. If the next move creates an outside corner the\n move will be to the end point of the compensated cut line. If the next move creates in an inside corner\n@@ -38649,46 +38649,46 @@\n Any move that is long enough to perform the compensation will work as the entry move. The minimum\n length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are\n issued after a G41/42 only the last one will move the tool to the compensated position.\n In the following figure you can see that the entry move is compensated to the right of the line. This\n puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end\n is at X0 the resulting profile would leave a bump due to the offset of the entry move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 845 / 1288\n \n Figura 11.4: Entry Move\n Z axis motion may take place while the contour is being followed in the XY plane. Portions of the\n contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the\n next start point.\n Rapid moves may be programmed while compensation is turned on.\n Start a program with G40 to make sure compensation is off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 846 / 1288\n \n 11.2.4.2. Examples\n \n Figura 11.5: Outside Profile\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 847 / 1288\n \n Figura 11.6: Inside Profile\n \n 11.3. Tool Edit GUI\n 11.3.1. Overview\n nota\n The tooledit elements described here are available since version 2.5.1 and later. In version 2.5.0, the\n graphical interface interface does not allow these adjustments.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 848 / 1288\n \n Figura 11.7: Tool Edit GUI - Overview\n The tooledit program can update the tool table file with edited changes by using the SaveFile button.\n The SaveFile button updates the system file but a separate action is required to update the tool table\n data used by a running LinuxCNC instance. With the AXIS GUI, both the file and the current tool table\n@@ -38702,15 +38702,15 @@\n Figura 11.8: Tool Edit GUI - Column Sorting\n In Ubuntu Lucid 10.04 Tcl/Tk8.4 it is installed by default. The installation is performed as follows:\n sudo apt-get install tcl8.5 tk8.5\n \n Depending upon other applications installed on the system, it may be necessary to enable Tcl/Tk8.5\n with the commands:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n sudo update-alternatives --config tclsh\n sudo update-alternatives --config wish\n \n 849 / 1288\n \n ;# select the option for tclsh8.5\n@@ -38735,15 +38735,15 @@\n Stand Alone\n tooledit\n Usage:\n tooledit filename\n tooledit [column_1 ... column_n] filename\n Valid column names are: x y z a b c u v w diam front back orien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 850 / 1288\n \n To synchronize a standalone tooledit with a running LinuxCNC application, the filename must resolve\n to the same [EMCIO]TOOL_TABLE filename specified in the LinuxCNC INI file.\n When using the program tooledit while LinuxCNC is running, G-code command execution or other\n programs may alter tool table data and the tool table file. File changes are detected by tooledit and a\n@@ -38786,15 +38786,15 @@\n program may end before the end of a file. Lines of a file that occur after the end of a program are not\n to be executed. The interpreter does not even read them.\n \n 11.4.2. Format of a line\n A permissible line of input code consists of the following, in order, with the restriction that there is a\n maximum (currently 256) to the number of characters allowed on a line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 851 / 1288\n \n an optional block delete character, which is a slash /.\n an optional line number.\n any number of words, parameter settings, and comments.\n an end of line marker (carriage return or line feed or both).\n@@ -38836,15 +38836,15 @@\n B axis of machine\n C axis of machine\n Tool radius compensation number\n Feed rate\n General function (See table G-code Modal Groups)\n Tool length offset index\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 852 / 1288\n \n Cuadro 11.3: (continued)\n Letter\n I\n J\n@@ -38901,15 +38901,15 @@\n A number consists of:\n \u2022 an optional plus or minus sign, followed by\n \u2022 zero to many digits, followed, possibly, by\n \u2022 one decimal point, followed by\n \u2022 zero to many digits - provided that there is at least one digit somewhere in the number.\n There are two kinds of numbers:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 853 / 1288\n \n \u2022 enteros, que no tienen un punto decimal en \u00e9l,\n \u2022 Decimals, that do have a decimal point.\n Numbers may have any number of digits, subject to the limitation on line length. Only about seventeen significant figures will be retained, however (enough for all known applications).\n A non-zero number with no sign but the first character is assumed to be positive.\n@@ -38945,15 +38945,15 @@\n Uninitialized global parameters, and unused subroutine parameters return the value zero when\n used in an expression.\n Uninitialized named parameters signal an error when used in an expression.\n Mode\n Most parameters are read/write and may be assigned to within an assignment statement. However, for many predefined parameters this does not make sense, so they are are read-only - they\n may appear in expressions, but not on the left-hand side of an assignment statement.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 854 / 1288\n \n Persistence\n When LinuxCNC is shut down, volatile parameters lose their values. All parameters except numbered parameters in the current persistent range 1 are volatile. Persistent parameters are saved\n in the .var file and restored to their previous values when LinuxCNC is started again. Volatile\n numbered parameters are reset to zero.\n@@ -38992,15 +38992,15 @@\n 5220 - Coordinate System number 1 - 9 for G54 - G59.3. Persistent.\n 1 The range of persistent parameters may change as development progresses. This range is currently 5161- 5390. It is\n defined in the _required_parameters array in file the src/emc/rs274ngc/interp_array.cc .\n 2 The RS274/NGC interpreter maintains an array of numbered parameters. Its size is defined by the symbol\n RS274NGC_MAX_PARAMETERS in the file src/emc/rs274ngc/interp_internal.hh). This number of numerical parameters may\n also increase as development adds support for new parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 855 / 1288\n \n 5221-5230 - Coordinate System 1, G54 for X, Y, Z, A, B, C, U, V, W & R. R denotes the XY rotation\n angle around the Z axis. Persistent.\n 5241-5250 - Coordinate System 2, G55 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n 5261-5270 - Coordinate System 3, G56 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n@@ -39039,15 +39039,15 @@\n read by the Interpreter and written to the file as it exits.\n Missing Parameters in the persistent range will be initialized to zero and written with their current\n values on the next save operation.\n The parameter numbers must be arranged in ascending order. An Parameter file out of order error\n will be signaled if they are not in ascending order.\n The original file is saved as a backup file when the new file is written.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 856 / 1288\n \n Cuadro 11.4: Parameter File Format\n Parameter Number\n 5161\n 5162\n@@ -39086,15 +39086,15 @@\n It is an error to use a non-existent named parameter within an expression, or at the right-hand side of\n an assignment. Printing the value of a non-existent named parameter with a DEBUG statement - like\n (DEBUG, <no_such_parameter>) will display the string #.\n Global parameters, as well as local parameters assigned to at the global level, retain their value once\n assigned even when the program ends, and have these values when the program is run again.\n The EXISTS function tests whether a given named parameter exists.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 857 / 1288\n \n 11.4.3.4. Predefined Named Parameters\n The following global read only named parameters are available to access internal state of the interpreter and machine state. They can be used in arbitrary expressions, for instance to control flow of\n the program with if-then-else statements. Note that new predefined named parameters can be added\n easily without changes to the source code.\n@@ -39163,15 +39163,15 @@\n 190\n 171\n 181\n 191\n \n #<_ccomp> - Status of cutter compensation. Return values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 858 / 1288\n \n Mode\n G40\n G41\n G41.1\n@@ -39228,15 +39228,15 @@\n #<_spindle_css_mode> - Return 1 if constant surface speed mode (G96) is on, else 0.\n #<_ijk_absolute_mode> - Return 1 if Absolute Arc distance mode (G90.1) is on, else 0.\n #<_lathe_diameter_mode> - Return 1 if this is a lathe configuration and diameter (G7) mode is on,\n else 0.\n #<_lathe_radius_mode> - Return 1 if this is a lathe configuration and radius (G8) mode is on, else\n 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 859 / 1288\n \n #<_spindle_on> - Return 1 if spindle currently running (M3 or M4) else 0.\n #<_spindle_cw> - Return 1 if spindle direction is clockwise (M3) else 0.\n #<_mist> - Return 1 if mist (M7) is on.\n #<_flood> - Return 1 if flood (M8) is on.\n@@ -39267,15 +39267,15 @@\n #<_selected_pocket> - Return the tooldata index of the selected pocket post a T code. Default -1\n (no pocket selected).\n #<_value> - Return value from the last O-word return or endsub. Default value 0 if no expression\n after return or endsub. Initialized to 0 on program start.\n #<_value_returned> - 1.0 if the last O-word return or endsub returned a value, 0 otherwise. Cleared\n by the next O-word call.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 860 / 1288\n \n #<_task> - 1.0 if the executing interpreter instance is part of milltask, 0.0 otherwise. Sometimes\n it is necessary to treat this case specially to retain proper preview, for instance when testing the\n success of a probe (G38.n) by inspecting #5070, which will always fail in the preview interpreter\n (e.g. Axis).\n@@ -39319,15 +39319,15 @@\n o100 endif\n \n This feature was motivated by the desire for stronger coupling between user interface components like\n GladeVCP and PyVCP to act as parameter source for driving NGC file behavior. The alternative - going\n through the M6x pins and wiring them - has a limited, non-mnemonic namespace and is unnecessarily\n cumbersome just as a UI/Interpreter communications mechanism.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 861 / 1288\n \n 11.4.5. Expressions\n An expression is a set of characters starting with a left bracket [ and ending with a balancing right\n bracket ] . In between the brackets are numbers, parameter values, mathematical operations, and\n other expressions. An expression is evaluated to produce a number. The expressions on a line are\n@@ -39365,15 +39365,15 @@\n than 1e-6 (this value is defined as TOLERANCE_EQUAL in src/emc/rs274ngc/interp_internal.hh).\n \n 11.4.8. Functions\n The available functions are shown in following table. Arguments to unary operations which take angle\n measures (COS, SIN, and TAN ) are in degrees. Values returned by unary operations which return\n angle measures (ACOS, ASIN, and ATAN) are also in degrees.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 862 / 1288\n \n Cuadro 11.10: G-code Functions\n Function Name\n ATAN[arg]/[arg]\n ABS[arg]\n@@ -39434,15 +39434,15 @@\n If a parameter setting of the same parameter is repeated on a line, #3=15 #3=6, for example, only\n the last setting will take effect. It is silly, but not illegal, to set the same parameter twice on the same\n line.\n If more than one comment appears on a line, only the last one will be used; each of the other comments\n will be read and its format will be checked, but it will be ignored thereafter. It is expected that putting\n more than one comment on a line will be very rare.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 863 / 1288\n \n 11.4.10. Item order\n The three types of item whose order may vary on a line (as given at the beginning of this section) are\n word, parameter setting, and comment. Imagine that these three types of item are divided into three\n groups by type.\n@@ -39483,15 +39483,15 @@\n F100 G1 @.5 ^90\n G91 @.5 ^90\n @.5 ^90\n @.5 ^90\n @.5 ^90\n G90 G0 X0 Y0 M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 864 / 1288\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 Figura 11.10: Polar Spiral\n@@ -39502,15 +39502,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 865 / 1288\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@@ -39534,15 +39534,15 @@\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81 G82, G83, G84, G85, G86, G87, G88,\n G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 866 / 1288\n \n Cuadro 11.11: (continued)\n Modal Group Meaning\n Arc IJK Distance Mode\n (Group 4)\n@@ -39605,15 +39605,15 @@\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 11.4.14. Comments\n Comments are purely informative and have no influence on machine behaviour.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 867 / 1288\n \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 Comments may appear between words, but not between words and their corresponding parameter.\n@@ -39651,15 +39651,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 868 / 1288\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@@ -39693,15 +39693,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 869 / 1288\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@@ -39736,15 +39736,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 870 / 1288\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@@ -39780,15 +39780,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 871 / 1288\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@@ -39822,15 +39822,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 872 / 1288\n \n 11.5.2. G-Code Quick Reference Table\n Code\n G0\n G1\n@@ -39936,15 +39936,15 @@\n Back-boring Cycle (not yet implemented)\n Boring Cycle, Stop, Manual Out (not yet\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -39991,15 +39991,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 874 / 1288\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@@ -40043,15 +40043,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 875 / 1288\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@@ -40086,15 +40086,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 <X- Z- Y- I- K- P->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 876 / 1288\n \n Y - helix\n I - X offset\n K - Z offset\n P - number of turns\n@@ -40126,28 +40126,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 877 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 878 / 1288\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@@ -40166,15 +40166,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 879 / 1288\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@@ -40209,15 +40209,15 @@\n G5 X- Y- <I- J-> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 880 / 1288\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@@ -40254,15 +40254,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 881 / 1288\n \n 11.5.9. G5.2 G5.3 NURBS Block\n G5.2 <P-> <X- Y-> <L->\n X- Y- <P->\n ...\n@@ -40289,15 +40289,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 882 / 1288\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@@ -40307,15 +40307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 883 / 1288\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@@ -40345,15 +40345,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 884 / 1288\n \n 11.5.14. G10 L2 Set Coordinate System\n G10 L2 P- <axes R->\n \n P - coordinate system (0-9)\n@@ -40413,15 +40413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 885 / 1288\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@@ -40455,15 +40455,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 886 / 1288\n \n 11.5.16. G10 L11 Set Tool Table\n G10 L11 P- axes <R- I- J- Q->\n \n P - tool number\n@@ -40491,15 +40491,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 887 / 1288\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@@ -40533,15 +40533,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 888 / 1288\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@@ -40578,15 +40578,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 889 / 1288\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@@ -40623,15 +40623,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 890 / 1288\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@@ -40666,15 +40666,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 891 / 1288\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@@ -40736,15 +40736,15 @@\n coordinate consisting of XYZABCUVW of each successful straight probe in it. The file must be closed\n with (PROBECLOSE). For more information see the Comments section.\n An example file smartprobe.ngc is included (in the examples directory) to demonstrate using probe\n moves to log to a file the coordinates of a part. The program smartprobe.ngc could be used with ngcgui\n with minimal changes.\n It is an error if:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 892 / 1288\n \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@@ -40776,15 +40776,15 @@\n tool number.\n nota\n G41/G42 D0 is a little special. Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the Tool Change section). On nonrandom tool changer machines,\n G41/G42 D0 applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no\n tool is in the spindle. On random tool changer machines, G41/G42 D0 applies the TLO of the tool T0\n defined in the tool table file (or causes an error if T0 is not defined in the tool table).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 893 / 1288\n \n To start cutter compensation to the left of the part profile, use G41. G41 starts cutter compensation\n to the left of the programmed line as viewed from the positive end of the axis perpendicular to the\n plane.\n To start cutter compensation to the right of the part profile, use G42. G42 starts cutter compensation\n@@ -40818,15 +40818,15 @@\n G43 <H->\n \n H - tool number (optional)\n G43 - enables tool length compensation. G43 changes subsequent motions by offsetting the axis\n coordinates by the length of the offset. G43 does not cause any motion. The next time a compensated\n axis is moved, that axis\u2019s endpoint is the compensated location.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 894 / 1288\n \n G43 without an H word uses the currently loaded tool from the last Tn M6.\n G43 Hn uses the offset for tool n.\n The active tool length compensation values are stored in the numbered parameters 5401-5409.\n nota\n@@ -40858,15 +40858,15 @@\n \n See G90 & T & M6 sections for more information.\n It is an error if:\n motion is commanded on the same line as G43.1\n nota\n G43.1 does not write to the tool table.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 895 / 1288\n \n 11.5.30. G43.2 Apply additional Tool Length Offset\n G43.2 H- axes-\n \n H - tool number\n@@ -40896,15 +40896,15 @@\n \n 11.5.32. G52 Local Coordinate System Offset\n G52 axes\n \n G52 is used in a part program as a temporary \u201dlocal coordinate system offset\u201d within the workpiece\n coordinate system. More information on G52 is in the Local and Global Offsets section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 896 / 1288\n \n 11.5.33. G53 Move in Machine Coordinates\n G53 axes\n \n To move in the machine coordinate system, program G53 on the same line as a linear move. G53 is\n@@ -41045,15 +41045,15 @@\n 5270\n 5290\n 5310\n 5330\n 5350\n 5370\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 897 / 1288\n \n Cuadro 11.16: (continued)\n Select CS\n G59.3 9\n \n@@ -41102,15 +41102,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 898 / 1288\n \n 11.5.38. G70 Lathe finishing cycle\n G70 Q- <X-> <Z-> <D-> <E-> <P->\n \n Q - The subroutine number.\n@@ -41148,15 +41148,15 @@\n G71.1 Q- <X-> <Z-> <D-> <I-> <R->\n G71.2 Q- <X-> <Z-> <D-> <I-> <R->\n G72\n Q- <X-> <Z-> <D-> <I-> <R->\n G72.1 Q- <X-> <Z-> <D-> <I-> <R->\n G72.2 Q- <X-> <Z-> <D-> <I-> <R->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 899 / 1288\n \n Q - The subroutine number.\n X - The starting X position, defaults to the initial position.\n Z - The starting Z position, defaults to the initial position.\n D - The remaining distance to the profile, defaults to 0.\n@@ -41188,15 +41188,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 900 / 1288\n \n 11.5.40. G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- <L->\n \n R - retract position along the Z axis.\n@@ -41227,15 +41227,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 901 / 1288\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@@ -41250,15 +41250,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 902 / 1288\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@@ -41298,15 +41298,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 903 / 1288\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@@ -41333,15 +41333,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 904 / 1288\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@@ -41374,15 +41374,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 905 / 1288\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@@ -41413,15 +41413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 906 / 1288\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@@ -41444,15 +41444,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 907 / 1288\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@@ -41474,15 +41474,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 908 / 1288\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@@ -41511,15 +41511,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 909 / 1288\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@@ -41532,15 +41532,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 910 / 1288\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@@ -41561,27 +41561,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 911 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 912 / 1288\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@@ -41591,15 +41591,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 913 / 1288\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@@ -41632,15 +41632,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 914 / 1288\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@@ -41673,15 +41673,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.50.\n \n 915 / 1288\n \n G86 Boring Cycle, Spindle Stop, Rapid Move Out\n \n@@ -41725,15 +41725,15 @@\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 916 / 1288\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@@ -41771,15 +41771,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 917 / 1288\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@@ -41823,15 +41823,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.60.\n \n 918 / 1288\n \n G96, G97 Spindle Control Mode\n \n@@ -41875,15 +41875,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 919 / 1288\n \n 11.6. M-Codes\n 11.6.1. M-Code Quick Reference Table\n Code\n M0 M1\n@@ -41952,15 +41952,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 920 / 1288\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@@ -41997,15 +41997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 921 / 1288\n \n M4 $1\n \n And this will stop spindle 2 and leave the other spindles rotating:\n M5 $2\n@@ -42042,15 +42042,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.7.\n \n 922 / 1288\n \n M7, M8, M9 Coolant Control\n \n@@ -42087,15 +42087,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.9.\n \n 923 / 1288\n \n M48, M49 Speed and Feed Override Control\n \n@@ -42131,15 +42131,15 @@\n \n 11.6.13. M53 Feed Stop Control\n M53 <P1> - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 924 / 1288\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@@ -42173,15 +42173,15 @@\n 11.6.16. M66 Wait on Input\n M66 P- | E- <L->\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 925 / 1288\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@@ -42221,15 +42221,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 926 / 1288\n \n 11.6.18. M68 Analog Output, Immediate\n M68 E- Q-\n \n M68 - set an analog output immediately.\n@@ -42261,15 +42261,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 927 / 1288\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@@ -42307,15 +42307,15 @@\n g91 (relative mode)\n F5 (low feed)\n S300 (low rpm)\n (debug, in subroutine, state now:)\n o<showstate> call\n O<imperialsub> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 928 / 1288\n \n ; main program\n g21 (metric)\n g90 (absolute)\n f200 (fast speed)\n@@ -42360,15 +42360,15 @@\n (debug, in main, state now:)\n o<showstate> call\n o<imperialsub> call\n (debug, back in main, state now:)\n o<showstate> call\n m2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 929 / 1288\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@@ -42409,15 +42409,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 930 / 1288\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@@ -42459,15 +42459,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 931 / 1288\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@@ -42501,15 +42501,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 932 / 1288\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@@ -42558,15 +42558,15 @@\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 (i.e. parameters\n whose names begin with the underscore character \u201d_\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.7.4.1.\n \n 933 / 1288\n \n Fanuc-Style Numbered Programs\n \n@@ -42615,15 +42615,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 934 / 1288\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@@ -42692,15 +42692,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 935 / 1288\n \n o100 while [#1 LT 3]\n (msg, Loop Done!)\n M2\n \n@@ -42749,15 +42749,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.7.7.\n \n 936 / 1288\n \n Repeat\n \n@@ -42802,15 +42802,15 @@\n M2\n \n nota\n The file names are lowercase letters only so o<MyFile> is converted to o<myfile> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 937 / 1288\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@@ -42845,15 +42845,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 938 / 1288\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@@ -42890,37 +42890,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 939 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 940 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 941 / 1288\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@@ -42930,15 +42930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 942 / 1288\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@@ -42950,15 +42950,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 943 / 1288\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@@ -42992,15 +42992,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 944 / 1288\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@@ -43027,15 +43027,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 945 / 1288\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@@ -43061,15 +43061,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 946 / 1288\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@@ -43091,15 +43091,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 947 / 1288\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@@ -43136,15 +43136,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 948 / 1288\n \n Cap\u00edtulo 12\n \n Virtual Control Panels\n 12.1. PyVCP\n@@ -43154,15 +43154,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 949 / 1288\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 <pyvcp>\n@@ -43170,15 +43170,15 @@\n <pyvcp>\n <label text=\u201dThis is a LED indicator\u201d/>\n <led/>\n </pyvcp>\n \n Figura 12.2: Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 950 / 1288\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@@ -43223,15 +43223,15 @@\n </pyvcp>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 951 / 1288\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@@ -43250,15 +43250,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 952 / 1288\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@@ -43296,15 +43296,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 953 / 1288\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@@ -43341,15 +43341,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 954 / 1288\n \n white\n black\n blue and blue1 - 4\n cyan and cyan1 - 4\n@@ -43378,15 +43378,15 @@\n <font>(\u201dHelvetica\u201d,20)</font>\n </label>\n \n The above code produced this example:\n \n Figura 12.3: Simple Label Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 955 / 1288\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@@ -43423,15 +43423,15 @@\n red.\n <height>n</height> - sets the height of the LED in pixels.\n <width>n</width> - sets the width of the LED in pixels.\n <disable_pin>false</disable_pin> - when true adds a disable pin to the led.\n <disabled_color>color</disabled_color> - sets the color of the LED to color when the pin is disabled.\n Round LED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 956 / 1288\n \n <led>\n <halpin>\u201dmy-led\u201d</halpin>\n <size>50</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -43460,15 +43460,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 <padx>n</padx> - where n is the amount of extra horizontal extra space.\n <pady>n</pady> - where n is the amount of extra vertical extra space.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 957 / 1288\n \n <activebackground>\u201dcolor\u201d</activebackground> - the cursor over color set to color.\n <fg>\u201dcolor\u201d</fg> - the foreground color set to color.\n <bg>\u201dcolor\u201d</bg> - the background color set to color.\n <disable_pin>True</disable_pin> - disable pin.\n@@ -43496,15 +43496,15 @@\n \n Figura 12.8: Checked button\n Checkbutton Code Example\n <checkbutton>\n <halpin>\u201dcoolant-chkbtn\u201d</halpin>\n <text>\u201dCoolant\u201d</text>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 958 / 1288\n \n <initval>1</initval>\n </checkbutton>\n <checkbutton>\n <halpin>\u201dchip-chkbtn\u201d</halpin>\n@@ -43532,15 +43532,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 <orient>HORIZONTAL</orient>\n to display horizontally.\n 12.1.6.7. Number Displays\n Number displays can use the following formatting options\n <font>(\u201dFont Name\u201d,n)</font>, where n is the font size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 959 / 1288\n \n <width>_n_</width>, where n is the overall width of the space used.\n <justify>_pos_</justify>, where pos is LEFT, CENTER, or RIGHT (doesn\u2019t work).\n <padx>_n_</padx>, where n is the amount of extra horizontal extra space.\n <pady>_n_</pady>, where n is the amount of extra vertical extra space.\n@@ -43569,15 +43569,15 @@\n <width>6</width>\n </s32>\n \n The above code produced this example:\n \n Figura 12.12: Simple s32 Number Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 960 / 1288\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 <u32>.\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@@ -43612,15 +43612,15 @@\n </bar>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 961 / 1288\n \n <meter>\n <halpin>\u201dmymeter\u201d</halpin>\n <text>\u201dBattery\u201d</text>\n <subtext>\u201dVolts\u201d</subtext>\n@@ -43646,15 +43646,15 @@\n <spinbox>\n <halpin>\u201dmy-spinbox\u201d</halpin>\n <min_>-12</min_>\n <max_>33</max_>\n <initval>0</initval>\n <resolution>0.1</resolution>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 962 / 1288\n \n <format>\u201d2.3f\u201d</format>\n <font>(\u201dArial\u201d,30)</font>\n <param_pin>1</param_pin>\n </spinbox>\n@@ -43688,15 +43688,15 @@\n <min_>100</min_>\n <max_>0</max_>\n <param_pin>1</param_pin>\n </scale>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 963 / 1288\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@@ -43719,15 +43719,15 @@\n <edgecolor>\u201dgreen\u201d</edgecolor>\n <dotcolor>\u201dblack\u201d</dotcolor>\n <param_pin>1</param_pin>\n </dial>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 964 / 1288\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@@ -43739,15 +43739,15 @@\n <halpin>\u201dmy-wheel\u201d</halpin>\n <cpr>45</cpr>\n <size>250</size>\n </jogwheel>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 965 / 1288\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@@ -43761,15 +43761,15 @@\n </vbox>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 966 / 1288\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@@ -43782,15 +43782,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 967 / 1288\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@@ -43826,15 +43826,15 @@\n <text>\u201dRIDGE\u201d</text>\n <bd>3</bd>\n </button>\n </hbox>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 968 / 1288\n \n Figura 12.24: Containers Borders Showcase\n Fill Container fill are specified with the <boxfill fill=\u201d\u201d/> 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 <boxfill fill =\u201dstyle\u201d/>\n@@ -43861,15 +43861,15 @@\n The above code produced this example:\n \n Figura 12.25: Simple hbox Example\n Inside an Hbox, you can use the <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 969 / 1288\n \n <vbox>\n <relief>RIDGE</relief>\n <bd>6</bd>\n <label><text>\u201da vbox:\u201d</text></label>\n@@ -43895,15 +43895,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 <tablerow/> tag. A contained widget may span rows or columns through the use of the <tablespan\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 970 / 1288\n \n rows= cols=/> tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the <tablesticky sticky=/> tag. A table expands on its flexible rows and columns.\n Table Code Example\n <table flexible_rows=\u201d[2]\u201d flexible_columns=\u201d[1,4]\u201d>\n@@ -43947,15 +43947,15 @@\n <bar>\n <halpin>\u201dspindle-speed\u201d</halpin>\n <max_>5000</max_>\n </bar>\n </vbox>\n <vbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <label>\n <text>\u201d(this is the green eggs tab)\u201d</text>\n </label>\n </vbox>\n <vbox>\n <label>\n@@ -43964,15 +43964,15 @@\n </vbox>\n </tabs>\n \n The above code produced this example showing each tab selected.\n \n 971 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 972 / 1288\n \n Figura 12.29: Simple Tabs Example\n \n 12.2. PyVCP Examples\n 12.2.1. AXIS\n@@ -43993,15 +43993,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 973 / 1288\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@@ -44010,27 +44010,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\n will be built upon a StepConf Wizard generated configuration. First we run the StepConf Wizard\n and configure our machine, on the Advanced Configuration Options page we then make a couple of\n selections to add a blank PyVCP panel as shown in the following figure. For this example we named\n the configuration pyvcp_xyz on the Basic Machine Information page of the StepConf Wizard.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 974 / 1288\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 <pyvcp></pyvcp> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n In your custompanel.xml file we will add the description of the widgets.\n <pyvcp>\n <labelframe text=\u201dJog Buttons\u201d>\n <font>(\u201dHelvetica\u201d,16)</font>\n <!-- the X jog buttons -->\n <hbox>\n@@ -44084,15 +44084,15 @@\n </button>\n </hbox>\n <!-- the jog speed slider -->\n <vbox>\n \n 975 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 976 / 1288\n \n <relief>RAISED</relief>\n <bd>3</bd>\n <label>\n <text>\u201dJog Speed\u201d</text>\n@@ -44116,15 +44116,15 @@\n the error is a spelling or syntax error and it will be there.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 977 / 1288\n \n net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus\n # connect the Y PyVCP buttons\n net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus\n net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus\n@@ -44175,15 +44175,15 @@\n <relief>RIDGE</relief>\n <bd>2</bd>\n <label>\n <text>\u201dPin 10\u201d</text>\n <font>(\u201dHelvetica\u201d,14)</font>\n </label>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 978 / 1288\n \n <led>\n <halpin>\u201dled-10\u201d</halpin>\n <size>25</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -44223,15 +44223,15 @@\n start\n \n To run the HAL file we use the following command from a terminal window.\n ~$ halrun -I -f ptest.hal\n \n The following figure shows what a complete panel might look like.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 979 / 1288\n \n To add the rest of the parallel port pins just modify the XML and HAL files.\n To show the pins after running the HAL script use the following command at the halcmd prompt:\n halcmd: show pin\n Component Pins:\n@@ -44321,15 +44321,15 @@\n ptest.led-01 <== pin01\n ptest.led-02 <== pin02\n ptest.led-10 <== pin10\n ptest.led-11 <== pin11\n \n This will show you what pins are IN and what pins are OUT as well as any connections.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 980 / 1288\n \n 12.2.5. GS2 RPM Meter\n The following example uses the Automation Direct GS2 VDF driver and displays the RPM and other\n info in a PyVCP panel. This example is based on the GS2 example in the Hardware Examples section\n this manual.\n@@ -44379,15 +44379,15 @@\n <vbox>\n <relief>RAISED</relief>\n <bd>2</bd>\n <label>\n <text>\u201dFWD\u201d</text>\n <font>(\u201dHelvetica\u201d,18)</font>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <width>5</width>\n </label>\n <label width=\u201d2\u201d/>\n <rectled>\n <halpin>\u201dfwd-led\u201d</halpin>\n <height>\u201d30\u201d</height>\n@@ -44417,15 +44417,15 @@\n </hbox>\n </pyvcp>\n \n The above gives us a PyVCP panel that looks like the following.\n \n 981 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 982 / 1288\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@@ -44444,15 +44444,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 983 / 1288\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 <pyvcp>\n <!-- rapid to home button example -->\n@@ -44468,15 +44468,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 984 / 1288\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@@ -44507,15 +44507,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 GTK3 widget set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 985 / 1288\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@@ -44539,31 +44539,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 986 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 987 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 988 / 1288\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@@ -44577,15 +44577,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 989 / 1288\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@@ -44620,15 +44620,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 <file>.ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 990 / 1288\n \n If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with source <linuxcncdir>/scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNCspecific widgets.\n When asked for unsaved preferences, just accept the defaults and hit Close.\n From Toplevels (toolbar), pick GtkWindow (first entry) as top level window. Set window1 as ID in\n@@ -44646,15 +44646,15 @@\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 GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c <component name> option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 991 / 1288\n \n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n HAL containers have an associated HAL pin which is off by default, which causes all contained widgets to render inactive. A common use case would be to associate these container HAL pins with\n halui.machine.is-on or one of the halui.mode signals, to assure some widgets appear active only\n in a certain state.\n@@ -44690,15 +44690,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 992 / 1288\n \n nota\n The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located in\n the same directory as the INI file. You might have to copy them to you directory (alternatively, specify\n a correct absolute or relative path to the file(s)).\n@@ -44736,15 +44736,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 993 / 1288\n \n [RS274NGC]\n # gladevcp Demo specific Oword subs live here\n SUBROUTINE_PATH = ../../nc_files/gladevcp_lib\n \n@@ -44790,15 +44790,15 @@\n Re-parent GladeVCP into an existing window XID instead of creating a new top level\n window\n \n \u2190-\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 994 / 1288\n \n -u FILE::\n Use File\u2019s as additional user defined modules with handlers\n -U USEROPT::\n pass USEROPTs to Python modules\n@@ -44831,15 +44831,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 <halcmd file> option (see previous section).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 995 / 1288\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@@ -44869,15 +44869,15 @@\n General\u2192Name).\n Exceptions to this rule currently are:\n \n HAL_Spinbutton and HAL_ComboBox, which have two pins: a <widgetname>-f (float) and a <widgetname>(s32) pin\n HAL_ProgressBar, which has a <widgetname>-value input pin, and a <widgetname>-scale input\n pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 996 / 1288\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 PyGObject API Reference.\n@@ -44915,15 +44915,15 @@\n doesn\u2019t make sense. You might use setp _pinname_ _value_ in the associated HAL file for testing\n though.\n \n It is perfectly OK to set an output HAL pin\u2019s value with halcomp[pinname] = value provided this HAL\n pin is not associated with a widget, that is, has been created by the hal_glib.GPin(halcomp.newpin(<name>\n method (see GladeVCP Programming for an example).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 997 / 1288\n \n 12.3.6.4. The hal-pin-changed signal\n Event-driven programming means that the UI tells your code when \u201dsomething happens\u201d - through\n a callback, like when a button was pressed. The output HAL widgets (those which display a HAL\n pin\u2019s value) like LED, Bar, VBar, Meter, etc., support the hal-pin-changed signal, which may cause a\n@@ -44941,15 +44941,15 @@\n HAL_ToggleButton, HAL_CheckButton: retains on/off state. Important signal: toggled\n HAL_RadioButton: a one-of-many group. Important signal: toggled (per button).\n Important common methods: set_active(), get_active()\n Important properties: label, image\n \n Figura 12.31: Check button\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 998 / 1288\n \n Figura 12.32: Radio buttons\n \n Figura 12.33: Toggle button\n sugerencia\n@@ -44967,15 +44967,15 @@\n <widgetname>-s\n out s32 pin\n To make a scale useful in Glade, add an Adjustment (General \u2192 Adjustment \u2192 New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set\n adjustment Page size and Page increment to zero to avoid warnings.\n \n Figura 12.34: Example HAL_HScale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 999 / 1288\n \n 12.3.6.7. SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n <widgetname>-f\n out FLOAT pin\n@@ -45005,15 +45005,15 @@\n <widgetname>-delta-scaled\n out FLOAT pin\n hal_dial has the following properties:\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 360\n default = 100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1000 / 1288\n \n show_counts\n Set this to False, if you want to hide the counts display in the middle of the widget.\n default = True\n label\n@@ -45058,15 +45058,15 @@\n [widget name].get_scaled_value()\n Will return the counts value as a float\n [widget name].get_delta_scaled_value()\n Will return the counts value as a float\n [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1001 / 1288\n \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@@ -45091,15 +45091,15 @@\n Wheel up = increase counts\n Wheel down = reduce counts\n As moving the mouse the drag and drop way may be faster than the widget can update itself, you\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 its count value as HAL pin:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1002 / 1288\n \n <widgetname>-s\n out s32 pin\n jogwheel has the following properties:\n size\n@@ -45122,15 +45122,15 @@\n [widget name].get_value()\n Will return the counts value as integer\n [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n Figura 12.37: Example JogWheel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1003 / 1288\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 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@@ -45170,15 +45170,15 @@\n Float\n The min allowed value.\n Allowed values are 0.0 to 99999.0.\n Default is 0.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1004 / 1288\n \n max\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n@@ -45225,15 +45225,15 @@\n There are also Python methods to modify the widget:\n [widget name].set_adjustment(gtk-adjustment)\n \n You can assign a existing adjustment to the control, that way it is easy to replace existing sliders\n without many code changes. Be aware, that after changing the adjustment you may need to set a new\n increment, as it will be reset to its default (100 steps from MIN to MAX):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1005 / 1288\n \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@@ -45262,15 +45262,15 @@\n State_Sensitive_Table\n HAL_HBox (deprecated)\n These containers are meant to be used to insensitize (grey out) or hide their children.\n Insensitized children will not respond to input.\n HAL_HideTable\n Has one HAL BIT input pin which controls if its child widgets are hidden or not.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1006 / 1288\n \n Pin: , <Panel_basename>.<widgetname>\n in bit pin\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n@@ -45310,15 +45310,15 @@\n pick_color_on, pick_color_off\n Colors for ON and OFF states.\n These may be represented as #RRRRGGGGBBBB strings and are optional properties which have\n precedence over on_color and off_color.\n led_size\n LED radius (for square - half of LED\u2019s side)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1007 / 1288\n \n led_shape\n LED Shape.\n Valid values are 0 for round, 1 for oval and 2 for square shapes.\n led_blink_rate\n@@ -45352,15 +45352,15 @@\n scale\n Value scale.\n Sets the maximum absolute value of input. Same as setting the <widgetname>.scale pin.\n A float, range from -224 to +2 24.\n green_limit\n Green zone lower limit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1008 / 1288\n \n yellow_limit\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n@@ -45392,15 +45392,15 @@\n a float value from the ListStore.\n If you\u2019re confused like me about how to edit ComboBox ListStores and CellRenderer, see https://youtu.be/Z5_F-rW2cL8.\n 12.3.6.16. Bars\n HAL_Bar and HAL_VBar widgets for horizontal and vertical bars representing float values.\n HAL_Bar and HAL_VBar each have one input FLOAT HAL pin.\n HAL_Bar and HAL_VBar both bars have the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1009 / 1288\n \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@@ -45442,15 +45442,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1010 / 1288\n \n Figura 12.41: Horizontal bar\n \n Figura 12.42: Vertical bar\n \n@@ -45475,15 +45475,15 @@\n bg_color\n Background color of meter.\n z0_color, z1_color, z2_color\n Colors of different value zones.\n Defaults are green, yellow and red.\n For description of zones see z*_border properties.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1011 / 1288\n \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@@ -45509,15 +45509,15 @@\n show_velocity\n This displays the tool speed.\n Default = true.\n use_commanded\n This selects the DRO to use: commanded or actual values.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1012 / 1288\n \n metric_units\n This selects the DRO to use: metric or imperial units.\n Default = true.\n show_rapids\n@@ -45563,15 +45563,15 @@\n May be any of x, y, y2 , z, z2 , p (perspective).\n Defaults to z view.\n enable_dro\n Type = boolean.\n Whether to draw a DRO on the plot or not.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1013 / 1288\n \n mouse_btn_mode\n Type = integer.\n Mouse button handling: leads to different functions of the button:\n 0 = default: left rotate, middle move, right zoom\n@@ -45617,15 +45617,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 is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1014 / 1288\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@@ -45643,15 +45643,15 @@\n reference_type\n 0:G5x 1:tool 2:G92 3:Rotation around Z\n \n 12.3.6.21. DRO widget\n The DRO widget is used to display the current axis position.\n It has the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1015 / 1288\n \n display_units_mm\n Used to toggle the display units between metric and imperial. Default is False.\n actual\n Select actual (feedback) position or commanded position. Default is True.\n@@ -45690,15 +45690,15 @@\n The DRO widget is a modified gtk label widget. As such, much of what can be done to a gtk\n label can be done to the DRO widget.\n The font properties may also be set from a css stylesheet which has the highest priority and\n will override values set by GObject properties.\n There a couple ways to directly control the widget using Python.\n Using GObject to set the above listed properties\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1016 / 1288\n \n [widget name].set_property(\u201ddisplay_units_mm\u201d, True)\n [widget name].set_property(\u201dactual\u201d, True)\n [widget name].set_property(\u201ddiameter\u201d, True)\n [widget name].set_property(\u201dmm_text_template\u201d, \u201d %10.3f\u201d)\n@@ -45742,15 +45742,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1017 / 1288\n \n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis/joint numbers are:\n 0:X 1:Y 2:Z etc.\n@@ -45792,15 +45792,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1018 / 1288\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@@ -45841,15 +45841,15 @@\n \u2022 [\u201dAbs\u201d, \u201dDTG\u201d, \u201dRel\u201d]\n [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 \u2022 Absolute = the machine coordinates, depends on the actual property will give actual or commanded position.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1019 / 1288\n \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@@ -45884,15 +45884,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1020 / 1288\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@@ -45917,15 +45917,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1021 / 1288\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@@ -45969,15 +45969,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1022 / 1288\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@@ -45992,15 +45992,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1023 / 1288\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@@ -46035,15 +46035,15 @@\n font\n Display font to use\n hide_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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1024 / 1288\n \n lathe_display_type\n Show lathe format\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n@@ -46084,15 +46084,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1025 / 1288\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@@ -46119,15 +46119,15 @@\n mm_text_template\n You can use Python formatting to display the position with different precision.\n imperial_text_template\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1026 / 1288\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@@ -46153,15 +46153,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1027 / 1288\n \n Figura 12.48: Offsetpage Example\n \n 12.3.6.27. HAL_sourceview widget\n \n@@ -46182,15 +46182,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1028 / 1288\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@@ -46212,15 +46212,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1029 / 1288\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@@ -46233,15 +46233,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1030 / 1288\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@@ -46265,15 +46265,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1031 / 1288\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@@ -46307,15 +46307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1032 / 1288\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@@ -46335,15 +46335,15 @@\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 its current value as a parameter\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1033 / 1288\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@@ -46360,15 +46360,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1034 / 1288\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@@ -46406,15 +46406,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1035 / 1288\n \n \u2022 interp-idle\n \u2022 interp-paused\n \u2022 interp-reading\n \u2022 interp-waiting\n@@ -46455,15 +46455,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1036 / 1288\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@@ -46498,15 +46498,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 <module> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1037 / 1288\n \n For simple tasks it is 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@@ -46552,15 +46552,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1038 / 1288\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@@ -46595,15 +46595,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1039 / 1288\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@@ -46643,15 +46643,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1040 / 1288\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@@ -46692,15 +46692,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1041 / 1288\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@@ -46737,15 +46737,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1042 / 1288\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@@ -46786,15 +46786,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1043 / 1288\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17. Value-changed callback with hal_glib\n@@ -46833,15 +46833,15 @@\n window1.visible to False, and ignore an initial unmap event.\n 2. My GladeVCP program starts, but no window appears where I expect it to be?\n The window AXIS allocates for GladeVCP will obtain the natural size of all its child widgets\n combined. It is the child widget\u2019s job to request a size (width and/or height). However, not all\n widgets do request a width greater than 0, for instance the Graph widget in its current form. If\n there\u2019s such a widget in your Glade file and it is the one which defines the layout you might want\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1044 / 1288\n \n to set its width explicitly. Note that setting the window1 width and height properties in Glade\n does not make sense because this window will be orphaned during re-parenting and hence its\n geometry will have no impact on layout (see above). The general rule is: if you manually run a UI\n file with gladevcp <uifile> and its window has reasonable geometry, it should come up in AXIS\n@@ -46880,15 +46880,15 @@\n If you\u2019re using HAL_table or HAL_HBox widgets, be aware they have an HAL pin associated with it\n which is off by default. This pin controls whether these container\u2019s children are active or not.\n \n 12.3.11. Implementation note: Key handling in AXIS\n We believe key handling works OK, but since it is new code, we\u2019re telling about it you so you can\n watch out for problems; please let us know of errors or odd behavior. This is the story:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1045 / 1288\n \n AXIS uses the TkInter widget set. GladeVCP applications use Gtk widgets and run in a separate process\n context. They are hooked into AXIS with the Xembed protocol. This allows a child application like\n GladeVCP to properly fit in a parent\u2019s window, and - in theory - have integrated event handling.\n However, this assumes that both parent and child application properly support the Xembed protocol,\n@@ -46924,15 +46924,15 @@\n identically-named files within subdirectories of the system directory specified by LINUXNC_AUX_GLADEVCP\n (e.g., /usr/share/linuxcnc/aux_gladevcp). This provision allows a developer to test an application by\n exporting GLADEVCP_EXTRAS to specify a private application directory without removing a systeminstalled application directory. Messages indicating rejected duplicates are printed to stdout.\n nota\n Support for auxiliary GladeVCP applications requires a Python module named importlib. This module\n may not be available in older installations like Ubuntu-Lucid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1046 / 1288\n \n 12.4. GladeVCP Library modules\n Libraries are prebuilt Python modules that give added features to GladeVCP. In this way you can select\n what features you want - yet don\u2019t have to build common ones yourself.\n \n@@ -46979,15 +46979,15 @@\n MAX_LINEAR_JOG_VEL = 300 units per minute\n DEFAULT_ANGULAR_JOG_VEL =\n MIN_ANGULAR_JOG_VEL =\n MAX_ANGULAR_JOG_VEL =\n MAX_FEED_OVERRIDE =\n MAX_TRAJ_VELOCITY =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1047 / 1288\n \n AVAILABLE_SPINDLES = int(self.INI.find(\u201dTRAJ\u201d, \u201dSPINDLES\u201d) or 1)\n DEFAULT_SPINDLE_0_SPEED = 200\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_0_OVERRIDE = 100\n@@ -47037,15 +47037,15 @@\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n INFO = Info()\n \n To access INFO data use this general syntax:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1048 / 1288\n \n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n@@ -47084,15 +47084,15 @@\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n ACTION.SET_MAX_VELOCITY_RATE(rate)\n ACTION.SET_RAPID_RATE(rate)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.SET_FEED_RATE(rate)\n ACTION.SET_SPINDLE_RATE(rate)\n ACTION.SET_JOG_RATE(rate)\n ACTION.SET_JOG_INCR(incr)\n ACTION.SET_JOG_RATE_ANGULAR(rate)\n ACTION.SET_JOG_INCR_ANGULAR(incr, text)\n@@ -47133,15 +47133,15 @@\n get_jog_info (num)\n jnum_check(num)\n ensure_mode(modes)\n open_filter_program(filename, filter)\n \n 1049 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1050 / 1288\n \n 12.5. QtVCP\n QtVCP is an infrastructure to build custom CNC screens or control panels for LinuxCNC.\n It displays a .ui file built with Qt Designer screen editor and combines this with Python programming\n to create a GUI screen for running a CNC machine.\n@@ -47149,54 +47149,54 @@\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 Figura 12.55: QtDragon - 3/4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.56: QtDefault - 3-Axis Sample\n \n 1051 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1052 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1053 / 1288\n \n Figura 12.58: Blender - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1054 / 1288\n \n Figura 12.59: X1mill - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.60: cam_align - Camera Alignment VCP\n \n 1055 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1056 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1057 / 1288\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@@ -47229,15 +47229,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1058 / 1288\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@@ -47271,15 +47271,15 @@\n The Qt Designer editor makes it relatively easy to build and edit this file.\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. Only one file is allowed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1059 / 1288\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@@ -47309,15 +47309,15 @@\n QtVCP will look for a folder named <screen_name> (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 <screen_name>.ui,\n <screen_name>_handler.py, and\n <screen_name>.qss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1060 / 1288\n \n 12.5.2.8. Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Stylesheets can be used to set Qt properties. If a widget uses properties then they usually can be\n modified by stylesheets.\n@@ -47360,15 +47360,15 @@\n # add a terminal message so we know this got loaded\n print(\u2019\\nCustom subclassed handler patch loaded.\\n\u2019)\n def init_pins(self):\n # call original handler init_pins function\n super().init_pins()\n # add jog pins X axis\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1061 / 1288\n \n pin = QHAL.newpin(\u201djog.axis.jog-x-plus\u201d, QHAL.HAL_BIT, QHAL.HAL_IN)\n pin.value_changed.connect(lambda s: self.kb_jog(s, 0, 1, fast = False, linear =\n True))\n \n@@ -47417,15 +47417,15 @@\n # You call this function without the usual preceding \u2019self.\u2019.\n # This is because will will not be patching it into the original handler class instance\n # It will only be called from code in this file.\n def test_function(obj):\n print(dir(obj))\n # This is a new function we will added to the existing handler class instance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1062 / 1288\n \n # Notice it calls the unbounded function with \u2019self\u2019 as an parameter \u2019self\u2019 is the only\n global reference available.\n # It references the window instance.\n def on_keycall_F10(self,event,state,shift,cntrl):\n@@ -47477,15 +47477,15 @@\n # that calls our new function (of the same name) defined in this file.\n self.after_override__ = types.MethodType(after_override__, self)\n \n If you wish to modify a stock screen with full control, copy its UI and handler file to your configuration folder.\n There is a QtVCP panel to help with this:\n Open a terminal and run the following command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1063 / 1288\n \n qtvcp copy\n \n Select the screen and destination folder in the dialog\n If you wish to name your screen differently than the builtin screen\u2019s default name, change the\n@@ -47500,40 +47500,40 @@\n QtVCP can be used to create control panels that interface with HAL.\n 12.5.3.1. Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp <return> to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n 1064 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1065 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1066 / 1288\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1067 / 1288\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@@ -47542,15 +47542,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1068 / 1288\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -47599,15 +47599,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1069 / 1288\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@@ -47623,15 +47623,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1070 / 1288\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@@ -47668,15 +47668,15 @@\n This widget doesn\u2019t add anything visually but sets up some common options.\n It\u2019s recommended to always add this widget before any other.\n Right click on the main window, not the ScreenOptions widget, and set the layout as vertical to make\n the ScreenOptions fullsized.\n Add Panel Content On the right hand side there is a panel with tabs for a Property editor and an\n Object inspector.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1071 / 1288\n \n On the Object inspector click on the ScreenOptions.\n Then switch to the Property Editor and, under the ScreenOptions heading, toggle filedialog_option.\n Drag and drop a GCodeGraphics widget and a GcodeEditor widget.\n Place and resize them as you see fit leaving some room for buttons.\n@@ -47703,21 +47703,21 @@\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 \u2022 Under the Indicated_PushButton heading check the indicator_option.\n \u2022 Under the QAbstactButton heading check checkable.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1072 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1073 / 1288\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@@ -47750,15 +47750,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47805,15 +47805,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 1074 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1075 / 1288\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@@ -47864,15 +47864,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47921,15 +47921,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 1076 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1077 / 1288\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@@ -47964,15 +47964,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1078 / 1288\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 class_patch__(self):\n@@ -48010,15 +48010,15 @@\n Bibliograf\u00eda\n [1] + The Linux system will not shutdown if using this function, you will have to do\n that yourself. QtVCP/LinuxCNC will terminate without a prompt once this function\n 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1079 / 1288\n \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 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@@ -48045,15 +48045,15 @@\n \n 12.5.6. Connecting Widgets to Python Code\n It is possible to connect widgets to Python code using signals and slots.\n In this way you can:\n Give new functions to LinuxCNC widgets, or\n Utilize standard Qt widgets to control LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1080 / 1288\n \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@@ -48075,15 +48075,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1081 / 1288\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@@ -48100,15 +48100,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1082 / 1288\n \n 12.5.7. More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -48125,25 +48125,25 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1083 / 1288\n \n Figura 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2. spindle_belts\n This panel is designed to display additional RS485 VFD data and also to configure a 4 sheave, 2 belt\n spindle drive via a series of buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1084 / 1288\n \n In addition, it is also a useful template to use for your custom panel because it includes:\n Display of additional HAL data\n Buttons and button groups\n Dynamic changes to button enabled/disabled state based on the state of other buttons\n@@ -48156,15 +48156,15 @@\n A custom component that scales the VFD frequency to obtain the desired spindle speed.\n A belt driven spindle that uses two belts and an intermediate idler pulley much like a drill press.\n Connect the input pins qtdragon.belts.<pin-name> in your postgui HAL file.\n The belts are broken into two button groups, the front belts and the rear belts. These are numbered as\n per the plate on the machine. Buttons in a group are mutually exclusive, i.e., only one can be selected\n in the group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1085 / 1288\n \n Additionally, it\u2019s not possible to have both belts on the same level with this kind of mechanism because\n you cannot fit two belts to the one idler pulley sheave. So if a belt is selected, its opposite button is\n disabled. E.g., if belt 3 is selected, belt 7 is disabled.\n Add these lines to the [DISPLAY] section in your .ini file\n@@ -48191,15 +48191,15 @@\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 Figura 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.6.1.4. 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 You can add more buttons from the drop down menu.\n You can load a Halmeter from the drop down menu.\n@@ -48221,15 +48221,15 @@\n A combobox can be used to automatically select and connect to a pin/signal.\n You can add more LEDs from the drop down menu.\n The LED can be detached from the main windows.\n Here is how to load test_led from a HAL script:\n \n 1086 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1087 / 1288\n \n loadusr qtvcp test_led\n loadusr qtvcp -o 4 test_led\n \n The -o switch sets how many LEDs the panel starts with.\n@@ -48237,24 +48237,24 @@\n \n Figura 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.6. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.7. cam_align\n A camera display widget for rotational alignment.\n \n 1088 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1089 / 1288\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@@ -48268,15 +48268,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1090 / 1288\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@@ -48301,95 +48301,95 @@\n If you want to hide both, use a comma between them with no spaces.\n The -a option will make the panel always-on-top of all windows.\n loadusr qtvcp sim_panel\n \n Here we load the panel with no MPG selection buttons and the always-on-top option.\n loadusr qtvcp -a -o hide=groupBoxSelection sim_panel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1091 / 1288\n \n Figura 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.9. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1092 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1093 / 1288\n \n Figura 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2. QtVCP vismach_router_atc\n 3D OpenGL view of a 3-Axis router style, gantry bed milling machine.\n This particular panel shows how to define and connect the model parts in the handler file, rather then\n importing the pre-built model from QtVCP\u2019s vismach library.\n loadusr qtvcp vismach_router_atc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1094 / 1288\n \n Figura 12.78: QtVCP vismach_router_atc - 3-Axis Gantry Bed Mill 3D View Panel\n \n 12.6.2.3. QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.79: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.4. 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 1095 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.80: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.5. 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 1096 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1097 / 1288\n \n Figura 12.81: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.6. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1098 / 1288\n \n Figura 12.82: 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@@ -48417,15 +48417,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1099 / 1288\n \n net bit-hide\n \n test_panel.checkbox_4\n \n@@ -48478,15 +48478,15 @@\n There are panels available that are included with LinuxCNC. To see a list open a terminal and type\n qtvcp and press return.\n You will get a help printout and a list of builtin screen and panels.\n Pick any of the names from the panel list and add that to the COMMAND entry after qtvcp.\n The builtin panel search path is share/qtvcp/panels/PANELNAME.\n Run-In-Place and installed versions of LinuxCNC have these in different locations on the system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1100 / 1288\n \n 12.6.4.3. Location of Custom Panels\n Custom panels can be embedded too -either a modified builtin panel or a new user-built one.\n When loading panels, QtVCP looks in the configuration folders path for qtvcp/panels/PANELNAME/PANELNAME.ui.\n PANNELNAME being any valid string with no spaces. If no path is found there, then looks in the builtin file path.\n@@ -48519,15 +48519,15 @@\n If the panel is not embedded, both refer to the panel window.\n 12.6.4.6. Handler Patching - Subclassing Builtin Panels\n We can have QtVCP load a subclassed version of the standard handler file. in that file we can manipulate the original functions or add new ones.\n Subclassing just means our handler file first loads the original handler file and adds our new code on\n top of it - so a patch of changes.\n This is useful for changing/adding behaviour while still retaining standard handler updates from LinuxCNC repositories.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1101 / 1288\n \n You may still need to use the handler copy dialog to copy the original handler file to decide how to\n patch it.\n There should be a folder in the config folder; for panel: named <CONFIG FOLDER>/qtvcp/panels/<PANEL\n NAME>/\n@@ -48566,15 +48566,15 @@\n You are free to use any available default widgets in the Qt Designer editor.\n There are also special widgets made for LinuxCNC that make integration easier. These are split in\n two, heading on the right side of the editor:\n One is for HAL only widgets.\n The other is for CNC control widgets.\n You are free to mix them in any way on your panel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1102 / 1288\n \n nota\n This description of widget properties can easily be out of date due to further development and lack\n of people to write docs (a good way to give back to the project). The definitive descriptions are found\n by looking in the source code.\n@@ -48599,15 +48599,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1103 / 1288\n \n alignment\n Qt alignment hint.\n state\n Current state of LED\n@@ -48627,15 +48627,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1104 / 1288\n \n 12.7.1.6. Gauge - Round Dial Gauge Widget\n \n Figura 12.84: QtVCP Gauge: Round Dial Gauge Widget\n Round Gauge can be used in a LinuxCNC GUI to display an input parameter on the dial face.\n@@ -48657,15 +48657,15 @@\n This is the number of ticks/gauge readings 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.\n zone1_color\n Zone1 extends from the maximum reading to the threshold point.\n It can be set to any RGB color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1105 / 1288\n \n zone2_color\n Zone2 extends from the threshold point to the minimum reading, which is 0.\n It can be set to any RGB color.\n bezel_color\n@@ -48692,15 +48692,15 @@\n This widget is used to indicate level or value, usually of a HAL s32/float pin.\n you can also disable the HAL pin and use Qt signals or python commands to change the level.\n HalBar is a subclass of the Bar widget, so it inherits these properties\n \n stepColorList: a list of color strings, the number of colors defines the number of bars.\n backgroundColor: a QColor definition of the background color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1106 / 1288\n \n setMaximum: an integer that defines the maximum level of indication.\n setMinimum: an integer that defines the lowest level of indication.\n pinType: to select HAL pins type:\n \u2022 NONE no HAL pin will be added\n@@ -48717,15 +48717,15 @@\n qproperty-stepColorList: \u2019green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red \u2190,red\u2019;\n }\n \n 12.7.1.8. HALPad - HAL Buttons Joypad\n \n Figura 12.86: QtVCP HALPad: HAL Buttons Joypad\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1107 / 1288\n \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 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@@ -48762,15 +48762,15 @@\n File or resource path to an image to display in the described button location.\n If the reset button is pressed in the Qt Designer editor property, the image will not be displayed\n (allowing optional text).\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1108 / 1288\n \n true_color , false_color\n Color selection for the center LED ring to be displayed when the <BASENAME>.light.center HAL\n pin is True or False.\n text_color\n@@ -48788,15 +48788,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.10. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figura 12.87: 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.11. gridLayout - Grid Layout Widget\n@@ -48804,15 +48804,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.12. hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1109 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1110 / 1288\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@@ -48847,15 +48847,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1111 / 1288\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@@ -48886,15 +48886,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1112 / 1288\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@@ -48927,15 +48927,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1113 / 1288\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -48976,15 +48976,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1114 / 1288\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -49023,15 +49023,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1115 / 1288\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@@ -49061,15 +49061,15 @@\n If the button is set checkable, it will indicate which axis is selected.\n If you press and hold the button a pop up menu will show allowing one to:\n Zero the axis\n Divide the axis by 2\n Set the axis arbitrarily\n Reset the axis to the last number recorded\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1116 / 1288\n \n You must have selected an entry dialog that corresponds to the dialog_code_string, usually this is\n selected from the screenOptions widget.\n You can select the property halpin_option, it will then set a HAL pin true when the axis is selected. The\n property joint_number should be set to the appropriate joint number. The property axis_letter should\n@@ -49104,15 +49104,15 @@\n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019 %9.4f\u2019;\n qproperty-metric_template: \u2019 %10.3f\u2019;\n qproperty-angular_template: \u2019 %11.2f\u2019;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1117 / 1288\n \n DROLabel[isHomed=false] {\n color: red;\n }\n DROLabel[isHomed=true] {\n@@ -49158,15 +49158,15 @@\n qproperty-styleFont4: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont5: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont6: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont7: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFontMargin: \u201dTimes,14,-1,0,90,0,0,0,0,0\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1118 / 1288\n \n For GcodeDisplay widget\u2019s default G-code lexer:\n styleColor0 = Default: Everything not part of the groups below\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@@ -49187,15 +49187,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1119 / 1288\n \n 12.7.2.9. GCodeGraphics - G-code Graphic Backplot Widget\n \n Figura 12.88: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -49212,15 +49212,15 @@\n \n _view (string)\n Sets the default view orientation on GUI load.\n Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.\n The following shows an example of how to set this property (referenced using the widget user\n selected name):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #gcodegraphics{\n qproperty-_view: z;\n }\n \n _dro (bool)\n Determines whether or not to show the DRO.\n@@ -49269,15 +49269,15 @@\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-overlay_color: blue;\n }\n \n 1120 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n background_color (primary, secondary, or RGBA formatted color)\n Sets the default background color.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-background_color: blue;\n }\n@@ -49324,15 +49324,15 @@\n qproperty-MouseButtonMode: 1;\n }\n \n There are 12 valid modes:\n \n 1121 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Mode\n 0\n 1\n 2\n 3\n 4\n@@ -49414,15 +49414,15 @@\n rotate-up\n rotate-down\n overlay-dro-on\n overlay-dro-off\n overlay-offsets-on\n overlay-offsets-off\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n alpha-mode-on\n alpha-mode-off\n inhibit-selection-on\n inhibit-selection-off\n dimensions-on\n dimensions-off\n@@ -49463,15 +49463,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 1123 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1124 / 1288\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@@ -49510,15 +49510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1125 / 1288\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@@ -49557,15 +49557,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1126 / 1288\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -49594,15 +49594,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1127 / 1288\n \n Figura 12.89: 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@@ -49615,15 +49615,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1128 / 1288\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@@ -49657,15 +49657,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1129 / 1288\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@@ -49706,15 +49706,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1130 / 1288\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@@ -49752,15 +49752,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1131 / 1288\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@@ -49803,15 +49803,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1132 / 1288\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@@ -49851,15 +49851,15 @@\n \u2022 DONE\n \u2022 ATTENTION\n \u2022 RING\n \u2022 LOGIN\n \u2022 LOGOUT\n \u2022 BELL\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1133 / 1288\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@@ -49893,15 +49893,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1134 / 1288\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@@ -49937,15 +49937,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1135 / 1288\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -49982,15 +49982,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1136 / 1288\n \n 12.7.2.20. MacroTab - Special Macros Widget\n \n Figura 12.90: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -50008,15 +50008,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1137 / 1288\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@@ -50053,15 +50053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1138 / 1288\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@@ -50098,15 +50098,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 <pin name>\n Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1139 / 1288\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@@ -50118,15 +50118,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.91: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1140 / 1288\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@@ -50165,15 +50165,15 @@\n G90\n O<increment> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1141 / 1288\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@@ -50186,15 +50186,15 @@\n Figura 12.92: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1142 / 1288\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@@ -50233,15 +50233,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -50250,15 +50250,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 1143 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1144 / 1288\n \n 12.7.2.29. FileManager - File Loading Selector Widget\n \n Figura 12.93: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -50273,15 +50273,15 @@\n \n Stylesheets Properties\n doubleClickSelection (bool)\n Determines whether or not to require double clicking on a folder.\n Single clicking a folder (False) is enabled by default and is intended for touch screen users.\n The following shows an example of how to set this property:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1145 / 1288\n \n #filemanager {\n qproperty-doubleClickSelection: True;\n }\n \n@@ -50304,15 +50304,15 @@\n The tool settings can only be changed in LinuxCNC after homing and when the motion controller is\n idle.\n The display and entry will change between metric and imperial based on LinuxCNC\u2019s current G20/G21\n setting.\n The current in-use tool will be highlighted, and the current selected tool will be highlighted in a\n different color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1146 / 1288\n \n The checkbox beside each tool can be used to select too for an action that depends on extra code\n added either to a combined widget, like the toolOffsetView dialog or the screens handler code.\n Typical actions are load selected tool, delete selected tools, etc.\n Clicking on the columns and rows allows one to adjust the settings.\n@@ -50352,30 +50352,30 @@\n delete_tools()\n Deletes the currently checkbox selected tools.\n get_checked_list()\n Returns a list of tools selected by checkboxs.\n set_all_unchecked()\n Uncheck all selected tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 12.7.2.32. BasicProbe - Simple Mill Probing Widget\n \n Figura 12.95: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1147 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1148 / 1288\n \n 12.7.2.33. VersaProbe - Mill Probing Widget\n \n Figura 12.96: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -50393,15 +50393,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1149 / 1288\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@@ -50442,15 +50442,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1150 / 1288\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK <spoken_message> .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -50460,15 +50460,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1151 / 1288\n \n 12.7.3.3. FileDialog - Load and Save File Chooser Dialog Widget\n \n Figura 12.98: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -50484,15 +50484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1152 / 1288\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@@ -50504,15 +50504,15 @@\n \n Figura 12.99: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1153 / 1288\n \n 12.7.3.5. ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figura 12.100: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -50532,61 +50532,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1154 / 1288\n \n 12.7.3.9. CalculatorDialog - Calculator Dialog Widget\n \n Figura 12.101: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.3.10. RunFromLine - Run-From-Line Dialog Widget\n \n Figura 12.102: 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 1155 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1156 / 1288\n \n 12.7.3.11. VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figura 12.103: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1157 / 1288\n \n 12.7.3.12. MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figura 12.104: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1158 / 1288\n \n 12.7.4.1. NurbsEditor - NURBS Editing Widget\n \n Figura 12.105: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -50595,15 +50595,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1159 / 1288\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@@ -50640,15 +50640,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1160 / 1288\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@@ -50686,15 +50686,15 @@\n \n 12.7.4.3. WebWidget\n This widget will create a html/pdf viewing page using the QtWebKit or QtWebEngine libraries. The\n newer QtWebEngine is preferred if both are on the system.\n If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in\n Qesigner. This will be replaced with the QtWebEngine widget at run time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1161 / 1288\n \n 12.7.5. BaseClass/Mixin Widgets\n These widgets are used to combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n 12.7.5.1. IndicatedPushButtons\n@@ -50723,15 +50723,15 @@\n Indicated_PushButton #button_estop{\n qproperty-on_color: black;\n qproperty-off_color: yellow;\n }\n \n Options IndicatedPushButton have exclusive options:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1162 / 1288\n \n indicator_HAL_pin_option\n Adds a halpin, named <buttonname>-led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n@@ -50773,15 +50773,15 @@\n }\n \n Here is how you specify a particular widget by its objectName in Qt Designer:\n ActionButton #estop button [isEstopped=false] {\n color: yellow;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1163 / 1288\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@@ -50821,15 +50821,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1164 / 1288\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@@ -50850,15 +50850,15 @@\n You can also specify subroutines to be pre-opened in tabs.\n [DISPLAY]\n # NGCGUI subroutine path.\n # This path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n # pre selected programs tabs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1165 / 1288\n \n # specify filenames only, files must be in the NGCGUI_SUBFILE_PATH\n NGCGUI_SUBFILE = slot.ngc\n NGCGUI_SUBFILE = qpocket.ngc\n \n@@ -50882,15 +50882,15 @@\n (info: feedrate -- simple example for setting feedrate)\n o<feedrate> sub\n #<feedrate>\n = #1 (= 6 Feed Rate) ; comments in brackets will be shown in ngcui\n f#<feedrate>\n o<feedrate> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1166 / 1288\n \n 12.7.6.6. Qt PDF\n Allows adding loadable PDFs to a screen.\n 12.7.6.7. Qt Vismach\n Use this to build/add OpenGl simulated machines.\n@@ -50923,15 +50923,15 @@\n For example, you can catch machine on and off messages.\n nota\n The example below shows the two common ways of connecting signals, one of them using lambda.\n lambda is used to strip off or manipulate arguments from the status message before calling the\n function. You can see the difference in the called function signature: The one that uses lambda does\n not accept the status object - lambda did not pass it to the function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1167 / 1288\n \n Place these commands into the [INITIALIZE] section of the Python handler file:\n STATUS.connect(\u2019state-on\u2019, self.on_state_on)\n STATUS.connect(\u2019state-off\u2019, lambda: w, self.on_state_off())\n \n@@ -50976,15 +50976,15 @@\n GET_JOG_FROM_NAME = {\u2019X\u2019:0,\u2019Y\u2019:1,\u2019Z\u2019:2}\n NO_HOME_REQUIRED = False\n HOME_ALL_FLAG\n JOINT_TYPE = self.INI.find(section, \u201dTYPE\u201d) or \u201dLINEAR\u201d\n JOINT_SEQUENCE_LIST\n JOINT_SYNC_LIST\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1168 / 1288\n \n JOG_INCREMENTS = None\n ANGULAR_INCREMENTS = None\n GRID_INCREMENTS\n DEFAULT_LINEAR_JOG_VEL = 15 units per minute\n@@ -51028,15 +51028,15 @@\n \n 12.8.2.4. Helpers\n There are some helper functions - mostly used for widget support:\n \n get_error_safe_setting(_self_, _heading_, _detail_, default=_None_) , convert_metric_to_mac\n Get filter extensions in Qt format.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1169 / 1288\n \n 12.8.2.5. Usage\n Import Info module\n Add this Python code to your import section:\n ############################\n@@ -51071,15 +51071,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.core import Action\n \n Instantiate Action module\n Add this Python code to your instantiate section:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n ACTION = Action()\n \n Access ACTION commands\n@@ -51120,15 +51120,15 @@\n ACTION.ZERO_G92_OFFSET()\n ACTION.ZERO_ROTATIONAL_OFFSET()\n ACTION.ZERO_G5X_OFFSET(num)\n ACTION.RECORD_CURRENT_MODE()\n \n 1170 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.RESTORE_RECORDED_MODE()\n ACTION.SET_SELECTED_AXIS(jointnum)\n ACTION.DO_JOG(jointnum, direction)\n ACTION.JOG(jointnum, direction, rate, distance=0)\n ACTION.TOGGLE_FLOOD()\n ACTION.SET_FLOOD_ON()\n@@ -51167,15 +51167,15 @@\n This library handles tool offset file changes.\n \n aviso\n LinuxCNC doesn\u2019t handle third party manipulation of the tool file well.\n \n 1171 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1172 / 1288\n \n 12.8.4.1. Helpers\n \n GET_TOOL_INFO(_toolnumber_)\n This will return a Python list of information on the requested tool number.\n@@ -51211,15 +51211,15 @@\n LinuxCNC supports tool wear by adding tool wear information into tool entries above 10000.\n nota\n This also requires remap code to add the wear offsets t tool change time.\n \n 12.8.5. Path\n Path module gives reference to important files paths.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.8.5.1. Referenced Paths\n \n PATH.PREFS_FILENAME\n The preference file path.\n PATH.WORKINGDIR\n The directory QtVCP was launched from.\n@@ -51258,15 +51258,15 @@\n PATH.PLUGIN\n The QtVCP widget plugin folder.\n PATH.VISMACHDIR\n Directory where prebuilt Vismach files are found.\n \n 1173 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1174 / 1288\n \n Not currently used:\n PATH.LOCALEDIR\n Locale translation folder.\n PATH.DOMAIN\n@@ -51300,15 +51300,15 @@\n Import VCPWindow module\n Add this Python code to your import section:\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.qt_makegui import VCPWindow\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1175 / 1288\n \n Instantiate VCPWindow module+ Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n@@ -51347,15 +51347,15 @@\n Load Calibration program:\n AUX_PRGM.load_calibration()\n \n keyboard_onboard()\n Load onboard/Matchbox keyboard\n AUX_PRGM.keyboard_onboard(<ARGS>)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1176 / 1288\n \n 12.8.7.2. Usage\n Import Aux_program_loader module\n Add this Python code to your import section:\n ############################\n@@ -51390,15 +51390,15 @@\n nota\n Keylookup requires code under the processed_key_event function to call KEYBIND.call().\n Most handler files already have this code.\n \n In the handler file, under the initialized function use this general syntax to create keybindings:\n KEYBIND.add_call(\u201dDEFINED_KEY\u201d,\u201dFUNCTION TO CALL\u201d, USER DATA)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Here we add a keybinding for F10, F11 and F12:\n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # at this point:\n # the widgets are instantiated.\n@@ -51448,15 +51448,15 @@\n Qt.Key_Shift: \u201dKey_Shift\u201d,\n Qt.Key_Control: \u201dKey_Control\u201d,\n Qt.Key_Meta: \u201dKey_Meta\u201d,\n # Qt.Key_Alt: \u201dKey_Alt\u201d,\n \n 1177 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_AltGr: \u201dKey_AltGr\u201d,\n Qt.Key_CapsLock: \u201dKey_CapsLock\u201d,\n Qt.Key_NumLock: \u201dKey_NumLock\u201d,\n Qt.Key_ScrollLock: \u201dKey_ScrollLock\u201d,\n Qt.Key_F1: \u201dKey_F1\u201d,\n Qt.Key_F2: \u201dKey_F2\u201d,\n@@ -51515,15 +51515,15 @@\n Qt.Key_Asterisk: \u201dKey_Asterisk\u201d,\n Qt.Key_Plus: \u201dKey_Plus\u201d,\n Qt.Key_Comma: \u201dKey_Comma\u201d,\n Qt.Key_Minus: \u201dKey_Minus\u201d,\n \n 1178 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Period: \u201dKey_Period\u201d,\n Qt.Key_Slash: \u201dKey_Slash\u201d,\n Qt.Key_0: \u201dKey_0\u201d,\n Qt.Key_1: \u201dKey_1\u201d,\n Qt.Key_2: \u201dKey_2\u201d,\n Qt.Key_3: \u201dKey_3\u201d,\n@@ -51566,15 +51566,15 @@\n _DETAIL\n Text hidden unless clicked on.\n _PINNAME\n Basename of the HAL pin(s).\n \n 1179 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1180 / 1288\n \n _TYPE\n Specifies whether it is a: Status message - shown in the status bar and the notify dialog.\n Requires no user intervention. OK message - requiring the user to click OK to close the dialog.\n OK messages have two HAL pins:\n@@ -51617,15 +51617,15 @@\n 12.8.10. Notify\n Notify module is used to send messages that are integrated into the desktop.\n It uses the pynotify library.\n Ubuntu/Mint does not follow the standard so you can\u2019t set how long the message stays up for.\n I suggest fixing this with the notify-osd package available from this PPA (DISCONTINUED due to\n move of Ubuntu to Gnome).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1181 / 1288\n \n Notify keeps a list of all the alarm messages since starting in self.alarmpage.\n If you click \u2019Show all messages\u2019 in the notify popup, it will print them to the terminal.\n The ScreenOptions widget can automatically set up the notify system.\n Typically STATUS messages are used to sent notify messages.\n@@ -51658,15 +51658,15 @@\n play sounds using the beep library (currently blocks while beeping),\n speak words using the espeak library (non blocking while speaking).\n There are default alert sounds using Mint or FreeDesktop default sounds.\n You can play arbitrary sounds or even songs by specifying the path.\n STATUS has messages to control Player module.\n The ScreenOptions widget can automatically set up the audio system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1182 / 1288\n \n 12.8.12.1. Sounds\n Alerts There are default alerts to choose from:\n ERROR\n READY\n@@ -51700,15 +51700,15 @@\n 12.8.12.3. Example\n To play sounds upon STATUS messages, use these general syntaxes:\n STATUS.emit(\u2019play-alert\u2019,\u2019LOGOUT\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019BEEP\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019SPEAK This is a test screen for Q t V C P\u2019)\n STATUS.emit(\u2019play-sound\u2019, \u2019PATH TO SOUND\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1183 / 1288\n \n 12.8.13. Virtual Keyboard\n This library allows you to use STATUS messages to launch a virtual keyboard.\n It uses Onboard or Matchbox libraries for the keyboard.\n \n@@ -51735,15 +51735,15 @@\n # **** instantiate libraries section **** #\n ###########################################\n TOOLBAR = ToolBarActions()\n \n 12.8.14.4. Examples\n Assigning Tool Actions To Toolbar Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1184 / 1288\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -51784,15 +51784,15 @@\n Some require HAL pins to be connected for movement.\n From a terminal (pick one):\n qtvcp vismach_mill_xyz\n qtvcp vismach_scara\n qtvcp vismach_millturn\n qtvcp vismach_5axis_gantry\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1185 / 1288\n \n 12.8.15.2. Primitives Library\n Provides the basic building blocks of a simulated machine.\n Collection\n A collection is an object of individual machine parts.\n@@ -51832,15 +51832,15 @@\n \n Track\n Move and rotate an object to point from one capture() \u2019d coordinate system to another.\n Base object to hold coordinates for primitive shapes.\n CylinderX, CylinderY, CylinderZ\n Build a cylinder on the X, Y or Z axis by giving endpoint (X, Y, or Z) and radii coordinates.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1186 / 1288\n \n Sphere\n Build a sphere from center and radius coordinates.\n \n TriangleXY, TriangleXZ, TriangleYZ\n@@ -51879,15 +51879,15 @@\n # **** IMPORT SECTION **** #\n ############################\n import mill_xyz as MILL\n \n Instantiate and use the simulation widget Instantiate the simulation widget and add it to the\n screen\u2019s main layout:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1187 / 1288\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -51906,30 +51906,30 @@\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1188 / 1288\n \n Figura 12.107: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\n zoom by scroll wheel\n pan by middle button drag\n rotate by right-button drag\n tilt by left button drag\n A Vismach model takes the form of a Python script and can use standard Python syntax.\n This means that there is more than one way to lay out the script, but in the examples given in this\n document the simplest and most basic of them will be used.\n The basic sequence in creating the Vismach model is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1189 / 1288\n \n 1. Create the parts\n 2. Define how they move\n 3. Assemble into movement groups\n \n@@ -51998,15 +51998,15 @@\n |\n |---tool\n |\n |---tooltip\n |\n |---(tool cylinder function)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1190 / 1288\n \n As you can see, the lowest parts must exist first before those can be grouped with others into an\n assembly. So you build upwards from lowest point in tree and assemble them together.\n The same is applicable for any design of machine: look at the machine arm example and you will see\n that it starts with the tip and adds to the larger part of the arm, then it finally groups with the base.\n@@ -52043,15 +52043,15 @@\n part = AsciiOBJ(data=\u201dv 0.123 0.234 0.345 1.0 ...\u201d)\n \n STL model parts are added to the Vismach space in the same locations as they were created in the\n STL or OBJ space, i.e. ideally with a rotational point at their origin.\n nota\n It is much easier to move while building if the origin of the model is at a rotational pivot point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1191 / 1288\n \n 12.9.5.2. Build from Geometric Primitives\n Alternatively parts can be created inside the model script from a range of shape primitives.\n Many shapes are created at the origin and need to be moved to the required location after creation.\n \n@@ -52087,15 +52087,15 @@\n 12.9.6.1. Translating Model parts\n part1 = Translate([part1], x, y, z)\n Move part1 the specified distances in x, y and z.\n 12.9.6.2. Rotating Model Parts\n part1 = Rotate([part1], theta, x, y, z)\n Rotate the part by angle theta [degrees] about an axis between the origin and x, y, z.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1192 / 1288\n \n 12.9.7. Animating Parts\n To animate the model controlled by the values of HAL pins there are four functions: HalTranslate,\n HalRotate, HalToolCylinder and HalToolTriangle.\n For parts to move inside an assembly they need to have their HAL motions defined before being\n@@ -52134,15 +52134,15 @@\n Defines the axis of rotation from the origin the point of coordinates (x,y,z).\n When the part is moved back away from the origin to its correct location, the axis of rotation\n can be considered to remain \u201dembedded\u201d in the part.\n angle_scale\n Rotation angles are in degrees, so for a rotary joint with a 0-1 scaling you would need to use\n an angle scale of 360.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1193 / 1288\n \n 12.9.7.3. HalToolCylinder\n \n tool = HalToolCylinder()\n Make a cylinder to represent a cylindrical mill tool, based on the tool table and current loaded\n@@ -52173,15 +52173,15 @@\n Move the head to the spindle or spindle to the head.\n Create the draw bar.\n Define the motion of the draw bar.\n Assemble the three parts into a head assembly.\n Define the motion of the head assembly.\n In this example the spindle rotation is indicated by rotation of a set of drive dogs:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1194 / 1288\n \n #Drive dogs\n dogs = Box(-6,-3,94,6,3,100)\n dogs = Color([1,1,1,1],[dogs])\n dogs = HalRotate([dogs],c,\u201dspindle\u201d,360,0,0,1)\n@@ -52223,15 +52223,15 @@\n For example [1,0,0,0.5] for a 50 % opacity red.\n myhud = Hud()\n Creates a heads-up display in the Vismach GUI to display items such as axis positions, titles, or\n messages.\n myhud = Hud()\n myhud.show(\u201dMill_XYZ\u201d)\u2018\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1195 / 1288\n \n myhud = HalHud()\n A more advanced version of the Hud that allows HAL pins to be displayed:\n myhud = HalHud()\n myhud.set_background_color(0,.1,.2,0)\n@@ -52273,15 +52273,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52324,15 +52324,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 1196 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1197 / 1288\n \n 12.9.12. Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10. QtVCP: Building Custom Widgets\n@@ -52360,15 +52360,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1198 / 1288\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@@ -52421,15 +52421,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1199 / 1288\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -52501,15 +52501,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -52559,15 +52559,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1200 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1201 / 1288\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@@ -52637,15 +52637,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52706,15 +52706,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1203 / 1288\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@@ -52761,15 +52761,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1204 / 1288\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -52809,15 +52809,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1205 / 1288\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@@ -52860,15 +52860,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1206 / 1288\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -52915,15 +52915,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52968,15 +52968,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1207 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53025,15 +53025,15 @@\n def domXml(self):\n return \u2019<widget class=\u201dSystemToolButton\u201d name=\u201dsystemtoolbutton\u201d />\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1208 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1209 / 1288\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@@ -53079,15 +53079,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53128,15 +53128,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1210 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1211 / 1288\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -53175,15 +53175,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1212 / 1288\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@@ -53218,15 +53218,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1213 / 1288\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@@ -53270,15 +53270,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1214 / 1288\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog. In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we\n know the message is for us. ENTRY or CALCULATOR dialogs return a float number.\n \n@@ -53313,15 +53313,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1215 / 1288\n \n Instantiate ToolBarActions module in the INSTANTIATE LIBRARY SECTION\n TOOLBAR = ToolBarActions()\n \n Configure submenus and actions in the SPECIAL FUNCTIONS SECTION Under the def initialized_\n@@ -53368,15 +53368,15 @@\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 self.w.filemanager.load()\n elif tab == self.w.tab_mdi:\n self.w.mditouchy.run_command()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1216 / 1288\n \n This function assumes there is a Tab widget, named mainTab, that has tabs with the names tab_auto,\n tab_graphics, tab_filemanager and tab_mdi.\n In this way the cycle start button works differently depending on what tab is shown.\n This is simplified - checking state and error trapping might be helpful.\n@@ -53415,15 +53415,15 @@\n Call it btn_toggle_continuous.\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 See Using Qt Designer To Add Slots section for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1217 / 1288\n \n Then add this code snippets to the handler file under the initialized__ function:\n # at this point:\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n@@ -53468,15 +53468,15 @@\n We can \u201dclass patch\u201d the library to redirect the function call. In the IMPORT SECTION add:\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 2. Redirect the class to call our custom function (2) in the handler file instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1218 / 1288\n \n ##########################################\n # Special Functions called from QtVCP\n #\n ##########################################\n@@ -53522,15 +53522,15 @@\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def our_load(self,fname):\n print(fname)\n self.w.filemanager.super__load(fname)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1219 / 1288\n \n 12.11.11. Adding Widgets Programmatically\n In some situation it is only possible to add widgets with Python code rather then using the Qt\n Designer editor.\n When adding QtVCP widgets programmatically, sometimes there are extra steps to be taken.\n@@ -53572,15 +53572,15 @@\n def __init__(self,halcomp,widgets,paths):\n self.hal = halcomp\n self.w = widgets\n self.PATHS = paths\n STATUS.connect(\u2019actual-spindle-speed-changed\u2019, \\\n lambda w,speed: self.update_spindle(speed))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1220 / 1288\n \n Add the widgets to the tab We need to make sure the Qt Designer widgets are already built before\n we try to add to them. For this, we add a call to self.make_corner_widgets() function to build our\n extra widgets at the right time, i.e. under the initialized__() function:\n ##########################################\n@@ -53685,15 +53685,15 @@\n 4\n \n This sets it as green when on.\n This is the extra function call required with some QtVCP widgets.\n If HAL_NAME is omitted it will use the widget\u2019s objectName if there is one.\n It gives the special widgets reference to:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1221 / 1288\n \n self.HAL_GCOMP\n the HAL component instance\n self.HAL_NAME\n This widget\u2019s name as a string\n@@ -53786,15 +53786,15 @@\n 12.11.12. Update/Read Objects Periodically\n Sometimes you need to update a widget or read a value regularly that isn\u2019t covered by normal\n libraries.\n Here we update an LED based on a watched HAL pin every 100 ms.\n We assume there is an LED named led in the Qt Designer UI file.\n Load the Qhal library for access to QtVCP\u2019s HAL component In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1222 / 1288\n \n from qtvcp.core import Qhal\n \n Instantiate Qhal In the INSTANTIATE LIBRARY SECTION add:\n QHAL = Qhal()\n@@ -53836,15 +53836,15 @@\n ########################\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 # directly select ZMQ message receiving\n self.w.screen_options.setProperty(\u2019use_receive_zmq_option\u2019,True)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1223 / 1288\n \n This allows an external program to call functions in the handler file.\n Add a function to be called on ZMQ message reception Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n #####################\n@@ -53903,15 +53903,15 @@\n \n 1\n \n You will need to know the signature of the function you wish to call. Also note that the message\n is converted to a JSON object. This is because ZMQ sends byte messages not Python objects. json\n converts Python objects to bytes and will be converted back when received.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1224 / 1288\n \n 12.11.13.2. ZMQ Messages Writing\n You may also want to communicate with an external program from the screen.\n In the ScreenOptions widget, you can select the property use_send_zmq_message. You can also set\n this property directly in the handler file, as in this sample.\n@@ -53955,15 +53955,15 @@\n topic, message = sock.recv_multipart()\n print(\u2019{} sent message:{}\u2019.format(topic,json.loads(message)))\n \n 12.11.14. Sending Messages To Status Bar Or Desktop Notify Dialogs\n There are several ways to report information to the user.\n A status bar is used for short information to show the user.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1225 / 1288\n \n nota\n Not all screens have a status bar.\n \n Status bar usage example\n@@ -54004,15 +54004,15 @@\n #####################\n # general functions #\n #####################\n def focusInChanged(self, widget):\n if isinstance(widget.parent(),type(self.w.gcode_editor.editor)):\n print(\u2019G-code Editor\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1226 / 1288\n \n elif isinstance(widget,type(self.w.gcodegraphics)):\n print(\u2019G-code Display\u2019)\n elif isinstance(widget.parent(),type(self.w.mdihistory) ):\n print(\u2019MDI History\u2019)\n@@ -54055,15 +54055,15 @@\n # if the -o option has \u2019camnumber=\u2019 in it, assume it\u2019s the camera number \u2190to use\n elif \u2019camnumber=\u2019 in self.w.USEROPTIONS_[num]:\n try:\n number = int(self.w.USEROPTIONS_[num].strip(\u2019camnumber=\u2019))\n except Exception as e:\n #\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1227 / 1288\n \n print(\u2019Error with cam_align camera selection - not a number - using \u21900\u2019)\n # set the camera number either as default or if -o option changed the \u2019number\u2019\n variable, to that number.\n self.w.camview._camNum = number\n@@ -54095,15 +54095,15 @@\n the .ui file,\n the handler file, and\n possibly the .qss theme file.\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1228 / 1288\n \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@@ -54137,15 +54137,15 @@\n CONFIGPATH\n Path of the launched configuration\n BASEDIR\n General path, used to derive all paths\n BASENAME\n Generic name used to derive all paths\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1229 / 1288\n \n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n@@ -54182,15 +54182,15 @@\n aviso\n Keybinding is always a difficult-to-get-right-in-all-cases affair.\n \n Custom keybinding functions are to be defined in the handler file.\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1230 / 1288\n \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@@ -54221,15 +54221,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1231 / 1288\n \n Cap\u00edtulo 13\n \n User Interface Programming\n 13.1. Panelui\n@@ -54256,15 +54256,15 @@\n A typical HAL file will have these commands added:\n # commands needed for panelui loading\n #\n # sampler is needed for panelui\n # cfg= must always be u for panelui. depth sets the available buffer\n loadrt sampler cfg=u depth=1025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1232 / 1288\n \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@@ -54306,15 +54306,15 @@\n HAL Prefix\n [HAL_PREFIX]\n NAME= Yourname\n \n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1233 / 1288\n \n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n@@ -54367,15 +54367,15 @@\n STATUS_PIN = True\n TRUE_STATE = 20\n TRUE_COMMAND = NONE, NONE\n FALSE_COMMAND = NONE, NONE\n FALSE_STATE = 0\n DEFAULT = false\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1234 / 1288\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@@ -54421,15 +54421,15 @@\n There are a number of internal commands you may use.\n home_selected\n required argument: axis number (int)\n unhome_selected\n required argument: axis number (int)\n spindle_forward_adjust\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1235 / 1288\n \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@@ -54456,15 +54456,15 @@\n required arguments: axis number (int), direction (int), distance (float)\n quill_up\n optional arguments: machine Z axis absolute position (float)\n Description: Move Z axis to the given machine position\n feed_hold\n required argument: state (bool 0 or 1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n feed_override\n required argument: rate (float)\n rapid_override\n required argument: rate (float 0-1)\n spindle_override\n required argument: rate (float)\n@@ -54485,15 +54485,15 @@\n Description: records the current mode, calls commands and then returns to mode.\n mdi\n required argument: G-code command(s)\n Description: sets mode to MDI, calls commands.\n \n 1236 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1237 / 1288\n \n 13.1.5. ZMQ Messages\n Panelui can send ZMQ based messages on button presses.\n In this way panelui can interact will other programs such as QtVCP screens.\n [TOGGLE_BUTTONS]\n@@ -54534,15 +54534,15 @@\n # linuxcnc_stat: is the python status instance of LinuxCNC\n # linuxcnc_cmd: is the python command instance of LinuxCNC\n # commands: is the command instance so one can call the internal routines\n # master: give access to the master functions/data\n def __init__(self, linuxcnc_stat, linuxcnc_cmd, commands, master):\n self.parent = commands\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1238 / 1288\n \n self.current_mode = 0\n # command functions are expected to have this layout:\n # def some_name(self, widget_instance, arguments from widget):\n # widget_instance gives access to the calling widget\u2019s function/data\n@@ -54586,15 +54586,15 @@\n channel.\n Programmatic access to NML is through a C++ API; however, the most important parts of the NML\n interface to LinuxCNC are also available to Python programs through the linuxcnc module.\n Beyond the NML interface to the command, status and error channels, the linuxcnc module also\n contains:\n support for reading values from INI files\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1239 / 1288\n \n 13.2.2. Usage Patterns for the LinuxCNC NML interface\n The general pattern for linuxcnc usage is roughly like this:\n import the linuxcnc module\n establish connections to the command, status and error NML channels as needed\n@@ -54632,15 +54632,15 @@\n acceleration\n (returns float) - default acceleration, reflects the INI entry [TRAJ]DEFAULT_ACCELERATION.\n active_queue\n (returns integer) - number of motions blending.\n actual_position\n (returns tuple of floats) - current trajectory position, (x y z a b c u v w) in machine units.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1240 / 1288\n \n adaptive_feed_enabled\n (returns boolean) - status of adaptive feedrate override (0/1).\n ain\n (returns tuple of floats) - current value of the analog input pins.\n@@ -54681,15 +54681,15 @@\n dtg\n (returns tuple of floats) - remaining distance of current move for each axis, as reported by trajectory planner.\n echo_serial_number\n (returns integer) - The serial number of the last completed command sent by a UI to task. All\n commands carry a serial number. Once the command has been executed, its serial number is\n reflected in echo_serial_number.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1241 / 1288\n \n enabled\n (returns boolean) - trajectory planner enabled flag.\n estop\n (returns integer) - Returns either STATE_ESTOP or not.\n@@ -54732,15 +54732,15 @@\n (returns boolean) - machine-in-position flag.\n input_timeout\n (returns boolean) - flag for M66 timer in progress.\n interp_state\n (returns integer) - current state of RS274NGC interpreter. One of INTERP_IDLE, INTERP_READING,\n INTERP_PAUSED, INTERP_WAITING.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1242 / 1288\n \n interpreter_errcode\n (returns integer) - current RS274NGC interpreter return code. One of INTERP_OK, INTERP_EXIT,\n INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. see\n src/emc/nml_intf/interp_return.hh\n@@ -54781,15 +54781,15 @@\n motion_mode\n (returns integer) - This is the mode of the Motion controller. One of TRAJ_MODE_COORD, TRAJ_MODE_F\n TRAJ_MODE_TELEOP.\n motion_type\n (returns integer) - The type of the currently executing motion. One of:\n MOTION_TYPE_TRAVERSE\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1243 / 1288\n \n MOTION_TYPE_FEED\n MOTION_TYPE_ARC\n MOTION_TYPE_TOOLCHANGE\n MOTION_TYPE_PROBING\n@@ -54831,15 +54831,15 @@\n = feed rate, settings[2] = speed, settings[3] = G64 P blend tolerance, settings[4] = G64 Q naive\n CAM tolerance.\n spindle\n \u2019 (returns tuple of dicts) \u2019 - returns the current spindle status, see The spindle dictionary\n spindles\n (returns integer) - number of spindles. Reflects [TRAJ]SPINDLES INI value.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1244 / 1288\n \n state\n (returns integer) - current command execution status. One of RCS_DONE, RCS_EXEC, RCS_ERROR.\n task_mode\n (returns integer) - current task mode. one of MODE_MDI, MODE_AUTO, MODE_MANUAL.\n@@ -54878,15 +54878,15 @@\n max_position_limit\n (returns float) - maximum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MAX_LIMIT.\n min_position_limit\n (returns float) - minimum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1245 / 1288\n \n 13.2.3.3. The joint dictionary\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n@@ -54923,15 +54923,15 @@\n max_soft_limit\n non-zero means max_position_limit was exceeded, int\n min_ferror\n (returns float) - configuration parameter, reflects [JOINT_n]MIN_FERROR.\n min_hard_limit\n (returns integer) - non-zero means min hard limit exceeded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1246 / 1288\n \n min_position_limit\n (returns float) - minimum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n min_soft_limit\n (returns integer) - non-zero means min_position_limit was exceeded.\n@@ -54964,15 +54964,15 @@\n override\n (returns float) - spindle speed override scale.\n override_enabled\n (returns boolean) - value of the spindle override enabled flag.\n speed\n (returns float) - spindle speed value, rpm, > 0: clockwise, < 0: counterclockwise.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1247 / 1288\n \n 13.2.4. Preparing to send commands\n \n Some commands can always be sent, regardless of mode and state; for instance, the linuxcnc.command.abor\n method can always be called.\n@@ -55009,15 +55009,15 @@\n c.auto(linuxcnc.AUTO_RESUME)\n c.brake(linuxcnc.BRAKE_ENGAGE)\n c.brake(linuxcnc.BRAKE_RELEASE)\n c.flood(linuxcnc.FLOOD_ON)\n c.flood(linuxcnc.FLOOD_OFF)\n c.home(2)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n c.jog(linuxcnc.JOG_STOP,\n c.jog(linuxcnc.JOG_CONTINUOUS,\n c.jog(linuxcnc.JOG_INCREMENT,\n \n 1248 / 1288\n \n@@ -55059,15 +55059,15 @@\n error_msg(string)\n sends a operator error message to the screen. (max 254 characters)\n feedrate(float)\n set the feedrate override, 1.0 = 100 %.\n flood(int)\n turn on/off flooding.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1249 / 1288\n \n Syntax\n flood(command)\n flood(linuxcnc.FLOOD_ON)\n flood(linuxcnc.FLOOD_OFF)\n@@ -55112,15 +55112,15 @@\n mist(linuxcnc.MIST_OFF)\n Constants\n MIST_ON\n MIST_OFF\n mode(int)\n set mode (MODE_MDI, MODE_MANUAL, MODE_AUTO).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1250 / 1288\n \n override_limits()\n set the override axis limits flag.\n program_open(string)\n open an NGC file.\n@@ -55157,15 +55157,15 @@\n \n aviso\n MDI commands will ignore this. \u201dS1000\u201d after this will turn the spindle off.\n \n text_msg(string)\n sends a operator text message to the screen. (max 254 characters)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1251 / 1288\n \n #!/usr/bin/env python3\n import linuxcnc\n c = linuxcnc.command()\n # Increase speed of spindle 0 by 100rpm. Spindle must be on first.\n@@ -55203,15 +55203,15 @@\n 13.2.6. Reading the error channel\n To handle error messages, connect to the error channel and periodically poll() it.\n Note that the NML channel for error messages has a queue (other than the command and status\n channels), which means that the first consumer of an error message deletes that message from the\n queue; whether your another error message consumer (e.g. Axis) will see the message is dependent\n on timing. It is recommended to have just one error channel reader task in a setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n e = linuxcnc.error_channel()\n error = e.poll()\n if error:\n kind, text = error\n@@ -55249,15 +55249,15 @@\n import linuxcnc\n stat = linuxcnc.stat()\n stat.poll()\n inifile = linuxcnc.ini(stat.ini_filename)\n \n 1252 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1253 / 1288\n \n # See example above for usage of \u2019inifile\u2019 object\n \n 13.2.8. The linuxcnc.positionlogger type\n Some usage hints can be gleaned from src/emc/usr_intf/gremlin/gremlin.py.\n@@ -55286,15 +55286,15 @@\n #!/usr/bin/env python3\n import hal, time\n h = hal.component(\u201dpassthrough\u201d)\n h.newpin(\u201din\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n h.newpin(\u201dout\u201d, hal.HAL_FLOAT, hal.HAL_OUT)\n h.ready()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1254 / 1288\n \n 13.3.2. Functions\n component\n +\n The component itself is created by a call to the constructor hal.component. The arguments are\n@@ -55331,15 +55331,15 @@\n set_msg_level\n Set the current Realtime msg level. used for debugging information.\n connect\n Connect a pin to a signal.\n Example\n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n disconnect\n Disconnect a pin from a signal.\n Example\n hal.disconnect(\u201dpinname\u201d)\n \n get_value\n@@ -55376,15 +55376,15 @@\n \n pin_has_writer\n Does the specified pin have a driving pin connected.\n Returns True or False.\n \n 1255 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n h.in.pin_has_writer()\n \n get_name\n Get the HAL object name.\n Return a string.\n h.in.get_name()\n@@ -55421,15 +55421,15 @@\n set_p\n Set a pin value of any pin in the HAL system.\n Example\n hal.set_p(\u201dpinname\u201d,\u201d10\u201d)\n \n 1256 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1257 / 1288\n \n 13.4. GStat Python Module\n 13.4.1. Intro\n GStat is a Python class used to send messages from LinuxCNC to other Python programs. It uses\n GObject to deliver messages, making it easy to listen for specific information. This is referred to\n@@ -55465,15 +55465,15 @@\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n # callback to change HAL pin state\n def mode_changed(obj, data):\n h[\u2019g20\u2019] = not data\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1258 / 1288\n \n h[\u2019g21\u2019] = data\n # Make a component and pins\n h = hal.component(\u201dmetric_status\u201d)\n h.newpin(\u201dg20\u201d, hal.HAL_BIT, hal.HAL_OUT)\n@@ -55512,15 +55512,15 @@\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 def update_estate_label(self,text):\n self.builder.get_object(\u2019e_state_label\u2019).set_label(\u201dE State: %s\u201d % (text))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1259 / 1288\n \n def update_interp_label(self,text):\n self.builder.get_object(\u2019interp_state_label\u2019).set_label(\u201dInterpreter State: %s\u201d % ( \u2190text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n@@ -55553,15 +55553,15 @@\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n 13.4.3. Messages\n periodic\n (returns nothing) - sent every 100 ms.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1260 / 1288\n \n state-estop\n (returns nothing) - Sent when LinuxCNC is goes into estop.\n state-estop-reset\n (returns nothing) - Sent when LinuxCNC comes out of estop.\n@@ -55599,15 +55599,15 @@\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 interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1261 / 1288\n \n jograte-changed\n (returns float) - Sent when jog rate has changed.\n LinuxCNC does not have an internal jog rate.\n This is GStat\u2019s internal jog rate.\n@@ -55651,15 +55651,15 @@\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 current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1262 / 1288\n \n current-x-rel-position\n (returns float) - Sent every 100 ms.\n current-position\n (returns pyobject, pyobject, pyobject, pyobject) - Sent every 100 ms.\n@@ -55703,15 +55703,15 @@\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1263 / 1288\n \n flood-changed\n (returns bool) - Sent when flood coolant state changes.\n mist-changed\n (returns bool ) - Sent when mist coolant state changes.\n@@ -55752,15 +55752,15 @@\n y (string): Y extents (bounds) 1\n y_zero_rxy (string): Y extents without rotation around z (bounds) 1\n z (string): Z extents (bounds) 1\n z_zero_rxy (string): Z extents without rotation around z (bounds) 1\n machine_unit_sys (string): Machine units (Metric or Imperial)\n gcode_units (string): Units in G-code file (mm or in)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1264 / 1288\n \n nota\n 1. See the images\n better understanding.\n \n@@ -55807,15 +55807,15 @@\n (returns integer) - intended to be sent when requesting a DRO widget to change its reference.\n 0 = machine, 1 = relative, 3 = distance-to-go\n This depends on the widget/libraries used.\n show-preferences\n (returns None) - intended to be sent when requesting the screen preferences to be displayed.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1265 / 1288\n \n shutdown\n (returns None) - intended to be sent when requesting LinuxCNC to shutdown.\n This depends on the widget/libraries used.\n error\n@@ -55855,15 +55855,15 @@\n (Nothing) - x = GSTAT.get_jograte() would return GSTAT\u2019s current internal jograte (float).\n set_jograte_angular\n (float) get_jograte_angular\n (None) set_jog_increment_angular\n (float, string) get_jog_increment_angular\n (None) -\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1266 / 1288\n \n set_jog_increments\n (float, string) get_jog_increments\n (None) is_all_homed\n (nothing) - This will return the current state of all_homed (BOOL).\n@@ -55899,15 +55899,15 @@\n false if mode is 0\n false if machine is busy\n true if LinuxCNC is in the requested mode\n None if possible to change, but not in requested mode\n get_current_mode\n (nothing) - returns integer: the current LinuxCNC mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1267 / 1288\n \n set_selected_joint\n (integer) - records the selected joint number internally.\n requests the joint to be selected by emitting the\n joint-selection-changed message.\n@@ -55936,30 +55936,30 @@\n state-tags branch.\n \n 13.5. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1268 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1269 / 1288\n \n Define how they move.\n Assemble into movement groups.\n \n 13.5.1. Start the script\n@@ -55999,15 +55999,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1270 / 1288\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@@ -56045,15 +56045,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1271 / 1288\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@@ -56094,15 +56094,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1272 / 1288\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@@ -56143,15 +56143,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -56162,23 +56162,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 1273 / 1288\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1274 / 1288\n \n Parte III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1275 / 1288\n \n Cap\u00edtulo 14\n \n Overleaf\n \n@@ -56198,15 +56198,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1276 / 1288\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@@ -56240,15 +56240,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1277 / 1288\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@@ -56291,15 +56291,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1278 / 1288\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@@ -56342,15 +56342,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1279 / 1288\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -56395,15 +56395,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1280 / 1288\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -56445,28 +56445,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1281 / 1288\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1282 / 1288\n \n Cap\u00edtulo 16\n \n Copyright\n 16.1. Legal Section\n@@ -56493,15 +56493,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1283 / 1288\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@@ -56550,15 +56550,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1284 / 1288\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@@ -56605,15 +56605,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1285 / 1288\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@@ -56654,15 +56654,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1286 / 1288\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@@ -56689,15 +56689,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1287 / 1288\n \n Cap\u00edtulo 17\n \n Historia de LinuxCNC\n 17.1. Origin\n@@ -56729,15 +56729,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1288 / 1288\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Getting Started V2.9.3, 25 Jan 2025'\n+Title: 'Getting Started V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Getting Started V2.9.3, 25 Jan 2025\n+Getting Started V2.9.3, 26 Jan 2025\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\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.2.3. Command line - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iii\n \n 3.2.4. Command line - MacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n@@ -267,15 +267,15 @@\n 7.2. GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 30\n 30\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iv\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@@ -293,15 +293,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 1 / 34\n \n Cap\u00edtulo 1\n \n About LinuxCNC\n 1.1. The Software\n@@ -328,15 +328,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 2 / 34\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@@ -369,15 +369,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 3 / 34\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@@ -387,15 +387,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 4 / 34\n \n Cap\u00edtulo 2\n \n System Requirements\n 2.1. Minimum Requirements\n@@ -420,15 +420,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 5 / 34\n \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@@ -465,24 +465,24 @@\n compile from source to do this.\n \n 2.3. Problematic Hardware\n 2.3.1. Laptops\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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 6 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 7 / 34\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@@ -509,15 +509,15 @@\n This section describes some methods for downloading the Live/Install image.\n \n 3.1.1. Normal Download\n Software for LinuxCNC to download is presented on the project\u2019s Downloads page. Most users will aim\n for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 8 / 34\n \n nota\n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n@@ -555,15 +555,15 @@\n but there are alternatives. More information can be found at: How To MD5SUM\n \n 3.2. Write the image to a bootable device\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 9 / 34\n \n 3.2.1. Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n@@ -598,15 +598,15 @@\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 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 10 / 34\n \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@@ -636,15 +636,15 @@\n At the time of writing the Live Image is only available with the preempt-rt kernel and a matching\n LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental\n version available using the RTAI realtime kernel which will often give better latency.\n \n 3.4. Installing LinuxCNC\n To install LinuxCNC from the Live CD select Install (Graphical) at bootup.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 11 / 34\n \n 3.5. Updates to LinuxCNC\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@@ -729,15 +729,15 @@\n \n Preempt-RT kernels The Preempt-rt kernels are available for Debian from the regular debian.org\n archive. The package is called linux-image-rt-*. Simply install the package in the same way as any\n other package from the Synaptic Package manager or with apt-get at the command-line.\n RTAI Kernels The RTAI kernels are available for download from the linuxcnc.org debian archive. The\n apt source is:\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 12 / 34\n \n Debian Bookworm: deb http://linuxcnc.org bookworm base\n Debian Bullseye: deb http://linuxcnc.org bullseye base\n Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n@@ -772,15 +772,15 @@\n this document.\n 4. Add the LinuxCNC Archive Signing Key to your apt keyring by downloading [the LinuxCNC installer script](https://www.linuxcnc.org/linuxcnc-install.sh) You will need to make the script executable to run it:\n chmod +x linuxcnc-install.sh\n \n Then you can run the installer:\n sudo ./linuxcnc-install.sh\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 13 / 34\n \n 3.7.2. Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n@@ -795,15 +795,15 @@\n Reboot the machine, ensuring that the system boots from the new 5.4.258-rtai kernel.\n \n 3.7.3. Installing on Raspbian 12\n Don\u2019t do that. The latencies are too bad with the default kernel and the PREEMPT_RT (the RT is\n important) kernel of Debian does not boot on the Pi (as of 1/2024). Please refer to the images provided\n online. You can create them yourself following the scripts provided online.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 14 / 34\n \n Cap\u00edtulo 4\n \n Running LinuxCNC\n 4.1. Invoking LinuxCNC\n@@ -830,15 +830,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 craftsman - Touch Screen GUI (no longer maintained ???)\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 15 / 34\n \n gmoccapy - Touch Screen GUI\n gscreen - Touch Screen GUI\n pyvcp_demo - Python Virtual Control Panel\n qtaxis - Touch Screen GUI, axis lookalike\n@@ -869,15 +869,15 @@\n tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n 2. demonstrations of applications that can be used with linuxcnc\n info - creates a file with system information that may be useful for problem diagnosis.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 16 / 34\n \n gladevcp - Example GladeVCP applications.\n halrun - Starts halrun in an terminal.\n latency - Applications to investigate latency\n \u2022 latency-histogram-1 - histogram for single servo thread\n@@ -894,15 +894,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 17 / 34\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@@ -929,15 +929,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 18 / 34\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@@ -969,15 +969,15 @@\n \n You should be running on Debian Buster, Bullseye or Bookworm or Ubuntu 20.04 \u201dFocal Fossa\u201d or\n newer. LinuxCNC 2.9.y will not run on older distributions than these.\n You will also need to check which realtime kernel is being used:\n uname -r\n 6.1.0-10-rt-amd64\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 19 / 34\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. RTAI packages are available for Bookworm and Buster but not currently for Bullseye.\n@@ -1014,29 +1014,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 20 / 34\n \n Figura 5.1: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n 5.1.2.1. Debian Buster, Bullseye and Bookworm\n Debian uses the Synaptic Package Manager.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 21 / 34\n \n Open Synaptic using the instructions in Setting apt sources above.\n Click the Reload button.\n Use the Search function to search for linuxcnc.\n The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n@@ -1073,15 +1073,15 @@\n sudo dpkg -i linuxcnc_2.9.2.deb\n \n 5.3. Updating Configuration Files for 2.9\n 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 22 / 34\n \n A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting.\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 Since 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@@ -1115,24 +1115,24 @@\n \n mdro mqtt-publisher pi500_vfd pmx485-test qtplasmac-cfg2prefs qtplasmac-materials qtplasmac-plasmac2q\n qtplasmac-setup sim-torch svd-ps_vfd\n \n 5.5.2. En tiempo real\n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_sums tof ton\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 23 / 34\n \n 5.6. New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 24 / 34\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@@ -1166,15 +1166,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 25 / 34\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@@ -1217,15 +1217,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 26 / 34\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@@ -1268,15 +1268,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 27 / 34\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -1321,15 +1321,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 28 / 34\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -1371,28 +1371,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 29 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 30 / 34\n \n Cap\u00edtulo 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -1418,15 +1418,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 31 / 34\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@@ -1475,15 +1475,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 32 / 34\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@@ -1530,15 +1530,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 33 / 34\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@@ -1579,15 +1579,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 34 / 34\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Integrator Information V2.9.3, 25 Jan 2025'\n+Title: 'Integrator Information V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Integrator Information V2.9.3, 25 Jan 2025\n+Integrator Information V2.9.3, 26 Jan 2025\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n ii\n \n \u00cdndice general\n 1. Stepper Information\n \n 1\n@@ -125,15 +125,15 @@\n \n 17\n \n 3.12.3.Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 1 / 18\n \n Cap\u00edtulo 1\n \n Stepper Information\n 1.1. Stepper Motor Operation\n@@ -152,15 +152,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -179,15 +179,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -232,15 +232,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -277,15 +277,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -305,15 +305,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -376,15 +376,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 7 / 18\n \n Gecko\n@@ -477,15 +477,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 8 / 18\n \n Gecko\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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 9 / 18\n \n *Motion\n@@ -856,15 +856,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1103,15 +1103,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1290,15 +1290,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 12 / 18\n \n Cap\u00edtulo 3\n \n Best Wiring Practices\n 3.1. Electrical Noise\n@@ -1326,15 +1326,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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 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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1424,15 +1424,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1473,15 +1473,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1517,15 +1517,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1563,15 +1563,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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.3-2_all.deb", "source2": "linuxcnc-doc-fr_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n -rw-r--r-- 0 0 0 1124 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 27518444 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 27520616 2025-01-26 08:13: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.3-2\n Architecture: all\n Maintainer: LinuxCNC Developers <emc-developers@lists.sourceforge.net>\n-Installed-Size: 30282\n+Installed-Size: 30284\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 2025-01-26 08:13:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 331 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-documentation_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 357 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gcoderef_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 372 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gettingstarted_fr.desktop\n -rw-r--r-- 0 root (0) root (0) 361 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-integratorinfo_fr.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 842211 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 29436518 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 491322 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf\n--rw-r--r-- 0 root (0) root (0) 150454 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 842344 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 29438295 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 491385 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf\n+-rw-r--r-- 0 root (0) root (0) 150509 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf\n -rw-r--r-- 0 root (0) root (0) 14667 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/gcode_fr.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-fr/\n -rw-r--r-- 0 root (0) root (0) 11212 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-fr/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2024-07-06 08:41:36.000000 ./usr/share/doc/linuxcnc-doc-fr/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 277 2024-07-06 08:41:36.000000 ./usr/share/doc-base/linuxcnc-doc-fr.linuxcnc-doc-fr\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13: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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Manuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025'\n+Title: 'Manuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Manuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+Manuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n ii\n \n Table des mati\u00e8res\n 1 Introduction\n \n 1\n@@ -117,15 +117,15 @@\n \n 15\n \n 3.8.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n iii\n \n 3.8.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n@@ -281,15 +281,15 @@\n \n 19\n \n 3.8.16.1Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n iv\n \n 3.8.16.2Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n@@ -449,15 +449,15 @@\n \n 3.21.3Process line\n \n 27\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n v\n \n 3.21.4Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 27\n \n@@ -623,15 +623,15 @@\n \n 40\n \n 4.14Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 40\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n vi\n \n 5 Coding Style\n \n 41\n \n@@ -777,15 +777,15 @@\n \n 55\n \n 8.4.1 Repo Git officiel de LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 55\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n vii\n \n 8.4.2 Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n@@ -872,15 +872,15 @@\n 10.2GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 65\n 65\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 1 / 69\n \n Chapitre 1\n \n Introduction\n \n@@ -900,15 +900,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 2 / 69\n \n Chapitre 2\n \n HAL General Reference\n 2.1 HAL Entity Names\n@@ -938,15 +938,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -986,15 +986,15 @@\n number.\n 1. Underlined characters have been removed, but there are still a few cases of broken mixture, for example pid.0.Pgain in\n place of pid.0.p-gain.\n 2. 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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 4 / 69\n \n <specific-name>\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@@ -1037,15 +1037,15 @@\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n \n 3. 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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 5 / 69\n \n Chapitre 3\n \n Code Notes\n 3.1 Intended audience\n@@ -1076,15 +1076,15 @@\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 trivial kinematics that may be the case. Even on those machines, joint position and axis position\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 6 / 69\n \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 more accurately be described as joint data, such as input and output scaling, etc.\n@@ -1112,19 +1112,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 7 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1155,19 +1155,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 9 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1183,15 +1183,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1208,26 +1208,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 12 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 3.7 Homing\n 3.7.1 Homing state diagram\n \n 13 / 69\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1243,15 +1243,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1283,15 +1283,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1326,15 +1326,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1362,15 +1362,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1397,15 +1397,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1433,15 +1433,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1471,15 +1471,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1516,15 +1516,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1557,15 +1557,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1583,15 +1583,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 24 / 69\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1639,15 +1639,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1681,15 +1681,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1707,15 +1707,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -1758,15 +1758,15 @@\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 offers limited performance advantages over SHMEM. This leaves SHMEM as the only buffer type to\n use with LinuxCNC.\n The neut option is only of use in a multi-processor system where different (and incompatible) architectures are sharing a block of memory. The likelihood of seeing a system of this type outside of a\n museum or research establishment is remote and is only relevant to GLOBMEM buffers.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 28 / 69\n \n The RPC number is documented as being obsolete and is retained only for compatibility reasons.\n With a unique buffer name, having a numerical identity seems to be pointless. Need to review the code\n to identify the logic. Likewise, the key field at first appears to be redundant, and it could be derived\n from the buffer name.\n@@ -1810,15 +1810,15 @@\n \n 3.22.1 NML internals\n 3.22.1.1 NML constructor\n NML::NML() parses the config file and stores it in a linked list to be passed to cms constructors in\n single lines. It is the function of the NML constructor to call the relevant cms constructor for each\n buffer and maintain a list of the cms objects and the processes associated with each buffer.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 29 / 69\n \n It is from the pointers stored in the lists that NML can interact with cms and why Doxygen fails to\n show the real relationships involved.\n Note\n The config is stored in memory before passing a pointer to a specific line to the cms constructor. The\n@@ -1853,15 +1853,15 @@\n \n a. (I chose 1605, because it was available) to emc2/src/emc/nml_intf/emc.hh\n 3. add case EMC_IO_GENERIC_TYPE to emcFormat in emc2/src/emc/nml_intf/emc.cc\n 4. add case EMC_IO_GENERIC_TYPE to emc_symbol_lookup in emc2/src/emc/nml_intf/emc.cc\n 5. add EMC_IO_GENERIC::update function to emc2/src/emc/nml_intf/emc.cc\n Recompile, and the new message should be there. The next part is to send such messages from somewhere, and receive them in another place, and do some stuff with it.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 30 / 69\n \n 3.24 The Tool Table and Toolchanger\n LinuxCNC interfaces with toolchanger hardware, and has an internal toolchanger abstraction. LinuxCNC manages tool information in a tool table file.\n \n 3.24.1 Toolchanger abstraction in LinuxCNC\n@@ -1895,15 +1895,15 @@\n exactly like any other tool in the tool table. It is customary to use T0 to represent \u201dno tool\u201d (i.e., a\n tool with zero TLO), so that the spindle can be conveniently emptied when needed.\n \n 3.24.2 The Tool Table\n LinuxCNC keeps track of tools in a file called the tool table. The tool table records the following\n information for each tool:\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 31 / 69\n \n num\u00e9ro d\u2019outil\n An integer that uniquely identifies this tool. Tool numbers are handled differently by LinuxCNC\n when configured for random and nonrandom toolchangers:\n \u2014 When LinuxCNC is configured for a nonrandom toolchanger this number must be positive. T0\n@@ -1943,15 +1943,15 @@\n emcioStatus.tool.pocketPrepped to the requested tool\u2019s pocket number.\n 2. Back in interp, settings->selected_pocket is assigned the tooldata index of the requested tool\n xxx.\n Note\n The legacy names selected_pocket and current_pocket actually reference a sequential tooldata\n index for tool items loaded from a tool table ([EMCIO]TOOL_TABLE) or via a tooldata database ([EMCIO]DB_PROGRAM).\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 32 / 69\n \n 3.24.3.2 M6\n Tells the toolchanger to switch to the currently selected tool (selected by the previous Txxx command).\n Handled by Interp::convert_tool_change().\n 1. The machine is asked to change to the selected tool by calling the Canon function CHANGE_TOOL()\n@@ -1989,15 +1989,15 @@\n via an EMCMOT_SET_OFFSET command. Motion copies the offsets to emcmotStatus->tool_offset,\n where it gets used to offset future motions.\n 3. Back in interp, the offsets are recorded in settings->tool_offset. The effective pocket is recorded in settings->tool_offset_index, though this value is never used.\n 3.24.3.4 G10 L1/L10/L11\n Modifie le tableau d\u2019outils.\n Handled by Interp::convert_setup_tool().\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 33 / 69\n \n 1. Picks the tool number out of the P-word in the block and finds the pocket for that tool:\n a. With a nonrandom toolchanger config this is always the pocket number in the toolchanger\n (even when the tool is in the spindle).\n b. With a random toolchanger config, if the tool is currently loaded it uses pocket 0 (pocket\n@@ -2035,15 +2035,15 @@\n 3.24.3.6 G41/G41.1/G42/G42.1\n Enable cutter radius compensation (usually called cutter comp).\n Handled by Interp::convert_cutter_compensation_on().\n No Canon call, cutter comp happens in the interpreter. Uses the tool table in the expected way: if\n a D-word tool number is supplied it looks up the pocket number of the specified tool number in the\n table, and if no D-word is supplied it uses pocket 0 (the spindle).\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 34 / 69\n \n 3.24.3.7 G40\n Annuler la compensation du rayon de l\u2019outil.\n Handled by Interp::convert_cutter_compensation_off().\n No Canon call, cutter comp happens in the interpreter. Does not use the tool table.\n@@ -2084,15 +2084,15 @@\n to decide which tooldata index to use for G43 (with no H-word): settings->current_pocket if\n the tool change is still in progress, tooldata index 0 (the spindle) if the tool change is complete.\n settings.random_toolchanger\n Set from the INI variable [EMCIO]RANDOM_TOOLCHANGER at startup. Controls various tool table\n handling logic. (IO also reads this INI variable and changes its behavior based on it. For example,\n when saving the tool table, random toolchanger save the tool in the spindle (pocket 0), but nonrandom toolchanger save each tool in its \u201dhome pocket\u201d.)\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 35 / 69\n \n settings.tool_offset\n This is an EmcPose variable.\n \u2014 Used to compute position in various places.\n \u2014 Sent to Motion via the EMCMOT_SET_OFFSET message. All motion does with the offsets is export\n@@ -2134,26 +2134,26 @@\n must be ignored.\n status.motion.joint[EMCMOT_MAX_JOINTS]\n An array of EMCMOT_MAX_JOINTS joint structures. joint[0] through joint[joints-1] are valid,\n the others do not exist on this machine and must be ignored.\n Things are not this way currently in the joints-axes branch, but deviations from this design are considered bugs. For an example of such a bug, see the treatment of axes in src/emc/ini/initraj.cc:loadTraj().\n There are undoubtedly more, and I need your help to find them and fix them.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 36 / 69\n \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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2185,15 +2185,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2239,15 +2239,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2293,15 +2293,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2340,15 +2340,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2373,15 +2373,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 42 / 69\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2424,15 +2424,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2470,15 +2470,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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@@ -2513,24 +2513,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 46 / 69\n \n Chapitre 6\n \n Building LinuxCNC\n 6.1 Introduction\n@@ -2558,15 +2558,15 @@\n To retrieve the source tree you have two options:\n Download tarball\n On the LinuxCNC project page in GitHub find a reference to the \u201dreleases\u201d or \u201dtags\u201d, click that\n hyperlink to the archive page and download the latest .tar file. You will find that file compressed\n as a .tar.xz or .tar.gz file. This file, commonly referred to as a \u201dtarball\u201d is an archive very analogous\n to a .zip. Your Linux desktop will know how to treat that file when double-clicking on it.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 47 / 69\n \n Prepare a local copy of the LinuxCNC repository\n You would first install the tool \u201dgit\u201d on your machine if it is not available already (sudo apt\n install git). Then prepare a local instance of the source tree as follows: .\n $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir\n@@ -2606,15 +2606,15 @@\n \n 6.3 Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint. 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-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 48 / 69\n \n 6.3.1 Realtime\n LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version\n of LinuxCNC supports the following platforms. The first three listed are realtime operating systems:\n RTAI\n@@ -2650,15 +2650,15 @@\n \n The most commonly used arguments are:\n --with-realtime=uspace\n Build for any realtime platform, or for non-realtime. The resulting LinuxCNC executables will run\n on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a\n vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 49 / 69\n \n If development files are installed for Xenomai (typically from package \u2190libxenomai-dev) or RTAI (typically from a package with a name starting \u201d \u2190rtai-modules\u201d), support for these real-time kernels will also be enabled.\n --with-realtime=/usr/realtime-$VERSION\n Build for the RTAI realtime platform using the older \u201dkernel realtime\u201d model. This requires that\n you have an RTAI kernel and the RTAI modules installed in /usr/realtime-$VERSION. The resulting LinuxCNC executables will only run on the specified RTAI kernel. As of LinuxCNC 2.7, this\n@@ -2696,15 +2696,15 @@\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 does not have the build environment installed, or that does\n not have internet access.\n To build packages is primarily useful when packaging the software for delivery to end users. Developers among themselves exchange only the source code, likely supported by the LinuxCNC GitHub\n repository referenced below. Also, when building the software for a machine that doesn\u2019t have the\n build environment installed, or that doesn\u2019t have internet access, one happily accepts a prebuilt package.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 50 / 69\n \n Building Debian packages requires the dpkg-buildpackage tool the is provided by the dpkg-dev\n package. But when building a Debian package, is generally expected to have all scripts in place\n that would commonly be expected. This has been formally manifested as a virtual package named\n build-essential:\n@@ -2746,15 +2746,15 @@\n Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).\n noauto , rtai , xenomai\n Normally, the lists of RTOSes for uspace realtime to support is detected automatically. However, if\n you wish, you may specify one or more of these after uspace to enable support for these RTOSes.\n Or, to disable autodetection, specify noauto.\n If you want just the traditional RTAI \u201dkernel module\u201d realtime, use -r or $KERNEL_VERSION instead.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 51 / 69\n \n rtai=<package name>\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@@ -2794,15 +2794,15 @@\n This generates the file debian/control in a user-readable yaml-format which lists the build-dependencies\n close to the top. You can use this meta-data to easily list the required packages missing from your build\n system. You may decide to manually inspecting those files if you have a good understanding what is\n already installed.\n Alternatively, Debian systems provide a program called dpkg-checkbuilddeps that parses the package meta-data and compares the packages listed as build dependencies against the list of installed\n packages, and tells you what\u2019s missing. Also, dpkg-buildpackage would inform you about what is\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 52 / 69\n \n missing, and it should be fine. However, it reports missing build-deps only after patches in debian/patches are applied (if any). If you are new to Linux and git version management, a clean start may\n be preferable to avoid complications.\n The dpkg-checkbuilddeps (also from the dpkg-dev package that is installed as part of the buildessential dependencies) program can be asked to do its job (note that it needs to run from the\n linuxcnc-source-dir directory, not from linuxcnc-source-dir/debian):\n@@ -2840,15 +2840,15 @@\n You should not set this option for some extra confidence in your build to perform as expected\n unless running into difficulties with the dependencies.\n An environment variable can be set together with the execution of the command, e.g.\n DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -uc -B\n \n would combine all the options introduced in this section.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 53 / 69\n \n 6.4.2.4 Installing self-built Debian packages\n A Debian package can be recognised by its .deb extension. The tool installing it, dpkg is part of every\n Debian installation. The .deb files created by dpkg-buildpackage are found in the directoy above the\n linuxcnc-source-dir, i.e. in ... To see what files are provided in a package, run\n@@ -2880,15 +2880,15 @@\n the following line:\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 $ ulimit -l\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 54 / 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@@ -2899,15 +2899,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 55 / 69\n \n Chapitre 8\n \n Contribuer \u00e0 LinuxCNC\n 8.1 Introduction\n@@ -2928,15 +2928,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 56 / 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@@ -2975,15 +2975,15 @@\n \u2014 Clone the git repo.\n \u2014 Make your changes in a local branch.\n \u2014 Adding documentation and writing tests is an important part of adding a new feature. Otherwise,\n others won\u2019t know how to use your feature, and if other changes break your feature it can go\n unnoticed without a test.\n \u2014 Share your changes with the other project developers in one of these ways:\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 57 / 69\n \n \u2014 Push your branch to github and create a github pull request to https://github.com/linuxcnc/linuxcnc (this requires a github account), or\n \u2014 Push your branch to a publicly visible git repo (such as github, or your own publicly-accessible\n 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@@ -3019,15 +3019,15 @@\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 feature which is made easier by the refactoring and which would not have worked without fixing that\n bug.\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 58 / 69\n \n This is helpful to reviewers, because it is easier to see that the \u201dfactor out code into new function\u201d\n step was right when there aren\u2019t other edits mixed in; it\u2019s easier to see that the bug is fixed when the\n change that fixes it is separate from the new feature; and so on.\n \n@@ -3068,15 +3068,15 @@\n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n \n This will either report All is well or Broke on <commit>\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 59 / 69\n \n 8.7.9 Renommer des fichiers\n Please use the ability to rename files very cautiously. Like running indent on single files, renames still\n make it more difficult to follow changes over time. At a minimum, you should seek consensus on irc\n or the mailing list that the rename is an improvement.\n@@ -3100,15 +3100,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 60 / 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@@ -3145,15 +3145,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 61 / 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@@ -3202,15 +3202,15 @@\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 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 \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 62 / 69\n \n Feedback\n A method (e.g., quadrature encoder signals) by which LinuxCNC receives information about the\n position of motors.\n Feedrate Override\n@@ -3257,15 +3257,15 @@\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 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 \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 63 / 69\n \n Machine units\n The linear and angular units used for machine configuration. These units are specified and used\n in the INI file. HAL pins and parameters are also generally in machine units.\n MDI\n@@ -3316,15 +3316,15 @@\n A portable interface to real-time operating systems including RTAI and POSIX pthreads with\n realtime extensions.\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 ac-\n \n-\fManuel du d\u00e9veloppeur V2.9.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 64 / 69\n \n tuator. Also, a motor which is specially-designed to provide improved performance in such applications.\n Servo Loop\n A control loop used to control position or velocity of an motor equipped with a feedback device.\n Signed Integer\n@@ -3357,15 +3357,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 65 / 69\n \n Chapitre 10\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -3391,15 +3391,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 66 / 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@@ -3448,15 +3448,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 67 / 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@@ -3502,15 +3502,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 68 / 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@@ -3551,15 +3551,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.3, 25 Jan 2025\n+\fManuel du d\u00e9veloppeur V2.9.3, 26 Jan 2025\n \n 69 / 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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'LinuxCNC V2.9.3, 25 Jan 2025'\n+Title: 'LinuxCNC V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-LinuxCNC V2.9.3, 25 Jan 2025\n+LinuxCNC V2.9.3, 26 Jan 2025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ii\n \n Table des mati\u00e8res\n \n I Getting Started & Configuration\n \n@@ -116,15 +116,15 @@\n \n 7\n \n 1.3.2.1 Raspberry Pi Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iii\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n \n . . . . . . . . . . . . . . . . . .\n \n@@ -284,15 +284,15 @@\n \n 1.6.4 Man Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n 1.6.3 Terminal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iv\n \n 1.6.5 List Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 21\n \n@@ -452,15 +452,15 @@\n \n 42\n \n 2.3.2.2 Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 43\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n v\n \n 2.3.2.3 Tool Radius Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 43\n \n@@ -620,15 +620,15 @@\n \n 52\n \n 2.5.3.3 Optional Program Stop Switch . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 52\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vi\n \n 2.5.4 Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 53\n \n@@ -782,15 +782,15 @@\n \n 71\n \n 2.7.13Hole And Small Shape Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 71\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vii\n \n 2.7.14I/O Pins For Plasma Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 72\n \n@@ -944,15 +944,15 @@\n \n 91\n \n 3.1.8.3 Determining Spindle Calibration . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 91\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n viii\n \n 3.1.9 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 92\n \n@@ -1034,15 +1034,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127\n \n 4.1.4.6 Manual tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127\n 4.1.5 RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127\n 4.1.5.1 ACPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ix\n \n 4.2 Latency Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128\n 4.2.1 What is latency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128\n 4.2.2 Latency Tests\n \n@@ -1090,15 +1090,15 @@\n \n 4.4.2.11 [KINS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151\n 4.4.2.12 [AXIS_<letter>] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151\n 4.4.2.13 [JOINT_<num>] Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152\n 4.4.2.14 [SPINDLE_<num>] Section(s)) . . . . . . . . . . . . . . . . . . . . . . . . . . 158\n 4.4.2.15 [EMCIO] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n x\n \n 4.5 Homing Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159\n 4.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159\n 4.5.2 Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159\n 4.5.3 Separate Home Switch Example Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 160\n@@ -1142,15 +1142,15 @@\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172\n 4.8.4 Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172\n 4.8.5 Pinout Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173\n 4.8.6 Mechanical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173\n 4.9 Stepper Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xi\n \n 4.9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174\n 4.9.2 Maximum step rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174\n 4.9.3 Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175\n 4.9.3.1 Standard Pinout HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175\n@@ -1197,15 +1197,15 @@\n 5.1.3.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189\n 5.1.3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189\n 5.1.4 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190\n 5.1.5 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192\n 5.1.6 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192\n 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xii\n \n 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194\n 5.2.1.3 loadusr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195\n@@ -1253,15 +1253,15 @@\n 5.4.2.2 Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.4.2.3 The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.4.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.4.3.1 Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206\n 5.4.3.2 Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207\n 5.4.3.3 Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiii\n \n 5.4.3.4 Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209\n \n@@ -1311,15 +1311,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240\n \n 5.6.5 INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240\n 5.6.5.1 Pins )\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiv\n \n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241\n 5.7.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241\n 5.7.1.1 User Interfaces (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . 242\n 5.7.1.2 Motion (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242\n@@ -1360,15 +1360,15 @@\n 5.8.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265\n 5.8.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265\n 5.8.5.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265\n 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266\n 5.8.6.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xv\n \n 5.8.6.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266\n 5.8.7 SigGen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267\n@@ -1416,15 +1416,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280\n \n 5.9.16Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281\n 5.10HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281\n 5.10.1Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281\n 5.10.2Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvi\n \n 5.10.3Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282\n 5.10.4Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n 5.10.5Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283\n 5.10.6Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284\n@@ -1491,15 +1491,15 @@\n \n 5.13Creating Non-realtime Python Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.13.1Basic usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.13.2Non-realtime components and delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.13.3Create pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.13.3.1Changing the prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvii\n \n 5.13.4Reading and writing pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.13.4.1Driving output (HAL_OUT) pins . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n 5.13.4.2Driving bidirectional (HAL_IO) pins . . . . . . . . . . . . . . . . . . . . . . . . 295\n 5.13.5Exiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n@@ -1536,15 +1536,15 @@\n 5.15.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301\n 5.15.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302\n 5.15.5Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302\n 5.15.6Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303\n 5.15.7HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304\n 5.15.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xviii\n \n 6 Hardware Drivers\n \n 308\n \n@@ -1586,15 +1586,15 @@\n 6.3.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 6.3.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 6.3.6 Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328\n 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xix\n \n 6.3.6.4 Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329\n 6.3.6.5 Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329\n 6.3.7 RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329\n 6.3.7.1 Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330\n@@ -1639,15 +1639,15 @@\n 6.7.2 Firmware Binaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340\n 6.7.3 Installing Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.7.4 Loading HostMot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.7.5 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341\n 6.7.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.7.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xx\n \n 6.7.6 HostMot2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.7.7 Pinouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342\n 6.7.8 PIN Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n 6.7.9 Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343\n@@ -1689,15 +1689,15 @@\n 6.8.5.2 fnct_02_read_discrete_inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.8.5.3 fnct_03_read_holding_registers\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n \n 6.8.5.4 fnct_04_read_input_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxi\n \n 6.8.5.5 fnct_05_write_single_coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.8.5.6 fnct_06_write_single_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360\n 6.8.5.7 fnct_15_write_multiple_coils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n 6.8.5.8 fnct_16_write_multiple_registers . . . . . . . . . . . . . . . . . . . . . . . . . . 361\n@@ -1736,15 +1736,15 @@\n 6.13.1.4LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371\n 6.13.1.5Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371\n 6.13.1.6PC interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371\n 6.13.1.7Rebuilding the FPGA firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 372\n 6.13.1.8For more information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372\n 6.13.2Pluto Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxii\n \n 6.13.2.1Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372\n 6.13.2.2Input latching and output updating . . . . . . . . . . . . . . . . . . . . . . . . 374\n 6.13.2.3HAL Functions, Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . 374\n 6.13.2.4Compatible driver hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374\n@@ -1778,15 +1778,15 @@\n 6.17.6Panel operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384\n 6.17.7Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384\n 6.17.8Configuring the VFS11 VFD for Modbus usage . . . . . . . . . . . . . . . . . . . . . . 384\n 6.17.8.1Connecting the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384\n 6.17.8.2Modbus setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385\n 6.17.9Programming Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiii\n \n 7 Hardware Examples\n \n 386\n \n@@ -1829,15 +1829,15 @@\n 8.2.5.4 Symbol Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n 8.2.5.5 The Editor window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404\n 8.2.5.6 Config Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405\n 8.2.6 Ladder objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.2.6.1 CONTACTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.2.6.2 IEC TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiv\n \n 8.2.6.3 TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407\n 8.2.6.4 MONOSTABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408\n 8.2.6.5 COUNTERS\n \n@@ -1887,15 +1887,15 @@\n 9.1.3.2 Inverse transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441\n 9.1.4 Implementation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441\n 9.1.4.1 Kinematics module using the userkins.comp template . . . . . . . . . . . . . 442\n 9.2 Setting up \u201dmodified\u201d Denavit-Hartenberg (DH) parameters for genserkins . . . . . . . . 442\n 9.2.1 Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442\n 9.2.2 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxv\n \n 9.2.3 Modified DH-Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443\n \n@@ -1943,15 +1943,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486\n \n 9.4.6 User kinematics provisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486\n 9.4.7 Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486\n 9.4.8 Code Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487\n 9.5 PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvi\n \n 9.5.1 PID Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487\n 9.5.1.1 Control loop basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487\n 9.5.1.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488\n 9.5.1.3 Loop Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488\n@@ -2004,15 +2004,15 @@\n 9.6.7 Creating new G-code cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.6.8 Configuring Embedded Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.6.8.1 Python plugin : INI file configuration . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.6.8.2 Executing Python statements from the interpreter . . . . . . . . . . . . . . . 507\n 9.6.9 Programming Embedded Python in the RS274NGC Interpreter . . . . . . . . . . . . 508\n 9.6.9.1 The Python plugin namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvii\n \n 9.6.9.2 The Interpreter as seen from Python . . . . . . . . . . . . . . . . . . . . . . . 508\n 9.6.9.3 The Interpreter __init__ and __delete__ functions . . . . . . . . . . . . . 508\n 9.6.9.4 Calling conventions: NGC to Python . . . . . . . . . . . . . . . . . . . . . . . . 509\n 9.6.9.5 Calling conventions: Python to NGC . . . . . . . . . . . . . . . . . . . . . . . . 511\n@@ -2057,15 +2057,15 @@\n . . . . . . . . . . . . . . . . . . . . . 523\n \n 9.6.17.1Interpreter state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.6.17.2Task and Interpreter interaction, Queuing and Read-Ahead . . . . . . . . . 524\n 9.6.17.3Predicting the machine position . . . . . . . . . . . . . . . . . . . . . . . . . . 524\n 9.6.17.4Queue-busters break position prediction . . . . . . . . . . . . . . . . . . . . . 524\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxviii\n \n 9.6.17.5How queue-busters are dealt with . . . . . . . . . . . . . . . . . . . . . . . . . 525\n 9.6.17.6Word order and execution order . . . . . . . . . . . . . . . . . . . . . . . . . . 525\n 9.6.17.7Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525\n 9.6.17.8Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526\n@@ -2111,15 +2111,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538\n \n 9.10Tool Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539\n 9.10.1Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539\n 9.10.1.1INI file Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxix\n \n 9.10.1.2db_program operation (v2.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 539\n 9.10.1.3Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540\n 9.10.1.4Example program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541\n 9.10.1.5Python tooldb module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541\n@@ -2176,15 +2176,15 @@\n 10.1.12.1\n Program Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 10.1.12.2\n The X Resource Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n 10.1.12.3\n Jogwheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxx\n \n 10.1.12.4\n ~/.axisrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n 10.1.12.5\n USER_COMMAND_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566\n@@ -2251,15 +2251,15 @@\n 10.2.4.1The DISPLAY Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577\n 10.2.4.2The TRAJ Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n 10.2.4.3Macro Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578\n 10.2.4.4Embedded Tabs and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581\n 10.2.4.5User Created Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583\n 10.2.4.6Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxi\n \n 10.2.4.7User Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584\n 10.2.4.8User CSS File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585\n 10.2.4.9Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585\n 10.2.5HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586\n@@ -2314,15 +2314,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612\n \n 10.2.12.1\n Strange numbers in the info area . . . . . . . . . . . . . . . . . . . . . . . . . 612\n 10.2.12.2\n Not ending macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxii\n \n 10.3The Touchy Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613\n 10.3.1Panel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614\n 10.3.1.1HAL connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614\n 10.3.1.2Recommended for any setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615\n@@ -2365,15 +2365,15 @@\n 10.5.2.6Jogging increments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635\n 10.5.2.7Jog speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635\n 10.5.2.8User message dialog system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635\n 10.5.2.9Embed Custom VCP Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635\n 10.5.2.10\n Subroutine Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiii\n \n 10.5.2.11\n Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637\n 10.5.2.12\n Program Extensions/Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637\n@@ -2444,15 +2444,15 @@\n 10.5.17.6\n Probe Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657\n 10.5.17.7\n Camview Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657\n 10.5.17.8\n G-codes Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiv\n \n 10.5.17.9\n Setup Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657\n 10.5.17.10\n Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658\n@@ -2499,15 +2499,15 @@\n 10.7.3.2Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680\n 10.7.3.3Coordinate Display Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681\n 10.7.3.4TkLinuxCNC Interpreter / Automatic Program Control . . . . . . . . . . . . 681\n 10.7.3.5Manual Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681\n 10.7.3.6Code Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682\n 10.7.3.7Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxv\n \n 10.7.3.8Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n 10.7.3.9Spindle speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n 10.7.4Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n 10.8QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683\n@@ -2544,15 +2544,15 @@\n 10.8.8.2MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708\n 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.8.8.5PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.8.8.6SETTINGS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720\n 10.8.8.7STATISTICS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvi\n \n 10.8.9Using QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724\n 10.8.9.1Units Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725\n 10.8.9.2Preamble and Postamble Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 725\n 10.8.9.3Mandatory Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725\n@@ -2620,15 +2620,15 @@\n 10.8.9.36\n Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752\n 10.8.9.37\n MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754\n 10.8.10\n Conversational Shape Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvii\n \n 10.8.10.1\n Conversational Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n 10.8.10.2\n Conversational Lines And Arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n@@ -2706,15 +2706,15 @@\n 10.8.15.15\n Hypertherm PowerMax Communications . . . . . . . . . . . . . . . . . . . . . 779\n 10.8.16\n Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780\n 10.8.17\n Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxviii\n \n 10.8.17.1\n Example Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782\n 10.8.17.2\n NGC Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782\n@@ -2775,15 +2775,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805\n \n 11.2.2.3Tool Changers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806\n 11.2.3Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807\n 11.2.4Cutter Radius Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808\n 11.2.4.1Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxix\n \n 11.2.4.2Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811\n 11.3Tool Edit GUI\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812\n@@ -2843,15 +2843,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832\n \n 11.4.22\n File Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xl\n \n 11.4.23\n G-code Order of Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833\n 11.4.24\n G-code Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833\n@@ -2921,15 +2921,15 @@\n 11.5.28\n G43 Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855\n 11.5.29\n G43.1 Dynamic Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856\n 11.5.30\n G43.2 Apply additional Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . 856\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xli\n \n 11.5.31\n G49 Cancel Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . 857\n 11.5.32\n G52 Local Coordinate System Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857\n@@ -3003,15 +3003,15 @@\n 11.5.58\n G92.3 Restore G92 Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876\n 11.5.59G93, G94, G95 Feed Rate Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877\n 11.5.60G96, G97 Spindle Control Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877\n 11.5.61G98, G99 Canned Cycle Return Level . . . . . . . . . . . . . . . . . . . . . . . . . . . 878\n 11.6M-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlii\n \n 11.6.1M-Code Quick Reference Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878\n 11.6.2 M0, M1 Program Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879\n 11.6.3M2, M30 Program End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879\n 11.6.4M60 Pallet Change Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879\n@@ -3072,15 +3072,15 @@\n 11.7.6 Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893\n 11.7.7 Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894\n 11.7.8Indirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894\n 11.7.9Calling Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n 11.7.10\n Subroutine return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliii\n \n 11.7.11\n Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n 11.8Other Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n 11.8.1F: Set Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n@@ -3160,15 +3160,15 @@\n 11.11\n RS274/NGC Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905\n 11.11.1\n Changes from RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905\n 11.11.2\n Additions to RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliv\n \n 12 Virtual Control Panels\n \n 907\n \n@@ -3219,15 +3219,15 @@\n 12.3.2A Quick Tour with the Example Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942\n 12.3.2.1Exploring the example panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944\n 12.3.2.2Exploring the User Interface description . . . . . . . . . . . . . . . . . . . . . 945\n 12.3.2.3Exploring the Python callback . . . . . . . . . . . . . . . . . . . . . . . . . . . 945\n 12.3.3Creating and Integrating a Glade user interface . . . . . . . . . . . . . . . . . . . . . 945\n 12.3.3.1Prerequisite: Glade installation . . . . . . . . . . . . . . . . . . . . . . . . . . . 945\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlv\n \n 12.3.3.2Running Glade to create a new user interface . . . . . . . . . . . . . . . . . . 945\n 12.3.3.3Testing a panel\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946\n@@ -3298,15 +3298,15 @@\n HAL_sourceview widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980\n 12.3.6.28\n MDI history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981\n 12.3.6.29\n Animated function diagrams: HAL widgets in a bitmap . . . . . . . . . . . . 981\n 12.3.7Action Widgets Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvi\n \n 12.3.7.1VCP Action Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n 12.3.7.2VCP Action Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983\n 12.3.7.3VCP ToggleAction widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984\n 12.3.7.4The Action_MDI Toggle and Action_MDI widgets . . . . . . . . . . . . . . . . 984\n@@ -3367,15 +3367,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998\n \n 12.4.2Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000\n 12.5QtVCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002\n 12.5.1Showcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002\n 12.5.2Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvii\n \n 12.5.2.1QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009\n 12.5.2.2INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009\n 12.5.2.3Qt Designer UI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010\n 12.5.2.4Handler Files\n@@ -3425,15 +3425,15 @@\n 12.5.6.3Python Handler Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.5.7More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.6QtVCP Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.6.1Builtin Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.6.1.1copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033\n 12.6.1.2spindle_belts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlviii\n \n 12.6.1.3test_dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035\n 12.6.1.4test_button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035\n 12.6.1.5test_led . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036\n 12.6.1.6test_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037\n@@ -3484,15 +3484,15 @@\n 12.7.1.13\n LCDNumber - LCD Style Number Readout Widget . . . . . . . . . . . . . . . . 1059\n 12.7.1.14\n DoubleScale - Spin Button Entry Widget . . . . . . . . . . . . . . . . . . . . . 1060\n 12.7.1.15\n GeneralHALInput - General Signals/Slots Input Connection Widget . . . . 1060\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlix\n \n 12.7.1.16\n GeneralHALOutput - General Signals/Slots Output Connection Widget . . . 1060\n 12.7.1.17\n WidgetSwitcher - Multi-widget Layout View Switcher Widget . . . . . . . . 1060\n@@ -3563,15 +3563,15 @@\n BasicProbe - Simple Mill Probing Widget . . . . . . . . . . . . . . . . . . . . 1092\n 12.7.2.33\n VersaProbe - Mill Probing Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1093\n 12.7.3Dialog Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093\n 12.7.3.1LcncDialog - General Message Dialog Widget . . . . . . . . . . . . . . . . . 1094\n 12.7.3.2ToolDialog - Manual Tool Change Dialog Widget . . . . . . . . . . . . . . . 1095\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n l\n \n 12.7.3.3FileDialog - Load and Save File Chooser Dialog Widget . . . . . . . . . . . 1096\n 12.7.3.4OriginOffsetDialog - Origin Offset Setting Dialog Widget . . . . . . . . . 1097\n 12.7.3.5ToolOffsetDialog - Tool Offset Setting Dialog Widget . . . . . . . . . . . . 1098\n 12.7.3.6MacroTabDialog - Macro Launch Dialog Widget . . . . . . . . . . . . . . . . 1098\n@@ -3610,15 +3610,15 @@\n 12.8.2.5Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113\n 12.8.3Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114\n 12.8.3.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114\n 12.8.3.2Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114\n 12.8.4Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116\n 12.8.4.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n li\n \n 12.8.5Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.8.5.1Referenced Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117\n 12.8.5.2Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118\n 12.8.5.3Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118\n@@ -3684,15 +3684,15 @@\n 12.9.3Start the script\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133\n \n 12.9.4HAL pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133\n 12.9.5Creating Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lii\n \n 12.9.5.1Import STL or OBJ Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133\n 12.9.5.2Build from Geometric Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . 1134\n 12.9.6Moving Model Parts\n \n@@ -3761,15 +3761,15 @@\n 12.11.3\n Add A Basic Style Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154\n 12.11.4\n Request Dialog Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155\n 12.11.5\n Speak a Startup Greeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liii\n \n 12.11.6\n ToolBar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156\n 12.11.7\n Add HAL Pins That Call Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157\n@@ -3841,15 +3841,15 @@\n 13.1.3panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174\n 13.1.4Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176\n 13.1.5ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178\n 13.1.6Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178\n 13.2The LinuxCNC Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179\n 13.2.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liv\n \n 13.2.2Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1180\n 13.2.3Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180\n 13.2.3.1linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180\n 13.2.3.2The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184\n@@ -3896,15 +3896,15 @@\n \n 1211\n \n 14 Overleaf\n \n 1212\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lv\n \n 15 Glossary\n \n 1213\n \n@@ -3919,23 +3919,23 @@\n \n 1223\n \n 17.1Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223\n 17.1.1Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224\n 17.1.2Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1 / 1224\n \n Premi\u00e8re partie\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 2 / 1224\n \n Chapitre 1\n \n Getting Started with LinuxCNC\n 1.1 About LinuxCNC\n@@ -3967,15 +3967,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -4011,15 +4011,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -4058,15 +4058,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -4096,15 +4096,15 @@\n editing Xorg.conf files.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6 / 1224\n \n Note\n To operate machinery LinuxCNC requires a special kernel with real-time extensions. There are three\n possibilities here: preempt-rt, RTAI or Xenomai. In addition there are two versions of LinuxCNC which\n work with these kernels. See the table below for details. However for code testing and simulation it\n@@ -4141,15 +4141,15 @@\n \n 2. Then run this command to download the iso to your computer\n zsync https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso\n \n zsync in Windows There is a Windows port of zsync. It works as a console application and can be\n downloaded from https://www.assembla.com/spaces/zsync-windows/documents .\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.9.2-amd64.iso\n@@ -4184,15 +4184,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.9.2-amd64.hybrid.iso of=/dev/sde\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8 / 1224\n \n 1.3.2.4 Command line - MacOS\n 1. Open a terminal and type\n diskutil list\n \n@@ -4234,15 +4234,15 @@\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 which you can choose one of many sample configurations. At this point it only really makes sense\n to pick a \u201dsim\u201d configuration. Some of the sample configurations include onscreen 3D simulated machines, look for \u201dVismach\u201d to see these.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9 / 1224\n \n To see if your computer is suitable for software step pulse generation run the Latency Test as shown\n here.\n At the time of writing the Live Image is only available with the preempt-rt kernel and a matching\n LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental\n@@ -4327,15 +4327,15 @@\n machine control\n & simulation\n machine control\n & simulation\n machine control\n simulation ONLY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 10 / 1224\n \n Note\n LinuxCNC v2.9 is not supported on Debian 9 or older.\n \n Preempt-RT kernels The Preempt-rt kernels are available for Debian from the regular debian.org\n@@ -4369,15 +4369,15 @@\n 1. Install the Preempt-RT kernel and modules\n sudo apt-get install linux-image-rt-amd64\n \n 2. Re-boot, and select the Linux 6.1.0-10-rt-amd64 kernel. The exact kernel version might be different, look for the \u201d-rt\u201d suffix. This might be hidden in the \u201dAdvanced options for Debian Bookworm\u201d sub-menu in Grub. When you log in, verify that \u0300PREEMPT RT \u0300is reported by the following\n command.\n uname -v\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11 / 1224\n \n 3. Open Applications Menu > System > Synaptic Package Manager search for linux-image and 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@@ -4407,15 +4407,15 @@\n online. You can create them yourself following the scripts provided online.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12 / 1224\n \n 1.4.2 Configuration Launcher\n When starting LinuxCNC (from the CNC menu or from the command line without specifying an INI\n file) the Configuration Selector dialog starts.\n The Configuration Selector dialog allows the user to pick one of their existing configurations (My\n@@ -4459,15 +4459,15 @@\n \u2014 pluto\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 The by_machine configurations are organized around complete, known systems like:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13 / 1224\n \n \u2014 boss\n \u2014 cooltool\n \u2014 scortbot erIII\n \u2014 sherline\n@@ -4488,15 +4488,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 14 / 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@@ -4512,15 +4512,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 15 / 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@@ -4562,15 +4562,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 Buster\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 16 / 1224\n \n You should be running on Debian Buster, Bullseye or Bookworm or Ubuntu 20.04 \u201dFocal Fossa\u201d or\n newer. LinuxCNC 2.9.y will not run on older distributions than these.\n You will also need to check which realtime kernel is being used:\n uname -r\n@@ -4612,27 +4612,27 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 17 / 1224\n \n Figure 1.2 \u2013 Figure with a screenshot of the repository configuration of the synaptic package manager.\n \u2014 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 1.5.1.2 Upgrading to the new version\n Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n Debian uses the Synaptic Package Manager.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 18 / 1224\n \n \u2014 Open Synaptic using the instructions in Setting apt sources above.\n \u2014 Click the Reload button.\n \u2014 Use the Search function to search for linuxcnc.\n \u2014 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n@@ -4672,15 +4672,15 @@\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 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 Since 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 19 / 1224\n \n 1.5.3.2 Canterp\n If you just run regular G-code and you don\u2019t use the canterp pluggable interpreter, then this section\n does not affect you.\n In the extremely unlikely event that you are using canterp, know that the module has moved from\n@@ -4711,15 +4711,15 @@\n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_sums tof ton\n \n 1.5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 20 / 1224\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 1.6.1 Automatic Login\n@@ -4756,15 +4756,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 21 / 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@@ -4799,15 +4799,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 22 / 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@@ -4840,15 +4840,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 23 / 1224\n \n pwd\n \n And pwd might return the following result:\n /home/joe\n@@ -4883,15 +4883,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 24 / 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@@ -4909,15 +4909,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 25 / 1224\n \n Chapitre 2\n \n General User Information\n 2.1 User Foreword\n@@ -4948,15 +4948,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26 / 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@@ -4991,15 +4991,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 27 / 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@@ -5022,15 +5022,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 28 / 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@@ -5056,85 +5056,85 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.2 \u2013 AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 29 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.3 \u2013 Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n 30 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 31 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 32 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 33 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 34 / 1224\n \n Figure 2.7 \u2013 TkLinuxCNC graphical interface\n \n QtDragon\n QtDragon, a touch screen GUI based on QtVCP using the PyQt5 library. It comes in two versions\n QtDragon and QtDragon_hd. They are very similar in features but QtDragon_hd is made for larger\n monitors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 35 / 1224\n \n Figure 2.8 \u2013 QtDragon, a touch screen GUI based on QtVCP\n \n QtPlasmaC\n QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP using the PyQt5 library. It comes\n in three aspect ratios, 16:9, 4:3, and 9:16.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 36 / 1224\n \n Figure 2.9 \u2013 QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP\n \n 2.2.4 Interfaces utilisateur\n These User interfaces are a way to interact with LinuxCNC outside of the graphical user interfaces.\n@@ -5148,41 +5148,41 @@\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 PyVCP\n PyVCP, a Python-based virtual control panel that can be added to the AXIS GUI. PyVCP only\n utilises virtual signals contained within the Hardware Abstraction Layer, such as the spindle-atspeed indicator or the Emergency Stop output signal, and has a simple no-frills appearance. This\n makes it an excellent choice if the user wants to add a Virtual Control Panel with minimal fuss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 37 / 1224\n \n Figure 2.10 \u2013 PyVCP Example Embedded Into AXIS GUI\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 38 / 1224\n \n Figure 2.11 \u2013 GladeVCP Example Embedded Into AXIS GUI\n \n QtVCP\n QtVCP, a PyQt5-based virtual control panel that can be added to most GUIs or run as a standalone\n panel. QtVCP has the advantage over PyVCP in that it is not limited to the display or control of\n HAL virtual signals, but can include other external interfaces outside LinuxCNC such as window\n or network events by extending with python code. QtVCP is also more flexible in how it may be\n configured to appear on the GUI with many special widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 39 / 1224\n \n Figure 2.12 \u2013 QtVCP Example Embedded Into QtDragon GUI\n \n 2.2.6 Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -5198,15 +5198,15 @@\n lessons learned. A beautiful finish, tight tolerances and caution during the work are evidence of lessons\n learned. No machine nor program can replace human experience.\n Now that you start working with the LinuxCNC software, you have to put yourself in the shoes of an\n operator. You must be in the role of someone in charge of a machine. It\u2019s a machine that will wait\n for your commands and then execute the orders that you will give it. In these pages, we will give the\n explanations which will help you to become a good CNC operator with LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 40 / 1224\n \n 2.2.8 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@@ -5249,15 +5249,15 @@\n cam detector is not employed with G64 Pn.\n The basic acceleration and deceleration described above is not complex and there is no compromise\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 For more information on the Trajectory Planner INI options see the Trajectory Section in the INI\n chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 41 / 1224\n \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@@ -5302,15 +5302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 42 / 1224\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@@ -5347,15 +5347,15 @@\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 one does before running LinuxCNC. The defaults can be changed when running a G-code file and\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 43 / 1224\n \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 is.\n 2.3.2.2 Feed Rate\n@@ -5386,15 +5386,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 44 / 1224\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@@ -5421,22 +5421,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 45 / 1224\n \n Figure 2.14 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.15 \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] [<INI-file>]\n@@ -5451,15 +5451,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 INI file\n \n 46 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 47 / 1224\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -r: Disable redirection of stdout and stderr to ~/linuxcnc_print.txt and\n@@ -5485,15 +5485,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 48 / 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@@ -5509,15 +5509,15 @@\n two motors for one axis is better handled by kinematics rather than by a second linear axis.\n Note\n If the motion of mechanical components is not independent, as with hexapod machines, the\n RS274/NGC language and the canonical machining functions will still be usable, as long as the lower\n levels of control know how to control the actual mechanisms to produce the same relative motion of\n tool and workpiece as would be produced by independent axes. This is called kinematics.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 49 / 1224\n \n Note\n With LinuxCNC, the case of the XYYZ gantry machine with two motors for one axis is better handled\n by the kinematics than by an additional linear axis.\n \n@@ -5548,15 +5548,15 @@\n \n 2.5.2 Control and Data Components\n 2.5.2.1 Linear Axes\n The X, Y, and Z axes form a standard right-handed coordinate system of orthogonal linear axes. Positions of the three linear motion mechanisms are expressed using coordinates on these axes.\n The U, V and W axes also form a standard right-handed coordinate system. X and U are parallel, Y and\n V are parallel, and Z and W are parallel (when A, B, and C are rotated to zero).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 50 / 1224\n \n 2.5.2.2 Rotational Axes\n The rotational axes are measured in degrees as wrapped linear axes in which the direction of positive\n rotation is counterclockwise when viewed from the positive end of the corresponding X, Y, or Z-axis.\n By wrapped linear axis, we mean one on which the angular position increases without limit (goes\n@@ -5596,15 +5596,15 @@\n 1. If any of XYZ are moving, F is in units per minute in the XYZ cartesian system, and all other axes\n (ABCUVW) move so as to start and stop in coordinated fashion.\n 2. Otherwise, if any of UVW are moving, F is in units per minute in the UVW cartesian system, and\n all other axes (ABC) move so as to start and stop in coordinated fashion.\n 3. Otherwise, the move is pure rotary motion and the F word is in rotary units in the ABC pseudocartesian system.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 51 / 1224\n \n 2.5.2.6 Cooling\n Flood or droplets cooling can be enabled separately. RS274/NGC language stops them together. See\n section about cooling control.\n 2.5.2.7 Dwell\n@@ -5632,15 +5632,15 @@\n 2.5.2.11 Tool Carousel\n Zero or one tool is assigned to each slot in the tool carousel.\n 2.5.2.12 Tool Change\n A machining center may be commanded to change tools.\n 2.5.2.13 Pallet Shuttle\n The two pallets may be exchanged by command.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 52 / 1224\n \n 2.5.2.14 Speed Override\n The speed override buttons can be activated (they function normally) or rendered inoperative (they no\n longer have any effect). The RS274/NGC language has a command that activates all the buttons and\n another that disables them. See inhibition and activation speed correctors. See also here for further\n@@ -5669,15 +5669,15 @@\n 2.5.3.2 Block Delete Switch\n If the block delete switch is on, lines of G-code which start with a slash (the block delete character)\n are not interpreted. If the switch is off, such lines are interpreted. Normally the block delete switch\n should be set before starting the NGC program.\n 2.5.3.3 Optional Program Stop Switch\n If this switch is on and an M1 code is encountered, program execution is paused.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 53 / 1224\n \n 2.5.4 Tool Table\n A tool table is required to use the Interpreter. The file tells which tools are in which tool changer slots\n and what the size and type of each tool is. The name of the tool table is defined in the INI file:\n [EMCIO]\n@@ -5726,15 +5726,15 @@\n 0.0\n 0.0\n \n Comment\n G28 Home X\n G28 Home Y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 54 / 1224\n \n See the Parameters section for more information.\n \n 2.6 Lathe User Information\n This chapter will provide information specific to lathes.\n@@ -5765,30 +5765,30 @@\n There is also a built-in tool table editor in the AXIS display. The maximum number of entries in the\n tool table is 56. The maximum tool and pocket number is 99999.\n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines. Just ignore the parts of the tool table that\n don\u2019t pertain to your machine, or which you don\u2019t need to use. For more information on the specifics\n of the tool table format, see the Tool Table Section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 55 / 1224\n \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.16 \u2013 Lathe Tool Orientations\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 56 / 1224\n \n 2.6.4 Tool Touch Off\n When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off\n window. If you have a tool turret you normally have Touch off to fixture selected when setting up your\n turret. When setting the material Z zero you have Touch off to material selected. For more information\n@@ -5817,15 +5817,15 @@\n use the spindle nose or chuck face. This gives you the ability to change to a new tool and set its Z\n offset without having to reset all the tools.\n A typical session might be:\n 1. Home each axis if not homed.\n 2. Make sure no offsets are in effect for the current coordinate system.\n 3. Set the current tool with Tn M6 G43 where n is the tool number.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 57 / 1224\n \n 4. Select the Z axis in the Manual Control window.\n 5. Bring the tool close to the control surface.\n 6. Using a cylinder move the Z away from the control surface until the cylinder just passes between\n the tool and the control surface.\n@@ -5861,15 +5861,15 @@\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 in the user interface AXIS. Arcs in G18 XZ plane use I (X axis) and K (Z axis) offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 58 / 1224\n \n 2.6.6.1 Arcs and Lathe Design\n The typical lathe has the spindle on the left of the operator and the tools on the operator side of the\n spindle center line. This is typically set up with the imaginary Y axis (+) pointing at the floor.\n The following will be true on this type of setup:\n@@ -5894,15 +5894,15 @@\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 Figure 2.17 \u2013 Control point\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 59 / 1224\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 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@@ -5910,44 +5910,44 @@\n Figure 2.18 \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 Figure 2.19 \u2013 Ramp Path\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 60 / 1224\n \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.20 \u2013 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 61 / 1224\n \n Figure 2.21 \u2013 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 Figure 2.22 \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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 62 / 1224\n \n Figure 2.23 \u2013 Face Cut\n \n 2.6.7.4 Using Cutter Comp\n \u2014 When using cutter comp on a lathe think of the tool tip radius as the radius of a round cutter.\n@@ -5970,15 +5970,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 63 / 1224\n \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 2.7.2 Arc Initialisation\n@@ -5992,15 +5992,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 64 / 1224\n \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 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@@ -6024,15 +6024,15 @@\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 Note\n A slight variation in cut angles may be normal, as long as it is within tolerance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 65 / 1224\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@@ -6061,15 +6061,15 @@\n \u2014 Dry Contacts for ArcOK\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 \u2014 Higher duty cycles\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 66 / 1224\n \n In recent times, another class of machine which includes some of these features has become available\n at around USD $550. One example is the Herocut55i available on Amazon but there is yet no feedback\n from users. This Machine features a blowback torch, ArcOK output, torch start contacts and raw arc\n voltage.\n@@ -6116,15 +6116,15 @@\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 Mode 0 can\u2019t fully replace the ArcOK circuitry in a plasma inverter. Some build issues have been\n observed where misconfiguration or incompatibility with the plasma inverter has occurred from a\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 67 / 1224\n \n synthesised ArcOK signal. By and large however, a correctly configured synthesised ArcOK signal is\n fine.\n A simple and effective ArcOK signal can be achieved with a simple reed relay. Wrap 3 turns of one of\n the plasma cutter\u2019s thick cables, e.g. the material clamp cable, around it. Place the relay in an old pen\n@@ -6162,15 +6162,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 68 / 1224\n \n 2.7.7.3 Hypersensing with a MESA THCAD-5\n A more sophisticated method of material sensing that eliminates the relays and diodes is to use another\n THCAD-5 to monitor the material sensing circuit voltage from an isolated power supply. The advantage\n this has is the THCAD is designed for the hostile plasma electrical environment and totally and safely\n@@ -6184,15 +6184,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 69 / 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@@ -6209,15 +6209,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 70 / 1224\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -6250,15 +6250,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 71 / 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@@ -6290,15 +6290,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 72 / 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@@ -6339,15 +6339,15 @@\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 \u2014 Connect the other side of the coil to Field Power ground.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 73 / 1224\n \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 \u2014 In some circumstances, the onboard spindle relay on a Mesa card can be used instead of an external\n@@ -6383,15 +6383,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 74 / 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@@ -6434,15 +6434,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 75 / 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@@ -6484,15 +6484,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 Voltage = (frequency [Hz] - 3800 Hz) / (2520 Hz/V)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 76 / 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@@ -6529,15 +6529,15 @@\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 \u2014 If you have a voltage divider, install a THCAD-10 in a metal case outside the plasma cutter\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 77 / 1224\n \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 these resistors will distort the voltage reported by the THCAD-300.\n@@ -6582,15 +6582,15 @@\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 be extended through into the control box and earthed to the chassis right at the stepper/servo motor\n controller itself.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 78 / 1224\n \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 cable, adding a feed through power line filter is also recommended where the ohmic sensing signal\n enters the electronics enclosure.\n@@ -6631,15 +6631,15 @@\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 much testing and development work in getting QtPlasmaC to its current working state. Everything\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 79 / 1224\n \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 QtPlasmaC is designed to stand alone and includes the ability to include your cutting charts yet also\n@@ -6674,15 +6674,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 80 / 1224\n \n Chapitre 3\n \n Configuration Wizards\n 3.1 Stepper Configuration Wizard\n@@ -6693,15 +6693,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 81 / 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@@ -6715,15 +6715,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 82 / 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@@ -6737,15 +6737,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 83 / 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@@ -6769,15 +6769,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 84 / 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@@ -6792,15 +6792,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 85 / 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@@ -6814,15 +6814,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 86 / 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@@ -6830,15 +6830,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 87 / 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@@ -6851,15 +6851,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 88 / 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@@ -6888,15 +6888,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 89 / 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@@ -6929,15 +6929,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 90 / 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@@ -6947,15 +6947,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 91 / 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@@ -6996,15 +6996,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 92 / 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@@ -7012,15 +7012,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 93 / 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@@ -7047,15 +7047,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 94 / 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@@ -7073,15 +7073,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 95 / 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@@ -7103,15 +7103,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 96 / 1224\n \n 3.2.1 Step by Step Instructions\n \n Figure 3.13 \u2013 PnCconf Splash\n \n@@ -7123,15 +7123,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 97 / 1224\n \n 3.2.3 Basic Machine Information\n \n Figure 3.14 \u2013 PnCconf Basic\n Machine Basics\n@@ -7144,15 +7144,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 98 / 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@@ -7202,15 +7202,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 99 / 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@@ -7236,15 +7236,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 100 / 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@@ -7255,15 +7255,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 101 / 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@@ -7277,15 +7277,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 102 / 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@@ -7297,15 +7297,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 103 / 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@@ -7348,15 +7348,15 @@\n Defaults and Options\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 104 / 1224\n \n \u2014 Leave spindle on during tool change:\n \u2014 Used for lathes\n \u2014 Force individual manual homing\n \u2014 Move spindle up before tool change\n@@ -7369,15 +7369,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 105 / 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@@ -7413,49 +7413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 106 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 107 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 108 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 109 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 110 / 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@@ -7467,15 +7467,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 111 / 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@@ -7525,15 +7525,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 112 / 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@@ -7545,25 +7545,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 113 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 114 / 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@@ -7575,15 +7575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 115 / 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@@ -7634,15 +7634,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 116 / 1224\n \n NEGATIVE TRAVEL DISTANCE\n This is the distance the Axis travels from the Origin to the negative travel distance. or the total\n travel minus the positive travel distance. You would set this to zero if the origin is positioned\n at the negative limit. This will always be zero or a negative number. If you forget to make this\n@@ -7673,30 +7673,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 117 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 118 / 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@@ -7710,15 +7710,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 119 / 1224\n \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 \u2014 If you are using a single input for a spindle encoder you must add the line: setp hm2_7i43.0.encoder.00.cou\n mode 1 (changing the board name and encoder number to your requirements) into a custom HAL\n@@ -7732,15 +7732,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 120 / 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@@ -7751,15 +7751,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 121 / 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@@ -7802,26 +7802,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 122 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 123 / 1224\n \n Chapitre 4\n \n Configuration\n 4.1 Integrator Concepts\n@@ -7849,15 +7849,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 <<sub:ini:sec:display,[DISPLAY]>> section and the <<sub:ini:sec:rs274ngc,[RS274NGC]>>\n section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 124 / 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@@ -7898,15 +7898,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 125 / 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@@ -7925,15 +7925,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 126 / 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@@ -7963,15 +7963,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 127 / 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@@ -8008,15 +8008,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 128 / 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@@ -8053,15 +8053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 129 / 1224\n \n latency-test -h\n \n After starting a latency test you should see something like this:\n \n@@ -8083,15 +8083,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 130 / 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@@ -8115,15 +8115,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n --base\n --servo\n --bbinsize\n --sbinsize\n --bbins\n --sbins\n@@ -8167,15 +8167,15 @@\n Figure 4.5 \u2013 latency-histogram Window\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 a CPU for the exclusive use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not interfere\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 132 / 1224\n \n with LinuxCNC\u2019s access to that CPU.\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@@ -8211,15 +8211,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 133 / 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@@ -8261,15 +8261,15 @@\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 200 ns (0.2 \u00b5s) before step pulse rising edge\n 200 ns (0.2 \u00b5s) hold after step pulse rising edge\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 134 / 1224\n \n From the Xylotex datasheet:\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@@ -8314,15 +8314,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 135 / 1224\n \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 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@@ -8362,15 +8362,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 136 / 1224\n \n 4.4 INI Configuration\n 4.4.1\n \n The INI File Components\n@@ -8421,15 +8421,15 @@\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 \u2014 [APPLICATIONS] Other applications to be started by LinuxCNC\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 137 / 1224\n \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 \u2014 [KINS] kinematics variables\n@@ -8473,15 +8473,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 138 / 1224\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -8524,15 +8524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2\n \n INI File Sections\n \n 4.4.2.1\n \n@@ -8579,15 +8579,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 140 / 1224\n \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 number. Only used by the QtVCP based user interfaces.\n \u2014 DEFAULT_SPINDLE_SPEED = 100 - The default spindle RPM when the spindle is started in manual\n@@ -8626,15 +8626,15 @@\n \u2014 EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\\} -u ./glad\n ./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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 141 / 1224\n \n \u2014 DEFAULT_LINEAR_VELOCITY = .25 - The default velocity for linear jogs, in machine units per 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 \u2014 MIN_LINEAR_VELOCITY = .01 - The approximate lowest value the jog slider.\n@@ -8680,15 +8680,15 @@\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 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\n centered at the machine origin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 142 / 1224\n \n 9. UVW translation example: GEOMETRY=XYZUVW causes UVW to move in the coordinate system of\n 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 though\n this value is presently ignored in foam-cutter mode. A future version may define what \u201d;\u201d\n@@ -8729,15 +8729,15 @@\n 4.4.2.3\n \n [FILTER] Section\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 143 / 1224\n \n complicated as detecting whether the input is a depth image, and generating G-code to mill the shape it\n defines. The [FILTER] section of the INI file controls how filters work. First, for each type of file, write\n a PROGRAM_EXTENSION-line. Then, specify the program to execute for each type of file. This program\n is given the name of the input file as its first argument, and must write RS274NGC code to standard\n@@ -8781,15 +8781,15 @@\n file_out = []\n for line in file_in:\n # print(line)\n if line.find(\u2019Z\u2019) != -1:\n words = line.rstrip(\u2019\\n\u2019)\n words = words.split(\u2019 \u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 144 / 1224\n \n newword = \u2019\u2019\n for i in words:\n if i[0] == \u2019Z\u2019:\n newword = \u2019W\u2019+ i[1:]\n@@ -8834,15 +8834,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 145 / 1224\n \n \u2014 INI_VARS = 1 (Default: 1)\n Allows G-code programs to read values from the INI file using the format #<_ini[section]name>.\n See G-code Parameters.\n \u2014 HAL_PIN_VARS = 1 (Default: 1)\n@@ -8888,15 +8888,15 @@\n [EMCMOT] Section\n \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 \u2014 EMCMOT = motmod - the motion controller name is typically used here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 146 / 1224\n \n \u2014 BASE_PERIOD = 50000 - the Base task period in nanoseconds.\n \u2014 SERVO_PERIOD = 1000000 - This is the \u201dServo\u201d task period in nanoseconds.\n \u2014 TRAJ_PERIOD = 100000 - This is the Trajectory Planner task period in nanoseconds.\n \u2014 COMM_TIMEOUT = 1.0 - Number of seconds to wait for Motion (the realtime part of the motion\n@@ -8941,15 +8941,15 @@\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.\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 147 / 1224\n \n HALFILE items specify files that loadrt HAL components and make signal connections between component pins. Common mistakes are\n 1. omission of the addf statement needed to add a component\u2019s function(s) to a thread,\n 2. incomplete signal (net) specifiers.\n Omission of required addf statements is almost always an error. Signals usually include one or more\n@@ -8995,15 +8995,15 @@\n \n [APPLICATIONS] Section\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 148 / 1224\n \n \u2014 DELAY = value - seconds to wait before starting other applications. A delay may be needed if an\n application has dependencies on [HAL]POSTGUI_HALFILE actions or GUI-created HAL pins (default\n DELAY=0).\n \u2014 \u2018APP = \u0300 appname [arg1 [arg2 \u2026]]\u2019 - Application to be started. This specification can be included\n@@ -9049,15 +9049,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 149 / 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@@ -9102,15 +9102,15 @@\n # f = cutoff frequency from INI\n \n For the aforementioned machine, the ripple for a 20 Hz cutoff frequency is 100 / (4 * 20) = 1.25 IPS.\n This seems high, but keep in mind that it is only a worst-case estimate. In reality, the trapezoidal\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 150 / 1224\n \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@@ -9157,15 +9157,15 @@\n (mill, lathe, gantry types) this value is ignored. Note: The sim hexapod config requires a non-zero\n value for the Z coordinate.\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 default\n (tpmod). Module parameters (tp_parms) may be included if supported by the named module. The\n setting may be overridden from the command line using the -t option ($ linuxcnc -h).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 151 / 1224\n \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 4.4.2.11\n \n@@ -9213,15 +9213,15 @@\n offsets:\n axis.<letter>.eoffset-enable\n axis.<letter>.eoffset-count\n axis.<letter>.eoffset-scale\n \n See the chapter: External Axis Offsets for usage information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.13\n \n 152 / 1224\n \n [JOINT_<num>] Sections\n \n@@ -9269,15 +9269,15 @@\n (commanded) position for both types.\n A COMP_FILE_TYPE must be specified for each COMP_FILE.\n \u2014 Type 0: The second value specifies the actual position as the joint is moving in the positive\n direction (increasing value). The third value specifies the actual position as the joint is moving\n in the negative direction (decreasing value).\n Type 0 Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 153 / 1224\n \n -1.000 -1.005 -0.995\n 0.000 0.002 -0.003\n 1.000 1.003 0.998\n \n@@ -9318,15 +9318,15 @@\n INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY,\n and proportionally smaller following errors for slower speeds. The maximum allowable following\n error will always be greater than MIN_FERROR. This prevents small following errors for stationary\n axes from inadvertently aborting motion. Small following errors will always be present due to vibration, etc.\n \u2014 LOCKING_INDEXER = 1 - Indicates the joint is used as a locking indexer.\n These parameters are Homing related, for a better explanation read the Homing Configuration Chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 154 / 1224\n \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. 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@@ -9372,15 +9372,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 \u2014 DEADBAND = 0.000015 - How close is close enough to consider the motor in position, in machine\n units.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 155 / 1224\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@@ -9414,15 +9414,15 @@\n \n \u2014 OUTPUT_SCALE = 1.000\n \u2014 OUTPUT_OFFSET = 0.000\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 156 / 1224\n \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@@ -9466,15 +9466,15 @@\n \u2014 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 \u2014 INPUT_SCALE = 20000 - in Sample configs\n \u2014 ENCODER_SCALE = 20000 - in PnCconf built configs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 157 / 1224\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 angular\n joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is ignored. For\n example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we\n@@ -9512,15 +9512,15 @@\n loop\u201d. If you have added backlash compensation to an joint then this should be 1.5 to 2 times\n greater than MAX_ACCELERATION.\n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.14\n \n 158 / 1224\n \n [SPINDLE_<num>] Section(s))\n \n@@ -9568,15 +9568,15 @@\n the XYZABCUVW location when 9 digits are used. Tool Changes can be combined. For example if\n you combine the quill up with change position you can move the Z first then the X and Y.\n \u2014 TOOL_CHANGE_WITH_SPINDLE_ON = 1 - The spindle will be left on during the tool change when the\n value is 1. Useful for lathes or machines where the material is in the spindle, not the tool.\n \u2014 TOOL_CHANGE_QUILL_UP = 1 - The Z axis will be moved to machine zero prior to the tool change\n when the value is 1. This is the same as issuing a G0 G53 Z0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 159 / 1224\n \n \u2014 TOOL_CHANGE_AT_G30 = 1 - The machine is moved to reference point defined by parameters 51815186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30-G30.1.\n \u2014 RANDOM_TOOLCHANGER = 1 - This is for machines that cannot place the tool back into the pocket it\n came from. For example, machines that exchange the tool in the active pocket with the tool in the\n spindle.\n@@ -9616,15 +9616,15 @@\n \u2014 If using a separate homing switch, it is possible to start homing on the wrong side of the home\n switch, which combined with HOME_IGNORE_LIMITS option will lead to a hard crash. You can\n avoid this by making the home switch toggle its state when the trip dog is on a particular side until\n it returns passed the trip point again. Said another way, the home switch state must represent the\n position of the dog relative to the switch (ie before or after the switch), and must stay that way\n even if the dog coasts past the switch in the same direction.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 160 / 1224\n \n Note\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@@ -9648,15 +9648,15 @@\n \u2014 Note that there is distance between the limit switches and actual physical hard contact for coasting\n after the amplifier is disabled.\n Note\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 161 / 1224\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 Figure 4.7 \u2013 Demonstrative Shared Switch Layout\n@@ -9678,21 +9678,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 162 / 1224\n \n Figure 4.8 \u2013 Homing Sequences\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 163 / 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@@ -9746,15 +9746,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 164 / 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@@ -9788,15 +9788,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 165 / 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@@ -9832,15 +9832,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 166 / 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@@ -9883,15 +9883,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 167 / 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@@ -9936,15 +9936,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 168 / 1224\n \n Note\n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale,\n joint.N.counts).\n \n@@ -9980,15 +9980,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 169 / 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@@ -10032,15 +10032,15 @@\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 \u2014 toolchanger-faulted: (bit, out) signals toolchanger-notify line has toggled and toolchanger-reasoncode was in the fault range. Next M6 will abort.\n \u2014 toolchanger-clear-fault: (bit, in) resets TC fault condition. Deasserts toolchanger-faulted if toolchangernotify is line FALSE. Usage: UI - e.g., clear fault condition button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 170 / 1224\n \n 4.6.4 Parameters\n \u2014 iocontrol.0.tool-prep-index (s32, RO) IO\u2019s internal array index of the prepped tool requested by the\n most recent T-word. 0 if no tool is prepped. On random toolchanger machines this is tool\u2019s pocket\n number (i.e., the same as the tool-prep-pocket pin), on non-random toolchanger machines this is a\n@@ -10076,15 +10076,15 @@\n of the toolchanger-reason pin.\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 raised and the toolchanger-reason pin has been read by iov2.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 171 / 1224\n \n 4.7 Lathe Configuration\n 4.7.1 Default Plane\n When LinuxCNC\u2019s interpreter was first written, it was designed for mills. That is why the default\n plane is XY (G17). A normal lathe only uses the XZ plane (G18). To change the default plane place the\n@@ -10127,15 +10127,15 @@\n ...\n [KINS]\n KINEMATICS = trivkins coordinates=xz\n JOINTS = 2\n [TRAJ]\n COORDINATES = X Z\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 172 / 1224\n \n ...\n [JOINT_0]\n ...\n [JOINT_1]\n@@ -10182,15 +10182,15 @@\n \n Dir. Hold\n (ns)\n \n Dir. Setup\n (ns)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 173 / 1224\n \n 4.8.5 Pinout Information\n Gather the information about the connections from your machine to the PC parallel port.\n Output Pin\n 1\n@@ -10283,15 +10283,15 @@\n = 10 micro steps per step\n Motor Teeth\n = 20\n Leadscrew Teeth = 40\n Leadscrew Pitch =\n 0.2000 inches per turn\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 174 / 1224\n \n From the above information, the leadscrew moves 0.200 inches per turn. - The motor turns 2.000\n times per 1 leadscrew turn. - The drive takes 10 microstep inputs to make the stepper step once. The drive needs 2000 steps to turn the stepper one revolution.\n So the scale needed is:\n \n@@ -10327,15 +10327,15 @@\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 If your stepper driver can accept quadrature input, use this mode. With a quadrature signal, one step\n is possible for each BASE_PERIOD, doubling the maximum step rate.\n The other remedies are to decrease one or more of: the BASE_PERIOD (setting this too low will cause\n the machine to become unresponsive or even lock up), the INPUT_SCALE (if you can select different\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 175 / 1224\n \n step sizes on your stepper driver, change pulley ratios, or leadscrew pitch), or the MAX_VELOCITY\n and STEPGEN_MAXVEL.\n If no valid combination of BASE_PERIOD, INPUT_SCALE, and MAX_VELOCITY is acceptable, then\n consider using hardware step generation (such as with the LinuxCNC-supported Universal Stepper\n@@ -10378,15 +10378,15 @@\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 # create a signal for the estop loopback\n net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in\n # create signals for tool loading loopback\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 176 / 1224\n \n net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared\n net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed\n # connect \u201dspindle on\u201d motion controller pin to a physical pin\n net spindle-on spindle.0.on => parport.0.pin-09-out\n@@ -10427,15 +10427,15 @@\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 There are a couple of operations that get executed when the standard_pinout.hal gets executed/interpreted:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 177 / 1224\n \n \u2014 The Parport driver gets loaded (see the Parport Chapter for details).\n \u2014 The read & write functions of the parport driver get assigned to the base thread 5 .\n \u2014 The step & direction signals for axes X, Y, Z get linked to pins on the parport.\n \u2014 Further I/O signals get connected (estop loopback, toolchanger loopback).\n@@ -10470,15 +10470,15 @@\n setp pwmgen.0.scale 1800 # Change to your spindle\u2019s top speed in RPM\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 5. The fastest thread in the LinuxCNC setup, usually the code gets executed every few tens of microseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 178 / 1224\n \n 4.9.3.6 Adding an enable signal\n Some amplifiers (drives) require an enable signal before they accept and command movement of the\n motors. For this reason there are already defined signals called Xen, Yen, Zen.\n To connect them use the following example:\n@@ -10512,15 +10512,15 @@\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 calculates if it can keep up with the motion called for, and if not, then it gives a following error.\n Following errors usually are the result of one of the following on stepper systems.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 179 / 1224\n \n \u2014 FERROR too small\n \u2014 MIN_FERROR too small\n \u2014 MAX_VELOCITY too fast\n \u2014 MAX_ACCELERATION too fast\n@@ -10559,15 +10559,15 @@\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 table top. Load and run the program. It will make 200 moves back and forth from 0.5 to 1\u201d. If you have\n a configuration issue, you will find that the final position will not end up 0.500\u201d that the axis window\n is showing. To test another axis just replace the Z with your axis in the G0 lines.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 180 / 1224\n \n ( test program to see if Z axis loses position )\n ( msg, test 1 of Z axis configuration )\n G20 #1000=100 ( loop 100 times )\n ( this loop has delays after moves )\n@@ -10614,15 +10614,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 181 / 1224\n \n Figure 4.9 \u2013 Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -10642,15 +10642,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 182 / 1224\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@@ -10693,15 +10693,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 183 / 1224\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -10723,15 +10723,15 @@\n else:\n path = None\n app = QApplication(sys.argv)\n w = CustomDialog(path=path)\n w.show()\n sys.exit( app.exec_() )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 184 / 1224\n \n Chapitre 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL Introduction\n@@ -10759,15 +10759,15 @@\n \u2014 how allow for updates of the internal state by sensors (encoders, probes).\n The HAL layer consists of parts (referred to as \u201dcomponents\u201d) that\n \u2014 are connected with each other, e.g., to update position data or have the planning algorithm tell the\n motors about the next step.\n \u2014 may know how to communicate with hardware,\n \u2014 may simply process incoming data and provide data outputs to other components,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 185 / 1224\n \n \u2014 are always periodically executed either\n \u2014 with a very high frequency of a few microseconds (\u00b5s) execution time, called base thread, e.g.,\n to\n 1. give a stepper motor a trigger to step ahead, or to\n@@ -10804,15 +10804,15 @@\n the current implementation of LinuxCNC is limited to a single interpreter and a single Task module.\n Currently this is almost always a G-code interpreter and \u201dmilltask\u201d (which was found to also work well\n for lathes and adequately for robots) but these modules are selectable at load-time. With an increasing\n interest in the control of multiple cooperating machines, to overcome this limitation is likely one of\n the prime steps for the future development of LinuxCNC to address. It is a bit tricky though and the\n community is still organizing its thoughts on this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 186 / 1224\n \n HAL lies at the core of LinuxCNC and is used and/or extended by all the parts of LinuxCNC, which\n includes the GUIs. The G-code (or alternative language) interpreter knows how to interpret the G-code\n and translates it into machine operations by triggering signals in HAL. The user may query HAL in\n various ways to gain information about its state, which then also represents the state of the machine.\n@@ -10854,15 +10854,15 @@\n \u2014 positions that stepper motors should take next\n In a analogy to electronic cables, pins can be wired, so the value changing in one pin serves as input to\n another pin. HAL components prepare such input and output pins and are thus automatically triggered\n to perform.\n HAL Components The many \u201dexpert\u201d software parts of LinuxCNC are typically implemented as components of HAL, conceptually also referred to as modules. These computer-implemented experts perpetually read from HAL about a state that the machine should strive to achieve and compare that\n desired state with the state the machine is in at the current moment. When there is a difference\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 187 / 1224\n \n between what should be and what the current state is then some action is performed to reduce that\n difference, while perpetually writing updates of the current states back to the HAL data space.\n There are components specializing on how to talk to stepper motors, and other components know how\n to control servos. On a higher level, some components know how the machine\u2019s axes are arranged\n@@ -10897,15 +10897,15 @@\n HAL is based on traditional system design techniques. HAL is based on the same principles that\n are used to design hardware circuits and systems, so it is 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 aselect, mount and wire these pieces together to make a complete system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 188 / 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@@ -10925,15 +10925,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 189 / 1224\n \n 5.1.3.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@@ -10957,15 +10957,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.3.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 190 / 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@@ -10991,15 +10991,15 @@\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 normally just uses component. A HAL component is a piece of software with well-defined inputs,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 191 / 1224\n \n outputs, and behavior, that can be installed and interconnected as needed. + + Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be meant to\n be connected to a physical pin on the device to communicate with it, hence the names. But most\n often this is not the case. Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements\n is how the machine presents itself to the outside world, and it is secondary if the implementation\n@@ -11044,15 +11044,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 192 / 1224\n \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 are done. In these cases, the code is made available to the system in the form of one or more\n functions. Each function is a block of code that performs a specific action. The system integrator can use threads to schedule a series of functions to be executed in a particular order and at\n specific time intervals.\n@@ -11095,15 +11095,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 193 / 1224\n \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 \n 5.2 HAL Basics\n@@ -11114,15 +11114,15 @@\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 Figure 5.3 \u2013 HAL Configuration Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.1.1\n \n 194 / 1224\n \n loadrt\n \n@@ -11192,15 +11192,15 @@\n addf Syntax and Example\n addf <function> <thread>\n addf mux4.0 servo-thread\n \n Note\n If the component requires a floating point thread that is usually the slower servo-thread.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.1.3\n \n 195 / 1224\n \n loadusr\n \n@@ -11248,15 +11248,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 196 / 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\n the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -11282,15 +11282,15 @@\n \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 Syntax and Examples of setp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 197 / 1224\n \n setp <pin/parameter-name> <value>\n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6\n@@ -11337,15 +11337,15 @@\n Type must be bit, s32, u32 or float. Error if <signame> already exists.\n Syntax and Examples of newsig\n newsig <signame> <type>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 198 / 1224\n \n 5.2.2 HAL Data\n 5.2.2.1\n \n Bit\n@@ -11393,15 +11393,15 @@\n \n Time is the number of CPU cycles it took to execute the function.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 199 / 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@@ -11454,15 +11454,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 200 / 1224\n \n Table 5.4: Truth Table of not\n in\n True\n False\n@@ -11518,15 +11518,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 201 / 1224\n \n Table 5.6: xor2 Truth Table\n in0\n True\n True\n@@ -11599,15 +11599,15 @@\n FALSE\n \n Name\n wsum.0.bit.0.in\n wsum.0.bit.0.weight\n wsum.0.bit.1.in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 202 / 1224\n \n Table 5.7: (continued)\n Owner\n 10\n 10\n@@ -11688,15 +11688,15 @@\n With TWOPASS enabled, you can have multiple specifications like:\n loadrt and2 names=aa\n ...\n loadrt and2 names=ab,ac\n ...\n loadrt and2 names=ad\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 203 / 1224\n \n These commands can appear in different HAL files. The HAL files are processed in the order of their\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@@ -11737,15 +11737,15 @@\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 TWOPASS = on\n HALFILE = core_sim.hal\n HALFILE = sim_spindle_encoder.hal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 204 / 1224\n \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@@ -11786,15 +11786,15 @@\n $ cat twopass_excluded.hal\n # The following magic comment causes this file to\n # be excluded from twopass processing:\n # NOTWOPASS\n # debugging component with complex options:\n loadrt mycomponent parm1=\u201dabc def\u201d parm2=ghi\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 205 / 1224\n \n show pin mycomponent\n # ordering special components\n loadrt component_1\n loadrt component_2\n@@ -11828,15 +11828,15 @@\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 window is in Applications/Accessories from the main Ubuntu menu bar.\n Terminal Command Example - prompts\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 206 / 1224\n \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@@ -11874,15 +11874,15 @@\n Loading HAL\n cd linuxcnc\n halrun\n halcmd:\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 207 / 1224\n \n With the realtime OS and RTAPI loaded, we can move into the first example. Notice that the prompt is\n now shown as halcmd:. This is because subsequent commands will be interpreted as HAL commands,\n not shell commands.\n For the first example, we will use a HAL component called siggen, which is a simple signal generator.\n@@ -11964,15 +11964,15 @@\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 the pins have a value of zero.\n The next step is to look at parameters:\n Show Parameters\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 208 / 1224\n \n halcmd: show param\n Parameters:\n Owner\n Type\n@@ -12051,15 +12051,15 @@\n \n Up till now, we\u2019ve been using halcmd only to look at the HAL. However, this time we used the addf\n (add function) command to actually change something in the HAL. We told halcmd to add the function\n siggen.0.update to the thread test-thread, and if we look at the thread list again, we see that it\n succeeded:\n 2. CodeAddr and Arg fields were used during development and should probably disappear.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 209 / 1224\n \n halcmd: show thread\n Realtime Threads:\n Period FP\n 999855 YES\n@@ -12164,15 +12164,15 @@\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 halcmd: setp siggen.0.amplitude 5\n \n Check the parameters and pins again\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 210 / 1224\n \n halcmd: show param\n Parameters:\n Owner\n Type\n@@ -12255,15 +12255,15 @@\n Save configuration to a file with halcmd\n halcmd: save all saved.hal\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 211 / 1224\n \n shutting down the HAL session.\n Exit HAL\n halcmd: exit\n \n@@ -12304,15 +12304,15 @@\n the selection window at program launch, the Select button, re-opens the selection window and the\n Exit button stops the program and closes both windows.\n It is possible to run several halmeters simultaneously, which makes it possible to visualize several\n items at the same time. To open a halmeter and release the console by running it in the background,\n run the following command:\n halmeter &\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 212 / 1224\n \n It is possible to launch halmeter and make it immediately display an item. For this, add pin|sig|par[am]\n name arguments on the command line. It will display the signal, pin, or parameter name as soon as it\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@@ -12329,27 +12329,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 213 / 1224\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 214 / 1224\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@@ -12423,15 +12423,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12597,15 +12597,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 216 / 1224\n \n halcmd: show sig\n Signals:\n Type\n float\n@@ -12684,15 +12684,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 217 / 1224\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@@ -12767,15 +12767,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 218 / 1224\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@@ -12810,24 +12810,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 219 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 220 / 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@@ -12839,33 +12839,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 221 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 222 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 223 / 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@@ -12876,15 +12876,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 224 / 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@@ -12892,29 +12892,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 225 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 226 / 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@@ -12924,15 +12924,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 227 / 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@@ -12941,15 +12941,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 228 / 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@@ -12958,15 +12958,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 229 / 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@@ -12979,15 +12979,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 230 / 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@@ -13049,15 +13049,15 @@\n pin. From the direction arrow you can see that the button is and output and the or2.0.in0 is an input.\n 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\n Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 231 / 1224\n \n tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is\n best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to\n 1. load the hal_manualtoolchange component,\n 2. then send the iocontrol tool change to the hal_manualtoolchange change and\n@@ -13103,15 +13103,15 @@\n \n In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per\n minute (IPM) that we get from the ddt.0.out.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 232 / 1224\n \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@@ -13126,15 +13126,15 @@\n spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to\n new settings more slowly.\n Three built-in components that limit a signal are:\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 233 / 1224\n \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 loadrt threads period1=1000000 name1=thread\n@@ -13167,15 +13167,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 234 / 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@@ -13189,15 +13189,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 235 / 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@@ -13236,15 +13236,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 236 / 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@@ -13286,15 +13286,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 237 / 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@@ -13340,15 +13340,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 238 / 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@@ -13387,15 +13387,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 239 / 1224\n \n \u2014 spindle.N.revs - (float, in) For correct operation of spindle synchronized moves, this signal must\n be hooked to the position pin of the spindle encoder. The spindle encoder position should be scaled such that spindle-revs increases by 1.0 for each rotation of the spindle in the clockwise (M3)\n direction.\n \u2014 spindle.N.speed-in - (float, in) Feedback of actual spindle speed in rotations per second. This is\n@@ -13440,15 +13440,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 240 / 1224\n \n \u2014 1: always rotate clockwise\n \u2014 2: always rotate counterclockwise\n It can be used with the orient HAL component which provides a PID command value based on spindle\n encoder position, spindle-orient-angle and spindle-orient-mode.\n@@ -13482,15 +13482,15 @@\n A number of INI settings are made available as HAL input pins.\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 \u2014 ini.N.backlash - (float, in) [JOINT_N]BACKLASH\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 241 / 1224\n \n \u2014 ini.N.min_limit - (float, in) [JOINT_N]MIN_LIMIT\n \u2014 ini.N.max_limit - (float, in) [JOINT_N]MAX_LIMIT\n \u2014 ini.N.max_velocity - (float, in) [JOINT_N]MAX_VELOCITY\n \u2014 ini.N.max_acceleration - (float, in) [JOINT_N]MAX_ACCELERATION\n@@ -13530,15 +13530,15 @@\n man axis\n \n The one or other setup of a UNIX system may require to explicitly specify the section of the man page.\n If you do not find the man page or the name of the man page is already taken by another UNIX tool\n with the LinuxCNC man page residing in another section, then try to explicitly specify the section, as\n in man _sectionno_ axis, with sectionno = 1 for non-realtime and 9 for realtime components.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 242 / 1224\n \n Note\n See also the Man Pages section of the docs main page or the directory listing. To search in the man\n pages, use the UNIX tool apropos.\n \n@@ -13614,15 +13614,15 @@\n iocontrol - interacts with HAL or G-code in non-realtime\n Interacts with HAL or G-code in non-realtime\n Interacts with HAL or G-code in non-realtime\n Send G-code commands from the terminal to the running LinuxCNC\n instance\n Non-realtime task controller for LinuxCNC\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 243 / 1224\n \n 5.7.1.3 Hardware Drivers\n elbpcom\n gs2_vfd\n hy_gt_vfd\n@@ -13701,15 +13701,15 @@\n bitbanged SPI\n mesa_7i65\n Mesa Electronics driver for the 7I65 eight-axis servo card. (See the man\n page for more information)\n mesa_pktgyro_test\n PktUART simple test with Microstrain 3DM-GX3-15 gyro\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n opto_ac5\n pluto_servo\n pluto_step\n serport\n sserial\n thc\n@@ -13791,15 +13791,15 @@\n E-stop latch\n D-type flip-flop\n General logic function component\n 5-input logic function based on a look-up table Description\n 8-bit binary match detector\n Single-, double-, triple-, and quadruple-click detector\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 245 / 1224\n \n multiswitch\n not\n oneshot\n or2\n@@ -13898,15 +13898,15 @@\n scale\n Applies a scale and offset to its input.\n sum2\n Sum of two inputs (each with a gain) and an offset.\n timedelta\n Component that measures thread scheduling timing behavior.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 246 / 1224\n \n updown\n Counts up or down, with optional limits and wraparound behavior.\n wcomp\n Window comparator.\n@@ -13975,15 +13975,15 @@\n machines and lathes use the trivial kinematics module.\n userkins\n Template for user-built kinematics\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 247 / 1224\n \n 5.7.1.8 Motion control (Realtime)\n motion\n \n Accepts NML motion commands, interacts with HAL in realtime\n@@ -14053,15 +14053,15 @@\n \n 5.7.2 HAL API calls\n hal_add_funct_to_thread.3hal\n hal_bit_t.3hal\n hal_create_thread.3hal\n hal_del_funct_from_thread.3hal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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@@ -14112,15 +14112,15 @@\n intro.3rtapi\n rtapi_app_exit.3rtapi\n rtapi_app_main.3rtapi\n rtapi_clock_set_period.3rtapi\n \n 248 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 249 / 1224\n \n rtapi_delay.3rtapi\n rtapi_delay_max.3rtapi\n rtapi_exit.3rtapi\n rtapi_get_clocks.3rtapi\n@@ -14166,30 +14166,30 @@\n \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. In\n velocity mode, it drives a motor at the commanded speed, while obeying velocity and acceleration limits. It is a realtime component only, and depending on CPU speed, etc., is capable of maximum step\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 250 / 1224\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.19 \u2013 Step Pulse Generator Block Diagram position mode\n \n 251 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 252 / 1224\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type=<type-array> [ctrl_type=<ctrl_array>]\n \n <type-array>\n@@ -14246,15 +14246,15 @@\n \u2014 (float) stepgen. \u0300\n __<chan>__.position-scale \u0300 - Steps per position unit. This parameter is used for\n both output and feedback.\n \u2014 (float) stepgen. \u0300\n __<chan>__.maxvel \u0300 - Maximum velocity, in position units per second. If 0.0, has\n no effect.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 253 / 1224\n \n \u2014 (float) stepgen. \u0300\n __<chan>__.maxaccel \u0300 - Maximum accel/decel rate, in positions units per second\n squared. If 0.0, has no effect.\n \u2014 (float) stepgen. \u0300\n@@ -14296,15 +14296,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)\u2019. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 254 / 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@@ -14316,33 +14316,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.21 \u2013 Two-and-Three-Phase Step Types\n \n 255 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 256 / 1224\n \n Figure 5.22 \u2013 Four-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 257 / 1224\n \n Figure 5.23 \u2013 Five-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 258 / 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\n@@ -14385,15 +14385,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 259 / 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@@ -14449,15 +14449,15 @@\n 50% duty cycle and 25 Hz PWM frequency this means that the output changes state every (1/25) s\n / 50 \u00b5s * 50% = 400 iterations. This also means that you have a 800 possible duty cycle values\n (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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 260 / 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@@ -14471,15 +14471,15 @@\n Loading Encoder\n halcmd: loadrt encoder [num_chan=<counters>]\n \n <counters> is the number of encoder counters that you want to install. If num_chan 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 261 / 1224\n \n time. In the following descriptions, <chan> is the number of a specific counter. The first counter is\n number 0.\n Unloading Encoder\n halcmd: unloadrt encoder\n@@ -14525,15 +14525,15 @@\n \u2014 encoder._<chan>_.position-scale (float, I/O) - Scale factor, in counts per length unit. For example,\n if position-scale is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units.\n \u2014 encoder._<chan>_.rawcounts (s32, In) - The raw count, as determined by update-counters. This\n value is updated more frequently than counts and position. It is also unaffected by reset or the\n index pulse.\n \u2014 encoder._<chan>_.reset (bit, In) - When True, force counts and position to zero immediately.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 262 / 1224\n \n \u2014 encoder._<chan>_.velocity (float, Out) - Velocity in scaled units per second. encoder uses an\n 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@@ -14553,15 +14553,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 263 / 1224\n \n Figure 5.25 \u2013 PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=<loops>] [debug=1]\n \n@@ -14573,15 +14573,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 264 / 1224\n \n \u2014 (float) pid. \u0300\n __<loopnum>__.command \u0300 - The desired position, as commanded by another system\n component.\n \u2014 (float) pid. \u0300\n@@ -14625,15 +14625,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.<loopnum>.errorI - Integral of error.\n \u2014 (float) pid.<loopnum>.errorD - Derivative of error.\n \u2014 (float) pid.<loopnum>.commandD - Derivative of the command.\n \u2014 (float) pid.<loopnum>.commandDD - 2nd derivative of the command.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 265 / 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@@ -14673,15 +14673,15 @@\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\n .make-pulses.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 266 / 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@@ -14717,15 +14717,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.<G> - Updates all filters in group <G>.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 267 / 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@@ -14768,15 +14768,15 @@\n None. 7\n 5.8.7.3 Functions\n \u2014 (funct) siggen. \u0300\n __<chan>__.update \u0300 - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 268 / 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@@ -14961,15 +14961,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 269 / 1224\n \n Table 5.23: lut5 Two Inputs Example Look Up Table\n Bit 4\n 0\n 0\n@@ -15037,15 +15037,15 @@\n \n 5.9.2 Installing\n To compile a component, if a packaged version of LinuxCNC is used, development packages have to\n be installed using either Synaptic from the main menu System -> Administration -> Synaptic package\n manager or by running one of the following commands in a terminal window:\n Installation of Development packages for LinuxCNC\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 270 / 1224\n \n sudo apt install linuxcnc-dev\n # or\n sudo apt install linuxcnc-uspace-dev\n \n@@ -15081,15 +15081,15 @@\n \n 5.9.6 Implicit Parameters\n Functions are implicitly passed the period parameter which is the time in nanoseconds of the last\n period to execute the component. Functions which use floating-point can also refer to fperiod which\n is the floating-point time in seconds, or (period*1e-9). This can be useful in components that need the\n timing information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 271 / 1224\n \n 5.9.7 Syntax\n A .comp file consists of a number of declarations, followed by ;; on a line of its own, followed by C\n code implementing the module\u2019s functions.\n Declarations include:\n@@ -15147,15 +15147,15 @@\n x-y-z\n x.MM.z\n x.MM\n \n \u2014 if CONDITION - An expression involving the variable personality which is nonzero when the pin or\n parameter should be created.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 272 / 1224\n \n \u2014 SIZE - A number that gives the size of an array. The array items are numbered from 0 to SIZE-1.\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@@ -15194,15 +15194,15 @@\n Neither halcompile nor gcc can detect the use of floating-point calculations in functions that are\n tagged nofp, but the use of such operations results in undefined behavior.\n 5.9.7.2 Options\n The currently defined options are:\n \u2014 option singleton yes - (default: no) Do not create a count module parameter, and always create a\n single instance. With singleton, items are named component-name.item-name and without singleton, items for numbered instances are named component-name.<num>.item-name.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 273 / 1224\n \n \u2014 option default_count number - (default: 1) Normally, the module parameter count defaults to 1. If\n specified, the count will default to this value instead.\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@@ -15251,15 +15251,15 @@\n \u2014 option homemod yes - (default: no)\n Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename .\n \u2014 option tpmod yes - (default: no)\n Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename .\n If an option\u2019s VALUE is not specified, then it is equivalent to specifying option \u2026 yes.\n The result of assigning an inappropriate value to an option is undefined.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 274 / 1224\n \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@@ -15293,15 +15293,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 275 / 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@@ -15347,15 +15347,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 276 / 1224\n \n loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805\n \n Note\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@@ -15391,15 +15391,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 277 / 1224\n \n 5.9.14 Compiling non-realtime components outside the source tree\n halcompile can process, compile, install, and document non-realtime components:\n halcompile non-rt-example.comp\n halcompile --compile non-rt-example.comp\n@@ -15439,15 +15439,15 @@\n pin in float theta;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n #include <rtapi_math.h>\n FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 278 / 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 <asm/io.h>. It\n@@ -15492,15 +15492,15 @@\n \n 5.9.15.4 hal_loop\n component hal_loop;\n pin out float example;\n \n This fragment of a component illustrates the use of the hal_ prefix in a component name.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 279 / 1224\n \n loop is a common name, and the hal_ prefix avoids potential name collisions with other unrelated\n software. For example, on RTAI realtime systems realtime code runs in the kernel, so if the component\n were named just loop it could easily conflict with the standard loop kernel module.\n When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by\n@@ -15544,15 +15544,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 280 / 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@@ -15601,15 +15601,15 @@\n }\n //main function\n FUNCTION(_) {\n if (in < 0){\n set(&out1);\n unset(&out2);\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 281 / 1224\n \n }else if (in >0){\n unset(&out2);\n set(&out2);\n }else{\n@@ -15647,15 +15647,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 282 / 1224\n \n addf, alias,\n delf, delsig,\n getp, gets\n ptype,\n@@ -15706,15 +15706,15 @@\n not a list.\n When the value could contain special characters (quote characters, curly-brace characters, embedded\n whitespace, and other characters that have special meaning in Tcl) then it 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 283 / 1224\n \n [HOSTMOT2]\n DRIVER=hm2_eth\n IPADDR=\u201d10.10.10.10\u201d\n BOARD=7i92\n@@ -15752,15 +15752,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 284 / 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@@ -15800,15 +15800,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 285 / 1224\n \n 5.11 HAL User Interface\n 5.11.1 Introduction\n Halui is a HAL based user interface for LinuxCNC, it connects HAL pins to NML commands. Most of\n the functionality (buttons, indicators etc.) that is provided by a traditional GUI (AXIS, GMOCCAPY,\n@@ -15856,15 +15856,15 @@\n IN FALSE halui.mdi-command-02 <== call-mysub\n ...\n \n When a halui MDI pin is set (pulsed) true, halui will send the MDI command defined in the INI. This\n will not always succeed depending on the current operating mode (e.g., while in AUTO halui can\u2019t\n successfully send MDI commands).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 286 / 1224\n \n 5.11.3 Example Configuration\n An example sim config (configs/sim/axis/halui_pyvcp/halui.ini) is included in the distribution.\n \n 5.11.4 Halui Pin Reference\n@@ -15894,15 +15894,15 @@\n \u2014 halui.mist.off (bit, in) - pin for requesting mist off\n \u2014 halui.mist.on (bit, in) - pin for requesting mist on\n 5.11.4.5 Flood\n \u2014 halui.flood.is-on (bit, out) - indicates flood is on\n \u2014 halui.flood.off (bit, in) - pin for requesting flood off\n \u2014 halui.flood.on (bit, in) - pin for requesting flood on\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 287 / 1224\n \n 5.11.4.6 Homing\n \n \u2014 halui.home-all (bit, in) - pin for requesting all axis to home. This pin will only be there if HOME_SEQUENCE\n is set in the INI file.\n@@ -15937,15 +15937,15 @@\n will be exported by halui.\n 5.11.4.11 Joint\n N = joint number (0 \u2026 num_joints-1)\n Example:\n \u2014 halui.joint.N.select (bit in) - pin for selecting joint N\n \u2014 halui.joint.N.is-selected (bit out) - status pin that joint N is selected\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 288 / 1224\n \n \u2014 halui.joint.N.has-fault (bit out) - status pin telling that joint N has a fault\n \u2014 halui.joint.N.home (bit in) - pin for homing joint N\n \u2014 halui.joint.N.is-homed (bit out) - status pin telling that joint N is homed\n \u2014 halui.joint.N.on-hard-max-limit (bit out) - status pin telling that joint N is on the positive hardware\n@@ -15989,15 +15989,15 @@\n \u2014 halui.joint.N.plus (bit in) - pin for jogging joint N in positive direction at the halui.joint.jog-speed\n velocity\n \u2014 halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint\n when using increment-plus/minus\n \u2014 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 289 / 1224\n \n \u2014 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 \u2014 halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the\n halui.joint.jog-speed velocity\n@@ -16036,15 +16036,15 @@\n halui.axis.jog-speed velocity\n \u2014 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 5.11.4.15 Mode\n \u2014 halui.mode.auto (bit, in) - pin for requesting auto mode\n \u2014 halui.mode.is-auto (bit, out) - indicates auto mode is on\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 290 / 1224\n \n \u2014 halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on\n \u2014 halui.mode.is-manual (bit, out) - indicates manual mode is on\n \u2014 halui.mode.is-mdi (bit, out) - indicates MDI mode is on\n \u2014 halui.mode.is-teleop (bit, out) - indicates coordinated jog mode is on\n@@ -16086,15 +16086,15 @@\n \u2014 halui.spindle.N.override.direct-value (bit, in) - false when using encoder to change counts, true\n when setting counts directly.\n \u2014 halui.spindle.N.override.increase (bit, in) - pin for increasing the SO (+=scale)\n \u2014 halui.spindle.N.override.scale (float, in) - pin for setting the scale on changing the SO\n \u2014 halui.spindle.N.override.value (float, out) - current SO value\n \u2014 halui.spindle.N.override.reset (bit, in) - pin for resetting the SO value (scale=1.0)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 291 / 1224\n \n 5.11.4.19 Broche\n \u2014 halui.spindle.N.brake-is-on (bit, out) - indicates brake is on\n \u2014 halui.spindle.N.brake-off (bit, in) - pin for deactivating spindle/brake\n \u2014 halui.spindle.N.brake-on (bit, in) - pin for activating spindle-brake\n@@ -16128,15 +16128,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 292 / 1224\n \n Figure 5.26 \u2013 Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin>\n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -16162,15 +16162,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 293 / 1224\n \n \u2014 The \u201dresume\u201d input return signal should not be longer than the time required to get the G-code\n running again.\n \u2014 The \u201dis-paused\u201d output should no longer be active by the time the \u201dresume\u201d signal ends.\n These timing problems could be avoided by using ClassicLadder to activate the \u201dis-paused\u201d output via\n@@ -16231,15 +16231,15 @@\n 3.14\n 3.14\n \n Name\n passthrough.in\n passthrough.out\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 294 / 1224\n \n 5.13.2 Non-realtime components and delays\n If you typed \u201dshow pin\u201d quickly, you may see that passthrough.out still had its old value of 0. This is\n because of the call to time.sleep(1), which makes the assignment to the output pin occur at most once\n per second. Because this is a non-realtime component, the actual delay between assignments can be\n@@ -16287,15 +16287,15 @@\n calling the .getprefix() method.\n \n 5.13.4 Reading and writing pins and parameters\n For pins and parameters which are also proper Python identifiers, the value may be accessed or set\n using the attribute syntax:\n h.out = h.in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 295 / 1224\n \n For all pins, whether or not they are also proper Python identifiers, the value may be accessed or set\n using the subscript syntax:\n h[\u2019out\u2019] = h[\u2019in\u2019]\n \n@@ -16337,15 +16337,15 @@\n \u2014 MSG_NONE\n \u2014 MSG_ALL\n \u2014 MSG_DBG\n \u2014 MSG_ERR\n \u2014 MSG_INFO\n \u2014 MSG_WARN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 296 / 1224\n \n 5.13.8 System Information\n Read these to acquire information about the realtime system.\n \u2014 is_kernelspace\n \u2014 is_rt\n@@ -16375,15 +16375,15 @@\n \n 5.14.3 Digital Output\n The canonical digital output (I/O type field: digout) is also very simple.\n 5.14.3.1 Pins\n (bit) out\n Value to be written (possibly inverted) to the hardware output.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 297 / 1224\n \n 5.14.3.2 Parameters\n (bit) invert\n If TRUE, out is inverted before writing to the hardware.\n 5.14.3.3 Functions\n@@ -16412,15 +16412,15 @@\n it may cause all channels to be read.\n \n 5.14.5 Analog Output\n The canonical analog output (I/O Type: adcout). This is intended for any kind of hardware that can\n output a more-or-less continuous range of values. Examples are digital to analog converters or PWM\n generators.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 298 / 1224\n \n 5.14.5.1 Pins\n (float) value\n The value to be written. The actual value output to the hardware will depend on the scale and\n offset parameters.\n@@ -16460,15 +16460,15 @@\n the man page available:\n cd toplevel_directory_for_rip_build\n . scripts/rip-environment\n man halcmd\n \n The HAL Tutorial has a number of examples of halcmd usage, and is a good tutorial for halcmd.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 299 / 1224\n \n 5.15.2 Halmeter\n Halmeter is a voltmeter for the HAL. It lets you look at a pin, signal, or parameter, and displays the\n current value of that item. It is pretty simple to use. Start it by typing halmeter in an X windows shell.\n Halmeter is a GUI application. It will pop up a small window, with two buttons labeled \u201dSelect\u201d and\n@@ -16493,23 +16493,23 @@\n displays the value. Multiple \u0300 \u0300halmeter \u0300 \u0300s can be open at the same time. If you use a script to open\n multiple \u0300 \u0300halmeter \u0300 \u0300s you can set the position of each one with -g X Y relative to the upper left corner\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 300 / 1224\n \n Figure 5.27 \u2013 Halmeter selection window\n \n Figure 5.28 \u2013 Halmeter watch window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 301 / 1224\n \n 5.15.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@@ -16525,15 +16525,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.29 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 302 / 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@@ -16579,15 +16579,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 303 / 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@@ -16608,15 +16608,15 @@\n \n Figure 5.30 \u2013 sim_pin Window\n \n 5.15.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 304 / 1224\n \n Figure 5.31 \u2013 simulate_probe Window\n \n 5.15.7 HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n@@ -16661,15 +16661,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 305 / 1224\n \n Figure 5.32 \u2013 hal-histogram Window\n \n 5.15.8 Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -16684,15 +16684,15 @@\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 The report can be generated from the command line and directed to an output file (or stdout if no\n outfilename is specified):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 306 / 1224\n \n halreport Usage\n Usage:\n halreport -h | --help (this help)\n or\n@@ -16773,27 +16773,27 @@\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 3. GUI-created non-realtime components that lack distinguishing characteristics such as a prefix\n based on the GUI program name.\n Questionable functions are tagged with a question mark \u201d?\u201d.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 307 / 1224\n \n Note\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 308 / 1224\n \n Chapitre 6\n \n Hardware Drivers\n 6.1 Parallel Port Driver\n@@ -16826,15 +16826,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 309 / 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@@ -16858,15 +16858,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 <config-string> does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 310 / 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@@ -16926,15 +16926,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 311 / 1224\n \n Table 6.1: (continued)\n Pin\n 14\n 15\n@@ -16997,15 +16997,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 get under the hood and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 312 / 1224\n \n 6.1.3 Pins\n \u2014 parport.<p>.pin- \u0300\n __<n>__-out \u0300 (bit) Drives a physical output pin.\n \u2014 parport.<p>.pin- \u0300\n@@ -17054,15 +17054,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 313 / 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@@ -17099,15 +17099,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 314 / 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@@ -17146,15 +17146,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.<boardnum>.read \u2014 Reads all digital inputs on one board.\n \u2014 (funct) ax5214.<boardnum>.write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 315 / 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@@ -17172,15 +17172,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 316 / 1224\n \n Figure 6.2 \u2013 GM6-PCI card connectors and LEDs\n \n 6.3.1 I/O connectors\n \n@@ -17216,15 +17216,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 317 / 1224\n \n gm.<card_no>.gpio.<gpio_con_no>\n \n where <gpio_con_no> is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n@@ -17272,15 +17272,15 @@\n When True, pin value will be inverted.\n Used when pin is configured as output.\n \n 6.3.2 Axis connectors\n \n Figure 6.4 \u2013 Pin numbering of axis connectors\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 318 / 1224\n \n Table 6.6: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17308,15 +17308,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 319 / 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@@ -17380,15 +17380,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 320 / 1224\n \n Table 6.8: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17463,15 +17463,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 321 / 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@@ -17542,15 +17542,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 322 / 1224\n \n Table 6.10: (continued)\n Parameters\n .control-type\n \n@@ -17607,15 +17607,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 323 / 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@@ -17633,15 +17633,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 324 / 1224\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n # 2000 ns = 2 \u00b5s\n \n@@ -17694,15 +17694,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 325 / 1224\n \n Table 6.12: (continued)\n Pins\n \n Type and\n@@ -17763,15 +17763,15 @@\n gm.<card_no>.can-gm.<axis_no>\n \n where <axis_no> 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.<card_no>.write\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 326 / 1224\n \n 6.3.3.1 Pins\n Table 6.14: CAN module pins\n Pins\n \n@@ -17817,15 +17817,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 327 / 1224\n \n Table 6.17: Watchdog parameters\n Parameters\n \n Type and\n@@ -17930,15 +17930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 328 / 1224\n \n gm.<card_no>.joint.<axis_no>\n \n where <axis_no> 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@@ -17999,15 +17999,15 @@\n \u2014 Off, when no data communication.\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 \u2014 Off, when any of the initialized modules dropped off because of an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 329 / 1224\n \n 6.3.6.3 EMC\n Color: White\n \u2014 Blink, when LinuxCNC is running.\n \u2014 Otherwise off.\n@@ -18037,15 +18037,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 330 / 1224\n \n \u2014 Blink, when the module is only powered, but not jet identified, or when module is dropped down.\n \u2014 Off, during identification (computer is on, but LinuxCNC not started)\n \u2014 On, when it communicates continuously.\n 6.3.7.1 Relay output module\n@@ -18101,15 +18101,15 @@\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.<card_no>.rs485\n \n It should be added to servo thread or other thread with larger period to avoid CPU overload. Every\n RS485 module pin and parameter name begins as follows:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 331 / 1224\n \n gm.<card_no>.rs485.<module ID>\n \n where <module ID> is from 00 to 15.\n Table 6.24: Digital input output module pins\n@@ -18170,15 +18170,15 @@\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 Value of DAC output in Volts.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 332 / 1224\n \n Table 6.26: DAC & ADC module parameters\n Parameters\n .adc-scale-<0-7>\n \n@@ -18267,15 +18267,15 @@\n The raw count is the counts, but unaffected by\n reset.\n Position in scaled units\n (=.enc-counts/.enc-position-scale).\n Input pin\n Negated input pin\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 333 / 1224\n \n Table 6.28: Teach Pendant module parameters\n Parameters\n .adc-scale-<0-5>\n \n@@ -18331,15 +18331,15 @@\n This component is loaded using the halcmd \u201dloadusr\u201d command:\n loadusr -Wn spindle-vfd gs2_vfd -n spindle-vfd\n \n The above command says: loadusr, wait for named to load, component gs2_vfd, named spindle-vfd.\n The HAL loadusr command is described in the loadusr chapter.\n 2. In Europe the equivalent can be found under the brand name Omron.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 334 / 1224\n \n 6.4.1 Command Line Options\n \u2014 -b or --bits <n> (default: 8) Set number of data bits to n, where n must be from 5 to 8 inclusive.\n \u2014 -d or --device <path> (default: /dev/ttyS0) Set the file path to the serial device node to use.\n \u2014 -g or --debug Turn on debugging messages. This will also set the verbose flag. Debug mode will\n@@ -18381,15 +18381,15 @@\n \u2014 <name>.scale-frequency (float, out) from the VFD\n \u2014 <name>.speed-command (float, in) speed sent to VFD in RPM It is an error to send a speed faster\n than the Motor Max RPM as set in the VFD.\n \u2014 <name>.spindle-fwd (bit, in) 1 for FWD and 0 for REV sent to VFD\n \u2014 <name>.spindle-rev (bit, in) 1 for REV and 0 if off\n \u2014 <name>.spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 335 / 1224\n \n \u2014 <name>.status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n \u2014 <name>.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@@ -18419,15 +18419,15 @@\n \n The \u201ddir\u201d mask determines whether the pins are inputs and outputs, the exclude mask prevents the\n driver from using the pins (and so allows them to be used for their normal RPi purposes such as SPI\n or UART).\n The mask can be in decimal or hexadecimal (hex may be easier as there will be no carries).\n To determine the value of the masks, add up the hex/decimal values for all pins that should be configured as output, and analogously for all pins that should be excluded according to the following table.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 336 / 1224\n \n Table 6.29: GPIO masks - mapping of GPIO numbers (leftmost column) to physical pin numbers as printed on the\n Raspberry Pi board (rightmost column) and the decimal/hexadecimal values that contribute to the value of the\n mask.\n GPIO Num\n@@ -18552,15 +18552,15 @@\n \u2014 hal_pi_gpio.pin-NN-out\n \u2014 hal_pi_gpio.pin-NN-in\n Depending on the dir and exclude masks.\n \n 6.5.4 Parameters\n Only the standard timing parameters which are created for all components exist.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 337 / 1224\n \n *hal_pi_gpio.read.tmax *hal_pi_gpio.read.tmax-increased *hal_pi_gpio.write.tmax *hal_pi_gpio.write.tmaxincreased\n For unknown reasons the driver also creates HAL pins to indicate timing\n *hal_pi_gpio.read.time *hal_pi_gpio.write.time\n \n@@ -18591,15 +18591,15 @@\n This driver has been tested on the Raspberry Pi, and should also work on Banana Pi, BeagleBone,\n Pine64 (et al.) and other single board computers, and potentially on other platforms.\n \n 6.6.1 Purpose\n This driver allows the use of GPIO pins in a way analogous to the parallel port driver on x86 PCs. It\n can use the same step generators, encoder counters and similar components.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 338 / 1224\n \n 6.6.2 Usage\n loadrt hal_gpio inputs=GPIO5,GPIO6,GPIO12,GPIO13,GPIO16,GPIO17,GPIO18,GPIO19 \\\n outputs=GPIO20,GPIO21,GPIO22,GPIO23,GPIO24,GPIO25,GPIO26, \u2190GPIO27 \\\n invert=GPIO20,GPIO27 \\\n@@ -18744,15 +18744,15 @@\n then the value will be reduced to 1/4 the thread period. There is a lower limit to how long\n the pulse can be. With 8 pins in the output list the pulse width can not reduce lower than\n 5000 ns on an RPi4, for example.\n The following functions are accepted in all versions, but are only effective if a version of libgpiod_dev\n >= 1.6 is installed. They should be used in the same way as the parameters described above, and will\n alter the electrical parameters of the GPIO pins if this is supported by the hardware.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 339 / 1224\n \n opendrain\n opensource\n biasdisable\n pulldown\n@@ -18790,15 +18790,15 @@\n 1. Create a new group gpio with the command\n sudo groupadd gpio\n \n 2. Then to setup permissions for the \u201dgpio\u201d group, create a file called 90-gpio-access in the\n /etc/udev/rules.d/ directory with the following contents (this is copied from the Raspbian\n install)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 340 / 1224\n \n SUBSYSTEM==\u201dbcm2835-gpiomem\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n@@ -18833,15 +18833,15 @@\n up-to-date firmware lists.\n \u2014 3x20 (144 I/O pins): using hm2_pci module\n \u2014 24-channel servo\n \u2014 16-channel servo plus 24 step/dir generators\n \u2014 5I22 (96 I/O pins): using hm2_pci module\n \u2014 16-channel servo\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 341 / 1224\n \n \u2014 8-channel servo plus 24 step/dir generators\n \u2014 5I20, 5I23, 4I65, 4I68 (72 I/O pins): using hm2_pci module\n \u2014 12-channel servo\n \u2014 8-channel servo plus 4 step/dir generators\n@@ -18881,15 +18881,15 @@\n become high-impedance inputs (pulled high). The state of the HostMot2 firmware modules is not\n disturbed (except for the configuration of the I/O Pins). Encoder instances keep counting quadrature\n pulses, and pwm- and step-generators keep generating signals (which are not relayed to the motors,\n because the I/O Pins have become inputs).\n Resetting the watchdog resets the I/O pins to the configuration chosen at load-time.\n If the firmware includes a watchdog, the following HAL objects will be exported:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 342 / 1224\n \n 6.7.5.1 Pins\n \u2014 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.7.5.2 Parameters\n@@ -18928,15 +18928,15 @@\n Now when you run LinuxCNC and then do a dmesg > hm2.txt in the terminal only the info from the\n time you loaded LinuxCNC will be in your file along with your pinout. The file will be in the current\n directory of the terminal window. Each line will contain the card name, the card number, the I/O\n Pin number, the connector and pin, and the usage. From this printout you will know the physical\n connections to your card based on your configuration.\n An example of a 5I20 configuration:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 343 / 1224\n \n [HOSTMOT2]\n DRIVER=hm2_pci\n BOARD=5i20\n CONFIG=\u201dfirmware=hm2/5i20/SVST8_4.BIT num_encoders=1 num_pwmgens=1 num_stepgens=3\u201d\n@@ -18980,15 +18980,15 @@\n package the .PIN files are installed in\n /usr/share/doc/hostmot2-firmware-<board>/\n \n 6.7.9 Firmware\n The selected firmware (.BIT file) and configuration is uploaded from the PC motherboard to the Mesa\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware-<board> package. There is more information about firmware and configuration in the Configurations section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 344 / 1224\n \n 6.7.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@@ -19004,15 +19004,15 @@\n signals each, thus gaining 30 bits of GPIO.\n Or, in the 5I22 (four ports), SVST8_24 (Servo 8, Stepper 24) would be for having 8 servos or fewer\n (7I33 x2 again), and 24 steppers or fewer (7I47 x2). This would use up all four ports. If you only needed\n 4 servos you could say num_encoders=4 and num_pwmgens=4 and recover 1 port (and save a 7I33).\n And if you only needed 12 steppers you could say num_stepgens=12 and free up one port (and save a\n 7I47). So in this way we can save two ports (48 bits) for GPIO.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 345 / 1224\n \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@@ -19209,15 +19209,15 @@\n 0\n 48\n 0\n 0\n 8\n 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 346 / 1224\n \n 4I65 (3-port PC/104) Default Configurations (The 4I65 has 200k gates.)\n Firmware\n SV12\n SVST8_4\n@@ -19326,15 +19326,15 @@\n GPIOs have names like hm2_<BoardType>.<BoardNum>.gpio.<IONum>. IONum is a three-digit\n number. The mapping from IONum to connector and pin-on-that-connector is written to the syslog\n when the driver loads, and it\u2019s documented in Mesa\u2019s manual for the Anything I/O boards.\n The hm2 GPIO representation is modeled after the Digital Inputs and Digital Outputs described in the\n Canonical Device Interface (part of the HAL General Reference document).\n GPIO pins default to input.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 347 / 1224\n \n 6.7.12.1 Pins\n \u2014 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 \u2014 in_not - (Bit, Out) Inverted state of the hardware input pin. Both full GPIO pins and I/O pins used\n@@ -19374,15 +19374,15 @@\n \u2014 control-type - (Bit, In) Switches between position control mode (0) and velocity control mode (1).\n Defaults to position control (0).\n \u2014 counts - (s32, Out) Feedback position in counts (number of steps).\n \u2014 enable - (Bit, In) Enables output steps. When false, no steps are generated.\n \u2014 position-cmd - (Float, In) Target position of stepper motion, in user-defined position units.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 348 / 1224\n \n \u2014 position-fb - (Float, Out) Feedback position in user-defined position units (counts / position_scale).\n \u2014 velocity-cmd - (Float, In) Target velocity of stepper motion, in user-defined position units per second. This pin is only used when the stepgen is in velocity control mode (control-type=1).\n \u2014 velocity-fb - (Float, Out) Feedback velocity in user-defined position units per second.\n 6.7.13.2 Parameters\n@@ -19415,15 +19415,15 @@\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 output pin you invert the corresponding GPIO pin that is being used by PWMGen. To find the GPIO\n pin being used for the PWMGen output run dmesg as shown above.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 349 / 1224\n \n 6.7.14.1 Pins\n \u2014 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 \u2014 value - (Float, In) The current pwmgen command value, in arbitrary units.\n@@ -19465,15 +19465,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\n I/O pins used as outputs by active module instances have this parameter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 350 / 1224\n \n 6.7.15 Encoder\n Encoders have names like hm2_<BoardType>.<BoardNum>.encoder.<Instance>.. Instance is a twodigit number that corresponds to the HostMot2 encoder instance number. There are num_encoders\n instances, starting with 00.\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@@ -19512,15 +19512,15 @@\n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 351 / 1224\n \n 6.7.16 5I25 Configuration\n 6.7.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@@ -19554,15 +19554,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 352 / 1224\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@@ -19602,15 +19602,15 @@\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 2. Load the modbus HAL non-realtime component\n b. Default component name: loadusr -W mb2hal config=config_file.ini\n c. Custom component name: loadusr -Wn mymodule mb2hal config=config_file.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 353 / 1224\n \n 6.8.3 Options\n 6.8.3.1 Init Section\n [MB2HAL_INIT]\n Value\n@@ -19716,15 +19716,15 @@\n LINK_TYPE=serial\n In ms. Defaults to 0. Ignored if LINK_TYPE=tcp.\n Yes\n Modbus slave number.\n Yes\n The first element address.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Value\n NELEMENTS\n \n PIN_NAMES\n \n MB_TX_CODE\n@@ -19812,15 +19812,15 @@\n or is invalid.\n \u2014 0x04 - SLAVE_DEVICE_FAILURE - SLAVE (or MASTER) device unrecoverable FAILURE while attempting to perform the requested action.\n \u2014 0x04 - SERVER_FAILURE - (see above).\n \u2014 0x05 - ACKNOWLEDGE - This response is returned to PREVENT A TIMEOUT in the master. A long\n duration of time is required to process the request in the slave.\n \u2014 0x06 - SLAVE_DEVICE_BUSY - The slave (or server) is BUSY. Retransmit the request later.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 355 / 1224\n \n \u2014 0x06 - SERVER_BUSY - (see above).\n \u2014 0x07 - NEGATIVE_ACKNOWLEDGE - Unsuccessful programming request using function code 13\n or 14.\n \u2014 0x08 - MEMORY_PARITY_ERROR - SLAVE parity error in MEMORY.\n@@ -19864,15 +19864,15 @@\n #to not to have a lot of logging and facilitate the debugging.\n #Useful when using DEBUG=3 (NOT INIT_DEBUG=3)\n #It affects ALL transactions.\n #Use \u201d0.0\u201d for normal activity.\n SLOWDOWN=0.0\n #REQUIRED: The number of total Modbus transactions. There is no maximum.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 356 / 1224\n \n TOTAL_TRANSACTIONS=9\n # ++++++++++++++++++++++++\n # Transactions\n # ++++++++++++++++++++++++\n@@ -19917,15 +19917,15 @@\n SERIAL_DELAY_MS=10\n #REQUIRED (only 1st time).\n #Modbus slave number.\n MB_SLAVE_ID=1\n #REQUIRED: The first element address (decimal integer).\n FIRST_ELEMENT=0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 357 / 1224\n \n #REQUIRED unless PIN_NAMES is specified: The number of elements.\n #It is an error to specify both NELEMENTS and PIN_NAMES\n #The pin names will be sequential numbers e.g mb2hal.plcin.01\n #NELEMENTS=4\n@@ -20013,15 +20013,15 @@\n #OPTIONAL: Response timeout for this transaction. In INTEGER ms. Defaults to 500 ms.\n #This is how much to wait for 1st byte before raise an error.\n MB_RESPONSE_TIMEOUT_MS=500\n #OPTIONAL: Byte timeout for this transaction. In INTEGER ms. Defaults to 500 ms.\n #This is how much to wait from byte to byte before raise an error.\n MB_BYTE_TIMEOUT_MS=500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 358 / 1224\n \n #OPTIONAL: Instead of giving the transaction number, use a name.\n #Example: mb2hal.00.01 could become mb2hal.plcin.01\n #The name must not exceed 28 characters.\n #NOTE: when using names be careful that you dont end up with two transactions\n@@ -20087,15 +20087,15 @@\n DEBUG=1\n [TRANSACTION_02]\n MB_TX_CODE=fnct_02_read_discrete_inputs\n FIRST_ELEMENT=1280\n NELEMENTS=8\n HAL_TX_NAME=readStatus\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n MAX_UPDATE_RATE=0.0\n [TRANSACTION_03]\n MB_TX_CODE=fnct_05_write_single_coil\n FIRST_ELEMENT=100\n NELEMENTS=1\n HAL_TX_NAME=setEnableout\n@@ -20141,15 +20141,15 @@\n NELEMENTS=8\n HAL_TX_NAME=XDrive04\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n \n 359 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 360 / 1224\n \n 6.8.5 Pins\n Note\n Yellow = New in MB2HAL 1.1 (LinuxCNC 2.9) To use these new features you have to set VERSION =\n 1.1.\n@@ -20176,15 +20176,15 @@\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.\n 6.8.5.6 fnct_06_write_single_register\n \u2014 mb2hal.m.n.float float in\n \u2014 mb2hal.m.n.int s32 in\n NELEMENTS needs to be 1 or PIN_NAMES must contain just one name. Both pin values are added and\n limited to 65535 (UINT16_MAX). Use one and let the other open (read as 0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 361 / 1224\n \n 6.8.5.7 fnct_15_write_multiple_coils\n \u2014 mb2hal.m.n.bit bit in\n 6.8.5.8 fnct_16_write_multiple_registers\n \u2014 mb2hal.m.n.float float in\n@@ -20216,15 +20216,15 @@\n \u2014 -b or --baud <rate> : set the baud rate - all networked VFDs must be the same\n \u2014 -p or --port <device path> : sets the port to use such as /dev/ttyUSB0\n \u2014 <name>=<slave#> : sets the HAL component/pin name and slave number.\n Debugging can be toggled by setting the debug pin true.\n Note\n Turning on debugging will result in a flood of text in the terminal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 362 / 1224\n \n 6.9.2 Pins\n Where <n> is mitsub_vfd or the name given during loading.\n \u2014 <n>.fwd (bit, in) True sets motion forward, False sets reverse.\n \u2014 <n>.run (bit, in) True sets the VFD in motion based on the .fwd pin.\n@@ -20289,15 +20289,15 @@\n #\n command full speed\n setp coolant.motor-cmd 60\n #\n allows us to see status\n setp coolant.monitor 1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 363 / 1224\n \n 6.9.4 Configuring the Mitsubishi VFD for serial usage\n 6.9.4.1 Connecting the Serial Port\n The Mitsubishi VFDs have an RJ-45 jack for serial communication.\n Since they use RS485 protocol, they can be networked together point to point.\n@@ -20335,15 +20335,15 @@\n \n 6.10.1 Pins\n In the following pins, parameters, and functions, <board> is the board ID. According to the naming\n conventions the first board should always have an ID of zero. However this driver sets the ID based\n on a pair of jumpers on the board, so it may be non-zero even if there is only one board.\n \u2014 (s32) motenc.<board>.enc-<channel>-count - Encoder position, in counts.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 364 / 1224\n \n \u2014 (float) motenc.<board>.enc-<channel>-position - Encoder position, in user units.\n \u2014 (bit) motenc.<board>.enc-<channel>-index - Current status of index pulse input.\n \u2014 (bit) motenc.<board>.enc-<channel>-idx-latch - Driver sets this pin true when it latches an index\n pulse (enabled by latch-index). Cleared by clearing latch-index.\n@@ -20396,15 +20396,15 @@\n Typically, the useful values are 0 (watchdog disabled) or 20 (8ms watchdog enabled, cleared by dacwrite).\n \u2014 (u32) motenc.<board>.led-view - Maps some of the I/O to onboard LEDs.\n \n 6.10.3 Functions\n \u2014 (funct) motenc.<board>.encoder-read - Reads all encoder counters.\n \u2014 (funct) motenc.<board>.adc-read - Reads the analog-to-digital converters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 365 / 1224\n \n \u2014 (funct) motenc.<board>.digital-in-read - Reads digital inputs.\n \u2014 (funct) motenc.<board>.dac-write - Writes the voltages to the DACs.\n \u2014 (funct) motenc.<board>.digital-out-write - Writes digital outputs.\n \u2014 (funct) motenc.<board>.misc-update - Updates misc stuff.\n@@ -20444,15 +20444,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 \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 366 / 1224\n \n 6.11.4 Parameters\n \u2014 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@@ -20489,15 +20489,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 367 / 1224\n \n 6.11.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@@ -20540,15 +20540,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 368 / 1224\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@@ -20592,15 +20592,15 @@\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 \u2014 (PPMC float output) ppmc.<port>.DAC.<channel>.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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 369 / 1224\n \n \u2014 (UPC bit input) ppmc.<port>.pwm.<channel>.enable - Enables a PWM generator.\n \u2014 (UPC float input) ppmc.<port>.pwm.<channel>.value - Value which determines the duty cycle of\n the PWM waveforms. The value is divided by pwm.<channel>.scale, and if the result is 0.6 the duty\n cycle will be 60%, and so on. Negative values result in the duty cycle being based on the absolute\n@@ -20643,15 +20643,15 @@\n on some PWM servo drives.\n \u2014 (USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time - Sets minimum time between direction change and step pulse, in units of 100 ns. Applies to a group of four consecutive step\n generators, as indicated by <channel-range>. Values between 200 ns and 25.5 \u00b5s can be specified.\n \u2014 (USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width - Sets width of step pulses, in units\n of 100 ns. Applies to a group of four consecutive step generators, as indicated by <channel-range>.\n Values between 200 ns and 25.5 \u00b5s may be specified.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 370 / 1224\n \n \u2014 (USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min - Sets minimum time between\n pulses, in units of 100 ns. Applies to a group of four consecutive step generators, as indicated by\n <channel-range>. Values between 200 ns and 25.5 \u00b5s can be specified. The maximum step rate is:\n \n@@ -20687,15 +20687,15 @@\n Note\n The Pluto P board requires EPP mode. Netmos98xx chips do not work in EPP mode. The Pluto P board\n will work on some computers and not on others. There is no known pattern to which computers work\n and which don\u2019t work.\n \n For more information on PCI EPP compatible parallel port cards see the LinuxCNC Supported Hardware page on the wiki.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 371 / 1224\n \n 6.13.1.2 Connectors\n \u2014 The Pluto-P board is shipped with the left connector presoldered, with the key in the indicated\n position. The other connectors are unpopulated. There does not seem to be a standard 12-pin IDC\n connector, but some of the pins of a 16P connector can hang off the board next to QA3/QZ3.\n@@ -20730,15 +20730,15 @@\n through these VCC pins. The required current is not yet known, but is probably around 50mA plus\n I/O current.\n \u2014 The regulator on the Pluto-P board is a low-dropout type. Supplying 5V at the power jack will allow\n the regulator to work properly.\n 6.13.1.6 PC interface\n \u2014 Only a single pluto_servo or pluto_step board is supported.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 372 / 1224\n \n 6.13.1.7 Rebuilding the FPGA firmware\n The src/hal/drivers/pluto_servo_firmware/ and src/hal/drivers/pluto_step_firmware/ subdirectories contain\n the Verilog source code plus additional files used by Quartus for the FPGA firmwares. Altera\u2019s Quartus\n II software is required to rebuild the FPGA firmware. To rebuild the firmware from the .hdl and other\n@@ -20777,15 +20777,15 @@\n corresponding quadrature channel is unused.\n \u2014 QZx - The Z (index) signal for quadrature counter X. May be used as a digital input if the index\n feature of the corresponding quadrature channel is unused.\n \u2014 INx - Dedicated digital input #x\n \u2014 OUTx - Dedicated digital output #x\n \u2014 GND - Ground\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 373 / 1224\n \n \u2014 VCC - +3.3V regulated DC\n \n Figure 6.10 \u2013 Pluto-Servo Pinout\n Table 6.41: Pluto-Servo Alternate Pin Functions\n@@ -20847,15 +20847,15 @@\n output\n XOR\u2019d with DN0 or DIR0\n When pwm-1-pwmdir is\n TRUE, this pin is the DIR\n output\n XOR\u2019d with DN1 or DIR1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 374 / 1224\n \n Table 6.41: (continued)\n Primary function\n \n Alternate Function\n@@ -20936,15 +20936,15 @@\n reported success with International Rectifier\u2019s integrated high-side/low-side drivers.\n \n 6.13.3 Pluto Step\n Pluto-step is suitable for control of a 3- or 4-axis CNC mill with stepper motors. The large number of\n inputs allows for a full set of limit switches.\n The board features:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 375 / 1224\n \n \u2014 4 step+direction channels with 312.5 kHz maximum step rate, programmable step length, space,\n and direction change times\n \u2014 14 dedicated digital outputs\n \u2014 16 dedicated digital inputs\n@@ -20964,15 +20964,15 @@\n \n 6.13.3.2 Input latching and output updating\n \u2014 Step frequencies for each channel are updated at different times.\n \u2014 Digital outputs are all updated at the same time.\n \u2014 Digital inputs are all latched at the same time.\n \u2014 Feedback positions for each channel are latched at different times.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 376 / 1224\n \n 6.13.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@@ -20989,15 +20989,15 @@\n Note\n Since this is a non-realtime program it can be affected by computer loading and latency. It is possible\n to lose communications which will be indicated by a change in the status output. One should always\n have an Estop circuit that kills the power to the unit in case of emergency.\n \n This component is loaded using the halcmd \u201dloadusr\u201d command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 377 / 1224\n \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@@ -21033,15 +21033,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.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 378 / 1224\n \n 6.15 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@@ -21083,15 +21083,15 @@\n \u2014 stg.<channel>.position - (float) Outputs a converted position.\n \u2014 stg.<channel>.dac-value - (float) Drives the voltage for the corresponding DAC.\n \u2014 stg.<channel>.adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n \u2014 stg.in-<pinnum> - (bit) Tracks a physical input pin.\n \u2014 stg.in-<pinnum>-not - (bit) Tracks a physical input pin, but inverted.\n \u2014 stg.out-<pinnum> - (bit) Drives a physical output pin\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 379 / 1224\n \n For each pin, <channel> is the axis number, and <pinnum> 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 The in-<pinnum> HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low.\n@@ -21127,15 +21127,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21173,15 +21173,15 @@\n \n 6.17 VFS11 VFD Driver\n This is a non-realtime HAL program to control the S11 series of VFDs 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21222,15 +21222,15 @@\n \u2014 <n>.frequency-command (float, out) current target frequency in Hz as set through speed-command\n (which is in RPM), from the VFD\n \u2014 <n>.frequency-out (float, out) current output frequency of the VFD\n \u2014 <n>.inverter-load-percentage (float, out) current load report from VFD\n \u2014 <n>.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 <n>.is-stopped (bit, out) true when the VFD reports 0 Hz output\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 382 / 1224\n \n \u2014 <n>.max-rpm (float, R) actual RPM limit based on maximum frequency the VFD may generate,\n and the motors nameplate values. For instance, if nameplate-HZ is 50, and nameplate-RPM_ is\n 1410, but the VFD may generate up to 80 Hz, then max-rpm would read as 2256 (80*1410/50). The\n frequency limit is read from the VFD at startup. To increase the upper frequency limit, the UL and\n@@ -21273,15 +21273,15 @@\n in src/hal/user_comps/vfs11_vfd/*.ini.\n [VFS11]\n # serial connection\n TYPE=rtu\n # serial port\n DEVICE=/dev/ttyS0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n # TCP server - wait for incoming connection\n TYPE=tcpserver\n # tcp portnumber for TYPE=tcpserver or tcpclient\n PORT=1502\n # TCP client - active outgoing connection\n TYPE=tcpclient\n@@ -21322,15 +21322,15 @@\n #\n # example usage of the VF-S11 VFD driver\n #\n #\n \n 383 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 384 / 1224\n \n loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd\n # connect the spindle direction pins to the VFD\n net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward\n net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse\n@@ -21370,15 +21370,15 @@\n TCPDEST:PORTNO.\n \n 6.17.8 Configuring the VFS11 VFD for Modbus usage\n 6.17.8.1 Connecting the Serial Port\n The VF-S11 has an RJ-45 jack for serial communication. Unfortunately, it does not have a standard\n RS-232 plug and logic levels. The Toshiba-recommended way is: connect the USB001Z USB-to-serial\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 385 / 1224\n \n conversion unit to the drive, and plug the USB port into the PC. A cheaper alternative is a homebrew\n interface ( hints from Toshiba support, circuit diagram).\n Note: the 24V output from the VFD has no short-circuit protection.\n Serial port factory defaults are 9600/8/1/even, the protocol defaults to the proprietary \u201dToshiba Inverter Protocol\u201d.\n@@ -21400,15 +21400,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 386 / 1224\n \n Chapitre 7\n \n Hardware Examples\n 7.1 PCI Parallel Port\n@@ -21439,15 +21439,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21483,15 +21483,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21534,15 +21534,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21585,15 +21585,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 390 / 1224\n \n achieve this you need spindle feedback from an encoder. Since the feedback and the commanded\n speed are not usually exactly the same you should to use the near component to determine that the\n two numbers are close enough.\n The connections needed are from the spindle velocity command signal to near.n.in1 and from the\n@@ -21634,15 +21634,15 @@\n addf mux4.0 servo-thread\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 391 / 1224\n \n # even if that means the commanded motion is not completed,\n # For position mode (the default), set to 0\n # In position mode the axis will move exactly jog-scale\n # units for each count, regardless of how long that might take,\n@@ -21689,15 +21689,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 392 / 1224\n \n # For position mode (the default), set to 0\n # In position mode the axis will move exactly jog-scale\n # units for each count, regardless of how long that might take,\n setp axis.x.jog-vel-mode 0\n@@ -21740,15 +21740,15 @@\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 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 non-realtime component for the Automation Direct GS2 VFDs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 393 / 1224\n \n loadusr -Wn spindle-vfd gs2_vfd -r 9600 -p none -s 2 -n spindle-vfd\n # connect the spindle direction pin to the GS2\n net gs2-fwd spindle-vfd.spindle-fwd <= spindle.N.forward\n # connect the spindle on pin to the GS2\n@@ -21773,15 +21773,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 394 / 1224\n \n Chapitre 8\n \n ClassicLadder\n 8.1 ClassicLadder Introduction\n@@ -21811,15 +21811,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 395 / 1224\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@@ -21855,15 +21855,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 396 / 1224\n \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@@ -21896,15 +21896,15 @@\n \n ClassicLadder Programming\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 397 / 1224\n \n construct logic checks and functions in a manner that is familiar to many systems integrators. Ladder\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@@ -21945,15 +21945,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22030,15 +22030,15 @@\n 8.2.4 Loading the ClassicLadder non-realtime 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 non-realtime module:\n loadusr classicladder\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22063,15 +22063,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22087,15 +22087,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 and\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 401 / 1224\n \n 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 did not work in the older versions. This was because it looked for the free code but found\n@@ -22109,15 +22109,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22125,15 +22125,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22141,15 +22141,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 404 / 1224\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@@ -22158,15 +22158,15 @@\n \u2014 Modify - opens the selected rung for editing\n Starting from the top left image:\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22193,21 +22193,21 @@\n \u2014 Compare - creates a compare block to compare variable to values or other variables, e.g. %W1<=5\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, e.g. %W2=7\n or %W1=%W2. ASSIGNMENT functions can only be placed at the right most side of the section 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 406 / 1224\n \n Figure 8.7 \u2013 Config Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22246,15 +22246,15 @@\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 \u2014 C - control (input) must be on for the timer to run (usually connect to E)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 408 / 1224\n \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 There are also Variables for timers that can be read and/or written to in compare or operate blocks.\n@@ -22292,15 +22292,15 @@\n There are also Variables for counters that can be read and/or written to in compare or operate blocks.\n \u2014 \u2019%C\u2019xx.D - Counter xx done (Boolean, read only)\n \u2014 \u2019%C\u2019xx.E - Counter xx empty overflow (Boolean, read only_)\n \u2014 \u2019%C\u2019xx.F - Counter xx full overflow (Boolean, read only)\n \u2014 \u2019%C\u2019xx.V - Counter xx current value (integer, read or write)\n \u2014 \u2019%C\u2019xx.P - Counter xx preset (integer, read or write)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22336,28 +22336,28 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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\n 5 and when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22387,15 +22387,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 412 / 1224\n \n A CALL COIL is used to go to a subroutine section then return, like a gosub in BASIC programming\n language.\n If you go to the sections manager window hit the add section button. You can name this section, select\n what language it will use (ladder or sequential), and select what type (main or subroutine).\n@@ -22452,15 +22452,15 @@\n \u2014 %Xxxx - Activity of step xxx (sequential language)\n \u2014 %X \u0300\n __xxx__.V \u0300 - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -22484,15 +22484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 - shows the variable that must be true for control to pass through to the next step.\n@@ -22511,15 +22511,15 @@\n With sequential programming: The variable %X \u0300\n __xxx__ (e.g., \u0300\n %X5) is used to see if a step is active.\n The variable %X \u0300\n __xxx__.V \u0300 (e.g., %X5.V) is used to see how long the step has been active. The %X and\n %X.v variables are use in LADDER logic. The variables assigned to the transitions (e.g., %B) control\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 415 / 1224\n \n whether the logic will pass to the next step. After a step has become active the transition variable that\n caused it to become active has no control of it anymore. The last step has to JUMP LINK back only to\n the beginning step.\n \n@@ -22545,21 +22545,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 non-realtime program this page\n will not be displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 416 / 1224\n \n Figure 8.12 \u2013 Modbus I/O Config\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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, e.g., /dev/ttyS0 ( or\n /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@@ -22579,15 +22579,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 418 / 1224\n \n \u2014 REGISTERS (WORDS) - Registers (Words/Numbers) map to IW, W, or QW variables (user selects).\n \u2014 1st MODBUS ELEMENT - The address (or register number) of the first element in a group (remember to set MODBUS ELEMENT OFFSET properly).\n \u2014 NUMBER OF ELEMENTS - The number of elements in this group.\n \u2014 LOGIC - You can invert the logic here.\n@@ -22625,15 +22625,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 419 / 1224\n \n \u2014 2 exclusive modes are available : ethernet using Modbus/TCP and serial using Modbus/RTU.\n \u2014 No parity is used.\n \u2014 If no port name for serial is set, TCP/IP mode will be used\u2026\n \u2014 The slave address is the slave address (Modbus/RTU) or the IP address.\n@@ -22659,24 +22659,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 421 / 1224\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@@ -22704,15 +22704,15 @@\n (2\n 1 to 125 (0x7D)\n Bytes)\n (2\n Calculated\n bytes) automatically\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 <Data-21 0 0 1 8E 36\n \n Slave address-1\n@@ -22769,15 +22769,15 @@\n \u2014 Error code = 2 (0x2) = illegal data address requested\n \u2014 Checksum = (0x8E36)\n \n Function\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 423 / 1224\n \n 8.2.11.3 Data response\n Looking in the Modbus protocol reference for Response:\n Table 8.4: Data response for function code 3 (read holding\n register)\n@@ -22838,15 +22838,15 @@\n Modbus. You must initialize Modbus when you first load the GUI by adding --modmaster.\n \u2014 If the section manager is placed on top of the section display, across the scroll bar and exit is clicked\n the non-realtime program crashes.\n \u2014 When using --modmaster you must load the ladder program at the same time or else only TCP will\n work.\n \u2014 reading/writing multiple registers in Modbus has checksum errors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 424 / 1224\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@@ -22864,55 +22864,55 @@\n \n 8.2.12.2 Adding Ladder Logic\n Now start up your config and select \u201dFile/Ladder Editor\u201d to open up the ClassicLadder GUI. You should\n see a blank Section Display and Sections Manager window as shown above. In the Section Display\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 425 / 1224\n \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 Figure 8.17 \u2013 Section Display with Grid\n Now click on the N.O. input in the Editor Window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 426 / 1224\n \n Figure 8.18 \u2013 Editor Window\n Now click in the upper left grid to place the N.O. Input into the ladder.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 427 / 1224\n \n Figure 8.19 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 428 / 1224\n \n Figure 8.20 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 429 / 1224\n \n Figure 8.21 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 430 / 1224\n \n Figure 8.22 \u2013 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@@ -22923,15 +22923,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 create\n the counter set the preset at the number you wish to reach before wrapping around to 0. The logic is\n if the counter value is over the preset then reset the counter and if the underflow is on then set the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 431 / 1224\n \n counter value to the preset value. As you can see in the example when the counter value is greater\n than the counter preset the counter reset is triggered and the value is now 0. The underflow output\n %Q2 will set the counter value at the preset when counting backwards.\n \n@@ -22940,15 +22940,15 @@\n 8.3.2 Reject Extra Pulses\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 an\n input the output of the timer is on for the duration of the time setting. Using a normally closed contact\n %TM0.Q the output of the timer blocks any further inputs from reaching our output until it times out.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 432 / 1224\n \n Figure 8.24 \u2013 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@@ -22962,15 +22962,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 433 / 1224\n \n Figure 8.25 \u2013 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@@ -22986,15 +22986,15 @@\n pin)\n Next we add the following lines to the custom_postgui.hal file\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 434 / 1224\n \n net estop-all-ok iocontrol.0.emc-enable-in <= classicladder.0.out-00\n # Request E-Stop Enable from PyVCP or external source\n net ext-estop-reset classicladder.0.in-03 <= pyvcp.py-reset\n # This line resets the E-Stop from LinuxCNC\n@@ -23024,36 +23024,36 @@\n <halpin>\u201dpy-reset\u201d</halpin>\n <text>\u201dReset\u201d</text>\n </button>\n </pyvcp>\n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 437 / 1224\n \n Chapitre 9\n \n Sujets avanc\u00e9s\n 9.1 Kinematics\n@@ -23081,15 +23081,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23142,15 +23142,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23171,15 +23171,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23211,15 +23211,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23254,15 +23254,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23295,15 +23295,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23346,15 +23346,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23385,87 +23385,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 445 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 446 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 447 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 448 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 449 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 450 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 451 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 452 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 453 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 454 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 455 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 456 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 457 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 458 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 459 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 460 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 461 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 462 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23494,27 +23494,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23524,15 +23524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23540,43 +23540,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23595,56 +23595,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23658,42 +23658,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23708,15 +23708,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23760,15 +23760,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23790,29 +23790,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 9.11 \u2013 Spindle/table tilting configuration\n \n 480 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 481 / 1224\n \n Figure 9.12 \u2013 Spindle tilting/rotary configuration\n \n 9.3.9 REFERENCES\n 1. AXIS MACHINE TOOLS: Kinematics and Vismach Implementation in LinuxCNC, RJ du Preez,\n@@ -23829,15 +23829,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 482 / 1224\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@@ -23879,15 +23879,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23925,15 +23925,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -23971,15 +23971,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24033,15 +24033,15 @@\n \n demonstrate\n \n M-code\n \n scripts\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24076,15 +24076,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24121,15 +24121,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24172,15 +24172,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24256,15 +24256,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24303,15 +24303,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -24354,15 +24354,15 @@\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 TOPLEVEL=toplevel.py\n # the higher the more verbose tracing of the Python plugin\n LOG_LEVEL = 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 492 / 1224\n \n You must also add the required Python file in your configuration folder.\n Upgrade an existing configuration\n 9.6.2.2 Picking a code\n Note that currently only a few existing codes may be redefined, whereas there are many free codes\n@@ -24400,15 +24400,15 @@\n behavior.\n If a G-code block contains several executable words on a line, these words are executed in a predefined\n order of execution, not in the order they appear in block.\n When you define a new executable code, the interpreter does not yet know where your code fits into\n this scheme. For this reason, you need to choose an appropriate modal group for your code to execute\n in.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 493 / 1224\n \n 9.6.2.6 An minimal example remapped code\n To give you an idea how the pieces fit together, let\u2019s explore a fairly minimal but complete remapped\n code definition. We choose an unallocated M-code and add the following option to the INI file:\n [RS274NGC]\n@@ -24453,15 +24453,15 @@\n argspec=<argspec>\n See description of the argspec parameter options. Optional.\n ngc=<ngc_basename>\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 494 / 1224\n \n python=<Python function name>\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 prolog=<Python function name>\n@@ -24503,15 +24503,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 495 / 1224\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@@ -24553,15 +24553,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#<q>]]\n (debug, Q word set: #<q>)\n o100 endif\n o<m400> endsub\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 496 / 1224\n \n \u2014 Executing M400 will fail with the message user-defined M400: missing: P.\n \u2014 Executing M400 P123 will display P word=123.000000.\n \u2014 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@@ -24604,15 +24604,15 @@\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 Assuming a definition like so (NB: this does not use argspec):\n REMAP=G88.1 modalgroup=1 py=involute\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 497 / 1224\n \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 import sys\n@@ -24656,15 +24656,15 @@\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 return msg\n return INTERP_OK\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 498 / 1224\n \n The examples described so far can be found in configs/sim/axis/remap/getting-started with complete\n working configurations.\n \n 9.6.4 Upgrading an existing configuration for remapping\n@@ -24708,15 +24708,15 @@\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 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 \u2014 Do we want to use an O-word procedure or do it all in Python code?\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 499 / 1224\n \n \u2014 Is the iocontrol HAL sequence (tool-prepare/tool-prepared and tool-change/tool-changed pins)\n good enough or do we need a different kind of HAL interaction for our tool changer (for example:\n more HAL pins involved with a different interaction sequence)?\n Depending on the answer, we have four different scenarios:\n@@ -24761,15 +24761,15 @@\n iocontrol pin correspondence in the examples\n iocontrol.0 pin\n tool-prepare\n \n motion pin\n digital-out-00\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iocontrol.0 pin\n tool-prepared\n tool-change\n tool-changed\n tool-prep-number\n tool-prep-pocket\n@@ -24822,15 +24822,15 @@\n index for tool items loaded from a tool table ([EMCIO]TOOL_TABLE) or via a tooldata database ([EMCIO]DB_PROGRAM).\n \n def change_prolog(self, **words):\n try:\n if self.selected_pocket < 0:\n return \u201dM6: no tool prepared\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 501 / 1224\n \n if self.cutter_comp_side:\n return \u201dCannot change tools with cutter radius compensation on\u201d\n self.params[\u201dtool_in_spindle\u201d] = self.current_tool\n self.params[\u201dselected_tool\u201d] = self.selected_tool\n@@ -24878,15 +24878,15 @@\n your NGC code.\n Again, most epilogs have a common scheme:\n 1. First, determine whether things went right in the remap procedure,\n 2. then do any commit and cleanup actions which can\u2019t be done in NGC code.\n 9.6.5.4 Configuring iocontrol with a remapped M6\n Note that the sequence of operations has changed: we do everything required in the O-word procedure - including any HAL pin setting/reading to get a changer going, and to acknowledge a tool\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 502 / 1224\n \n change - likely with motion.digital-* and motion-analog-* IO pins. When we finally execute the\n CHANGE_TOOL() command, all movements and HAL interactions are already completed.\n Normally only now iocontrol would do its thing as outlined here. However, we don\u2019t need the HAL\n pin wiggling anymore - all iocontrol is left to do is to accept we\u2019re done with prepare and change.\n@@ -24931,15 +24931,15 @@\n \n o<mychange> sub\n M6 (use built in M6 behavior)\n (.. move to tool length switch, probe and set tool length..)\n o<mychange> endsub\n m2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 503 / 1224\n \n Attention\n When redefining a built-in code, do not specify any leading zeroes in G- or M-codes - for\n example, say REMAP=M1 .., not REMAP=M01 ....\n \n@@ -24986,15 +24986,15 @@\n \n The minimal ngc prepare procedure again looks like so:\n o<prepare> sub\n ; returning a positive value to commit:\n o<prepare> endsub [1]\n m2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 504 / 1224\n \n And the epilog:\n def prepare_epilog(self, **words):\n try:\n if self.return_value > 0:\n@@ -25042,15 +25042,15 @@\n The suggested on_abort procedure would look like so (adapt to your needs):\n o<on_abort> sub\n G54 (origin offsets are set to the default)\n G17 (select XY plane)\n G90 (absolute)\n G94 (feed mode: units/minute)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 505 / 1224\n \n M48 (set feed and speed overrides)\n G40 (cutter compensation off)\n M5 (spindle off)\n G80 (cancel modal motion)\n@@ -25094,15 +25094,15 @@\n \n Note\n INI and HAL variable expansion is optional and can be disabled in the INI file\n \n If more fine grained recovery action is needed, use the idiom laid out in the previous example:\n \u2014 Define an epilog function, even if it is just to signal an error condition,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 506 / 1224\n \n \u2014 pass a negative value from the handler to signal the error,\n \u2014 inspect the return value in the epilog function,\n \u2014 take any recovery action needed,\n \u2014 return the error message string from the handler, which will set the interpreter error message and\n@@ -25149,15 +25149,15 @@\n \n r1\n \n causes the following (note R is sticky, and Z is sticky since the plane is XY):\n 1. g843.ngc is called with words x=1, y=2, z=3, r=1\n 2. g843.ngc is called with words x=3, y=4, z=3, p=2, r=1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 507 / 1224\n \n 3. g843.ngc is called with words x=6, y=7, z=3, r=1\n 4. The G84.3 cycle is canceled.\n Besides creating new cycles, this provides an easy method for repackaging existing G-codes which\n do not behave as cycles. For instance, the G33.1 Rigid Tapping code does not behave as a cycle. With\n@@ -25193,15 +25193,15 @@\n Note that the interpreter instance is available here as self, so you could also run:\n ;py,print(self.tool_table[0].toolno)\n \n The emcStatus structure is accessible, too:\n ;py,from emctask import *\n ;py,print(emcstat.io.aux.estop)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 508 / 1224\n \n 9.6.9 Programming Embedded Python in the RS274NGC Interpreter\n 9.6.9.1 The Python plugin namespace\n The namespace is expected to be laid out as follows:\n oword\n@@ -25239,15 +25239,15 @@\n def __delete__(self):\n # add any cleanup/state saving actions here\n if self.task: # as above\n pass\n else:\n pass\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 509 / 1224\n \n This function may be used to initialize any Python-side attributes which might be needed later, for\n instance in remap or O-word functions, and save or restore state beyond what PARAMETER_FILE provides.\n If there are setup or cleanup actions which are to happen only in the milltask Interpreter instance (as\n opposed to the interpreter instance which sits in the gcode Python module and serves preview/progress display purposes but nothing else), this can be tested for by evaluating self.task.\n@@ -25287,15 +25287,15 @@\n self.return_value (float).\n #<value_returned>\n Indicates the last procedure called did return or endsub with an explicit value. 1.0 if true. Set\n to 0.0 on each call. Exposed in Interp was self.value_returned (int).\n See also tests/interp/value-returned for an example.\n Calling conventions for prolog= and epilog= subroutines Arguments are:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 510 / 1224\n \n self\n The interpreter instance.\n words\n Keyword parameter dictionary. If an argspec was present, words are collected from the current\n@@ -25338,15 +25338,15 @@\n This signals task to stop read ahead, execute all queued operations, execute the queue-buster\n operation, synchronize interpreter state with machine state, and then signal the interpreter to\n continue. At this point the function is resumed at the statement following the yield .. statement.\n Dealing with queue-buster: Probe, Tool change and waiting for a HAL pin Queue busters interrupt a procedure at the point where such an operation is called, hence the procedure needs to be\n restarted after the interpreter synch(). When this happens the procedure needs to know if it is restarted, and where to continue. The Python generator method is used to deal with procedure restart.\n This demonstrates call continuation with a single point-of-restart:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 511 / 1224\n \n def read_pin(self,*args):\n # wait 5secs for digital-input 00 to go high\n emccanon.WAIT(0,1,2,5.0)\n # cede control after executing the queue buster:\n@@ -25387,15 +25387,15 @@\n def insert_param(self, **words): # in the remap module\n print(\u201dinsert_param call level=\u201d,self.call_level)\n self.params[\u201dmyname\u201d] = 123\n self.params[1] = 345\n self.params[2] = 678\n return INTERP_OK\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 512 / 1224\n \n def retrieve_param(self, **words):\n print(\u201dretrieve_param call level=\u201d,self.call_level)\n print(\u201d#1=\u201d, self.params[1])\n print(\u201d#2=\u201d, self.params[2])\n@@ -25441,15 +25441,15 @@\n the interpreter\u2019s error message\n Errors can be trapped in the following Pythonic way:\n import interpreter\n interpreter.throw_exceptions = 1\n ...\n try:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n self.execute(\u201dG3456\u201d)\n \n 513 / 1224\n \n #\n \n@@ -25498,15 +25498,15 @@\n \u2014 Import that module from the TOPLEVEL script.\n # namedparams.py\n # trivial example\n def _pi(self):\n return 3.1415926535\n #<circumference> = [2 * #<radius> * #<_pi>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 514 / 1224\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\n convention for globals.\n@@ -25543,15 +25543,15 @@\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 \u2014 The following three steps are applicable only if the iocontrol-v2 component is used:\n \u2014 If parameter 5600 (fault indicator) is greater than zero, this indicates a Toolchanger fault, which\n is handled as follows:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 515 / 1224\n \n \u2014 if parameter 5601 (error code) is negative, this indicates a hard fault and the prolog aborts with\n an error message.\n \u2014 if parameter 5601 (error code) is greater equal zero, this indicates a soft fault. An informational\n message is displayed and the prolog continues.\n@@ -25591,15 +25591,15 @@\n \n This will permit cycle_prolog to determine the compatibility of any axis words give in the block, see\n below.\n Actions of cycle_prolog\n \u2014 Determine whether the words passed in from the current block fulfill the conditions outlined under\n Canned Cycle Errors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 516 / 1224\n \n \u2014 Export the axis words as <x>, #<y> etc; fail if axis words from different groups (XYZ) (UVW) are\n used together, or any of (ABC) is given.\n \u2014 Export L- as #<l>; default to 1 if not given.\n \u2014 Export P- as #<p>; fail if p less than 0.\n@@ -25628,15 +25628,15 @@\n particular in the presence of optional parameters. Therefore, the calling convention has been extended\n to use something remotely similar to the Python keyword arguments model.\n See LINKTO G-code/main Subroutines: sub, endsub, return, call.\n 9.6.12.2 Nested remapped codes\n Remapped codes may be nested just like procedure calls - that is, a remapped code whose NGC procedure refers to some other remapped code will execute properly.\n The maximum nesting level remaps is currently 10.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 517 / 1224\n \n 9.6.12.3 Sequence number during remaps\n \n Sequence numbers are propagated and restored like with O-word calls. See tests/remap/nested-remaps/wo\n for the regression test, which shows sequence number tracking during nested remaps three levels\n@@ -25701,15 +25701,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<pydevd> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 518 / 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@@ -25726,15 +25726,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 519 / 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@@ -25793,15 +25793,15 @@\n 16\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 520 / 1224\n \n Table 9.6: (continued)\n #\n 17\n 18\n@@ -25882,15 +25882,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 521 / 1224\n \n Table 9.9: (continued)\n #\n 49\n \n@@ -25968,15 +25968,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 522 / 1224\n \n Table 9.13: Table of Allocated G-codes 80-89\n #\n 80\n 81\n@@ -26160,15 +26160,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 523 / 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@@ -26191,15 +26191,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 524 / 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@@ -26237,15 +26237,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 525 / 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@@ -26284,15 +26284,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 526 / 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@@ -26329,15 +26329,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 527 / 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@@ -26374,15 +26374,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 528 / 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@@ -26416,15 +26416,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 529 / 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@@ -26470,15 +26470,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 530 / 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@@ -26521,15 +26521,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 531 / 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@@ -26575,15 +26575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 532 / 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@@ -26635,15 +26635,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n [-inc incrementvalue]\n \n [-size integer]\n [-loc center|+x+y]\n [-autoresume]\n [-delay delay_secs]\n@@ -26703,15 +26703,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 534 / 1224\n \n test.ngc\n #<test> = 123.352\n o101 while [[#<test> MOD 60 ] NE 0]\n (debug,#<test>)\n@@ -26748,15 +26748,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 535 / 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@@ -26785,15 +26785,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 536 / 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@@ -26832,15 +26832,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 537 / 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@@ -26882,15 +26882,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 538 / 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@@ -26921,15 +26921,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 539 / 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@@ -26966,15 +26966,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 540 / 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@@ -27015,15 +27015,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 541 / 1224\n \n #! /usr/bin/env python3\n import linuxcnc\n s = linuxcnc.stat()\n s.poll()\n@@ -27069,15 +27069,15 @@\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 # function to respond to \u2019u\u2019 (put) commands\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 542 / 1224\n \n ...\n #-----------------------------------------------------------# Begin:\n from tooldb import tooldb_tools\n # identify known tools\n@@ -27116,50 +27116,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 543 / 1224\n \n Deuxi\u00e8me partie\n \n Usage\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 544 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 545 / 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\n and the Axis Section of the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 546 / 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@@ -27198,15 +27198,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 547 / 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@@ -27249,15 +27249,15 @@\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 \u2014 Pause - Pause a program.\n \u2014 Resume - Resume running from a pause.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 548 / 1224\n \n \u2014 Stop - Stop a running program. When run is selected after a stop the program will start from the\n beginning.\n \u2014 Stop at M1 - If an M1 is reached, and this is checked, program execution will stop on the M1 line.\n Press Resume to continue.\n@@ -27298,15 +27298,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 549 / 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@@ -27353,15 +27353,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 550 / 1224\n \n 10.1.3.2 Toolbar buttons\n From left to right in the AXIS display, the toolbar buttons (keyboard shortcuts shown [in brackets])\n are:\n \u2014\n@@ -27446,15 +27446,15 @@\n \n is shown if the axis has been homed.\n \n is shown on the right side of the coordinate position number if the axis is on one of\n A limit symbol\n its limit switches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 551 / 1224\n \n To properly interpret the coordinate position numbers, refer to the Position: indicator in the status bar.\n If the position is Machine Actual, then the displayed number is in the machine coordinate system. If it\n is Relative Actual, then the displayed number is in the offset coordinate system. When the coordinates\n displayed are relative and an offset has been set, the display will include a cyan machine origin\n@@ -27491,15 +27491,15 @@\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 the Grid menu under View. When enabled, the grid is shown in the top and rotated top views; when\n coordinate system is not rotated, the grid is shown in the front and side views as well. The presets in\n the Grid menu are controlled by the INI file item [DISPLAY]GRIDS. If unspecified, the default is 10mm\n 20mm 50mm 100mm 1in 2in 5in 10in.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 552 / 1224\n \n Specifying a very small grid may decrease performance.\n Interacting By left-clicking on a portion of the preview plot, the line will be highlighted in both the\n graphical and text displays. By left-clicking on an empty area, the highlighting will be removed.\n By dragging with the left mouse button pressed, the preview plot will be shifted (panned).\n@@ -27517,15 +27517,15 @@\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 Many of the items described below are not useful on all machines. When AXIS detects that a particular pin is not connected in HAL, the corresponding item in the Manual Control tab is removed. For\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 553 / 1224\n \n instance, if the HAL pin spindle.0.brake is not connected, then the Brake button will not appear on\n the screen. If the environment variable AXIS_NO_AUTOCONFIGURE is set, this behavior is disabled\n and all the items will appear.\n The Axis group AXIS allows you to manually move the machine. This action is known as jogging.\n@@ -27557,15 +27557,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 554 / 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@@ -27584,15 +27584,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 555 / 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@@ -27608,15 +27608,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 556 / 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@@ -27697,15 +27697,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Auto\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 557 / 1224\n \n Table 10.1: (continued)\n Keystroke\n S\n ESC\n@@ -27744,15 +27744,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 558 / 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@@ -27788,15 +27788,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<n> 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 559 / 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@@ -27812,44 +27812,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 560 / 1224\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 561 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 562 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 563 / 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@@ -27857,15 +27857,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=<filename> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 564 / 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@@ -27887,15 +27887,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 565 / 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@@ -27931,15 +27931,15 @@\n Example of .axisrc file\n root_window.bind(\u201d<Control-q>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 566 / 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@@ -27975,15 +27975,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 567 / 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@@ -28066,15 +28066,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 568 / 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@@ -28113,15 +28113,15 @@\n root_window.bind(\u2019<Control-Key-5>\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019<Control-Key-6>\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019<Control-Key-7>\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019<Control-Key-8>\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019<Control-Key-9>\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019<Control-Key-0>\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n root_window.bind(\u2019<Key-quoteleft>\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019<Key-1>\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019<Key-2>\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019<Key-3>\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019<Key-4>\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019<Key-5>\u2019,lambda event: set_feedrate(50))\n@@ -28160,15 +28160,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 569 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 570 / 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@@ -28209,15 +28209,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 571 / 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@@ -28273,15 +28273,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 572 / 1224\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28378,15 +28378,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 573 / 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@@ -28416,15 +28416,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 574 / 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@@ -28459,15 +28459,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 575 / 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@@ -28479,15 +28479,15 @@\n other versions, please inform about problems and / or solutions on the LinuxCNC forum or the German\n CNC Ecke Forum or LinuxCNC users mailing list.\n The minimum screen resolution for GMOCCAPY for the normal layout (without side panels) is 980 x\n 750 Pixel, so it should fit to every standard screen. It is recommended to use screens with minimum\n resolution of 1024x768. There is also a configuration which fits for 800x600 screens (introduced in\n GMOCCAPY 3.4.8).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 576 / 1224\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 CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n@@ -28501,15 +28501,15 @@\n \u2014 -logo <path to logo file>: 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 \u2014 gmoccapy.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 577 / 1224\n \n \u2014 gmoccapy_4_axis.ini\n \u2014 lathe_configs/gmoccapy_lathe.ini\n \u2014 lathe_configs/gmoccapy_lathe_imperial.ini\n \u2014 gmoccapy_left_panel.ini\n@@ -28550,15 +28550,15 @@\n If no path or file is given, GMOCCAPY will use as default <your_machinename>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 578 / 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@@ -28595,15 +28595,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 579 / 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@@ -28646,15 +28646,15 @@\n ; will jog the machine to a given position\n O<go_to_position> sub\n G17\n G21\n G54\n G61\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 580 / 1224\n \n G40\n G49\n G80\n G90\n@@ -28669,15 +28669,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 581 / 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@@ -28720,15 +28720,15 @@\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 gladevcp h_buttonlist.glade\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 582 / 1224\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 gladevcp -c gladevcp -u hitcounter.py -H manual-example.hal manual-example.ui\n \n@@ -28742,15 +28742,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 583 / 1224\n \n Here are some examples:\n ntb_preview\n \n box_right - and GMOCCAPY in MDI mode\n@@ -28774,15 +28774,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 <span background=\u201d#ff0000\u201d foreground=\u201d#ffffff\u201d>info-message</span \u2190> test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 584 / 1224\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>small</small>, <big>big</big>, <b>bold</b <i>italic</i>,\n@@ -28823,15 +28823,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 \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 585 / 1224\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 being applied to the GUI.\n@@ -28875,15 +28875,15 @@\n \n You can specify where to save the log file:\n [DISPLAY]\n LOG_FILE = gmoccapy.log\n \n If LOG_FILE is not set, logging happens to $HOME/<base_log_name>.log.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 586 / 1224\n \n 10.2.5 HAL Pins\n GMOCCAPY exports several HAL pins to be able to react to hardware devices. The goal is to get a\n GUI that may be operated in a tool shop, completely/mostly without mouse or keyboard.\n Note\n@@ -28923,15 +28923,15 @@\n \u2014 gmoccapy.h-button.button-4 (bit IN)\n \u2014 gmoccapy.h-button.button-5 (bit IN)\n \u2014 gmoccapy.h-button.button-6 (bit IN)\n \u2014 gmoccapy.h-button.button-7 (bit IN)\n \u2014 gmoccapy.h-button.button-8 (bit IN)\n \u2014 gmoccapy.h-button.button-9 (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 587 / 1224\n \n As the buttons in the bottom list will change according to the mode and other influences, the hardware\n buttons will activate the displayed functions. So you don\u2019t have to take care about switching functions\n around in HAL, because that is done completely by GMOCCAPY!\n For a three axes XYZ machine the HAL pins will react as shown in the following three tables:\n@@ -29050,15 +29050,15 @@\n save as\n \n Select File\n go to home directory\n one directory level up\n move selection left\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 588 / 1224\n \n Table 10.5: (continued)\n Pin\n Tool Mode\n gmoccapy.h-button.button-4\n@@ -29092,15 +29092,15 @@\n back\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 a touch panel, or protect it from\n excessive use by placing hardware buttons around the panel. They are available in a sample configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -29141,15 +29141,15 @@\n \u2014 gmoccapy.spc_feed.scale (float IN) - A value to scale the output value (handy to change units/min\n to units/sec)\n \u2014 gmoccapy.spc_feed.value (float OUT) - Value of the widget\n \u2014 gmoccapy.spc_feed.scaled-value (float OUT) - Scaled value of the widget .SPINDLE\n \u2014 gmoccapy.spc_spindle.increase (bit IN) - As long as True the value of the slider will increase\n \u2014 gmoccapy.spc_spindle.decrease (bit IN) - As long as True the value of the slider will decrease\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 590 / 1224\n \n \u2014 gmoccapy.spc_spindle.scale (float IN) - A value to scale the output value (handy to change units/min to units/sec)\n \u2014 gmoccapy.spc_spindle.value (float OUT) - Value of the widget\n \u2014 gmoccapy.spc_spindle.scaled-value (float OUT) - Scaled value of the widget .RAPIDS\n \u2014 gmoccapy.spc_rapid.increase (bit IN) - As long as True the value of the slider will increase\n@@ -29187,15 +29187,15 @@\n \n For the standard XYZ config following HAL pins will be available:\n \u2014 gmoccapy.jog.axis.jog-x-plus (bit IN)\n \u2014 gmoccapy.jog.axis.jog-x-minus (bit IN)\n \u2014 gmoccapy.jog.axis.jog-y-plus (bit IN)\n \u2014 gmoccapy.jog.axis.jog-y-minus (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 591 / 1224\n \n \u2014 gmoccapy.jog.axis.jog-z-plus (bit IN)\n \u2014 gmoccapy.jog.axis.jog-z-minus (bit IN)\n If you use a 4 axes configuration, there will be two additional pins:\n \u2014 gmoccapy.jog.jog-<your fourth axis letter >-plus (bit IN)\n@@ -29231,15 +29231,15 @@\n GMOCCAPY offers also a HAL pin to output the selected jog increment:\n \u2014 gmoccapy.jog.jog-increment (float OUT)\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 \u2014 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 592 / 1224\n \n 10.2.5.7 Error/Warning Pins\n \u2014 gmoccapy.error (bit OUT) - Indicates an error, so a light can lit or even the machine may be\n stopped. It will be reset with the pin gmoccapy.delete-message.\n \u2014 gmoccapy.delete-message (bit IN) - Will delete the first error and reset the gmoccapy.error pin\n@@ -29277,15 +29277,15 @@\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 net gmoccapy-pin gmoccapy.messages.pin\n \n For more information about HAL files and the net command see the HAL Basics.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 593 / 1224\n \n 10.2.5.9 Spindle Feedback Pins\n There are two pins for spindle feedback:\n \u2014 gmoccapy.spindle_feedback_bar (float IN) - Pin to show the spindle speed on the spindle bar.\n \u2014 gmoccapy.spindle_at_speed_led (bit IN) - Pin to lit the is-at-speed-led.\n@@ -29309,15 +29309,15 @@\n \u2014 gmoccapy.toolchange-confirm (bit IN) - Confirms tool change\n Usually they are connected like this for a manual tool change:\n net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change\n net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed\n net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number\n net tool-prep-loop iocontrol.0.tool-prepare <= iocontrol.0.tool-prepared\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 594 / 1224\n \n Note\n Please take care, that this connections have to be done in the postgui HAL file.\n \n Tool Offset Pins These pins allow you to show the active tool offset values for X and Z in the tool\n@@ -29348,15 +29348,15 @@\n the settings page! See Settings Page Tool Measurement.\n \n It might be also a good idea to take a look at the tool measurement video, see tool measurement\n related videos.\n Tool Measurement in GMOCCAPY is done a little bit different to many other GUIs. You should follow\n these steps:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 595 / 1224\n \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@@ -29376,15 +29376,15 @@\n from a G-code subroutine, so the code can react to different values.\n \u2014 gmoccapy.toolmeasurement (bit OUT) - Enable or not tool measurement\n \u2014 gmoccapy.blockheight (float OUT) - The measured value of the top face of the workpiece\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 596 / 1224\n \n 10.2.6.2 INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n [RS274NGC]\n@@ -29429,15 +29429,15 @@\n \u2014 toplevel.py\n \u2014 remap.py\n \u2014 stdglue.py\n From <your_linuxcnc-dev_directory>/configs/sim/gmoccapy/macros copy\n \u2014 on_abort.ngc\n \u2014 change.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 597 / 1224\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@@ -29473,15 +29473,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 598 / 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@@ -29494,15 +29494,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 Window decorated - Allows the title bar to be hidden. (default: title bar visible)\n \u2014 hide cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \u2014 hide tooltips - Hides the tool tips.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 599 / 1224\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@@ -29526,15 +29526,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 600 / 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@@ -29550,15 +29550,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 601 / 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@@ -29600,15 +29600,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 602 / 1224\n \n The file selection screen will use the filters you have set in the INI file, if there aren\u2019t any filters\n given, you will only see NGC files. The path will be set according to the INI settings in [DISPLAY]\n PROGRAM_PREFIX.\n Jump to dir You can set here the directory to jump to if you press the corresponding button in the\n@@ -29622,15 +29622,15 @@\n To create custom icon themes, see section Icon Theme for details.\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 resulting in a very complex HAL file. Imagine a user having an MPG Wheel with 100 ipr and he wants\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 603 / 1224\n \n to slow down the max. vel. from 14000 to 2000 mm/min, that needs 12000 impulses, resulting in 120\n turns of the wheel! Or an other user having a MPG Wheel with 500 ipr and he wants to set the spindle\n override which has limits from 50 to 120 % so he goes from min to max within 70 impulses, meaning\n not even 1/4 turn.\n@@ -29672,15 +29672,15 @@\n \u2014 Do not use unlock code - There will be no security check.\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 \u2014 Starting RPM - Sets the rpm to be used if the spindle is started and no S value has been set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 604 / 1224\n \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@@ -29700,15 +29700,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 605 / 1224\n \n 10.2.7.3 Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n Note\n@@ -29721,15 +29721,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 606 / 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@@ -29771,15 +29771,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 607 / 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@@ -29821,15 +29821,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 608 / 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@@ -29869,21 +29869,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 609 / 1224\n \n Figure 10.19 \u2013 Normal Lathe\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 610 / 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@@ -29896,15 +29896,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 611 / 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@@ -29916,15 +29916,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 612 / 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@@ -29941,15 +29941,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 613 / 1224\n \n 10.2.12.2 Not ending macro\n If you use a macro without movement, like this one:\n o<zeroxy> sub\n G92.1\n@@ -29976,15 +29976,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 614 / 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=<filename>.\n Typically <filename> would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -29997,15 +29997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 615 / 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@@ -30037,15 +30037,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 616 / 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@@ -30076,39 +30076,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 617 / 1224\n \n Figure 10.21 \u2013 Gscreen Default Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.22 \u2013 Gscreen Silverdragon Screen\n \n 618 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 619 / 1224\n \n Figure 10.23 \u2013 Gscreen Spartan Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 620 / 1224\n \n Figure 10.24 \u2013 Gscreen Gaxis Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 621 / 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@@ -30116,15 +30116,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 is programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 622 / 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@@ -30169,15 +30169,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 623 / 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@@ -30208,15 +30208,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 624 / 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@@ -30230,15 +30230,15 @@\n this. (This is already 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 625 / 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@@ -30246,15 +30246,15 @@\n its 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 626 / 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@@ -30298,15 +30298,15 @@\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 \u2014 It assumes the power button is called button_machine_on and the F2 key controls it.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 627 / 1224\n \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 # override Gscreen Functions\n@@ -30354,15 +30354,15 @@\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 Then in the HandlerClass, add the function:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 628 / 1224\n \n self.update_filepath(self, obj, path):\n self.widgets.my_path_label.set_text(path)\n \n When LinuxCNC loads a new file, Gstat will send a callback message to the function update_filepath. In\n@@ -30405,15 +30405,15 @@\n 7. Initializes Python\u2019s binding to HAL to build a non-realtime 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 10. If there is a handler file gscreen parses it, and registers the function calls into Gscreen\u2019s namespace.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 629 / 1224\n \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 13. Gscreen checks to see if there is a preference function call (initialize_preferences(self)) in the\n@@ -30458,15 +30458,15 @@\n no 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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 630 / 1224\n \n MESSAGE_BOLDTEXT\n is generally a title.\n MESSAGE_TEXT\n is below that and usually longer.\n@@ -30508,15 +30508,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 631 / 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 its 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@@ -30555,25 +30555,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 632 / 1224\n \n 10.5.1.1 QtDragon\n \n Figure 10.26 \u2013 QtDragon - 3 or 4 axis 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 633 / 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@@ -30588,15 +30588,15 @@\n You can only have one of each section (e.g., [HAL]) in the INI file. If you see in these docs multiple\n section options, place them all under the one appropriate section name.\n \n 10.5.2.1 Display\n In the section [DISPLAY] change the DISPLAY = assignment to read:\n \u2014 qtdragon for a small version\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 634 / 1224\n \n \u2014 qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for (respectably) verbose, debug, info or quiet output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n@@ -30633,15 +30633,15 @@\n [DISPLAY]\n DEFAULT_SPINDLE_0_SPEED = 500\n SPINDLE_INCREMENT = 200\n MIN_SPINDLE_0_SPEED = 100\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_POWER = 1500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 635 / 1224\n \n 10.5.2.6 Jogging increments\n Set selectable jogging increments.\n These increments can be user changed.\n [DISPLAY]\n@@ -30688,15 +30688,15 @@\n panel.\n If using stackedWidget_mainTab, a button labelled User will appear.\n Pressing this button will cycle through displaying all available panels (specified for this location) on\n the main tab area.\n Sample adding a builtin panel to the utilities tab, i.e., a graphical animated machine using\n the vismach library.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 636 / 1224\n \n [DISPLAY]\n EMBED_TAB_NAME = Vismach demo\n EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz\n EMBED_TAB_LOCATION = tabWidget_utilities\n@@ -30720,15 +30720,15 @@\n ~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap- \u2190subroutines: \\\n ~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib\n \n QtVCP\u2019s NGCGUI program also need to know where to open for subroutine selection and pre-selection.\n NGCGUI_SUBFILE_PATH must point to an actual path on your system and also a path described in\n SUBROUTINE_PATHS.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 637 / 1224\n \n [DISPLAY]\n # NGCGUI subroutine path.\n # Thr path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n@@ -30770,15 +30770,15 @@\n jpg = image-to-gcode\n py = python\n \n 10.5.2.13 Probe/Touchplate/Laser Settings\n QtDragon has INI entries for two optional probing tab screens available. Comment/uncomment which\n ever you prefer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 638 / 1224\n \n \u2014 Versa probe is a QtVCP ported version of a popular GladeVCP probing panel.\n \u2014 Basic Probe is a QtVCP ported version based on the third party basic probe screen.\n Both perform similar probing routines, though Versa probe optionally handles auto tool measurement.\n [PROBE]\n@@ -30820,15 +30820,15 @@\n \n 10.5.2.16 Macro Buttons\n QtDragon has up to ten convenience buttons for calling macro actions.\n These could also call OWord routines if desired.\n In the sample configurations they are labelled for moving between current user system origin (zero\n point) and Machine system origin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 639 / 1224\n \n User origin is the first MDI command in the INI list, machine origin is the second.\n This example shows how to move Z axis up first. The commands are separated by the ;.\n The label is set after the comma. The symbols \\n adds a line break.\n [MDI_COMMAND_LIST]\n@@ -30867,15 +30867,15 @@\n F1 - Estop on/off\n F2 - Machine on/off\n F12 - Style Editor\n Home - Home All Joint of the Machine\n Escape - Abort Movement\n Pause - Pause Machine Movement\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 640 / 1224\n \n 10.5.4 Buttons\n Buttons that are checkable will change their text colour when checked. This is controlled by the\n stylesheet/theme\n \n@@ -30928,15 +30928,15 @@\n qtdragon.spindle-inhibit\n \n QtDragon spindle speed display and spindle-at-speed LED require that spindle.0.speed-in be connected to spindle speed feedback.\n Encoder or VFD feedback could be used, as long as the feedback is in revolutions per second (RPS).\n If no feedback is available you can have the display show the requested speed by connecting pins like\n so:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 641 / 1224\n \n net spindle-speed-feedback spindle.0.speed-out-rps => spindle.0.speed-in\n \n This bit output pin can be connected to turn on a laser:\n qtdragon.btn-laser-on\n@@ -30988,15 +30988,15 @@\n <=\n <=\n \n iocontrol.0.tool-change\n iocontrol.0.tool-changed\n iocontrol.0.tool-prep-number\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 642 / 1224\n \n 10.5.9 Broche\n The screen is intended to interface to a VFD, but will still work without it.\n There are a number of VFD drivers included in the LinuxCNC distribution.\n It is up to the end user to supply the appropriate driver and HAL file connections according to his own\n@@ -31043,15 +31043,15 @@\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 \n Z level compensation is a bed levelling/distortion correction function typically used in 3D printing\n or engraving. It uses a HAL non-realtime component which utilizes the external offsets feature of\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 643 / 1224\n \n LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of\n cubic, linear or nearest (0, 1, 2 respectively). If none is specified or if an invalid number is specified,\n the default is assumed to be cubic.\n When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must\n@@ -31069,15 +31069,15 @@\n QtDragon_hd version.\n \n \u2014 In qtdragon_hd, switch to the file tab and press the load G-code Ripper button.\n \u2014 Set origin to match the origin of the G-code file to be probed.\n \u2014 Under G-Code Operations, check Auto Probe.\n \u2014 File -> Open G-Code File (The file you will run after compensation)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 644 / 1224\n \n \u2014 If necessary, make adjustments and press Recalculate.\n \u2014 Press Save G-Code File - Probe Only.\n \u2014 Save the generated file to the nc_files folder.\n \u2014 Exit gcode_ripper.\n@@ -31142,15 +31142,15 @@\n <= axis.y.pos-cmd\n <= axis.z.pos-cmd\n <= qtdragon.comp-on\n => qtdragon.eoffset-zlevel- \u2190-\n \n # add Z level and scaled spindle raise level values together\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 645 / 1224\n \n net eoffset-spindle-count\n scaled-s32-sums.0.in0\n net eoffset-zlevel-count\n scaled-s32-sums.0.in1\n@@ -31173,15 +31173,15 @@\n 1. how far above the table the probe trigger point is (tool setter height) and\n 2. how far above the table the top of the workpiece is.\n This operation has to be done every time the tool is changed as the tool length is not saved.\n For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0\n or use a probing routine, the height from table to top of workpiece parameter is not taken into account\n and can be ignored. It is only for the tool setter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 646 / 1224\n \n 10.5.12.1 Versa Probe\n \n Figure 10.29 \u2013 QtDragon - Versa Probe Option\n Versa probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n@@ -31202,15 +31202,15 @@\n but fast enough to not waste time waiting for movement. Recommendation: 200-500 mm/min.\n \u2014 PROBE:: Once initial contact has been made and the probe is retracted, it will wait for 0.5 seconds\n before performing the search again at a lower speed, the probe velocity. This lower speed ensures\n the machine can stop movement as quickly as possible on contact with the workpiece.\n \u2014 RAPID:: Axis movements not associated with searching are done at the speed defined by RAPID in\n machine units per minute.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 647 / 1224\n \n \u2014 SIDE/EDGE LENGTH:: This is the distance the probe will move at the rapid rate to the position\n where it will begin a search. If measuring a corner, it will move EDGE LENGTH units away from\n the corner, then move away from the workpiece by XY CLEARANCE, lower by Z CLEARANCE and\n begin the initial search. If measuring an inner circle, then EDGE LENGTH should be set to the\n@@ -31228,15 +31228,15 @@\n CLEARANCE to 0.\n There are three toggle buttons:\n \u2014 Auto Zero This selects if after probing the relevant axis is set to zero in the current user system.\n \u2014 Auto Skew This selects if after probing, the system will be rotated or just display the calculated\n rotation.\n \u2014 Tool Measure This (if integrated) turns auto tool probing on and off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 648 / 1224\n \n 10.5.12.2 Basic probe\n \n Figure 10.30 \u2013 QtDragon - Basic Probe Option\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles. The\n@@ -31254,15 +31254,15 @@\n \u2014 Probe Search: the speed of the first rough search in machine units\n \u2014 Probe Feed: the speed of the second fine search in machine units\n \u2014 Step Off : back off and re-probe distance\n \u2014 Max XY Distance: the maximum distance the probe will search for in X and Y before failing with\n error\n \u2014 Max Z Distance: the maximum distance the probe will search for in Z before failing with error\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 649 / 1224\n \n \u2014 XY Clearance: clearance distance from probe to wall edge before rapid traversing down in Z and\n rough probing\n \u2014 Z Clearance: clearance distance from probed to top of material\n \u2014 Extra Depth: distance from top of material to desired probe depth\n@@ -31305,15 +31305,15 @@\n 3. probe wall twice (rough and fine),\n 4. move diagonally to the other wall as set by EDGE WIDTH and XY CLEARANCE,\n 5. probe wall twice,\n 6. raise probe up by Z CLEARANCE + EXTRA DEPTH (returns to starting height),\n 7. rapid back to starting corner (now calculated using the probed walls),\n 8. if auto zero button is enabled, set X and Y of the current user system to zero.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 650 / 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@@ -31332,15 +31332,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 651 / 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 Tool Measurement in QtDragon is done with the following steps:\n@@ -31359,15 +31359,15 @@\n fit the block height. The advantage of this way is, that you do not need a reference tool.\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 technique.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 652 / 1224\n \n The sequence of events (using the default files):\n \u2014 Rapid move in Z to position defined in the INI\u2019s [TOOL_CHANGE] Z\n \u2014 Rapid move in X and Y to number defined in INI\u2019s [TOOL_CHANGE] X and Y\n \u2014 Request tool change\n@@ -31383,15 +31383,15 @@\n 10.5.14.1 Work Piece Height Probing\n \n Figure 10.33 \u2013 QtDragon_hd - Work piece Height probing\n This program probes 2 user specified locations in the Z axis and calculates the difference in heights.\n Note\n This is only available in the QtDragon_hd version.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 653 / 1224\n \n Enable Probe Position Set Buttons\n \u2014 When 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@@ -31435,15 +31435,15 @@\n Reflects screen entry.\n \u2014 qtversaprobe.probeheight (HAL_FLOAT) the toolsetter probe switch height. Reflects screen entry.\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. Reflects screen entry.\n \u2014 qtversaprobe.backoffdist (HAL_FLOAT) the distance the probe backs off after triggering. Reflects\n screen entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 654 / 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@@ -31486,15 +31486,15 @@\n \u2014 fast probe\n \u2014 slow probe\n \u2014 go to TOOLCHANGE Z position\n Z_MAX_CLEAR is the Z position to go to before moving to the tool setter when using the Travel to\n Toolsetter button.\n Travel to Toolsetter Action sequence:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 655 / 1224\n \n \u2014 go to VERSA_TOOLSETTER Z_MAX_CLEAR Z position\n \u2014 go to VERSA_TOOLSETTER XY position\n \u2014 go to VERSA_TOOLSETTER Z position.\n [VERSA_TOOLSETTER]\n@@ -31540,15 +31540,15 @@\n \n 10.5.16 Laser buttons\n The LASER ON/OFF button in intended to turn an output on or off which is connected to a small laser\n crosshair projector. When the crosshair is positioned over a desired reference point on the workpiece,\n the REF LASER button can be pushed, which then sets the X and Y offsets to the values indicated by\n the LASER OFFSET fields in the Settings page.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 656 / 1224\n \n 10.5.17 Tabs Description\n Tabs allow the user to select the most appropriate info/control on the top three panels. If the on\n screen keyboard is showing and the user wishes to hide it but keep the current tab, they can do that\n by pressing the current show tab. In QtDragon, there is a splitter handle between the G-code text\n@@ -31580,15 +31580,15 @@\n \u2014 Zero Current Tool Position\n \u2014 Set Tool Offset Directly\n \u2014 Reset To Last\n 10.5.17.5 Status Tab\n A time-stamped log of important machine or system events will be shown here. Machine events would\n be more suited to an operator, where the system events may help in debugging problems.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 657 / 1224\n \n 10.5.17.6 Probe Tab\n Probing routines options are displayed on this tab. Depending on INI options, this could be VersaProbe\n or BasicProbe style. They are functionally similar. QtDragon_hd will also show a smaller graphics\n display window.\n@@ -31622,15 +31622,15 @@\n \u2014 The left arrow moves backward one HTML page.\n \u2014 The right arrow moves forward one HTML page.\n If you wish to include a custom default HTML page, name it default_setup.html and place it in your\n configuration folder.\n Custom QtVCP panels can be displayed in this tab by setting the EMBED_TAB_LOCATION option to\n tabWidget_setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 658 / 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@@ -31644,15 +31644,15 @@\n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_uti\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 659 / 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@@ -31685,15 +31685,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 660 / 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@@ -31743,15 +31743,15 @@\n qproperty-spindle_down_action: true;\n }\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 661 / 1224\n \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 for\n more information about QtVCP in general.\n QtDragon can also utilize QtVCP\u2019s rc file to do minor python code modifications without using a custom\n@@ -31759,15 +31759,15 @@\n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/qtdragonrc.py\n \n See Modifying Screens for more information about customization.\n \n Figure 10.36 \u2013 QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 662 / 1224\n \n 10.6 NGCGUI\n \n Figure 10.37 \u2013 NGCGUI embedded into AXIS\n \n@@ -31778,15 +31778,15 @@\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 Using NGCGUI or PyNGCGUI:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 663 / 1224\n \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 \u2014 The entry boxes can have a default value and an label that are identified by special comments in\n@@ -31823,15 +31823,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 664 / 1224\n \n \u2014 iquad.ngc - internal quadrilateral\n \u2014 ohex.ngc - outside hexagon\n \u2014 oquad.ngc - outside quadrilateral\n \u2014 qpex_mm.ngc - demo of qpockets (mm based)\n@@ -31873,15 +31873,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 665 / 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@@ -31923,15 +31923,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 666 / 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@@ -31997,15 +31997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 667 / 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@@ -32042,15 +32042,15 @@\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 \u2014 EMBED_TAB_NAME = PyNGCGUI - name to appear on embedded tab\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 668 / 1224\n \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 The EMBED_TAB_LOCATION specifier is not used for the AXIS GUI. While PyNGCGUI can be embedded\n@@ -32087,15 +32087,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n [RS274NGC]\n ...\n SUBROUTINE_PATH\n USER_M_PATH\n \n 669 / 1224\n@@ -32178,15 +32178,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Note:\n \n 670 / 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@@ -32229,15 +32229,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 671 / 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@@ -32285,15 +32285,15 @@\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 Example: [DISPLAY]NGCGUI_SUBFILE = \u201d\u201d\n Note: Use one or more items to specify NGCGUI-compatible subfiles or gcmc programs that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 672 / 1224\n \n require a tab page on startup.\n A \u201dCustom\u201d tab will be created when the filename is \u201d\u201d.\n A user can use a \u201dCustom\u201d tab to browse the file system and identify preamble, subfile, and\n postamble files.\n@@ -32336,15 +32336,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 673 / 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@@ -32390,15 +32390,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 discouraged 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 674 / 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@@ -32444,15 +32444,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 675 / 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@@ -32497,15 +32497,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 676 / 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@@ -32518,22 +32518,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 677 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 678 / 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@@ -32551,15 +32551,15 @@\n #<feedrate> = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i#<ra> f#<feedrate>\n g3 i[0-#<radius_b>]\n o<simp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 679 / 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@@ -32575,15 +32575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 680 / 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@@ -32618,15 +32618,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 681 / 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@@ -32661,15 +32661,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 682 / 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@@ -32690,15 +32690,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 683 / 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@@ -32749,15 +32749,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. Version\n history can be seen by visiting this link which will show the latest available version. The installed\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 684 / 1224\n \n QtPlasmaC version is displayed in the title bar. See Update QtPlasmaC for information on updating\n QtPlasmaC.\n \n 10.8.2 License\n@@ -32773,25 +32773,25 @@\n there are 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 685 / 1224\n \n Figure 10.40 \u2013 16:9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 686 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 687 / 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@@ -32799,15 +32799,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 from here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 688 / 1224\n \n Following these instructions will yield a machine with the current stable branch of LinuxCNC (v2.9)\n on Debian 12 (Bookworm).\n 10.8.4.2 Package Installation (Buildbot) If The User Has Linux on Debian 12 (Bookworm)\n Follow the instructions from the Updating LinuxCNC on Debian Bookworm section from here.\n@@ -32848,15 +32848,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 689 / 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@@ -32937,15 +32937,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -33014,15 +33014,15 @@\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 o = 0.5 * a * (v / a)^2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 691 / 1224\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 the overrun would be 3 mm.\n Imperial example: given a Z axis MAX_ACCELERATION of 24 in/s2 and MAX_VELOCITY of 2.4 in/s,\n@@ -33050,47 +33050,47 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.43 \u2013 PnCConf QtPlasmaC Options\n \n 692 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.44 \u2013 StepConf QtPlasmaC Options\n \n 693 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.45 \u2013 QtPlasmaC User Buttons\n \n 694 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 695 / 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 directory: ~/linuxcnc/configs/<machine_name>.\n The way the newly created QtPlasmaC configuration can be run from the terminal command line\n slightly differs depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 696 / 1224\n \n For a run in place installation:\n ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n After running the above command LinuxCNC should be running with the QtPlasmaC GUI visible.\n@@ -33112,25 +33112,25 @@\n For a run in place installation enter the following command in a terminal window:\n ~/linuxcnc-dev/lib/python/qtvcp/designer/install_script\n \n 10.8.5.6 Initial Setup\n The following heights diagram will help the user visualize the different heights involved in plasma\n cutting and how they are measured:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 697 / 1224\n \n Click on the Parameters Tab to view the CONFIGURATION section which shows the user settable\n parameters. It is necessary to ensure every one of these settings is tailored to the machine.\n To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following\n steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on\n the Z axis position while running a G-code program. These steps simply allow the user to more easily\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 698 / 1224\n \n set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to\n Z axis MINIMUM_LIMIT.\n Note\n The user should be familiar with the recommended Z Axis Settings.\n@@ -33167,15 +33167,15 @@\n 9. If the table has a laser or camera for sheet alignment, a scribe, or uses offset probing then the\n required offsets need to be applied by following the procedure described in Peripheral Offsets.\n 10. CONGRATULATIONS! The user should now have a working QtPlasmaC Configuration.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 699 / 1224\n \n Important\n IF USING A Mesa Electronics THCAD THEN THE Voltage Scale VALUE WAS OBTAINED MATHEMATICALLY. IF THE USER INTENDS TO USE CUT VOLTAGES FROM A MANUFACTURE\u2019S CUT\n CHART THEN IT WOULD BE ADVISABLE TO DO MEASUREMENTS OF ACTUAL VOLTAGES AND\n FINE TUNE THE Voltage Scale AND Voltage Offset.\n@@ -33202,15 +33202,15 @@\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-plasmac2qt\n \n The following screen will be displayed:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 700 / 1224\n \n Table 10.10: Mandatory Settings\n Field\n INI FILE IN\n EXISTING\n@@ -33238,15 +33238,15 @@\n 2 - Estop is a button.\n \n ESTOP:1\n \n Optional Setting - This setting is not required unless the machine has a laser for sheet\n alignment. Leave this blank if it is not used/required. Leave this blank if it is not used/required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Field\n Laser On HAL Pin\n \n Description\n Power on a laser crosshair for sheet\n alignment.\n@@ -33289,15 +33289,15 @@\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 702 / 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@@ -33311,15 +33311,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 703 / 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@@ -33358,15 +33358,15 @@\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 Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page VI of the finder General Technical\n Information document.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 704 / 1224\n \n Calculations:\n If using a Mesa card, the input resistance of a 7I96 is 4700 \u03a9 (symbol R)(always consult the product\n manual associated with the revision being used as these values sometimes vary between revisions),\n giving a contact current of 5.1 mA (symbol I) assuming a supply voltage (symbol U) of 24 V (I = U/R) 2 .\n@@ -33406,15 +33406,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 705 / 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 <machine_name>.ini\n@@ -33467,15 +33467,15 @@\n Note\n The configuration files (<machine_name>.ini and <machine_name>.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 <machine_name>.prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 706 / 1224\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific <machine_name>.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@@ -33524,15 +33524,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 707 / 1224\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@@ -33573,15 +33573,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 708 / 1224\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@@ -33598,15 +33598,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 709 / 1224\n \n Table 10.14: (continued)\n Name\n PH:\n PD:\n@@ -33682,15 +33682,15 @@\n CYCLE START\n CYCLE PAUSE\n \n CYCLE STOP\n \n FEED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 710 / 1224\n \n Table 10.15: (continued)\n Name\n RAPID\n \n@@ -33762,15 +33762,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 711 / 1224\n \n Table 10.18: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -33862,15 +33862,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\n option is configured in the [POWERMAX] section of the\n <machine_name>.prefs file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 712 / 1224\n \n Table 10.18: (continued)\n Name\n Status\n \n@@ -33938,15 +33938,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -34026,15 +34026,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 714 / 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@@ -34047,30 +34047,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 715 / 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 hide 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 716 / 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 This tab is used to display configuration parameters that are modified infrequently.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n@@ -34092,15 +34092,15 @@\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 This sets the number of times QtPlasmaC will attempt to start\n the arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 717 / 1224\n \n Table 10.25: (continued)\n Name\n Retry Delay\n \n@@ -34177,15 +34177,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 718 / 1224\n \n Table 10.27: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34236,15 +34236,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 719 / 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@@ -34331,15 +34331,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 720 / 1224\n \n Table 10.32: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34401,15 +34401,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 721 / 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 hide this tab so machine settings cannot be modified by unauthorized personnel. This\n may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a\n@@ -34425,15 +34425,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 722 / 1224\n \n Table 10.33: (continued)\n Name\n LED\n Background\n@@ -34511,15 +34511,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 723 / 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@@ -34560,15 +34560,15 @@\n Prior to the backup being made, the machine log will be saved to a file in the configuration directory named machine_log_<date>_<time>.txt where <date> and <time> are formatted as described\n above. This file along with up to five previous machine logs will also be included in the backup.\n These files are not required by QtPlasmaC and are safe to delete at any time.\n 10.8.8.7 STATISTICS Tab\n The STATISTICS Tab provides statistics to allow for the tracking of consumable wear and job run times.\n These statistics are shown for the current job as well as the running total. Previous job statistics are\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 724 / 1224\n \n reset once the next program is run. The total values may be reset either individually by clicking the\n corresponding \u201dRESET\u201d button, or they may all be reset together by clicking \u201dRESET ALL\u201d.\n The RS485 PMX STATISTICS panel will be only be displayed if the user has Hypertherm PowerMax\n communications and a valid RS485 connection to the PowerMax is established. This panel will show\n@@ -34580,15 +34580,15 @@\n 10.8.9 Using QtPlasmaC\n Once QtPlasmaC is successfully installed, no Z axis motion is required to be part of the G-code cut\n program. In fact, if any Z axis references are present in the cut program, the standard QtPlasmaC\n configuration will remove them during the program loading process.\n For reliable use of QtPlasmaC the user should NOT use any Z axis offsets other than the coordinate\n system offsets (G54-G59.3).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 725 / 1224\n \n QtPlasmaC will automatically add a line of G-code to move the Z axis to the correct height at the\n beginning of every G-code program.\n Version Information - QtPlasmaC will display versioning information in the title of the main window. The information will be displayed as followed \u201dQtPlasmaC vN.XXX.YYY - powered by QtVCP on\n LinuxCNC vZ.Z.Z\u201d where N is the version of QtPlasmaC, XXX is the version of the HAL component\n@@ -34623,15 +34623,15 @@\n Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code\n syntax for QtPlasmaC to run a G-code program using a torch for cutting is M3 $0 S1 to begin a cut\n and M5 $0 to end a cut.\n For backwards compatibility it is permissible to use M3 S1 in lieu of M3 $0 S1 to begin a cutting job\n and M5 in lieu of M5 $0 to end a cutting job. Note, that this applies to cutting jobs only, for scribe and\n spotting jobs the $n tool identifier is mandatory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 726 / 1224\n \n 10.8.9.4 Coordinates\n See recommended Z axis settings.\n Each time LinuxCNC (QtPlasmaC) is started Joint homing is required. This allows LinuxCNC (QtPlasmaC) to establish the known coordinates of each axis and set the soft limits to the values specified in\n the <machine_name>.ini file in order to prevent the machine from crashing into a hard stop during\n@@ -34670,15 +34670,15 @@\n material change codes from the G-code file.\n It is also possible to not use the material file and automatically load materials from within the G-code\n file.\n Material numbers in the materials file do not need to be consecutive nor do they need to be in numerical order.\n The following variables are mandatory and an error message will appear if any are not found when\n the material file is loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 727 / 1224\n \n \u2014 PIERCE_HEIGHT\n \u2014 PIERCE_DELAY\n \u2014 CUT_HEIGHT\n \u2014 CUT_SPEED\n@@ -34733,15 +34733,15 @@\n \n It is possible to add new material, delete material, or edit existing material from the PARAMETERS\n tab.. It is also possible to achieve this by using magic comments in a G-code file.\n The material file may be edited with a text editor while LinuxCNC is running. After any changes have\n been saved, press Reload in the MATERIAL section of the PARAMETERS Tab to reload the material\n file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 728 / 1224\n \n 10.8.9.7 Manual Material Handling\n For manual material handling, the user would manually select the material from the materials list in\n the MATERIAL section of the PARAMETERS Tab before starting the G-code program. In addition to\n selecting materials with materials list in the MATERIAL section of the PARAMETERS Tab, the user\n@@ -34778,15 +34778,15 @@\n .\n .\n M5 $0\n \n Note\n Returning to the default material prior to the end of the program is possible with the code M190 P-1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 729 / 1224\n \n 10.8.9.9 Material Addition Via Magic Comments In G-code\n By using \u201dmagic comments\u201d in a G-code file it is possible to do the following:\n \u2014 Add new materials to the <machine_name>_material.cfg file.\n \u2014 Edit existing materials in the <machine_name>_material.cfg file.\n@@ -34848,15 +34848,15 @@\n kw\n th\n \n Description\n Sets the kerf width.\n Sets the THC status (0=disabled, 1=enabled).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n ca\n cv\n pe\n gp\n cm\n@@ -34901,41 +34901,41 @@\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-materials\n \n This will bring up the Material Converter Main dialog box with Manual selected as the default.\n Select one of:\n \u2014 Manual - to manually create a new material file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 731 / 1224\n \n \u2014 SheetCam - to convert a SheetCam tool file.\n \n For SheetCam only, select whether the user requires a metric or imperial output file.\n \u2014 Fusion 360 - to convert a Fusion 360 tool file.\n \n To convert:\n 1. Select the Input File to be converted, press INPUT to bring up a file selector or directly enter\n the file in the entry box.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 732 / 1224\n \n 2. Select the Output File to write to, press OUTPUT to bring up a file selector or directly enter the\n file in the entry box. This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg.\n If necessary, the user could select a different file and hand edit the <machine_name>_material.cfg\n file.\n 3. Click CREATE/CONVERT and the new material file will be created.\n For both a Manual creation or a Fusion 360 conversion, a dialog box will show with all available\n parameters displayed for input. Any entry marked with *** is mandatory and all other entries are\n optional depending on the user\u2019s configuration needs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 733 / 1224\n \n Note\n If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it\n will be overwritten.\n \n@@ -34981,15 +34981,15 @@\n 1. Press the LASER button and hold for longer than 750 mSec.\n 2. LASER button label will change to LASER and the HAL pin named qtplasmac.laser_on will be\n turned off.\n 3. Release the LASER button.\n If an alignment laser has been set up then it is possible to use the laser during CUT RECOVERY for\n accurate positioning of the new start coordinates.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 734 / 1224\n \n 10.8.9.12 CAMERA\n \n QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n@@ -35003,15 +35003,15 @@\n Y axis = n.n\n Camera port = 0\n \n where n.n is distance from the center line of the torch to the camera\u2019s cross hairs.\n To set the origin with zero rotation:\n 1. Jog until the cross hairs are on top of the desired origin point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 735 / 1224\n \n 2. Press MARK EDGE. The MARK EDGE button label will change to SET ORIGIN and the GOTO\n ORIGIN button will be disabled.\n 3. Press SET ORIGIN. The SET ORIGIN button label will change to MARK EDGE and the GOTO\n ORIGIN button will be enabled.\n@@ -35054,15 +35054,15 @@\n In order to use this feature, LinuxCNC\u2019s Adaptive Feed Control (M52) must be turned on (P1).\n To enable Paused Motion The preamble of the G-code must contain the following line:\n M52 P1\n \n To turn off Paused Motion at any point, use the following command:\n M52 P0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 736 / 1224\n \n 10.8.9.15 Pause At End Of Cut\n This feature can be used to allow the arc to \u201dcatch up\u201d to the torch position to fully finish the cut. It\n is usually required for thicker materials and is especially useful when cutting stainless steel.\n Using this feature will cause all motion to pause at the end of the cut while the torch is still on.\n@@ -35110,15 +35110,15 @@\n Immediate:\n \u2014 M67 (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for example)\n will happen at the beginning of the next motion command. If there is no subsequent motion command, the output changes will not occur. It is best practice to program a motion code (G0 or G1\n for example) right after a M67.\n \u2014 M68 (Immediate) - These commands happen immediately as they are received by the motion controller. Since these are not synchronized with motion, they will break blending. This means if these\n codes are used in the middle of active motion codes, the motion will pause to activate these commands.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 737 / 1224\n \n Examples:\n \u2014 M67 E3 Q0 would set the velocity to 100% of CutFeedRate.\n \u2014 M67 E3 Q40 would set the velocity to 40% of CutFeedRate.\n \u2014 M67 E3 Q60 would set the velocity to 60% of CutFeedRate.\n@@ -35157,15 +35157,15 @@\n in the THC Section of the MAIN Tab, by setting or resetting the motion.digital-out-02 pin with the\n M-Codes M62-M65:\n \u2014 M62 P2 will disable THC (Synchronized with Motion)\n \u2014 M63 P2 will enable THC (Synchronized with Motion)\n \u2014 M64 P2 will disable THC (Immediately)\n \u2014 M65 P2 will enable THC (Immediately)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 738 / 1224\n \n It is important to thoroughly understand the difference between Synchronized with Motion and\n Immediate:\n \u2014 M62 and M63 (Synchronized with Motion) - The actual change of the specified output (P2 (THC)\n for example) will happen at the beginning of the next motion command. If there is no subsequent\n@@ -35206,15 +35206,15 @@\n 1. If the THC is disabled, or the THC is enabled but not active, then the IHS skip will occur if the\n start of the cut is less than Skip IHS distance from the last successful probe.\n 2. If the THC is enabled and active, then the IHS skip will occur if the start of the cut is less than\n Skip IHS distance from the end of the last cut.\n A value of zero for Skip IHS will disable all IHS skipping.\n Any errors encountered during a cut will disable IHS skipping for the next cut if Skip IHS is enabled.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 739 / 1224\n \n 10.8.9.21 Probing\n Probing may be done with either ohmic sensing or a float switch. It is also possible to combine the\n two methods, in which case the float switch will provide a fallback to ohmic probing. An alternative\n to ohmic probing is Offset Probing\n@@ -35254,15 +35254,15 @@\n used to set the correct measured height.\n The probe could be a mechanically deployed probe, a permanently mounted proximity sensor or even\n simply a stiff piece of wire extending about 0.5 mm (0.2\u201d) below the torch tip. If the probe is mechanically deployed then it needs to extend/retract rather quickly to avoid excessive probing times and\n would commonly be pneumatically operated.\n To use this feature, the user must set the probe\u2019s offset from the torch center by following the procedure described in Peripheral Offsets.\n To modify the offsets manually, the user could edit either or both the following options in the [OFFSET_PROBING] section of the <machine_name>.prefs file:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 740 / 1224\n \n X axis = n.n\n Y axis = n.n\n Delay = t.t\n \n@@ -35302,15 +35302,15 @@\n It is also recommended that holes with a diameter of less than 32 mm (1.26\u201d) are cut at 60% of the\n feed rate used for profile cuts. This should also lock out THC due to velocity constraints.\n QtPlasmaC can utilize G-code commands usually set by a CAM Post Processor (PP) to aid in hole cutting\n or if the user does not have a PP or the user\u2019s PP does not support these methods then QtPlasmaC\n can automatically adapt the G-code to suit. This automatic mode is disabled by default.\n There are three methods available for improving the quality of small holes:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 741 / 1224\n \n 1. Velocity Reduction - Reducing the velocity to approximately 60% of the CutFeedRate.\n 2. Arc Dwell (Pause At End) - Keeping the torch on for a short time at the end of the hole while\n motion is stopped to allow the arc to catch up.\n 3. Over cut - Turning the torch off at the end of the hole then continue along the path.\n@@ -35353,15 +35353,15 @@\n QtPlasmaC G-code parser if it reaches an M5 command without seeing a M63 P3 or M65 P3.\n After the torch is turned off the hole path will be followed for a default length of 4 mm (0.157\u201d). This\n distance may be specified by adding #<oclength> = n to the G-code file.\n \u2014 M62 P3 will turn the torch off (Synchronized with Motion)\n \u2014 M63 P3 will allow the torch to be turned on (Synchronized with Motion)\n \u2014 M64 P3 will turn the torch off (Immediately)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 742 / 1224\n \n \u2014 M65 P3 will allow the torch to be turned on (Immediately)\n It is important to thoroughly understand the difference between Synchronized with motion and\n Immediate:\n \u2014 M62 and M63 (Synchronized with Motion) - The actual change of the specified output (P2 (THC)\n@@ -35408,15 +35408,15 @@\n The default hole size for QtPlasmaC hole sensing is 32 mm (1.26\u201d). It is possible to change this value\n with the following command in a G-code file:\n \u2014 #<h_diameter> = nn - To set a diameter (nn) in the same units system as the rest of the G-code\n file.\n The default velocity for QtPlasmaC small holes is 60% of the current feed rate. It is possible to change\n this value with the following command in a G-code file:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 743 / 1224\n \n \u2014 #<h_velocity> = nn - to set the percentage (nn) of the current feed rate required.\n Over cut If Hole Sensing modes 2 or 4 are active, QtPlasmaC will over cut the hole in addition to the\n velocity changes associated with modes 1 and 3.\n The default over cut length for QtPlasmaC hole sensing is 4 mm (0.157\u201d). It is possible to change this\n@@ -35449,15 +35449,15 @@\n to running a G-code program.\n The machine needs to be homed before commencing a single cut.\n A single cut will commence from the machine\u2019s current X/Y position.\n Automatic Single Cut\n This is the preferred method. The parameters for this method are entered in the following dialog box\n that is displayed after pressing a user button which has been coded to run single cut:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 744 / 1224\n \n 1. Jog to the required X/Y start position.\n 2. Set required appropriate material, or edit the Feed Rate for the default material in the PARAMETERS Tab.\n 3. Press the assigned single cut user button.\n 4. Enter the length of the cut along the X and/or Y axes.\n@@ -35478,15 +35478,15 @@\n 1. Jog to the required X/Y start position.\n 2. Start the procedure by pressing F9. The jog speed will be automatically set to the feed rate of the\n currently selected material. The jog label will blink to indicate that the jog speed is temporarily\n being overridden (jog speed manipulation will be disabled while a manual cut is active). CYCLE\n START will change to MANUAL CUT and blink.\n 3. After probing the torch will fire.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 745 / 1224\n \n 4. When the Arc OK is received the machine can be jogged along the cut line using the jog keys.\n 5. The Z height will remain locked at the cut height for the duration of the manual cut, regardless\n of the Torch Height Controller ENABLE status.\n 6. When the cut is complete press F9 or Esc or the CYCLE STOP button.\n@@ -35524,15 +35524,15 @@\n \n 10.8.9.29 Mesh Mode (Expanded Metal Cutting)\n QtPlasmaC is capable of cutting of expand (mesh) metal provided the machine has a pilot arc torch\n and it is capable of Constant Pilot Arc (CPA) mode.\n Mesh Mode disables the THC and also ignores a lost Arc OK signal during a cut. It can be selected\n by checking the Mesh Mode check button in the CONTROL section of the MAIN Tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 746 / 1224\n \n If the machine has RS485 communications enabled with a Hypertherm PowerMax plasma cutter, selecting Mesh Mode will automatically override the Cut Mode for the currently selected material and\n set it to cut mode 2 (CPA). When Mesh Mode is disabled, the Cut Mode will be return to the default\n cut mode for the currently selected material.\n It is also possible to start a Mesh Mode cut without receiving an Arc OK signal by checking the\n@@ -35558,15 +35558,15 @@\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n This mode may also be used in conjunction with Mesh Mode if the user doesn\u2019t require an Arc OK\n signal to begin the cut.\n Both Mesh Mode and Ignore Arc OK can be enabled/disabled at any time during a job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 747 / 1224\n \n 10.8.9.31 Cut Recovery\n \n This feature will produce a CUT RECOVERY panel that will allow the torch to be moved away from\n the cut path during a paused motion event in order to position the torch over a scrap portion of the\n@@ -35593,15 +35593,15 @@\n laser would cause the machine to move out of bounds then an error message will be displayed.\n To use a laser for cut recovery when paused during a cut:\n 1. Click the LASER button.\n 2. LASER button will change to disabled, the HAL pin named qtplasmac.laser_on will be turned on\n and the X and Y axis will offset so that the laser cross hairs will indicate the starting coordinates\n of the cut when it is resumed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 748 / 1224\n \n 3. Continue the cut recovery as described above.\n If a laser offset is in effect when CANCEL MOVE is pressed then this offset will also be cleared.\n Note\n Cut recovery movements will be limited to a radius of 10 mm (0.4\u201d) from either the point the program\n@@ -35626,15 +35626,15 @@\n subroutine and clicks \u201dSELECTED nn\u201d then an error message will be displayed that includes the\n O-code name of the subroutine.\n It is not possible to use Run From Line if previous G-code has set cutter compensation active. If the\n user selects a line while cutter compensation is active and clicks \u201dSELECTED nn\u201d then an error\n message will be displayed.\n It is possible to select a new line while Run From Line is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n USE LEADIN\n LEADIN LENGTH\n LEADIN ANGLE\n \n CANCEL\n@@ -35689,15 +35689,15 @@\n QtPlasmaC.\n There are two HAL output pins used to operate the scribe, the first pin is used to arm the scribe which\n moves the scribe to the surface of the material. After the Arm Delay has elapsed, the second pin is\n used to start the scribe. After the On Delay has elapsed, motion will begin.\n Using QtPlasmaC after enabling the scribe requires the selection of either the torch or the scribe in\n each G-code file as a LinuxCNC tool.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 750 / 1224\n \n The first step is to set the offsets for the scribe by following the procedure described in Peripheral\n Offsets.\n The final step is to set the scribe delays required:\n 1. Arm Delay - allows time for the scribe to descend to the surface of the material.\n@@ -35741,15 +35741,15 @@\n 1. Set the arc voltage Threshold in the Spotting section of the PARAMETERS Tab. Setting the\n voltage threshold to zero will cause the delay timer to begin immediately upon starting the torch.\n Setting the voltage threshold above zero will cause the delay timer to begin when the arc voltage\n reaches the threshold voltage.\n 2. Set the Time On in the Spotting section of the PARAMETERS Tab. When the Time On timer has\n elapsed, the torch will turn off. Times are adjustable from 0 to 9999 milliseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 751 / 1224\n \n The torch is then turned on in G-code with the M3 $2 S1 command which selects the plasma torch\n as a spotting tool.\n To turn the torch off, use the G-code command M5 $2.\n For more information on multiple tools, see multiple tools.\n@@ -35783,28 +35783,28 @@\n 10.8.9.35 Virtual Keyboard Custom Layouts\n Virtual keyboard support is available for only the \u201donboard\u201d onscreen keyboard. If it is not already on\n the system it may be installed by typing the following in a terminal:\n sudo apt install onboard\n \n The following two custom layouts are used for soft key support:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 752 / 1224\n \n Figure 10.48 \u2013 Number keypad - used for the CONVERSATIONAL Tab and the PARAMETERS Tab\n \n Figure 10.49 \u2013 Alpha-numeric keypad - used for G-code editing and file management.\n If the virtual keyboard has been repositioned and on the next opening of a virtual keyboard it is not\n visible then clicking twice on the onboard icon in the system tray will reposition the virtual keyboard\n so the move handle is visible.\n 10.8.9.36 Keyboard Shortcuts\n Below is a list of all available keyboard shortcuts in QtPlasmaC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 753 / 1224\n \n Note\n All keyboard shortcuts are disabled by default.\n \n In order to utilize them, KB Shortcuts must be enabled in the GUI SETTINGS section of the SETTINGS Tab.\n@@ -35890,15 +35890,15 @@\n The plus key can be used with any jog key to invoke a rapid jog (behaves\n the same as SHIFT).\n The minus key can be used with any jog key to invoke a slow jog (10% of\n the displayed jog speed)\n If SLOW jogging is already active, the axis will jog at the displayed jog\n speed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 754 / 1224\n \n 10.8.9.37 MDI\n In addition to the typical G and M codes that are allowed by LinuxCNC in MDI mode, the MDI in\n QtPlasmaC can be used to access several other handy features. The following link outlines the features\n and their use: Section 12.7.2.21[MDILine Widget]\n@@ -35909,15 +35909,15 @@\n \n 10.8.10 Conversational Shape Library\n \n The Conversational Shape Library consists of several basic shapes and functions to assist the user\n with generating quick G-code at the machine to cut simple shapes quickly. This feature is found on\n the CONVERSATIONAL Tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 755 / 1224\n \n Note\n The Conversational Library is not meant to be a CAD/CAM replacement as there are limitations to\n what can be achieved.\n \n@@ -35970,15 +35970,15 @@\n not added then it will be discarded.\n Displays a preview of the current shape provided the required information\n is present.\n This button is used for lines and arcs only. Allows another segment to be\n added to the current segment/segments.\n Stores the current shape into the current job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n UNDO\n \n Description\n Reverts to the previously stored state.\n \n@@ -36023,15 +36023,15 @@\n This will place each code on its own line:\n G21\\nG40\\nG49\\nG64p0.1\\nG80\\nG90\\nG92.1\\nG94\\nG97\n \n Pressing the RELOAD button will discard any changed but unsaved settings.\n Pressing the SAVE button will save all the settings as displayed.\n Pressing the EXIT button will close the setting panel and return to the previous shape.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 757 / 1224\n \n 10.8.10.2 Conversational Lines And Arcs\n \n Lines and arcs have an additional option in that they may be strung together to create a complex\n shape.\n@@ -36055,15 +36055,15 @@\n segment of the shape. If a leadout is required it will need to be the last segment of the shape.\n Note\n At this stage there is no automatic option for a leadin/leadout creation if the shape is closed.\n \n 10.8.10.3 Conversational Single Shape\n The following shapes are available for creation:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 758 / 1224\n \n To create a shape:\n 1. Select the corresponding icon for the shape to create. The available parameters will be displayed.\n 2. Choose the material from the MATERIAL drop down. If no material is chosen, the default material\n (00000) will be used.\n@@ -36077,15 +36077,15 @@\n For BOLT CIRCLE the OVER CUT button will become valid if the value entered in the HOLE DIA\n field is less than the SMALL HOLES DIAMETER parameter in the Conversational SETTINGS section.\n For the following shapes, KERF OFFSET will become active once a LEAD IN is specified:\n 1. TRIANGLE\n 2. RECTANGLE\n 3. POLYGON\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 759 / 1224\n \n 4. SLOT\n 5. STAR\n 6. GUSSET\n 10.8.10.4 Conversational Group Of Shapes\n@@ -36117,15 +36117,15 @@\n \u2014 Flip\n To create a block:\n 1. Create a shape, a group, or use a previously loaded G-code file.\n 2. Click the Block icon to open the Block tab.\n 3. Enter the appropriate values in the Block tab and press PREVIEW to display the resulting\n changes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 760 / 1224\n \n 4. If the result is not correct, edit the values and press PREVIEW and the new result will be shown.\n Repeat until satisfied with the result.\n 5. Press ADD to complete the procedure.\n 6. Press SEND to send the G-code file to LinuxCNC (QtPlasmaC) for cutting, or SAVE to save the\n@@ -36163,15 +36163,15 @@\n QtPlasmaC will alert the user that an error has been sent to the machine log by displaying the message\n \u201dERROR SENT TO MACHINE LOG\u201d in the lower left portion of the status bar.\n The user may opt to disable the Operator Error popup window, and view the error messages by going\n to the STATISTICS Tab by changing the following option to False in the [SCREEN_OPTIONS] of the\n <machine_name>.prefs file in the <machine_name> directory:\n desktop_notify\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 761 / 1224\n \n Note\n <machine_name>.prefs must be edited with QtPlasmaC closed or any changes will be overwritten\n on exit.\n \n@@ -36212,15 +36212,15 @@\n THC has caused the bottom limit to be reached while cutting:\n \u2014 bottom limit reached while THC moving down program is paused\n THC has caused the top limit to be reached while cutting:\n \u2014 top limit reached while THC moving up program is paused\n These errors indicate move to pierce height would exceed the Z Axis MAX_LIMIT for the corresponding\n probe method:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 762 / 1224\n \n \u2014 pierce height would exceed Z axis maximum limit condition found while moving to probe\n height during float switch probing\n \u2014 pierce height would exceed Z axis maximum limit condition found while moving to probe\n height during ohmic probing\n@@ -36255,15 +36255,15 @@\n \u2014 pierce height would exceed Z axis maximum limit condition found while moving to probe\n height during ohmic probe testing\n This indicates that the safe height has been reduced due to THC raising the Z axis during cutting:\n \u2014 safe traverse height has been reduced\n This indicates that the value for the Arc Voltage was invalid (NAN or INF) when QtPlasmaC launched.\n \u2014 invalid arc-voltage-in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 763 / 1224\n \n 10.8.12 Updating QtPlasmaC\n 10.8.12.1 Standard Update\n QtPlasmaC update notices are posted at https://forum.linuxcnc.org/plasmac/37233-plasmac-updates\n .\n@@ -36301,15 +36301,15 @@\n the use of a custom stylesheet. This allows the user to change some GUI items such as color, border,\n size, etc. It cannot change the layout of the GUI.\n Information on Qt stylesheets is available here.\n There are two methods available to apply custom styles:\n 1. Add A Custom Style: use this for minor style changes.\n 2. Create A New Style use this for a complete style change.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 764 / 1224\n \n 10.8.14.1 Add A Custom Style\n Adding style changes to the default stylesheet is achieved by creating a file in the <machine_name>\n configuration directory. This file MUST be named qtplasmac_custom.qss. Any required style changes\n are then added to this file.\n@@ -36348,15 +36348,15 @@\n *****************************/\n \n The colors may be expressed in any valid stylesheet format.\n The above colors are used for the following widgets. So any custom styling will need to take these into\n account. The colors shown below are the defaults used in QtPlasmaC along with the color name from\n the SETTINGS Tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Color\n color1 (#ffee06)\n \n Parameter\n Foreground\n \n@@ -36419,15 +36419,15 @@\n A user command file is specified in the DISPLAY section of the <machine_name>.ini file and contains\n Python code that is processed only once during startup.\n USER_COMMAND_FILE = my_custom_code.py\n \n A user periodic file must be named user_periodic.py and must be loaded in the machines config directory. This file is processed every cycle (usually 100 ms) and is used for functions that require regular\n updating.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 766 / 1224\n \n 10.8.14.5 Custom G-code Filter\n All incoming G-code is parsed by a G-code filter to ensure it is suitable for QtPlasmaC. It is possible\n to extend this filter with custom python code executed from a file in the configuration directory to aid\n in converting different flavours of G-code to a format suitable for QtPlasmaC.\n@@ -36470,15 +36470,15 @@\n 10.8.15 QtPlasmaC Advanced Topics\n 10.8.15.1 Custom User Buttons\n The QtPlasmaC GUI offers user buttons that can be customized by adding commands in the USER\n BUTTON ENTRIES section of the SETTINGS Tab in the <machine_name>.prefs file.\n The number of user buttons varies by display type and resolution as follows:\n \u2014 16:9 and 4:3 - Minimum 8, Maximum 20\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 767 / 1224\n \n \u2014 9:16 - Minimum 15, Maximum 20\n The user will need to run QtPlasmaC at the desired screen size to determine how many user buttons\n are available for use.\n All <machine_name>.prefs file settings for the buttons are found in the [BUTTONS] section.\n@@ -36520,15 +36520,15 @@\n .py extension. It is valid to use the ~ character as a shortcut for the users home directory.\n n Code = %halshow\n \n G-code\n To run G-code, just enter the code to be run.\n n Code = G0 X100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 768 / 1224\n \n To run an existing subroutine.\n n Code = o<the_subroutine> call\n \n <machine_name>.ini file variables can be entered by using the standard LinuxCNC G-code format. If\n@@ -36569,15 +36569,15 @@\n n Code = toggle-halpin the-hal-pin-name runcritical\n \n Toggle Alignment Laser HAL Pin\n The following code will allow the user to use a button to invert the current state of the alignment laser\n HAL bit pin:\n n Code = toggle-laser\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 769 / 1224\n \n This code is also able to be used as a multiple command with G-code or external commands but may\n control only the alignment laser HAL bit pin.\n The button colors will follow the state of the alignment laser HAL pin.\n After setting the code, upon clicking, the button will invert colors and the alignment laser HAL pin\n@@ -36618,15 +36618,15 @@\n n Code = probe-test 6\n \n Note\n Enabling a user button as a Probe Test button will add an external HAL pin that may be connected\n from a pendant etc. HAL connections to this HAL pin needs to be specified in a postgui HAL file as\n the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 770 / 1224\n \n Ohmic Test\n QtPlasmaC will enable the Ohmic Probe Enable output signal and if the Ohmic Probe input is sensed,\n the LED indicator in the SENSOR Panel will light. The main purpose of this is to allow a quick test for\n a shorted torch tip.\n@@ -36669,15 +36669,15 @@\n <machine_name>.ini file (usually ~/linuxcnc/nc_files) is possible by using the following format:\n n Code = load G-code.ngc\n \n If the user\u2019s G-code file is located in a sub-directory of the PROGRAM_PREFIX directory, it would be\n accessed by adding the sub-directory name to the beginning of the G-code file name. Example for a\n sub-directory named plasma:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 771 / 1224\n \n n Code = load plasma/G-code.ngc\n \n Note that the first \u201d/\u201d is not necessary as it will be added automatically.\n Torch Pulse\n@@ -36718,15 +36718,15 @@\n The following GUI buttons and Keyboard Shortcuts (if enabled in the SETTINGS Tab) are valid during\n Framing motion:\n 1. Pressing CYCLE STOP or the ESC keyboard shortcut - Stops Framing motion.\n 2. Pressing CYCLE PAUSE or the SPACE BAR keyboard shortcut- Pauses Framing motion.\n 3. Pressing CYCLE RESUME or the CTRL+r keyboard shortcut- Resumes paused Framing motion.\n 4. Changing the FEED SLIDER or any of the CTRL+0-9 keyboard shortcuts - Slows the feed rate.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 772 / 1224\n \n Note\n IF THE FEED RATE IS CHANGED FOR THE FRAMING MOTION, IT WILL BE NECESSARY TO RETURN THE\n FEED SLIDER TO 100% BEFORE PRESSING CYCLE START AND CUTTING THE LOADED JOB.\n \n@@ -36767,30 +36767,30 @@\n 10.8.15.2 Peripheral Offsets (Laser, Camera, Scribe, Offset Probe)\n Use the following sequence to set the offsets for a laser, camera, scribe, or offset probe:\n 1. Place a piece of scrap material under the torch.\n 2. The machine must be homed and idle before proceeding.\n 3. Open the SETTINGS tab.\n 4. Click the SET OFFSETS button which opens the Set Peripheral Offsets dialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 773 / 1224\n \n 5. Click the X0Y0 button to set the torch position to zero.\n 6. Make a mark on the material by one of:\n a. Jog the torch down to pierce height then pulse the torch on to make a dimple in the material.\n b. Place marking dye on the torch shield then jog the torch down to mark the material.\n 7. Click the appropriate button to activate the peripheral.\n 8. The Get Peripheral Offsets dialog will now be showing.\n \n 9. Raise the Z axis so the torch and peripheral are clear of the material.\n 10. Jog the X/Y axes so that the peripheral is centered in the mark from the torch.\n 11. Click the GET OFFSETS button to get the offsets and a confirmation dialog will open.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 774 / 1224\n \n 12. Click SET OFFSETS and the offsets will now be saved.\n Canceling may be done at any stage by pressing the CANCEL button which will close the dialog and\n no changes will be saved.\n If CAMERA was selected at item 7 above and more than one camera exists then a camera selection\n@@ -36812,15 +36812,15 @@\n a G-code file:\n #<keep-z-motion> = 1\n \n Omitting this command, or setting this value to anything but 1 will cause QtPlasmaC to revert to the\n default behavior of stripping all Z motion from a loaded G-code file and making an initial Z movement\n to bring the torch near the top of travel at the beginning of the file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 775 / 1224\n \n 10.8.15.4 External HAL Pins\n QtPlasmaC creates some HAL pins that may be used to connect a momentary external button or\n pendant etc.\n HAL connections to these HAL pins need to be specified in a postgui HAL file as the HAL pins are not\n@@ -36934,15 +36934,15 @@\n CUT RECOVERY arrow\n down-right\n qtplasmac.ext_cutrec_sw\n CUT RECOVERY arrow down-left\n \n The following HAL pins which allow the use of an MPG to control height override are always created.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Function\n Enable MPG height control\n MPG height change\n \n 776 / 1224\n \n@@ -36996,15 +36996,15 @@\n There are also two HAL pins that have been provided to allow the user to tune the set point. These\n HAL pins are:\n \u2014 plasmac.arc-ok-counts which is the number of consecutive readings within the threshold that\n are required to set the Arc OK signal. The default is 10.\n \u2014 plasmac.arc-ok-threshold which is the maximum voltage deviation that is allowed for a valid\n voltage to set the Arc OK signal. The default is 10.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 777 / 1224\n \n The following example would set the number of valid consecutive readings required to 6:\n setp plasmac.arc-ok-counts 6\n \n These settings if used should be in the custom.hal file of the configuration.\n@@ -37044,15 +37044,15 @@\n setp plasmac.void-on-cycles 3\n \n The objective is to have as low a value of Void Slope as possible without any false triggering then\n adjust on and off cycles to ensure clean activation and deactivation of void anti-dive. In most cases it\n should not be necessary to change on and off cycles from the default value.\n These settings if used should be in the custom.hal file of the configuration.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 778 / 1224\n \n 10.8.15.10 Max Offset\n Max Offset is the distance (in millimeters) away from the Z MAX_LIMIT that QtPlasmaC will allow the\n Z axis to travel while under machine control.\n The pin for adjusting this value is named plasmac.max-offset and the default value (in millimeters)\n@@ -37111,15 +37111,15 @@\n probe up until material not sensed, this sets the zero height\n not used at present\n move up to pierce height\n turn the torch on\n wait until arc ok detected\n wait for pierce delay time\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 779 / 1224\n \n Table 10.48: (continued)\n State\n 9\n 10\n@@ -37193,15 +37193,15 @@\n related spin-buttons in the Cut Parameters are then limited by these values. Gas pressure cannot be\n changed from zero until communications have been established.\n This feature is enabled by setting the correct port name for the PM_PORT option in the [POWERMAX] section of the <machine_name>.prefs file. If the PM_PORT option is not set in the <machine_name>.prefs file then the widgets associated with this feature will not be visible.\n Example showing enabling the Hypertherm PowerMax Communications on USB0:\n [POWERMAX]\n Port = /dev/ttyusb0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 780 / 1224\n \n If the user is unsure of the name of the port, there is a Python script in the configuration directory\n that will show all available ports and can also be used to test communications with the plasma unit\n prior to enabling this feature in the QtPlasmaC GUI.\n To use the test script follow these instructions:\n@@ -37241,15 +37241,15 @@\n It is possible to create translation files for QtPlasmaC to display in the language of the current locale.\n To create and or edit a translation file requires that LinuxCNC has been installed as run in place.\n The following assumes that the linuxcnc git directory is ~/linuxcnc-dev.\n All language files are kept in ~/linuxcnc-dev/share/screens/qtplasmac/languages.\n The qtplasmac.py file is a Python version of the GUI file used for translation purposes.\n The .ts files are the translation source files for the translations. These are the files that require creating/editing for each language.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 781 / 1224\n \n The .qm files are the compiled translation files used by pyqt.\n The language is determined by an underscore plus the first two letters of the locale, for example if an\n Italian translation was being done then it would be _it. It will be referred to as _xx in this document,\n so qtplasmac_xx.ts in this document would actually be qtplasmac_it.ts for an Italian translation.\n@@ -37302,15 +37302,15 @@\n \n QtPlasmaC will be translated to the language of the current locale on the next start so long as a .qm\n file exists in that language.\n Users are welcome to submit translation files for inclusion into QtPlasmac. The preferred method is\n to submit a pull request from the users GitHub account as described in the contributing to LinuxCNC\n documentation. The only files required to be committed are qtplasmac_xx.ts and qtplasmac_xx.qm.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 782 / 1224\n \n 10.8.17 Appendix\n 10.8.17.1 Example Configurations\n There are example configuration files which use the QtPlasmaC GUI to simulate plasma cutting machines.\n They can be found in the LinuxCNC chooser under: Sample Configurations -> sim -> qtplasmac\n@@ -37369,15 +37369,15 @@\n M63 P2 (synchronized with motion)\n M65 P2 (immediate)\n M62 P3 (synchronized with motion)\n M64 P3 (immediate)\n M63 P3 (synchronized with motion)\n M65 P3 (immediate)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Set velocity to a percentage of\n feed rate.\n \n Cutter compensation - left of\n path\n@@ -37453,15 +37453,15 @@\n optional parameters:\n (kw=<nn>, th=<nn>, ca=<nn>, cv=<nn>, pe=<nn>,\n gp=<nn>, cm=<nn>, jh=<nn>, jd=<nn>)\n #<keep-z-motion> = 1\n \n 10.8.17.4 QtPlasmaC G-code Examples\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Select material and do a\n normal cut\n \n Set velocity to 100% of\n CutFeedRate\n@@ -37530,15 +37530,15 @@\n G3 X0.8 Y6.081 I10 (continue motion for 4 mm)\n M63 P3 (allow torch to be turned on)\n M67 E3 Q0 (restore feed rate to 100%)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 785 / 1224\n \n Description\n Cut a hole with over cut using\n the #<holes> command\n \n@@ -37609,15 +37609,15 @@\n Hole center spotting.\n \n Create temporary default\n material\n Edit material, if not existing\n create a new one\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 786 / 1224\n \n 10.8.17.5 Mesa THCAD\n The Mesa THCAD is a common way of obtaining the arc voltage from a plasma cutter and is also\n useful for ohmic sensing of the material during probing. The THCAD may be used for parallel port\n configurations as well as configurations using Mesa Electronics hardware. The THCAD is available in\n@@ -37666,15 +37666,15 @@\n Divider Ratio THCAD-5 or THCAD-10\n If connecting to a plasma CNC port then the divider ratio is selected from the plasma machine. A\n common ratio used is 20:1.\n If connecting to the plasma machines full arc voltage then a common setup for a THCAD-10 is to use\n a 1 M\u03a9 resistor from arc negative to THCAD negative and a 1 M\u03a9 resistor from arc positive to THCAD\n positive. The divider ratio is obtained by:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 787 / 1224\n \n r = (total_resistance + 100000) / 100000\n \n THCAD-300\n r = 1\n@@ -37704,59 +37704,59 @@\n 5 - GND (Green)\n \n Connection at Breakout Board\n ->RXD+\n ->RXD->T/R+\n ->T/R->GND\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 788 / 1224\n \n RS485 interfaces that are known to work:\n DTECH DT-5019 USB to RS-485 converter adapter:\n \n The following is necessary to convert a motherboard Serial connection or Serial card (RS232) to\n RS485:\n DTECH RS-232 to RS-485 converter:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 789 / 1224\n \n Serial card example (Sunnix SER5037A PCI Card shown with Breakout Board):\n \n 10.8.17.7 Arc OK With A Reed Relay\n An effective and very reliable method of obtaining an Arc OK signal from a plasma power supply\n without a CNC port is to mount a reed relay inside a non-conductive tube and wrap and secure three\n turns of the work lead around the tube.\n This assembly will now act as a relay that will switch on when current is flowing through the work\n lead which only occurs when a cutting arc has been established.\n This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the QtPlasmaC\n Modes sections for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 790 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 791 / 1224\n \n 10.8.17.8 Contact Load Schematics\n \n A full description is at Contact Load.\n \n 10.8.18 Known Issues\n 10.8.18.1 Keyboard Jogging\n There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and\n starting during jogging. This issue can be prevented by disabling the Operating System\u2019s autorepeat\n feature for all keys. QtPlasmaC uses this disabling feature by default for all keys only when the MAIN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 792 / 1224\n \n Tab is visible, with the following exceptions when autorepeat is allowed with the MAIN Tab visible: Gcode editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System\u2019s autorepeat\n feature will be enabled for all keys.\n If the user wishes to prevent QtPlasmaC from changing the Operating System\u2019s autorepeat settings,\n enter the following option in the [GUI_OPTIONS] section of the <machine_name>.prefs file:\n@@ -37778,15 +37778,15 @@\n MDRO is a simple graphical front-end for LinuxCNC providing a display of data from Digital Read\n Out (DRO) scales. It provides functionality similar to a normal machinist\u2019s DRO display, allowing the\n user to use the DRO scales on the machine when operating in a manual-only (hand-cranked) mode.\n It is most useful for manual machines such as DRO equipped Bridgeport style mills that have been\n converted to CNC but still have the manual controls.\n MDRO is mouse and touch screen friendly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 793 / 1224\n \n Figure 10.50 \u2013 MDRO Window\n \n 10.9.2 Getting Started\n If your configuration is not currently set up to use MDRO, you can change it by editing the INI file.\n@@ -37796,15 +37796,15 @@\n When MDRO starts, a window like the one in the figure Figure 10.50 above opens.\n 10.9.2.1 INI File Options\n Other options that can be included on the [DISPLAY] section include:\n \u2014 MDRO_VAR_FILE = <file.var> - preload G54 - G57 coordinate system data.\n \u2014 Preload a .var file. This is typically the .var file used by the operational code.\n \u2014 POINT_SIZE = <n> - Set text point size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 794 / 1224\n \n \u2014 This option sets the size of the font used which sets the overall size of the window. The default\n point size is 20, Typical sizes are 20 to 30.\n \u2014 MM = 1 Set this if the DRO scales provide data scaled in millimeters.\n 10.9.2.2 Command Line Options\n@@ -37843,15 +37843,15 @@\n or from the on-screen keypad.\n \u2014 A \u201dI\u201d button that starts an index operation (see below),\n \u2014 a keypad used to set values in the entry field via a mouse or touchscreen,\n \u2014 coordinate system selection buttons:\n \u2014 The \u201dmcs\u201d button selects the machine coordinate system. These are the raw values from the\n encoders connected to the mdro.axis.n pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 795 / 1224\n \n \u2014 The \u201dcs1\u201d - \u201dcs4\u201d buttons allow the user to select among one of four user-defined coordinate\n systems. If the program is started with the MDRO_VAR_FILE = option, the labels will be changed\n to \u201dg54\u201d - \u201dg57\u201d and the values from the specified .var file will be preloaded. Note that any\n changes to the values are not persistent: the .var file is never changed.\n@@ -37866,15 +37866,15 @@\n The easiest way to see how MDRO works is to try it in a simulation environment. Add this section to the\n end of your simulation HAL file, usually \u201dhallib/core_sim.hal\u201d:\n loadusr -W mdro -l sim.var XYZ\n net x-pos-fb => mdro.axis.0\n net y-pos-fb => mdro.axis.1\n net z-pos-fb => mdro.axis.2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 796 / 1224\n \n Chapitre 11\n \n G-code Programming\n 11.1 Coordinate Systems\n@@ -37901,15 +37901,15 @@\n will move from the current position to the position where the machine coordinates of the three axes\n will be at zero. You can use this command if you have a fixed position for the tool change or if your\n machine has an automatic tool changer. You can also use this command to clear the work area and\n access the workpiece in the vise.\n G53 is a non modal command. It must be used in every block where a move in machine coordinate\n system is desired.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 797 / 1224\n \n 11.1.3 Coordinate Systems\n \n Figure 11.1 \u2013 Coordinate Systems Example\n Coordinate System Offsets\n@@ -37932,15 +37932,15 @@\n In the VAR file scheme, the first variable number stores the X offset, the second the Y offset and so on\n for all nine axes. There are numbered sets like this for each of the coordinate system offsets.\n Each of the graphical interfaces has a way to set values for these offsets. You can also set these values\n by editing the VAR file itself and then restart LinuxCNC so that the LinuxCNC reads the new values\n however this is not the recommended way. Using G10, G52, G92, G28.1, etc are better ways to set the\n variables. For our example, we will directly edit the file so that G55 will take the following values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 798 / 1224\n \n Table 11.1: Example of G55 parameters\n Axis\n X\n Y\n@@ -38006,15 +38006,15 @@\n uses parameters of \u2190coordinate system 4G58\n uses parameters of coordinate system 5G59\n uses \u2190parameters of coordinate system 6G59.1\n uses parameters of coordinate system 7G59.2 \u2190uses parameters of coordinate system 8G59.3\n uses parameters of coordinate system \u21909---=== Default Coordinate System\n One other variable in the VAR file becomes important when we think about offset systems. \u2190This variable is named 5220. In the default files its value is set to 1.00000. This \u2190means that when the LinuxCNC starts up it should use the first coordinate system as its \u2190default. If you set this to 9.00000 it would use the ninth offset system as its default \u2190for start up and reset. Any value other than an integer (decimal really) between 1 and \u21909, or a missing 5220 variable will cause the LinuxCNC to revert to the default value of \u21901.00000 on start up.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 799 / 1224\n \n === Setting Coordinate System Offsets\n The G10 L2x command can be used to set coordinate system offsets:\n * \u2019G10 L2 P(1-9)\u2019 - Set offset(s) to a value. Current position irrelevant (see <<gcode:g10- \u2190l2,G10 L2>> for details).\n * \u2019G10 L20 P(1-9)\u2019 - Set offset(s) so current position becomes a value (see <<gcode:g10-l20 \u2190,G10 L20>> for details).\n@@ -38037,15 +38037,15 @@\n \n \u2190-\n \n [[sec:g92-axes-offsets]]\n == G92 Axes Offsets\n G92 is the most misunderstood and cleverest command programmable with LinuxCNC. The way it \u2190works has changed a bit between the first versions and the current one. These changes \u2190have doubt baffled many users. They should be seen as a command producing a temporary \u2190offset, which applies to all the other offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 800 / 1224\n \n [[sec:g92-commands]]\n === The G92 commands\n \u2019G92\u2019 is typically used in two conceptually different ways: as a \u201dglobal coordinate system\n offset\u201d or as a \u201dlocal coordinate system offset\u201d.\n@@ -38072,15 +38072,15 @@\n \n \u2190\u2190\u2190-\n \n [NOTE]\n It is good practice to clear the \u2019G92\u2019 offsets at the end of their use with \u2019G92.1\u2019 or \u2019G92 \u2190.2\u2019. When starting up LinuxCNC with \u2019G92\u2019 persistence enabled (the default), any offsets \u2190in the \u2019G92\u2019 variables will be applied when an axis is homed. See <<sec:g92-persistence \u2190-cautions,G92 Persistence Cautions>> below.\n === Setting G92 Values\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 801 / 1224\n \n There are at least two ways to set G92 values:\n * With a right click on the position displays in tklinuxcnc, a window opens where it is\n possible to enter a value.\n * With the G92 command\n@@ -38114,15 +38114,15 @@\n * 5218 - V Axis Offset\n * 5219 - W Axis Offset\n where 5210 is the \u2019G92\u2019 enable flag (1 for enabled, 0 for disabled) and 5211 to 5219 are \u2190the axis offsets. If you are seeing unexpected positions as the result of a commanded \u2190move, as a result of storing an offset in a previous program and not clearing them at \u2190the end then issue a G92.1 in the MDI window to clear the stored offsets.\n If G92 values exist in the VAR file when LinuxCNC starts up, the G92 values in the var file \u2190will be applied to the values of the current location of each axis. If this is home \u2190position and home position is set as machine zero everything will be correct. Once home \u2190has been established using real machine switches, or by moving each axis to a known home \u2190position and issuing an axis home command, any G92 offsets will be applied. If you have \u2190a G92 X1 in effect when you home the X axis the DRO will read \u2019X: 1.000\u2019 instead of the \u2190expected \u2019X: 0.000\u2019 because the G92 was applied to the machine origin. If you issue a \u2190G92.1 and the DRO now reads all zeros then you had a G92 offset in effect when you last \u2190ran LinuxCNC.\n Unless your intention is to use the same G92 offsets in the next program, the best practice \u2190is to issue a G92.1 at the end of any G code files where you use G92 offsets.\n When a program is aborted during processing that has \u2019G92\u2019 offsets in effect a startup will \u2190cause them to become active again. As a safeguard, always have your preamble to set the \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 802 / 1224\n \n environment as you expect it. Additionally, \u2019G92\u2019 persistence may be disabled by \u2190setting \u2019DISABLE_G92_PERSISTENCE = 1\u2019 in the \u2019[RS274NGC]\u2019 section of the INI file.\n [[sec:g92-g52-interaction-cautions]]\n === G92 and G52 Interaction Cautions\n \u2019G52\u2019 and \u2019G92\u2019 share the same offset registers. Unless \u2019G92\u2019 persistence is disabled in \u2190the INI file (see <<sec:g92-commands,G92 Commands>>), \u2019G52\u2019 offsets will also persist \u2190after machine reset, \u2019M02\u2019 or \u2019M30\u2019. Beware that a \u2019G52\u2019 offset in effect during a \u2190program abort may result in unintended offsets when the next program is run. See <<sec: \u2190g92-persistence-cautions,G92 Persistence Cautions>> above.\n@@ -38156,15 +38156,15 @@\n running in each case at Z0. If the mill were at the zero position, a G92 Z1.0000 issued at the head\n of the program would shift everything an inch. You might also shift the whole pattern around in the\n XY plane by adding some X and Y offsets with G92. If you do this you should add a G92.1 command\n just before the M2 that ends the program. If you do not, other programs that you might run after this\n one will also use that G92 offset. Furthermore it would save the G92 values when you shut down the\n LinuxCNC and they will be recalled when you start up again.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 803 / 1224\n \n 11.1.4.1 Sample Program Using G52 Offsets\n (To be written)\n \n 11.2 Tool Compensation\n@@ -38188,15 +38188,15 @@\n \u2014 G10 L10 P__n__ - Set offset(s) so current position w/ fixture 1-8 becomes a value (see G10 L10 for\n details).\n \u2014 G10 L11 P__n__ - Set offset(s) so current position w/ fixture 9 becomes a value (see G10 L11 for\n details).\n Note\n This is only a brief presentation, refer to the reference guide of the G-code for more detailed explanations.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 804 / 1224\n \n 11.2.2 Tool Table\n The Tool Table is a text file that contains information about each tool. The file is located in the same\n directory as your configuration and is called tool.tbl by default. A file name may be specified with the\n INI file [EMCIO]TOOL_TABLE setting. The tools might be in a tool changer or just changed manually.\n@@ -38314,15 +38314,15 @@\n The T column contains the number (unsigned integer) which represents a code number for the\n tool. The user may use any code for any tool, as long as the codes are unsigned integers.\n Pocket Number (required)\n The P column contains the number (unsigned integer) which represents the pocket number (slot\n number) of the tool changer slot where the tool can be found. The entries in this column must all\n be different.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 805 / 1224\n \n The pocket numbers will typically start at 1 and go up to the highest available pocket on your tool\n changer. But not all tool changers follow this pattern. Your pocket numbers will be determined by\n the numbers that your tool changer uses to refer to the pockets. So all this is to say that the pocket\n numbers you use will be determined by the numbering scheme used in your tool changer, and the\n@@ -38365,15 +38365,15 @@\n pin, iocontrol.0.tool-prepared, must be set by external HAL logic to indicate completion of the tool\n change leading to a subsequent reset of the tool-change pin.\n Tooldata is accessed by an ordered index (idx) that depends on the type of toolchanger specified by\n [EMCIO]RANDOM_TOOLCHANGER=type.\n 1. For RANDOM_TOOLCHANGER = 0, (0 is default and specifies a non-random toolchanger) idx is a\n number indicating the sequence in which tooldata was loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 806 / 1224\n \n 2. For RANDOM_TOOLCHANGER = 1, idx is the current pocket number for the tool number specified\n by the G-code select tool command Tn.\n The io program provides HAL output pins to facilitate toolchanger management:\n 1. iocontrol.0.tool-prep-number\n@@ -38409,15 +38409,15 @@\n 11.2.2.3 Tool Changers\n LinuxCNC supports three types of tool changers: manual, random location and non-random or fixed\n location. Information about configuring a LinuxCNC tool changer is in the EMCIO Section of the INI\n chapter.\n Manual Tool Changer Manual tool changer (you change the tool by hand) is treated like a fixed\n location tool changer. Manual toolchanges can be aided by a HAL configuration that employs the nonrealtime program hal_manualtoolchange and is typically specified in an INI file with INI statements:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 807 / 1224\n \n [HAL]\n HALFILE = axis_manualtoolchange.hal\n \n Fixed Location Tool Changers Fixed location tool changers always return the tools to a fixed position\n@@ -38461,15 +38461,15 @@\n N02 G43 H1 Z0 X1\n N03 G49 X0 Z0\n N04 G0 X2\n N05 G1 G43 H1 G4 P10 Z0 X3\n N06 G49 X2 Z0\n N07 G0 X0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 808 / 1224\n \n With this program, in most cases, the machine will apply the offset in the form of a ramp during the\n movement in xyz following the word G43.\n \n 11.2.4 Cutter Radius Compensation\n@@ -38481,15 +38481,15 @@\n this imagine you were standing on the part walking behind the tool as it progresses across the part.\n G41 is your left side of the line and G42 is the right side of the line.\n The end point of each move depends on the next move. If the next move creates an outside corner the\n move will be to the end point of the compensated cut line. If the next move creates in an inside corner\n the move will stop short so to not gouge the part. The following figure shows how the compensated\n move will stop at different points depending on the next move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 809 / 1224\n \n Figure 11.3 \u2013 Compensation End Point\n \n 11.2.4.1 Overview\n Cutter compensation uses the data from the tool table to determine the offset needed. The data can\n@@ -38497,46 +38497,46 @@\n Any move that is long enough to perform the compensation will work as the entry move. The minimum\n length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are\n issued after a G41/42 only the last one will move the tool to the compensated position.\n In the following figure you can see that the entry move is compensated to the right of the line. This\n puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end\n is at X0 the resulting profile would leave a bump due to the offset of the entry move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 810 / 1224\n \n Figure 11.4 \u2013 Entry Move\n Z axis motion may take place while the contour is being followed in the XY plane. Portions of the\n contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the\n next start point.\n Rapid moves may be programmed while compensation is turned on.\n Start a program with G40 to make sure compensation is off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 811 / 1224\n \n 11.2.4.2 Examples\n \n Figure 11.5 \u2013 Outside Profile\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 812 / 1224\n \n Figure 11.6 \u2013 Inside Profile\n \n 11.3 Tool Edit GUI\n 11.3.1 Overview\n Note\n The tooledit elements described here are available since version 2.5.1 and later. In version 2.5.0, the\n graphical interface interface does not allow these adjustments.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 813 / 1224\n \n Figure 11.7 \u2013 Tool Edit GUI - Overview\n The tooledit program can update the tool table file with edited changes by using the SaveFile button.\n The SaveFile button updates the system file but a separate action is required to update the tool table\n data used by a running LinuxCNC instance. With the AXIS GUI, both the file and the current tool table\n@@ -38550,15 +38550,15 @@\n Figure 11.8 \u2013 Tool Edit GUI - Column Sorting\n In Ubuntu Lucid 10.04 Tcl/Tk8.4 it is installed by default. The installation is performed as follows:\n sudo apt-get install tcl8.5 tk8.5\n \n Depending upon other applications installed on the system, it may be necessary to enable Tcl/Tk8.5\n with the commands:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n sudo update-alternatives --config tclsh\n sudo update-alternatives --config wish\n \n 814 / 1224\n \n ;# select the option for tclsh8.5\n@@ -38583,15 +38583,15 @@\n Stand Alone\n tooledit\n Usage:\n tooledit filename\n tooledit [column_1 ... column_n] filename\n Valid column names are: x y z a b c u v w diam front back orien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 815 / 1224\n \n To synchronize a standalone tooledit with a running LinuxCNC application, the filename must resolve\n to the same [EMCIO]TOOL_TABLE filename specified in the LinuxCNC INI file.\n When using the program tooledit while LinuxCNC is running, G-code command execution or other\n programs may alter tool table data and the tool table file. File changes are detected by tooledit and a\n@@ -38634,15 +38634,15 @@\n program may end before the end of a file. Lines of a file that occur after the end of a program are not\n to be executed. The interpreter does not even read them.\n \n 11.4.2 Format of a line\n A permissible line of input code consists of the following, in order, with the restriction that there is a\n maximum (currently 256) to the number of characters allowed on a line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 816 / 1224\n \n \u2014 an optional block delete character, which is a slash /.\n \u2014 an optional line number.\n \u2014 any number of words, parameter settings, and comments.\n \u2014 an end of line marker (carriage return or line feed or both).\n@@ -38688,15 +38688,15 @@\n Tool radius compensation number\n Feed rate\n General function (See table G-code Modal Groups)\n Tool length offset index\n X offset for arcs and G87 canned cycles\n Y offset for arcs and G87 canned cycles\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 817 / 1224\n \n Table 11.3: (continued)\n Letter\n K\n L\n@@ -38751,15 +38751,15 @@\n \u2014 zero to many digits, followed, possibly, by\n \u2014 one decimal point, followed by\n \u2014 zero to many digits - provided that there is at least one digit somewhere in the number.\n \u2014 There are two kinds of numbers:\n \u2014 Integers, that does not have a decimal point,\n \u2014 Decimals, that do have a decimal point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 818 / 1224\n \n \u2014 Numbers may have any number of digits, subject to the limitation on line length. Only about seventeen significant figures will be retained, however (enough for all known applications).\n \u2014 A non-zero number with no sign but the first character is assumed to be positive.\n Notice that initial (before the decimal point and the first non-zero digit) and trailing (after the decimal\n point and the last non-zero digit) zeros are allowed but not required. A number written with initial or\n@@ -38800,15 +38800,15 @@\n When LinuxCNC is shut down, volatile parameters lose their values. All parameters except numbered parameters in the current persistent range 1 are volatile. Persistent parameters are saved\n in the .var file and restored to their previous values when LinuxCNC is started again. Volatile\n numbered parameters are reset to zero.\n Intended Use\n 1. The range of persistent parameters may change as development progresses. This range is currently 5161- 5390. It is\n defined in the _required_parameters array in file the src/emc/rs274ngc/interp_array.cc .\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 819 / 1224\n \n \u2014 user parameters - numbered parameters in the range 31..5000, and named global and local\n parameters except predefined parameters. These are available for general-purpose storage of\n floating-point values, like intermediate results, flags etc, throughout program execution. They\n are read/write (can be assigned a value).\n@@ -38851,15 +38851,15 @@\n \u2014 5361-5370 - Coordinate System 8, G59.2 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n \u2014 5381-5390 - Coordinate System 9, G59.3 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n \u2014 5399 - Result of M66 - Check or wait for input. Volatile.\n 2. The RS274/NGC interpreter maintains an array of numbered parameters. Its size is defined by the symbol\n RS274NGC_MAX_PARAMETERS in the file src/emc/rs274ngc/interp_internal.hh). This number of numerical parameters may\n also increase as development adds support for new parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 820 / 1224\n \n \u2014 5400 - Tool Number. Volatile.\n \u2014 5401-5409 - Tool Offsets for X, Y, Z, A, B, C, U, V & W. Set by G43. Volatile.\n \u2014 5410 - Tool Diameter. Volatile.\n \u2014 5411 - Tool Front Angle. Volatile.\n@@ -38903,15 +38903,15 @@\n \u2014 1-30 Subroutine local parameters of call arguments. These parameters are local to the subroutine.\n Volatile. See also the chapter on O-Codes.\n 11.4.3.3 Named Parameters\n Named parameters work like numbered parameters but are easier to read. All parameter names are\n converted to lower case and have spaces and tabs removed, so <param> and <P a R am > refer to\n the same parameter. Named parameters must be enclosed with < > marks.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 821 / 1224\n \n #<named parameter> 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@@ -38965,15 +38965,15 @@\n G38.5\n 385\n G5.2\n 52\n G73\n 730\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 822 / 1224\n \n Motion return\n mode\n value\n G76\n@@ -39053,15 +39053,15 @@\n return\n value\n 540\n 550\n 560\n 570\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 823 / 1224\n \n Mode\n G58\n G59\n G59.1\n@@ -39113,15 +39113,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 824 / 1224\n \n \u2014 #<_selected_pocket> - Return the tooldata index of the selected pocket post a T code. Default -1\n (no pocket selected).\n \u2014 #<_value> - Return value from the last O-word return or endsub. Default value 0 if no expression\n after return or endsub. Initialized to 0 on program start.\n@@ -39165,15 +39165,15 @@\n EXISTS can be used to test for the presence of a given HAL item:\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 o100 endif\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 825 / 1224\n \n This feature was motivated by the desire for stronger coupling between user interface components like\n GladeVCP and PyVCP to act as parameter source for driving NGC file behavior. The alternative - going\n through the M6x pins and wiring them - has a limited, non-mnemonic namespace and is unnecessarily\n cumbersome just as a UI/Interpreter communications mechanism.\n@@ -39211,15 +39211,15 @@\n \n lowest\n \n 11.4.7 Equality and floating-point values\n Testing for equality or inequality of two double-precision floating-point values is inherently problematic. The interpreter solves this problem by considering values equal if their absolute difference is less\n than 1e-6 (this value is defined as TOLERANCE_EQUAL in src/emc/rs274ngc/interp_internal.hh).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 826 / 1224\n \n 11.4.8 Functions\n The available functions are shown in following table. Arguments to unary operations which take angle\n measures (COS, SIN, and TAN ) are in degrees. Values returned by unary operations which return\n angle measures (ACOS, ASIN, and ATAN) are also in degrees.\n@@ -39277,15 +39277,15 @@\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 the same line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 827 / 1224\n \n For all other legal letters, a line may have only one word beginning with that letter.\n If a parameter setting of the same parameter is repeated on a line, #3=15 #3=6, for example, only\n the last setting will take effect. It is silly, but not illegal, to set the same parameter twice on the same\n line.\n@@ -39328,15 +39328,15 @@\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 as G1 Y1.\n In Relative Mode the distance and angle is also from the XY zero position but it is cumulative. This\n can be confusing at first how this works in incremental mode.\n For example if you have the following program you might expect it to be a square pattern:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 828 / 1224\n \n F100 G1 @.5 ^90\n G91 @.5 ^90\n @.5 ^90\n @.5 ^90\n@@ -39354,15 +39354,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 829 / 1224\n \n Figure 11.11 \u2013 Polar Square\n It is an error if:\n \u2014 An incremental move is started at the origin\n \u2014 A mix of Polar and X or Y words are used\n@@ -39389,15 +39389,15 @@\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81 G82, G83, G84, G85, G86, G87, G88,\n G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n G90.1, G91.1\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 830 / 1224\n \n Table 11.11: (continued)\n Modal Group Meaning\n Feed Rate Mode (Group 5)\n Units (Group 6)\n@@ -39460,15 +39460,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 831 / 1224\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@@ -39503,15 +39503,15 @@\n \u2014 (LOGAPPEND,filename) - opens the named log file. If the file already exists, the data is appended.\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 sample G-code files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 832 / 1224\n \n 11.4.18 Debug Messages\n \u2014 (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@@ -39549,15 +39549,15 @@\n second percent sign is not evaluated.\n AVERTISSEMENT\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 the next program could start in a dangerous condition.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 833 / 1224\n \n Note\n The file must be created with a text editor like Gedit and not a word processor like Open Office Word\n Processor.\n \n@@ -39598,15 +39598,15 @@\n (G52, G92, G92.1, G92.2, G94).\n \u2014 Perform motion (G0 to G3, G33, G38.n, G73, G76, G80 to G89), as modified (possibly) by G53.\n \u2014 Stop (M0, M1, M2, M30, M60).\n \n 11.4.24 G-code Best Practices\n Use an appropriate decimal precision Use at least 3 digits after the decimal when milling in millimeters, and at least 4 digits after the decimal when milling in inches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 834 / 1224\n \n In particular, tolerance checks of arcs are done for .001 and .0001 according to the active units.\n Use consistent white space G-code is most legible when at least one space appears before words.\n While it is permitted to insert white space in the middle of numbers, there is no reason to do so.\n Use Center-format arcs Center-format arcs (which use I- J- K- instead of R- ) behave more consistently than R-format arcs, particularly for included angles near 180 or 360 degrees.\n@@ -39644,15 +39644,15 @@\n \u2014 Unknown G-code used - A G-code was used that is not part of the LinuxCNC G-code language.\n \u2014 i,j,k word with no Gx to use it - i, j and k words must be used on the same line as the G-code.\n \u2014 Cannot use axis values without a G-code that uses them - Axis values can not be used on a line\n without either a modal G-code in effect or a G-code on the same line.\n \u2014 File ended with no percent sign or program end - Every G-code file must end in a M2 or M30 or be\n wrapped with the percent sign %.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 835 / 1224\n \n 11.5 G-Codes\n 11.5.1 Conventions\n Conventions used in this section\n In the G-code prototypes the hyphen (-) stands for a real value and (<>) denotes an optional item.\n@@ -39712,15 +39712,15 @@\n Set Tool Table, Calculated, Workpiece\n Set Tool Table, Calculated, Fixture\n Coordinate System Origin Setting\n Coordinate System Origin Setting Calculated\n Plane Select\n Set Units of Measure\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Code\n G28 - G28.1\n G30 - G30.1\n G33\n G33.1\n G38.2 - G38.5\n@@ -39810,15 +39810,15 @@\n \n 11.5.3 G0 Rapid Move\n G0 <axes>\n \n For rapid motion, program G0 axes, where all the axis words are optional. The G0 is optional if the current motion mode is G0. This will produce coordinated motion to the destination point at the maximum\n rapid rate (or slower). G0 is typically used as a positioning move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 837 / 1224\n \n 11.5.3.1 Rapid Velocity Rate\n The MAX_VELOCITY setting in the INI file [TRAJ] section defines the maximumrapid traverse rate. The\n maximum rapid traverse rate can be higher than the individual axes MAX_VELOCITY setting during a\n coordinated move. The maximum rapid traverse rate can be slower than the MAX_VELOCITY setting\n@@ -39858,15 +39858,15 @@\n If G53 is programmed on the same line, the motion will also differ; see the G53 section for more\n information.\n It is an error if:\n \u2014 No feed rate has been set.\n \u2014 An axis letter is without a real value.\n \u2014 An axis letter is used that is not configured\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.5\n \n 838 / 1224\n \n G2, G3 Arc Move\n \n@@ -39910,15 +39910,15 @@\n used to program arcs that are less than a full circle. It is OK if the end point of the arc is the same as\n the current location.\n The offset to the center of the arc from the current location and optionally the number of turns are\n used to program full circles.\n When programming arcs an error due to rounding can result from using a precision of less than 4\n decimal places (0.0000) for inch and less than 3 decimal places (0.000) for millimeters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 839 / 1224\n \n Incremental Arc Distance Mode Arc center offsets are a relative distance from the start location\n of the arc. Incremental Arc Distance Mode is default.\n One or more axis words and one or more offsets must be programmed for an arc that is less than 360\n degrees.\n@@ -39961,15 +39961,15 @@\n Deciphering the Error message Radius to end of arc differs from radius to start:\n \u2014 start - the current position\n \u2014 center - the center position as calculated using the i, j, or k words\n \u2014 end - the programmed end point\n \u2014 r1 - radius from the start position to the center\n \u2014 r2 - radius from the end position to the center\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 840 / 1224\n \n 11.5.5.2 Center Format Examples\n Calculating arcs by hand can be difficult at times. One option is to draw the arc with a CAD program\n to get the coordinates and offsets. Keep in mind the tolerance mentioned above, you may have to\n change the precision of your CAD program to get the desired results. Another option is to calculate\n@@ -39987,15 +39987,15 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 841 / 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@@ -40014,15 +40014,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 842 / 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@@ -40065,15 +40065,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 843 / 1224\n \n G90 G17\n G0 X0 Y0\n G5 I0 J3 P0 Q-3 X1 Y1\n \n@@ -40111,15 +40111,15 @@\n X- Y- <P->\n ...\n G5.3\n \n AVERTISSEMENT\n G5.2, G5.3 is experimental and not fully tested.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 844 / 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@@ -40137,15 +40137,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 845 / 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@@ -40155,15 +40155,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 846 / 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@@ -40199,15 +40199,15 @@\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- <axes R->\n \n \u2014 P - coordinate system (0-9)\n \u2014 R - rotation about the Z axis\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 847 / 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@@ -40274,15 +40274,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 848 / 1224\n \n 11.5.15 G10 L10 Set Tool Table\n G10 L10 P- axes <R- I- J- Q->\n \n \u2014 P - tool number\n@@ -40322,15 +40322,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 849 / 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@@ -40367,15 +40367,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 850 / 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@@ -40412,15 +40412,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 851 / 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@@ -40461,15 +40461,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 852 / 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@@ -40511,15 +40511,15 @@\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 \u2014 G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 853 / 1224\n \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 input signal. The probe input signal must be connected to motion.probe-input in a .hal file.\n@@ -40578,15 +40578,15 @@\n G10 L1 P#5400 Z#<zworkoffset> (set new tool offset)\n G43\n \n A comment of the form (PROBEOPEN filename.txt) will open filename.txt and store the 9-number\n coordinate consisting of XYZABCUVW of each successful straight probe in it. The file must be closed\n with (PROBECLOSE). For more information see the Comments section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 854 / 1224\n \n An example file smartprobe.ngc is included (in the examples directory) to demonstrate using probe\n moves to log to a file the coordinates of a part. The program smartprobe.ngc could be used with ngcgui\n with minimal changes.\n It is an error if:\n@@ -40622,15 +40622,15 @@\n tool number.\n Note\n G41/G42 D0 is a little special. Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the Tool Change section). On nonrandom tool changer machines,\n G41/G42 D0 applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no\n tool is in the spindle. On random tool changer machines, G41/G42 D0 applies the TLO of the tool T0\n defined in the tool table file (or causes an error if T0 is not defined in the tool table).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 855 / 1224\n \n To start cutter compensation to the left of the part profile, use G41. G41 starts cutter compensation\n to the left of the programmed line as viewed from the positive end of the axis perpendicular to the\n plane.\n To start cutter compensation to the right of the part profile, use G42. G42 starts cutter compensation\n@@ -40667,15 +40667,15 @@\n \u2014 G43 - enables tool length compensation. G43 changes subsequent motions by offsetting the axis\n coordinates by the length of the offset. G43 does not cause any motion. The next time a compensated\n axis is moved, that axis\u2019s endpoint is the compensated location.\n G43 without an H word uses the currently loaded tool from the last Tn M6.\n G43 Hn uses the offset for tool n.\n The active tool length compensation values are stored in the numbered parameters 5401-5409.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 856 / 1224\n \n Note\n G43 H0 is a little special. Its behavior is different on random tool changer machines and nonrandom\n tool changer machines (see the Tool Changers section). On nonrandom tool changer machines, G43\n H0 applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no tool is in the\n@@ -40712,15 +40712,15 @@\n 11.5.30 G43.2 Apply additional Tool Length Offset\n G43.2 H- axes-\n \n \u2014 H - tool number\n \u2014 G43.2 - applies an additional simultaneous tool offset.\n G43.2 Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 857 / 1224\n \n G90 (set absolute mode)\n T1 M6 (load tool 1)\n G43 (or G43 H1 - replace all tool offsets with T1\u2019s offset)\n G43.2 H10 (also add in T10\u2019s tool offset)\n@@ -40761,15 +40761,15 @@\n G53 X2 (rapid linear move to absolute coordinate X2)\n \n See G0 section for more information.\n It is an error if:\n \u2014 G53 is used without G0 or G1 being active,\n \u2014 or G53 is used while cutter compensation is on.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 858 / 1224\n \n 11.5.34 G54-G59.3 Select Coordinate System\n \u2014 G54 - select coordinate system 1\n \u2014 G55 - select coordinate system 2\n \u2014 G56 - select coordinate system 3\n@@ -40921,15 +40921,15 @@\n \u2014 G61.1 - Exact stop mode, movement will stop at the end of each programmed segment.\n \n 11.5.37 G64 Path Blending\n G64 <P- <Q->>\n \n \u2014 P - motion blending tolerance\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 859 / 1224\n \n \u2014 Q - naive cam tolerance\n \u2014 G64 - best possible speed. Without P means to keep the best speed possible, no matter how far\n away from the programmed point you end up.\n \u2014 G64 P- - Blend between best speed and deviation tolerance\n@@ -40975,15 +40975,15 @@\n this point.\n \u2014 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 \u2014 There is no subroutine defined with the number given in Q.\n \u2014 The path given in the profile is not monotonic in Z or X.\n \u2014 Section 11.5.18 has not been used to select the ZX plane.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 860 / 1224\n \n 11.5.39 G71 G72 Lathe roughing cycles\n Note\n The G71 and G72 cycles are currently somewhat fragile. See issues #707 and #1146.\n \n@@ -41028,15 +41028,15 @@\n finishing.\n It is an error if:\n \u2014 There is no subroutine defined with the number given in Q.\n \u2014 The path given in the profile is not monotonic in Z or X.\n \u2014 Section 11.5.18 has not been used to select the ZX plane.\n \u2014 Section 11.5.26 is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 861 / 1224\n \n 11.5.40 G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- <L->\n \n \u2014 R - retract position along the Z axis.\n@@ -41077,15 +41077,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 862 / 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@@ -41104,15 +41104,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 if $1 is\n programmed then the motion will begin on the reset of spindle.1.index-enable and proceed in\n synchrony with the value of spindle.1.revs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 863 / 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@@ -41158,15 +41158,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 864 / 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@@ -41189,15 +41189,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 865 / 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@@ -41235,15 +41235,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 866 / 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@@ -41267,15 +41267,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 867 / 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@@ -41299,15 +41299,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 868 / 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@@ -41346,15 +41346,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 869 / 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@@ -41367,15 +41367,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 870 / 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@@ -41396,27 +41396,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 871 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 872 / 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@@ -41426,15 +41426,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 873 / 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@@ -41476,15 +41476,15 @@\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 \u2014 $- - Selected spindle.\n \u2014 F- - Feed rate (spindle speed multiplied by distance traveled per revolution (thread pitch)).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 874 / 1224\n \n AVERTISSEMENT\n G84 does not use synchronized motion.\n \n The G84 cycle is intended for tapping with floating chuck and dwell at the bottom of the hole.\n@@ -41527,15 +41527,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.52\n \n 875 / 1224\n \n G88 Boring Cycle, Spindle Stop, Manual Out\n \n@@ -41581,15 +41581,15 @@\n \n 11.5.56 G92 Coordinate System Offset\n G92 axes\n \n AVERTISSEMENT\n Only use G92 after your machine has been positioned to the desired point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 876 / 1224\n \n G92 makes the current point have the coordinates you want (without motion), where the axis words\n contain the axis numbers you want. All axis words are optional, except that at least one must be used.\n If an axis word is not used for a given axis, the offset for that axis will be zero.\n When G92 is executed, the origins of all coordinate systems move. They move such that the value of\n@@ -41629,15 +41629,15 @@\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 first program. The parameter values will be saved when the first program exits and restored when\n the second one starts up. Use G92.3 near the beginning of the second program. That will restore the\n offsets saved in the first program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.59\n \n 877 / 1224\n \n G93, G94, G95 Feed Rate Mode\n \n@@ -41682,15 +41682,15 @@\n G96 Example Line\n G96 D2500 S250 (set CSS with a max rpm of 2500 and a surface speed of 250)\n \n It is an error if:\n \u2014 S is not specified with G96\n \u2014 A feed move is specified in G96 mode while the spindle is not turning\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.61\n \n 878 / 1224\n \n G98, G99 Canned Cycle Return Level\n \n@@ -41761,15 +41761,15 @@\n Save Modal State\n Invalidate Stored Modal State\n Restore Modal State\n Save Autorestore Modal State\n Call and Return From Subprogram\n User Defined M-Codes\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.2\n \n 879 / 1224\n \n M0, M1 Program Pause\n \n@@ -41807,15 +41807,15 @@\n File Requirements for more information on what using % does not do.\n \n 11.6.4 M60 Pallet Change Pause\n \u2014 M60 - exchange pallet shuttles and then pause a running program temporarily (regardless of the\n setting of the optional stop switch). Pressing the cycle start button will restart the program at the\n following line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.5\n \n 880 / 1224\n \n M3, M4, M5 Spindle Control\n \n@@ -41858,15 +41858,15 @@\n \u2014 If configured in the INI file some axis positions may move when a M6 is issued. See the EMCIO\n section for more information on tool change options.\n \u2014 No other changes will be made. For example, coolant will continue to flow during the tool change\n unless it has been turned off by an M9.\n Note\n The T- word is an integer number designating the tool pocket number in the carousel (not its index).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 881 / 1224\n \n AVERTISSEMENT\n The tool length offset is not changed by M6, use G43 after the M6 to change the tool length\n offset.\n \n@@ -41905,15 +41905,15 @@\n \u2014 ORIENT_OFFSET = 0-360 (fixed offset in degrees added to M19 R word)\n \u2014 HAL Pins\n \u2014 spindle.N.orient-angle (out float) Desired spindle orientation for M19. Value of the M19 R word\n parameter plus the value of the [RS274NGC]ORIENT_OFFSET INI parameter.\n \u2014 spindle.N.orient-mode (out s32) Desired spindle rotation mode. Reflects M19 P parameter word,\n default = 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 882 / 1224\n \n \u2014 spindle.N.orient (out bit) Indicates start of spindle orient cycle. Set by M19. Cleared by any of\n M3,M4,M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails\n with an error message.\n \u2014 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@@ -41952,15 +41952,15 @@\n feed override value and the commanded feed rate to set the actual feed rate. In LinuxCNC, the HAL\n pin motion.adaptive-feed is used for this purpose. Values on motion.adaptive-feed should range from\n -1 (programmed speed in reverse) to 1 (full speed). 0 is equivalent to feed-hold.\n Note\n The use of negative adaptive-feed for reverse run is a new feature and is not very well tested as yet.\n The intended use is for plasma cutters and wire spark eroders but it is not limited to such applications.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 883 / 1224\n \n 11.6.13 M53 Feed Stop Control\n \u2014 M53 <P1> - 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 \u2014 M53 P0 - disable the feed stop switch. The state of motion.feed-hold will have no effect on feed\n@@ -41993,15 +41993,15 @@\n If there is no subsequent motion command, the queued output changes won\u2019t happen. It\u2019s best to\n always program a motion G-code (G0, G1, etc) right after the M62/63.\n M64 & M65 happen immediately as they are received by the motion controller. They are not synchronized with movement, and they will break blending.\n Note\n M62-65 will not function unless the appropriate motion.digital-out-nn pins are connected in your HAL\n file to outputs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 884 / 1224\n \n 11.6.16 M66 Wait on Input\n M66 P- | E- <L->\n \n \u2014 P- - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio)\n@@ -42044,15 +42044,15 @@\n \u2014 Q- - is the value to set (set to 0 to turn off).\n The actual change of the specified outputs will happen at the beginning of the next motion command. If\n there is no subsequent motion command, the queued output changes won\u2019t happen. It\u2019s best to always\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 885 / 1224\n \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@@ -42089,15 +42089,15 @@\n \u2014 lathe radius/diameter mode (G7,G8)\n \u2014 path control mode (G61, G61.1, G64)\n \u2014 current feed and speed (F and S values)\n \u2014 spindle status (M3,M4,M5) - on/off and direction\n \u2014 mist (M7) and flood (M8) status\n \u2014 speed override (M51) and feed override (M50) settings\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 886 / 1224\n \n \u2014 adaptive feed setting (M52)\n \u2014 feed hold setting (M53)\n Note that in particular, the motion mode (G1 etc) is NOT restored.\n current call level means either:\n@@ -42138,15 +42138,15 @@\n O<imperialsub> endsub\n ; main program\n g21 (metric)\n g90 (absolute)\n f200 (fast speed)\n S2500 (high rpm)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 887 / 1224\n \n (debug, in main, state now:)\n o<showstate> call\n M70 (save caller state in at global level)\n O<imperialsub> call\n@@ -42190,15 +42190,15 @@\n o<showstate> call\n m2\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 888 / 1224\n \n 11.6.23.1 Selectively Restoring Modal State\n Executing an M72 or returning from a subroutine which contains an M73 will restore all modal state\n saved.\n If only some aspects of modal state should be preserved, an alternative is the usage of predefined\n@@ -42241,15 +42241,15 @@\n into account, otherwise a Unknown M-code error will occur.\n AVERTISSEMENT\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 files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 889 / 1224\n \n The error Unknown M-code used denotes one of the following:\n \u2014 The specified User Defined Command does not exist\n \u2014 The file is not an executable file\n \u2014 The file name has an extension\n@@ -42292,15 +42292,15 @@\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 eog /home/john/linuxcnc/nc_files/message.png &\n exit 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 890 / 1224\n \n 11.7 O Codes\n 11.7.1 Use of O-codes\n O-codes provide for flow control in NC programs. Each block has an associated number, which is the\n number used after O. Care must be taken to properly match the O-numbers. O codes use the letter O\n@@ -42339,15 +42339,15 @@\n o100 sub\n G53 G0 X0 Y0 Z0 (rapid move to machine home)\n o100 endsub\n (the subroutine is called)\n o100 call\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 891 / 1224\n \n See G53, G0 and M2 sections for more information.\n O- Return Inside a subroutine, O- return can be executed. This immediately returns to the calling\n code, just as though O- endsub was encountered.\n O- Return Example\n@@ -42396,15 +42396,15 @@\n Numbered programs are enabled by default, and may be disabled by placing DISABLE_FANUC_STYLE_SUB\n = 1 in the [RS274NGC] section of the .ini file.\n Note\n Numbered main and subprogram definitions and calls differ from traditional rs274ngc both in syntax\n and execution. To reduce the possibility of confusion, the interpreter will raise an error if definitions\n of one style are mixed with calls of another.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 892 / 1224\n \n Numbered Subprogram Simple Example\n o1 (Example 1)\n M98 P100\n M30\n@@ -42475,15 +42475,15 @@\n M99\n \n ; Return from Subprogram 100\n ; Subprogram 200\n #1)\n ; Return from Subprogram 200\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 893 / 1224\n \n In this example, parameter #1 is initialized to 0. Subprogram O100 is called five times in a loop. Nested\n within each call to O100, subprogram O200 is called five times in a loop, for 25 times total.\n Note that parameter #1 is global. At the end of the main program, after updates within O100 and O200,\n its value will equal 5.25.\n@@ -42538,15 +42538,15 @@\n If the if conditional evaluates to false then the elseif conditions are evaluated in order until one\n evaluates to true. If the elseif condition is true then the statements following the elseif up to the\n next conditional line are executed. If none of the if or elseif conditions evaluate to true then the\n statements following the else are executed. When a condition is evaluated to true no more conditions\n are evaluated in the group.\n If Endif Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 894 / 1224\n \n (if parameter #31 is equal to 3 set S2000)\n o101 if [#31 EQ 3]\n S2000\n o101 endif\n@@ -42595,15 +42595,15 @@\n 11.7.8 Indirection\n The O-number may be given by a parameter and/or calculation.\n Indirection Example\n o[#101+2] call\n \n Computing values in O-words For more information on computing values see the following sections:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 895 / 1224\n \n \u2014 Parameters\n \u2014 Expressions\n \u2014 Binary Operators\n \u2014 Functions\n@@ -42641,15 +42641,15 @@\n are global, and are cleared just before the next subroutine call.\n \n 11.7.11 Errors\n The following statements cause an error message and abort the interpreter:\n \u2014 a return or endsub not within a sub definition\n \u2014 a label on repeat which is defined elsewhere\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 896 / 1224\n \n \u2014 a label on while which is defi\u0144ed elsewhere and not referring to a do\n \u2014 a label on if defined elsewhere\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@@ -42684,15 +42684,15 @@\n The tool is not changed until an M6 is programmed (see Section M6). The T word may appear on the\n same line as the M6 or on a previous line. It is OK if T words appear on two or more lines with no tool\n change. Only the the most recent T word will take effect at the next tool change.\n Note\n When LinuxCNC is configured for a nonrandom toolchanger (see the entry for RANDOM_TOOLCHANGER in the EMCIO Section), T0 gets special handling: no tool will be selected.\n This is useful if you want the spindle to be empty after a tool change.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 897 / 1224\n \n Note\n When LinuxCNC is configured for a random toolchanger (see the entry for RANDOM_TOOLCHANGER\n in the EMCIO Section), T0 does not get any special treatment: T0 is a valid tool like any other. It is\n customary to use T0 on a random toolchanger machine to track an empty pocket, so that it behaves\n@@ -42718,33 +42718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 898 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 899 / 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 900 / 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@@ -42757,15 +42757,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 901 / 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@@ -42783,15 +42783,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 902 / 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@@ -42821,15 +42821,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 903 / 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@@ -42855,15 +42855,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 904 / 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@@ -42884,15 +42884,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 905 / 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@@ -42916,15 +42916,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 906 / 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@@ -42959,15 +42959,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 907 / 1224\n \n Chapitre 12\n \n Virtual Control Panels\n 12.1 PyVCP\n@@ -42977,15 +42977,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 908 / 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 <pyvcp>\n@@ -42993,15 +42993,15 @@\n <pyvcp>\n <label text=\u201dThis is a LED indicator\u201d/>\n <led/>\n </pyvcp>\n \n Figure 12.2 \u2013 Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 909 / 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@@ -43046,15 +43046,15 @@\n </pyvcp>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 910 / 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@@ -43073,15 +43073,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 911 / 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@@ -43126,15 +43126,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 912 / 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@@ -43177,15 +43177,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 913 / 1224\n \n 12.1.6.3 Label\n A label is a way to add text to your panel.\n \u2014 <label></label> - creates a label.\n \u2014 <text>\u201dtext\u201d</text> - the text to put in your label, a blank label can be used as a spacer to align\n@@ -43226,15 +43226,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 914 / 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 <led></led> - makes a round LED\n@@ -43271,15 +43271,15 @@\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </rectled>\n </vbox>\n \n The above code produced this example. Also showing a vertical box with relief.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 915 / 1224\n \n Figure 12.5 \u2013 Simple Rectangle LED Example\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@@ -43306,15 +43306,15 @@\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 automatically, which can toggle the Checkbutton via HAL, if the value linked is changed, to update\n the display remotely.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 916 / 1224\n \n Figure 12.7 \u2013 Unchecked button\n \n Figure 12.8 \u2013 Checked button\n Checkbutton Code Example\n@@ -43342,15 +43342,15 @@\n <choices>[\u201done\u201d,\u201dtwo\u201d,\u201dthree\u201d]</choices>\n <halpin>\u201dmy-radio\u201d</halpin>\n <initval>0</initval>\n </radiobutton>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 917 / 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 <orient>HORIZONTAL</orient>\n to display horizontally.\n 12.1.6.7 Number Displays\n@@ -43375,15 +43375,15 @@\n <font>(\u201dcourier 10 pitch\u201d,100)</font>\n \n \u2014 <format> - 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 <s32>. Make sure the width is wide enough to cover the largest\n number you expect to use.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 918 / 1224\n \n <s32>\n <halpin>\u201dmy-number\u201d</halpin>\n <font>(\u201dHelvetica\u201d,24)</font>\n <format>\u201d6d\u201d</format>\n@@ -43423,15 +43423,15 @@\n <range3>136, 150,\u201dred\u201d</range3>\n <canvas_width>200</canvas_width>\n <canvas_height>50</canvas_height>\n <bar_height>30</bar_height>\n <bar_width>150</bar_width>\n </bar>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 919 / 1224\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@@ -43449,15 +43449,15 @@\n <region3>(0,12,\u201dred\u201d)</region3>\n </meter>\n \n The above code produced this example:\n \n Figure 12.14 \u2013 Simple Meter Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 920 / 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@@ -43500,15 +43500,15 @@\n <resolution>1</resolution>\n <orient>VERTICAL</orient>\n <min_>100</min_>\n <max_>0</max_>\n <param_pin>1</param_pin>\n </scale>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 921 / 1224\n \n The above code produced this example:\n \n Figure 12.16 \u2013 Simple Scale Example\n Note\n@@ -43533,15 +43533,15 @@\n <edgecolor>\u201dgreen\u201d</edgecolor>\n <dotcolor>\u201dblack\u201d</dotcolor>\n <param_pin>1</param_pin>\n </dial>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 922 / 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@@ -43553,15 +43553,15 @@\n <halpin>\u201dmy-wheel\u201d</halpin>\n <cpr>45</cpr>\n <size>250</size>\n </jogwheel>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 923 / 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@@ -43575,15 +43575,15 @@\n </vbox>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 924 / 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@@ -43596,15 +43596,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 925 / 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@@ -43640,15 +43640,15 @@\n <text>\u201dRIDGE\u201d</text>\n <bd>3</bd>\n </button>\n </hbox>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 926 / 1224\n \n Figure 12.24 \u2013 Containers Borders Showcase\n Fill Container fill are specified with the <boxfill fill=\u201d\u201d/> 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 <boxfill fill =\u201dstyle\u201d/>\n@@ -43675,15 +43675,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 <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 927 / 1224\n \n <vbox>\n <relief>RIDGE</relief>\n <bd>6</bd>\n <label><text>\u201da vbox:\u201d</text></label>\n@@ -43709,15 +43709,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 <tablerow/> tag. A contained widget may span rows or columns through the use of the <tablespan\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 928 / 1224\n \n rows= cols=/> tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the <tablesticky sticky=/> tag. A table expands on its flexible rows and columns.\n Table Code Example\n <table flexible_rows=\u201d[2]\u201d flexible_columns=\u201d[1,4]\u201d>\n@@ -43761,15 +43761,15 @@\n <bar>\n <halpin>\u201dspindle-speed\u201d</halpin>\n <max_>5000</max_>\n </bar>\n </vbox>\n <vbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <label>\n <text>\u201d(this is the green eggs tab)\u201d</text>\n </label>\n </vbox>\n <vbox>\n <label>\n@@ -43778,15 +43778,15 @@\n </vbox>\n </tabs>\n \n The above code produced this example showing each tab selected.\n \n 929 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 930 / 1224\n \n Figure 12.29 \u2013 Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -43813,29 +43813,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 931 / 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\n will be built upon a StepConf Wizard generated configuration. First we run the StepConf Wizard\n and configure our machine, on the Advanced Configuration Options page we then make a couple of\n selections to add a blank PyVCP panel as shown in the following figure. For this example we named\n the configuration 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 932 / 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 <pyvcp></pyvcp> 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@@ -43888,15 +43888,15 @@\n <halpin>\u201dz-plus\u201d</halpin>\n <text>\u201dZ+\u201d</text>\n </button>\n <button>\n <font>(\u201dHelvetica\u201d,20)</font>\n <width>3</width>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 933 / 1224\n \n <halpin>\u201dz-minus\u201d</halpin>\n <text>\u201dZ-\u201d</text>\n </button>\n </hbox>\n@@ -43921,15 +43921,15 @@\n </pyvcp>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 934 / 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@@ -43979,15 +43979,15 @@\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </led>\n </hbox>\n <hbox>\n <relief>RIDGE</relief>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 935 / 1224\n \n <bd>2</bd>\n <label>\n <text>\u201dPin 10\u201d</text>\n <font>(\u201dHelvetica\u201d,14)</font>\n@@ -44029,15 +44029,15 @@\n net pin02 ptest.btn02 parport.0.pin-02-out ptest.led-02\n net pin10 parport.0.pin-10-in ptest.led-10\n net pin11 parport.0.pin-11-in ptest.led-11\n start\n \n To run the HAL file we use the following command from a terminal window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 936 / 1224\n \n ~$ halrun -I -f ptest.hal\n \n The following figure shows what a complete panel might look like.\n \n@@ -44120,15 +44120,15 @@\n parport.0.pin-15-in-not\n parport.0.pin-16-out\n parport.0.pin-17-out\n ptest.btn01 ==> pin01\n ptest.btn02 ==> pin02\n ptest.led-01 <== pin01\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 bit\n 4 bit\n 4 bit\n \n IN\n IN\n@@ -44189,15 +44189,15 @@\n <width>\u201d30\u201d</width>\n <on_color>\u201dgreen\u201d</on_color>\n <off_color>\u201dred\u201d</off_color>\n </rectled>\n </hbox>\n </vbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <!-- the FWD Led -->\n <vbox>\n <relief>RAISED</relief>\n <bd>2</bd>\n <label>\n <text>\u201dFWD\u201d</text>\n@@ -44234,15 +44234,15 @@\n </hbox>\n </pyvcp>\n \n The above gives us a PyVCP panel that looks like the following.\n \n 938 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 939 / 1224\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@@ -44261,15 +44261,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 940 / 1224\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 <pyvcp>\n <!-- rapid to home button example -->\n@@ -44285,15 +44285,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 941 / 1224\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@@ -44333,15 +44333,15 @@\n user-defined handlers in Python.\n \u2014 Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call\n a G-code subroutine, plus support for status change operations through Action Widgets.\n \u2014 Several independent GladeVCP panels may be run in different tabs.\n \u2014 Separation of user interface appearance and functionality: change appearance without touching\n any code.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 942 / 1224\n \n 12.3.2 A Quick Tour with the Example Panel\n GladeVCP panel windows may be run in three different setups:\n \u2014 always visible integrated into AXIS at the right side, exactly like PyVCP panels,\n \u2014 as a tab in AXIS,Touchy, Gscreen, or GMOCCAPY; in AXIS this would create a third tab besides the\n@@ -44358,26 +44358,26 @@\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 Run the same panel, but as a tab inside AXIS:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n $ cd configs/sim/axis/gladevcp\n $ linuxcnc gladevcp_tab.ini\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 943 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 944 / 1224\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@@ -44393,15 +44393,15 @@\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 \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.i\n and configs/sim/axis/gladevcp/gladevcp_panel.ini.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 945 / 1224\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@@ -44438,15 +44438,15 @@\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 <file>.ui or start a new one by just running the glade command from the shell.\n \u2014 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with source <linuxcncdir>/scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNCspecific widgets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 946 / 1224\n \n \u2014 When asked for unsaved preferences, just accept the defaults and hit Close.\n \u2014 From Toplevels (toolbar), pick GtkWindow (first entry) as top level window. Set window1 as ID in\n the right pane under the tab General. This naming is important because GladeVCP relies on it.\n \u2014 From the button with the three dots you can find the LinuxCNC specific widgets.\n@@ -44467,15 +44467,15 @@\n inspect its pins.\n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n HAL containers have an associated HAL pin which is off by default, which causes all contained widgets to render inactive. A common use case would be to associate these container HAL pins with\n halui.machine.is-on or one of the halui.mode signals, to assure some widgets appear active only\n in a certain state.\n To just activate a container, execute the HAL command setp gladevcp.<container-name> 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 947 / 1224\n \n 12.3.3.4 Preparing the HAL command file\n The suggested way of linking HAL pins in a GladeVCP panel is to collect them in a separate file with\n extension .hal. This file is passed via the POSTGUI_HALFILE= option in the HAL section of your INI file.\n Attention\n@@ -44514,15 +44514,15 @@\n the same directory as the INI file. You might have to copy them to you directory (alternatively, specify\n a correct absolute or relative path to the file(s)).\n \n Note\n The [RS274NGC]SUBROUTINE_PATH= option is only set so the example panel will find the Oword subroutine (oword.ngc) for the MDI Command widget. It might not be needed in your setup. The relative\n path specifier ../../nc_files/gladevcp_lib is constructed to work with directories copied by the configuration picker and when using a run-in-place setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 948 / 1224\n \n 12.3.3.6 Embedding as a Tab\n To do so, edit your INI file and add to the DISPLAY and HAL sections of INI file as follows:\n [DISPLAY]\n # add GladeVCP panel as a tab next to Preview/DRO:\n@@ -44561,15 +44561,15 @@\n Note\n The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located in\n the same directory as the INI file. You might have to copy them to you directory (alternatively, specify\n a correct absolute or relative path to the file(s)).\n \n Note the following differences to the AXIS tab setup:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 949 / 1224\n \n \u2014 The HAL command file is slightly modified since Touchy does not use the halui components so its\n signals are not available and some shortcuts have been taken.\n \u2014 There is no POSTGUI_HALFILE= INI option, but passing the HAL command file on the EMBED_TAB_COM\n line is ok.\n@@ -44617,15 +44617,15 @@\n 12.3.5 Understanding the GladeVCP startup process\n The integration steps outlined above look a bit tricky, and they are. It does therefore help to understand\n the startup process of LinuxCNC and how this relates to GladeVCP.\n The normal LinuxCNC startup process does the following:\n \u2014 The realtime environment is started.\n \u2014 All HAL components are loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 950 / 1224\n \n \u2014 The HAL components are linked together through the .hal cmd scripts.\n \u2014 task, iocontrol and eventually the user interface is started.\n \u2014 Pre-GladeVCP the assumption was: by the time the UI starts, all of HAL is loaded, plumbed and\n ready to go.\n@@ -44674,15 +44674,15 @@\n \u2014 Widgets to show axis positions: DRO Widget, Combi DRO Widget\n \u2014 Widgets for file handling: IconView File Selection\n \u2014 Widgets for display/edit of all axes offsets: OffsetPage\n \u2014 Widgets for display/edit of all tool offsets: Tooloffset editor\n \u2014 Widget for G-code display and edit: HAL_Sourceview\n \u2014 Widget for MDI input and history display: MDI History\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 951 / 1224\n \n 12.3.6.1 Widget and HAL pin naming\n Most HAL widgets have a single associated HAL pin with the same HAL name as the widget (glade:\n General\u2192Name).\n Exceptions to this rule currently are:\n@@ -44723,15 +44723,15 @@\n As a general rule, if you need to set a HAL output widget\u2019s value from Python code, do so by calling\n the underlying Gtk setter (e.g., set_active(), set_value()). Do not try to set the associated pin\u2019s\n value by halcomp[pinname] = value directly because the widget will not take notice of the change!\n It might be tempting to set HAL widget input pins programmatically. Note this defeats the purpose\n of an input pin in the first place - it should be linked to, and react to signals generated by other HAL\n components. While there is currently no write protection on writing to input pins in HAL Python, this\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 952 / 1224\n \n doesn\u2019t make sense. You might use setp _pinname_ _value_ in the associated HAL file for testing\n though.\n \n It is perfectly OK to set an output HAL pin\u2019s value with halcomp[pinname] = value provided this HAL\n@@ -44755,15 +44755,15 @@\n \u2014 HAL_ToggleButton, HAL_CheckButton: retains on/off state. Important signal: toggled\n \u2014 HAL_RadioButton: a one-of-many group. Important signal: toggled (per button).\n \u2014 Important common methods: set_active(), get_active()\n \u2014 Important properties: label, image\n \n Figure 12.31 \u2013 Check button\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 953 / 1224\n \n Figure 12.32 \u2013 Radio buttons\n \n Figure 12.33 \u2013 Toggle button\n ASTUCE\n@@ -44781,15 +44781,15 @@\n <widgetname>-s\n out s32 pin\n To make a scale useful in Glade, add an Adjustment (General \u2192 Adjustment \u2192 New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set\n adjustment Page size and Page increment to zero to avoid warnings.\n \n Figure 12.34 \u2013 Example HAL_HScale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 954 / 1224\n \n 12.3.6.7 SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n <widgetname>-f\n out FLOAT pin\n@@ -44829,15 +44829,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 955 / 1224\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 \u2014 count is based on the CPR selected - it will count positive and negative. It is available as a s32\n@@ -44883,15 +44883,15 @@\n Connect to these like so:\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 def [count function name](widget, count,scale,delta_scale):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 956 / 1224\n \n This will return: the widget, the current count, scale and delta scale of that widget.\n \n Figure 12.36 \u2013 Example Hal_Dial\n \n@@ -44919,15 +44919,15 @@\n label\n Set the content of the label which may be shown over the counts value. The purpose is to give\n the user an idea about the usage of that jogwheel. If the label given is longer than 12 Characters,\n it will be cut to 12 Characters.\n There a couple ways to directly control the widget using Python.\n Using GObject to set the above listed properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 957 / 1224\n \n [widget name].set_property(\u201dsize\u201d,int(value))\n [widget name].set_property(\u201dcpr\u201d,int(value))\n [widget name].set_property(\u201dshow_counts, True)\n \n@@ -44953,15 +44953,15 @@\n The shown value divided by the scale value, this is very useful, if the velocity is shown in units /\n min, but LinuxCNC expects it to be in units / second.\n <widgetname>-scale\n in float pin\n The scale to apply.\n Default is 60.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 958 / 1224\n \n <widgetname>-increase\n in bit pin\n As long as the pin is true, the value will increase.\n Very handy with connected momentary switch.\n@@ -45013,15 +45013,15 @@\n Color\n Sets the color of the bar.\n Any hex color is allowed.\n Default is \u201d#FF8116\u201d.\n template\n String\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 959 / 1224\n \n Text template to display the value. Python formatting is used.\n Any allowed format.\n Default is \u201d%.1f\u201d.\n do_hide_button\n@@ -45062,15 +45062,15 @@\n text_template\n Determines the text displayed - a Python format string to convert the pin value to text. Defaults\n to %s (values are converted by the str() function) but may contain any legit as an argument to\n Pythons format() method.\n Example: Distance: %.03f will display the text and the pin value with 3 fractional digits padded\n with zeros for a FLOAT pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 960 / 1224\n \n 12.3.6.12 Containers\n \u2014 HAL_HideTable\n \u2014 HAL_Table\n \u2014 State_Sensitive_Table\n@@ -45108,15 +45108,15 @@\n It has a single input BIT pin which controls its state: ON or OFF.\n LEDs have several properties which control their look and feel:\n on_color\n String defining ON color of LED.\n May be any valid gdk.Color name.\n Not working on Ubuntu 8.04.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 961 / 1224\n \n off_color\n String defining OFF color of LED.\n May be any valid gdk.Color name or special value dark. dark means that OFF color will be set to\n 0.4 value of ON color.\n@@ -45155,15 +45155,15 @@\n The HAL_ProgressBar is derived from gtk.ProgressBar and has two float HAL input pins:\n <widgetname>\n the current value to be displayed\n <widgetname>-scale\n the maximum absolute value of input\n HAL_ProgressBar has the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 962 / 1224\n \n scale\n Value scale.\n Sets the maximum absolute value of input. Same as setting the <widgetname>.scale pin.\n A float, range from -224 to +2 24.\n@@ -45201,15 +45201,15 @@\n a float value from the ListStore.\n If you\u2019re confused like me about how to edit ComboBox ListStores and CellRenderer, see https://youtu.be/Z5_F-rW2cL8.\n 12.3.6.16 Bars\n HAL_Bar and HAL_VBar widgets for horizontal and vertical bars representing float values.\n HAL_Bar and HAL_VBar each have one input FLOAT HAL pin.\n HAL_Bar and HAL_VBar both bars have the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 963 / 1224\n \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@@ -45253,15 +45253,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 \u2013 Horizontal bar\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 964 / 1224\n \n Figure 12.42 \u2013 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@@ -45290,15 +45290,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 965 / 1224\n \n Figure 12.43 \u2013 Example HAL Meters\n \n 12.3.6.18 HAL_Graph\n This widget is for plotting values over time.\n@@ -45326,15 +45326,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 966 / 1224\n \n use_relative\n This selects the DRO to show values relative to user system or machine coordinates.\n Default = true.\n show_live_plot\n@@ -45384,15 +45384,15 @@\n \u2014 4 = left move, middle zoom, right rotate\n \u2014 5 = left rotate, middle zoom, right move\n \u2014 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 Using GObject to set the above listed properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 967 / 1224\n \n [widget name].set_property(\u2019view\u2019,\u2019P\u2019)\n [widget name].set_property(\u2019metric_units\u2019,False)\n [widget name].set_property(\u2019use_default_controls\u2019,False)\n [widget name].set_property(\u2019enable_dro\u2019 False)\n@@ -45425,15 +45425,15 @@\n \u2014 If you set all the plotting options false but show_offsets true you get an offsets page instead\n of a graphics plot.\n \u2014 If you get the zoom distance before changing the view then reset the zoom distance, it is much\n more user friendly.\n \u2014 if you select an element in the preview, the selected element will be used as rotation center\n point\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 968 / 1224\n \n Figure 12.44 \u2013 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@@ -45455,15 +45455,15 @@\n The DRO widget is used to display the current axis position.\n It has the following properties:\n display_units_mm\n Used to toggle the display units between metric and imperial. Default is False.\n actual\n Select actual (feedback) position or commanded position. Default is True.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 969 / 1224\n \n diam\u00e8tre\n Display diameter for a lathe. Default is False.\n mm_text_template\n You can use Python formatting to display the position with different precision. Default is \u201d%10.3f\u201d.\n@@ -45508,15 +45508,15 @@\n [widget name].set_property(\u201dimperial_text_template\u201d, \u201d%9.4f\u201d)\n [widget name].set_property(\u201djoint_number\u201d, 3)\n [widget name].set_property(\u201dreference_type\u201d, 3)\n [widget name].set_property(\u201dfont_family\u201d, \u201dmono\u201d)\n [widget name].set_property(\u201dfont_size\u201d, 30)\n [widget name].set_property(\u201dfont_weight\u201d, \u201dbold\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 970 / 1224\n \n # it is easier to read colors by calling a function:\n def str_to_rgba(color):\n c = Gdk.RGBA()\n c.parse(color)\n@@ -45560,15 +45560,15 @@\n Select actual (feedback) or commanded position.\n metric_units\n Used to toggle the display units between metric and imperial.\n auto_units\n Units will toggle between metric and imperial according to the active G-code being G20 or G21.\n Default is TRUE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 971 / 1224\n \n diam\u00e8tre\n Whether to display position as diameter or radius.\n In diameter mode the DRO will display the joint value multiplied by 2.\n mm_text_template\n@@ -45619,15 +45619,15 @@\n \u2014 [widget name].set_auto_units(state)\n If True the DRO will change units according to active G-code (G20 / G21).\n state = boolean (True or False)\n Default is True.\n \u2014 [widget name].set_to_diameter(state)\n If True the DRO will show the diameter not the radius, i.e., the axis value multiplied by 2 (specially\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 972 / 1224\n \n needed for lathes).\n state = boolean (True or False)\n Default is False.\n \u2014 [widget name].toggle_readout()\n@@ -45670,15 +45670,15 @@\n The order may be used to set other Combi_DRO widgets to the same order with [widget name].set_or\n \u2014 units_changed\n This signal is emitted if the DRO units are changed.\n It will send the following data:\n \u2014 widget = widget object\n The widget object that sends the signal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 973 / 1224\n \n \u2014 metric_units = boolean\n True if the DRO does display metric units, False in case of imperial display.\n \u2014 system_changed\n This signal is emitted if the DRO units are changed.\n@@ -45705,15 +45705,15 @@\n This is a touch screen friendly widget to select a file and to change directories.\n IconView widget has the following properties:\n icon_size\n Sets the size of the displayed icon.\n Allowed values are integers in the range from 12 to 96.\n Default is 48.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 974 / 1224\n \n start_dir\n Sets the directory to start in when the widget is shown first time.\n Must be a string, containing a valid directory path.\n Default is \u201d/\u201d.\n@@ -45763,15 +45763,15 @@\n Default = \u201dngc,py\u201d.\n \u2014 [widget name].get_selected()\n Returns the path of the selected file, or None if a directory has been selected.\n \u2014 [widget name].refresh_filelist()\n Refreshes the filelist.\n Needed if you add a file without changing the directory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 975 / 1224\n \n If the button box has been hidden, you can reach the functions of this button through its clicked signals\n like so:\n [widget name].btn_home.emit(\u201dclicked\u201d)\n [widget name].btn_jump_to.emit(\u201dclicked\u201d)\n@@ -45796,15 +45796,15 @@\n \u2014 buttonname is one of btn_home, btn_dir_up, btn_sel_prev, btn_sel_next, btn_jump_to or\n btn_select.\n \u2014 state is a boolean and will be True or False.\n \u2014 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 976 / 1224\n \n Figure 12.46 \u2013 Iconview Example\n \n 12.3.6.24 Calculator widget\n This is a simple calculator widget, that can be used for numerical input.\n@@ -45819,15 +45819,15 @@\n [widget name].set_property(\u201dis_editable\u201d,True)\n [widget name].set_property(\u201dfont\u201d,\u201dsans 25\u201d)\n \n There are Python methods:\n \u2014 [widget name].set_value(2.5)\n This presets the display and is recorded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 977 / 1224\n \n \u2014 [widget name].set_font(\u201dsans 25\u201d)\n \u2014 [widget name].set_editable(True)\n \u2014 [widget name].get_value()\n Returns the calculated value - a float.\n@@ -45870,15 +45870,15 @@\n Default is all the tabs set.\n \u2014 [widget name].set_title_font(\u2019sans 16,tab=\u20191\u2019)\n Sets the (Pango) font on the column titles only.\n The all_offsets, wear_offsets, tool_offsets can be set at the same time by adding 1, 2 and/or\n 3 to the tab string.\n Default is all the tabs set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 978 / 1224\n \n \u2014 [widget name].set_tab_font(\u2019sans 16,tab=\u20191\u2019)\n Sets the (Pango) font on the tabs only.\n The all_offsets, wear_offsets, tool_offsets can be set at the same time by adding 1, 2 and/or\n 3 to the tab string.\n@@ -45910,15 +45910,15 @@\n It has the following properties:\n display_units_mm\n Display in metrice units\n hide_columns\n A no-space list of columns to hide. The columns are designated (in order) as such: xyzabcuvwt.\n You can hide any of the columns.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 979 / 1224\n \n hide_rows\n A no-space list of rows to hide.\n The rows are designated (in order) as such: 0123456789abc.\n You can hide any of the rows.\n@@ -45960,15 +45960,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 \u2014 [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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 980 / 1224\n \n Figure 12.48 \u2013 Offsetpage Example\n \n 12.3.6.27 HAL_sourceview widget\n \n@@ -45996,15 +45996,15 @@\n Moves the highlighted line down one line.\n \u2014 [widget name].load_file(\u2019filename\u2019)\n Loads a file.\n Using None (not a filename string) will reload the same program.\n \u2014 [widget name].get_filename()\n FIXME description\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 981 / 1224\n \n Figure 12.49 \u2013 Sourceview Example\n \n 12.3.6.28 MDI history\n This is for displaying and entering MDI codes.\n@@ -46026,15 +46026,15 @@\n [widget name].set_property(\u201duse_double_click\u201d,False)\n \n 12.3.6.29 Animated function diagrams: HAL widgets in a bitmap\n For some applications it might be desirable to have a background image - like a functional diagram\n - and position widgets at appropriate places in that image. A good combination is setting a bitmap\n background image, like from a .png file, making the GladeVCP window fixed-size, and use the Glade\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 982 / 1224\n \n Fixed widget to position widgets on this image. The code for the below example can be found in\n configs/apps/gladevcp/animated-backdrop:\n \n Figure 12.50 \u2013 HAL widgets in a bitmap Example\n@@ -46047,15 +46047,15 @@\n G-code interpreter.\n \n VCP Action Widgets are derived from the Gtk.Action widget.\n The Action widget in a nutshell:\n \u2014 It is an object available in Glade\n \u2014 It has no visual appearance by itself\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 983 / 1224\n \n \u2014 Its purpose: Associate a visible, sensitive UI component like menu, toolbutton, button with a command. See these widget\u2019s General\u2192Related\u2192Action property.\n \u2014 The \u201dcanned action\u201d will be executed when the associated UI component is triggered (button press,\n menu click..).\n \u2014 It provides an easy way to execute commands without resorting to Python programming.\n@@ -46084,15 +46084,15 @@\n \u2014 set the mode before the command is executed.\n Example command to just print a message to the terminal:\n print(\u2019action activated\u2019)\n \n Example command to set the machine to off state:\n CMD.state(linuxcnc.STATE_OFF)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 984 / 1224\n \n Example command to call a handler function that passes data:\n EXT.on_button_press(self, 100)\n \n You can use a semicolon to separate multiple commands;\n@@ -46123,15 +46123,15 @@\n configs/apps/gladevcp/mdi-command-example/whoareyou.ui is a Glade UI file which conveys the\n basics:\n 1. Open it in Glade and study how it is done.\n 2. Start AXIS, and then start this from a terminal window with gladevcp whoareyou.ui.\n 3. See the hal_action_mdi1 action and its MDI command property - this just executes (MSG, \u201dHi,\n I\u2019m an VCP_Action_MDI\u201d) so there should be a message popup in AXIS like so:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 985 / 1224\n \n Figure 12.52 \u2013 Action_MDI Simple Example\n You\u2019ll notice that the button associated with the Action_MDI action is grayed out if the machine is\n off, in E-Stop or if the interpreter is running. It will automatically become active when the machine is\n turned on and out of E-Stop, and the program is idle.\n@@ -46144,15 +46144,15 @@\n \u2014 for the above HAL SpinBox, we could use (MSG, \u201dThe speed is: ${speed-f}\u201d) just to show\n what\u2019s 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 \n Figure 12.53 \u2013 Action_MDI Parameter Passing Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 986 / 1224\n \n 12.3.7.7 An advanced example: Feeding parameters to an O-word subroutine\n It\u2019s perfectly OK to call an O-word subroutine in an MDI command, and pass HAL pin values as actual\n parameters. An example UI file is in configs/apps/gladevcp/mdi-command-example/owordsub.ui.\n Place nc_files/gladevcp_lib/oword.ngc so AXIS can find it, and run gladevcp owordsub.ui from\n@@ -46178,15 +46178,15 @@\n def on_mdi_command_stop(self, action, userdata=None):\n action.linuxcnc.mdi(\u2019F%.1f\u2019 % (self.start_feed))\n while action.linuxcnc.wait_complete() == -1:\n pass\n \n Only the Action_MDI Toggle widget supports these signals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 987 / 1224\n \n Note\n In a later release of LinuxCNC, the new M-codes M70-M72 will be available. They will make saving\n state before a subroutine call, and restoring state on return much easier.\n \n@@ -46224,15 +46224,15 @@\n 12.3.8 GladeVCP Programming\n 12.3.8.1 User Defined Actions\n Most widget sets, and their associated user interface editors, support the concept of callbacks, i.e.\n functions in user-written code which are executed when something happens in the UI - events like\n mouse clicks, characters typed, mouse movement, timer events, window hiding and exposure and so\n forth.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 988 / 1224\n \n HAL output widgets typically map input-type events like a button press to a value change of the\n associated HAL pin by means of such a - predefined - callback. Within PyVCP, this is really the only\n type of event handling supported - doing something more complex, like executing MDI commands to\n call a G-code subroutine, is not supported.\n@@ -46273,15 +46273,15 @@\n \n In Glade, define a button or HAL button, select the Signals tab, and in the GtkButton properties select\n the pressed line. Enter on_button_press there, and save the Glade file.\n Then add the option -u handlers.py to the GladeVCP command line. If your event handlers are spread\n over several files, just add multiple -u <pyfilename> options.\n Now, pressing the button should change its label since it is set in the callback function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 989 / 1224\n \n What the +-u+ flag does: all Python functions in this file are collected and setup as potential callback\n handlers for your Gtk widgets - they can be referenced from Glade Signals tabs. The callback handlers\n are called with the particular object instance as parameter, like the GtkButton instance above, so you\n can apply any GtkButton method from there.\n@@ -46321,15 +46321,15 @@\n The idea here is: Handlers are linked to class methods. The underlying class(es) are instantiated and\n inspected during GladeVCP startup and linked to the widget tree as signal handlers. So the task now\n is to write:\n \u2014 One or more several class definition(s) with one or several methods, in one module or split over\n several modules,\n \u2014 a function get_handlers in each module which will return a list of class instances to GladeVCP their method names will be linked to signal handlers.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 990 / 1224\n \n Here is a minimum user-defined handler example module:\n class MyCallbacks :\n def on_this_signal(self,obj,data=None):\n print(\u201dthis_signal happened, obj=\u201d,obj)\n@@ -46373,15 +46373,15 @@\n list of widgets is available as builder.get_objects() regardless of UI format.\n 12.3.8.6 Initialization sequence\n It is important to know in which state of affairs your get_handlers() function is called so you know\n what is safe to do there and what not. First, modules are imported and initialized in command line\n order. After successful import, get_handlers() is called in the following state:\n \u2014 The widget tree is created, but not yet realized (no toplevel window.show() has been executed yet).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 991 / 1224\n \n \u2014 The halcomp HAL component is set up and all HAL widgets\u2019 pins have already been added to it.\n \u2014 It is safe to add more HAL pins because halcomp.ready() has not yet been called at this point, so\n you may add your own pins, for instance in the class __init__() method.\n Once all modules have been imported and method names extracted, the following steps happen:\n@@ -46421,15 +46421,15 @@\n \n This way you can pass arbitrary Python statements to your module through the gladevcp -U option,\n for example:\n gladevcp -U debug=42 -U \u201dprint \u2019debug=%d\u2019 % debug\u201d ...\n \n This should set debug to 2 and confirm that your module actually did it.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 992 / 1224\n \n 12.3.8.9 Persistent variables in GladeVCP\n An annoying aspect of GladeVCP in its earlier form and PyVCP is the fact that you may change values\n and HAL pins through text entry, sliders, spin boxes, toggle buttons, etc., but their settings are not\n saved and restored at the next run of LinuxCNC - they start at the default value as set in the panel or\n@@ -46474,15 +46474,15 @@\n \n After restore_state(), self will have attributes set if as running the following:\n self.nhits = 0\n self.a = 1.67\n self.d = True\n self.c = \u201da string\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 993 / 1224\n \n Note that types are saved and preserved on restore. This example assumes that the INI file didn\u2019t\n exist or had the default values from self.defaults.\n After this incantation, you can use the following IniFile methods:\n ini.save_state(obj)\n@@ -46521,15 +46521,15 @@\n By default, the reaction of GladeVCP to a Ctrl-C event is to just exit - without saving state. To make\n sure that this case is covered, add a handler call on_unix_signal which will be automatically be called\n on Ctrl-C (actually on the SIGINT and SIGTERM signals). Example:\n def on_unix_signal(self,signum,stack_frame):\n print(\u201don_unix_signal(): signal %d received, saving state\u201d % (signum))\n self.ini.save_state(self)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 994 / 1224\n \n 12.3.8.13 Hand-editing INI (.ini) files\n You can do that, but note that the values in self.defaults override your edits if there is a syntax or type\n error in your edit. The error is detected, a console message will hint about that happened, and the\n bad inifile will be renamed to have the .BAD suffix. Subsequent bad INI files overwrite earlier .BAD\n@@ -46568,15 +46568,15 @@\n from an INI file parameter at startup, and the max value is set via a HAL pin, which causes the widget\u2019s\n scale to readjust dynamically:\n import linuxcnc\n import os\n import hal\n import hal_glib\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 995 / 1224\n \n class HandlerClass:\n def _on_max_value_change(self,hal_pin,data=None):\n self.meter.max = float(hal_pin.get())\n self.meter.queue_draw() # force a widget redraw\n@@ -46616,15 +46616,15 @@\n # this can be called outside the function\n self.example_trigger.get()\n \n 12.3.8.18 Examples, and rolling your own GladeVCP application\n Visit linuxcnc_root_directory/configs/apps/gladevcp for running examples and starters for your\n own projects.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 996 / 1224\n \n 12.3.9 FAQ\n 1. I get an unexpected unmap event in my handler function right after startup. What\u2019s this?\n This is a consequence of your Glade UI file having the window1 Visible property set to True,\n together with re-parenting the GladeVCP window into AXIS or touchy. The GladeVCP widget\n@@ -46667,15 +46667,15 @@\n \u2014 Make sure you have the development version of LinuxCNC installed. You don\u2019t need the axisrc file\n any more, this was mentioned in the old GladeVCP wiki page.\n \u2014 Run GladeVCP or AXIS from a terminal window. If you get Python errors, check whether there\u2019s still\n a /usr/lib/python2.6/dist-packages/hal.so file lying around besides the newer /usr/lib/python2.6\n (note the underscore); if yes, remove the hal.so file. It has been superseded by hal.py in the same\n directory and confuses the import mechanism.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 997 / 1224\n \n \u2014 If you\u2019re using run-in-place, do a make clean to remove any accidentally left over hal.so file, then\n make.\n \u2014 If you\u2019re using HAL_table or HAL_HBox widgets, be aware they have an HAL pin associated with\n it which is off by default. This pin controls whether these container\u2019s children are active or not.\n@@ -46711,15 +46711,15 @@\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 getting-started/running-linuxcnc section for Adding Configuration Selection Items.\n For testing, a runtime specification of auxiliary applications may be specified using the exported environmental variable: GLADEVCP_EXTRAS. This variable should be a path list of one or more configuration directories separated by a (:). Typically, this variable would be set in a shell starting linuxcnc\n or in a user\u2019s ~/.profile startup script. Example:\n export GLADEVCP_EXTRAS=~/mygladevcp:/opt/othergladevcp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 998 / 1224\n \n Files found in directories specified with the environmental variable GLADEVCP_EXTRAS supersede\n identically-named files within subdirectories of the system directory specified by LINUXNC_AUX_GLADEVCP\n (e.g., /usr/share/linuxcnc/aux_gladevcp). This provision allows a developer to test an application by\n exporting GLADEVCP_EXTRAS to specify a private application directory without removing a systeminstalled application directory. Messages indicating rejected duplicates are printed to stdout.\n@@ -46763,15 +46763,15 @@\n GET_JOG_FROM_NAME = {\u2019X\u2019:0,\u2019Y\u2019:1,\u2019Z\u2019:2}\n NO_HOME_REQUIRED = False\n HOME_ALL_FLAG\n JOINT_TYPE = self.INI.find(section, \u201dTYPE\u201d) or \u201dLINEAR\u201d\n JOINT_SEQUENCE_LIST\n JOINT_SYNC_LIST\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n JOG_INCREMENTS = None\n ANGULAR_INCREMENTS = None\n GRID_INCREMENTS\n DEFAULT_LINEAR_JOG_VEL = 15 units per minute\n MIN_LINEAR_JOG_VEL = 60 units per minute\n MAX_LINEAR_JOG_VEL = 300 units per minute\n@@ -46822,15 +46822,15 @@\n To import this modules add this Python code to your import section:\n ############################\n # **** IMPORT SECTION **** #\n ############################\n \n 999 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1000 / 1224\n \n from gladevcp.core import Info\n \n To instantiate the module so you can use it in a handler file add this Python code to your instantiate\n section:\n@@ -46870,15 +46870,15 @@\n ACTION.SET_AUTO_MODE()\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.OPEN_PROGRAM(filename)\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@@ -46920,15 +46920,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 1001 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1002 / 1224\n \n ACTION.SET_DISPLAY_MESSAGE(string)\n ACTION.SET_ERROR_MESSAGE(string)\n \n There are some helper functions - mostly used for this library\u2019s support\n@@ -46945,54 +46945,54 @@\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 Figure 12.55 \u2013 QtDragon - 3/4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.56 \u2013 QtDefault - 3-Axis Sample\n \n 1003 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.57 \u2013 QtAxis - Self Adjusting Axis Sample\n \n 1004 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1005 / 1224\n \n Figure 12.58 \u2013 Blender - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1006 / 1224\n \n Figure 12.59 \u2013 X1mill - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.60 \u2013 cam_align - Camera Alignment VCP\n \n 1007 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.61 \u2013 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 1008 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1009 / 1224\n \n \u2014 A UI file that is a XML file made with Qt Designer graphical editor.\n \u2014 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@@ -47030,15 +47030,15 @@\n \u2014 -q Enable only error debug output.\n \u2014 -a Set window always on top.\n \u2014 -c NAME HAL component name. Default is to use the UI file name.\n \u2014 -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\n or -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100\n \u2014 -H FILE Execute hal statements from FILE with halcmd after the component is set up and ready.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1010 / 1224\n \n \u2014 -m Maximize window.\n \u2014 -f Fullscreen the window.\n \u2014 -t THEME Default is system theme\n \u2014 -x XID Embed into a X11 window that doesn\u2019t support embedding.\n@@ -47076,15 +47076,15 @@\n Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what\n features you want - yet don\u2019t have to build common ones yourself.\n Such libraries include:\n \u2014 audio_player\n \u2014 aux_program_loader\n \u2014 keybindings\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1011 / 1224\n \n \u2014 message\n \u2014 preferences\n \u2014 notify\n \u2014 virtual_keyboard\n@@ -47120,15 +47120,15 @@\n }\n \n We can have QtVCP load a subclassed version of the standard handler file. in that file we can manipulate the original functions or add new ones.\n Subclassing just means our handler file first loads the original handler file and adds our new code on\n top of it - so a patch of changes.\n This is useful for changing/adding behaviour while still retaining standard handler updates from LinuxCNC repositories.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1012 / 1224\n \n You may still need to use the handler copy dialog to copy the original handler file to decide how to\n patch it. See custom handler file\n \n There should be a folder in the config folder; for screens: named <CONFIG FOLDER>/qtvcp/screens/<SCREE\n@@ -47177,15 +47177,15 @@\n Handler patching is a better way to add changes - instance patching is black magic voodoo - this is\n here for legacy reasons.\n \n In the INI file under the [DISPLAY] heading add USER_COMMAND_FILE = _PATH_\n PATH can be any valid path. It can use ~ for home directory or WORKINGFOLDER or CONFIGFOLDER to\n represent QtVCP\u2019s idea of those directories:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1013 / 1224\n \n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/<screen_name_added_commands>\n \n If no entry is found in the INI, QtVCP will look in the default path. The default path is in the configuration directory as a hidden file using the screen basename and rc, e.g., CONFIGURATION DIRECTORY/.<screen_\n@@ -47236,15 +47236,15 @@\n class instance\n # by adding \u2019hdlr.\u2019 to it (from the imp).\n # This function tells KEYBIND to call \u2019on_keycall_F10\u2019 when F10 is pressed.\n hdlr.KEYBIND.add_call(\u2019Key_F10\u2019,\u2019on_keycall_F10\u2019)\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1014 / 1224\n \n # Here we are instance patching the original handler file to add a new function\n # that calls our new function (of the same name) defined in this file.\n self.on_keycall_F10 = types.MethodType(on_keycall_F10, self)\n # Here we are defining a copy of the original \u2019on_keycall_F11\u2019 function,\n@@ -47286,44 +47286,44 @@\n \u2014 Delete the files you don\u2019t wish to modify so 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 12.5.3.1 Builtin Panels\n There are several builtin HAL panels available.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1015 / 1224\n \n In a terminal type qtvcp <return> 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 \u2013 QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.63 \u2013 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 1016 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.64 \u2013 QtVCP Sim Builtin Panel\n vismach_mill_xyz\n 3D OpenGL view of a 3-axis milling machine.\n \n 1017 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1018 / 1224\n \n Figure 12.65 \u2013 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@@ -47332,15 +47332,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1019 / 1224\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -47389,15 +47389,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1020 / 1224\n \n 12.5.4 Build A Simple Clean-sheet Custom Screen\n \n Figure 12.66 \u2013 QtVCP Ugly custom screen\n 12.5.4.1 Overview\n@@ -47415,15 +47415,15 @@\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 \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1021 / 1224\n \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 \u2019/usr/lib/x86_64-linux-gnu/qt5/plugins/designer/python\u2019 or\n \u2019~/.designer/plugins/python\u2019\n@@ -47464,15 +47464,15 @@\n Object inspector.\n On the Object inspector click on the ScreenOptions.\n Then switch to the Property Editor and, under the ScreenOptions heading, toggle filedialog_option.\n Drag and drop a GCodeGraphics widget and a GcodeEditor widget.\n Place and resize them as you see fit leaving some room for buttons.\n Add Action Buttons Add 7 action buttons on to the main window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1022 / 1224\n \n If you double click the button, you can add text.\n Edit the button labels for Estop, Machine On, Home, Load, Run, Pause and stop.\n Action buttons default to no action so we must change the properties for defined functions. You can\n edit the properties:\n@@ -47493,21 +47493,21 @@\n Do the same for all the other button with the addition of:\n \u2014 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 \u2014 With the Pause button:\n \u2014 Under the Indicated_PushButton heading check the indicator_option.\n \u2014 Under the QAbstactButton heading check checkable.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.67 \u2013 Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1023 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1024 / 1224\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@@ -47540,15 +47540,15 @@\n \u2014 after the screen is built,\n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47595,15 +47595,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 1025 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1026 / 1224\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@@ -47654,15 +47654,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47711,15 +47711,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 1027 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1028 / 1224\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@@ -47754,15 +47754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1029 / 1224\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 class_patch__(self):\n@@ -47802,15 +47802,15 @@\n that yourself. QtVCP/LinuxCNC will terminate without a prompt once this function\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1030 / 1224\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@@ -47841,15 +47841,15 @@\n 12.5.6.1 Overview\n In the Qt Designer editor:\n \u2014 You create user function slots\n \u2014 You connect the slots to widgets using signals.\n In the handler file:\n \u2014 You create the slot\u2019s functions defined in Qt Designer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1031 / 1224\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@@ -47867,15 +47867,15 @@\n \u2014 Press the OK button.\n \u2014 You\u2019ll be back to the Configure Connections dialog.\n \u2014 Now you can select your new slot in the slot list.\n \u2014 Then press OK and save the file.\n \n Figure 12.68 \u2013 Qt Designer Signal/Slot Selection\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1032 / 1224\n \n 12.5.6.3 Python Handler Changes\n Now you must add the function to the handler file.\n The function signature is def slot_name(self):.\n For our example, we will add some code to print the widget name:\n@@ -47906,15 +47906,15 @@\n 12.6 QtVCP Virtual Control Panels\n QtVCP can be used to create control panels that interface with HAL.\n \n 12.6.1 Builtin Virtual Control Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp list to see a list.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1033 / 1224\n \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@@ -47922,15 +47922,15 @@\n \n Figure 12.69 \u2013 QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 spindle_belts\n This panel is designed to display additional RS485 VFD data and also to configure a 4 sheave, 2 belt\n spindle drive via a series of buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1034 / 1224\n \n In addition, it is also a useful template to use for your custom panel because it includes:\n \u2014 Display of additional HAL data\n \u2014 Buttons and button groups\n \u2014 Dynamic changes to button enabled/disabled state based on the state of other buttons\n@@ -47948,15 +47948,15 @@\n in the group.\n Additionally, it\u2019s not possible to have both belts on the same level with this kind of mechanism because\n you cannot fit two belts to the one idler pulley sheave. So if a belt is selected, its opposite button is\n disabled. E.g., if belt 3 is selected, belt 7 is disabled.\n Add these lines to the [DISPLAY] section in your .ini file\n The example tab_location is for the QtDragon screen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1035 / 1224\n \n EMBED_TAB_NAME=Spindle Extras\n EMBED_TAB_COMMAND=qtvcp spindle_belts\n EMBED_TAB_LOCATION=tabWidget_utilities\n \n@@ -47987,15 +47987,15 @@\n \u2014 The button can be selected as a momentary or a toggle button.\n \u2014 The button\u2019s indicator color can be adjusted from a drop down menu.\n \u2014 You can add more buttons from the drop down menu.\n \u2014 You can load a Halmeter from the drop down menu.\n \u2014 You can load a test LED from the drop down menu.\n \u2014 The button can be detached from the main windows.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Here is how to load test_button from a HAL script:\n loadusr qtvcp test_button\n loadusr qtvcp -o 4 test_button\n \n The -o switch sets how many buttons the panel starts with.\n If loading directly from a terminal omit the loadusr.\n@@ -48016,32 +48016,32 @@\n The -o switch sets how many LEDs the panel starts with.\n If loading directly from a terminal omit the loadusr.\n \n Figure 12.72 \u2013 QtVCP test_dial Panel - Test LED VCP\n \n 1036 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1037 / 1224\n \n 12.6.1.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.73 \u2013 QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.7 cam_align\n A camera display widget for rotational alignment.\n \n 1038 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1039 / 1224\n \n Figure 12.74 \u2013 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@@ -48056,15 +48056,15 @@\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 \u2014 left mouse single click - increase cross hair rotation one increment\n \u2014 right mouse single click - decrease cross hair rotation one increment\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1040 / 1224\n \n \u2014 middle mouse single click - cycle through rotation increments\n \u2014 left mouse hold and scroll - scroll camera zoom\n \u2014 right mouse hold and scroll - scroll cross hair rotation angle\n \u2014 mouse scroll only - scroll circle diameter\n@@ -48088,95 +48088,95 @@\n If you want to hide both, use a comma between them with no spaces.\n The -a option will make the panel always-on-top of all windows.\n loadusr qtvcp sim_panel\n \n Here we load the panel with no MPG selection buttons and the always-on-top option.\n loadusr qtvcp -a -o hide=groupBoxSelection sim_panel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1041 / 1224\n \n Figure 12.75 \u2013 QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.9 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 \u2014 -o notify_on - use desktop notify dialogs instead of QtVCP native ones.\n \u2014 -o audio_on - play sound on tool change\n \u2014 -o speak_on - speak announcement of tool change\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.76 \u2013 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 1042 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1043 / 1224\n \n Figure 12.77 \u2013 QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2 QtVCP vismach_router_atc\n 3D OpenGL view of a 3-Axis router style, gantry bed milling machine.\n This particular panel shows how to define and connect the model parts in the handler file, rather then\n importing the pre-built model from QtVCP\u2019s vismach library.\n loadusr qtvcp vismach_router_atc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1044 / 1224\n \n Figure 12.78 \u2013 QtVCP vismach_router_atc - 3-Axis Gantry Bed Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.79 \u2013 QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.4 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 1045 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.80 \u2013 QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.5 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 1046 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1047 / 1224\n \n Figure 12.81 \u2013 QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1048 / 1224\n \n Figure 12.82 \u2013 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@@ -48204,15 +48204,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1049 / 1224\n \n net bit-hide\n \n test_panel.checkbox_4\n \n@@ -48268,15 +48268,15 @@\n Pick any of the names from the panel list and add that to the COMMAND entry after qtvcp.\n The builtin panel search path is share/qtvcp/panels/PANELNAME.\n Run-In-Place and installed versions of LinuxCNC have these in different locations on the system.\n 12.6.4.3 Location of Custom Panels\n Custom panels can be embedded too -either a modified builtin panel or a new user-built one.\n When loading panels, QtVCP looks in the configuration folders path for qtvcp/panels/PANELNAME/PANELNAME.ui.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1050 / 1224\n \n PANNELNAME being any valid string with no spaces. If no path is found there, then looks in the builtin file path.\n QtVCP will do the same process for the optional handler file: qtvcp/panels/PANELNAME/PANELNAME_handler.py\n 12.6.4.4 Handler Programming Tips\n In a screen handler file, the reference used for the window is self.w.\n@@ -48313,15 +48313,15 @@\n patch it.\n There should be a folder in the config folder; for panel: named <CONFIG FOLDER>/qtvcp/panels/<PANEL\n NAME>/\n add the handle patch file there, named like so <ORIGINAL PANEL NAME>_handler.py\n ie for cam_align the file would be called cam_align_handler.py\n Here is a sample to change the circle color in cam_align:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1051 / 1224\n \n import sys\n import os\n import importlib\n from PyQt5.QtCore import Qt\n@@ -48360,15 +48360,15 @@\n This description of widget properties can easily be out of date due to further development and lack\n of people to write docs (a good way to give back to the project). The definitive descriptions are found\n by looking in the source code.\n \n 12.7.1 HAL Only Widgets\n These widgets usually have HAL pins and don\u2019t react to the machine controller.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1052 / 1224\n \n 12.7.1.1 XEmbed - Program Embedding Widget\n Allows one to embed a program into the widget.\n Only programs that utilize the xembed protocol will work such as:\n \u2014 GladeVCP virtual control panels\n@@ -48401,15 +48401,15 @@\n name_of_led being the widget name defined in Qt Designer\u2019s editor:\n LED #name_0f_led{\n qproperty-color: red;\n qproperty-diameter: 20;\n qproperty-flashRate: 150;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1053 / 1224\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 12.7.1.5 RadioButton Widget\n@@ -48426,15 +48426,15 @@\n halpin_option\n Setting this to True will create 2 HAL pins:\n \u2014 One is for setting the value input\n \u2014 The other is for setting the setpoint.\n If this option is not set, then value and setpoint must be connected programmatically, i.e., in\n the handler file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1054 / 1224\n \n max_reading\n This value determines the highest number displayed on the gauge face.\n max_value\n This is the maximum expected value of the value input signal.\n@@ -48469,15 +48469,15 @@\n to a value between 0 and the maximum value.\n 12.7.1.7 HalBar - HAL Bar Level Indicator\n \n Figure 12.85 \u2013 QtVCP HalBar: Panel demonstrating the HAL Bar Level Indicator\n This widget is used to indicate level or value, usually of a HAL s32/float pin.\n you can also disable the HAL pin and use Qt signals or python commands to change the level.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1055 / 1224\n \n HalBar is a subclass of the Bar widget, so it inherits these properties\n \n \u2014 stepColorList: a list of color strings, the number of colors defines the number of bars.\n \u2014 backgroundColor: a QColor definition of the background color.\n@@ -48494,15 +48494,15 @@\n In style sheets, stepColorList is a single string of color names separated by commas.\n \n HalBar{\n qproperty-backgroundColor: #000;\n qproperty-stepColorList: \u2019green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red \u2190,red\u2019;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1056 / 1224\n \n 12.7.1.8 HALPad - HAL Buttons Joypad\n \n Figure 12.86 \u2013 QtVCP HALPad: HAL Buttons Joypad\n This widget looks and acts like a 5 buttons D-pad, with an LED ring.\n@@ -48519,15 +48519,15 @@\n \u2014 LEFTRIGHT\n \u2014 TOPBOTTOM\n \u2014 For HAL pins type:\n \u2014 NONE\n \u2014 BIT\n \u2014 S32\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1057 / 1224\n \n \u2014 FLOAT\n You use the widget name in Qt Designer plus the reference constant:\n self.w.halpadname.set_highlight(self.w.halpadname.LEFTRIGHT)\n \n@@ -48565,15 +48565,15 @@\n 12.7.1.9 PushButton - HAL Pin Toggle Widget\n This widget allows a user to set a HAL pin true or false with the push of a button.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1058 / 1224\n \n 12.7.1.10 focusOverlay - Focus Overlay Widget\n This widget places a colored overlay over the screen, usually while a dialog is showing.\n \n Figure 12.87 \u2013 Focus overlay example for confirm close prompt\n@@ -48582,15 +48582,15 @@\n It can also display message text and buttons.\n This widget can be controlled with STATUS messages.\n 12.7.1.11 gridLayout - Grid Layout Widget\n This widget controls if the widgets inside it are enabled or disabled.\n Disabled widgets typically have a different color and do not respond to actions.\n It is based on PyQt\u2019s QGridLayout.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1059 / 1224\n \n 12.7.1.12 hal_label - HAL Label Widget\n This widget displays values sent to it.\n Values can be sent from:\n \u2014 HAL pins\n@@ -48631,15 +48631,15 @@\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 bit_pin_type\n Selects the input pin as type BIT.\n s32_pin_type\n Selects the input pin as type S32.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1060 / 1224\n \n float_pin_type\n Select the input pin as type FLOAT.\n floatTemplate\n A string that will be used as a Python3 format template to tailor the LCD display.\n@@ -48675,15 +48675,15 @@\n \u2014 On each page, add a layout widget.\n After adding the layout you must right click the widget switcher again and set the layout option.\n \u2014 Click on the WidgetSwitcher widget and then scroll to the bottom of the property editor.\n \u2014 Look for the dynamic property widget_list and double click to the right of it.\n \u2014 A dialog pops up allowing you to add the names of the widgets to move to the pages you added to\n the WidgetSwitcher.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1061 / 1224\n \n There are function calls to display specific widgets.\n By calling one of these functions, you control what widget is currently displayed:\n \n [_WidgetSwitcherName_].show_id_widget(_number_) , [_WidgetSwitcherName_].show_named_widget(\n@@ -48725,15 +48725,15 @@\n Unhome Selected\n Unhomes the joint/axis selected by STATUS.\n zero axis , zero G5X\n Zeros the current user coordinate system offsets.\n zero G92\n Zeros the optional G92 offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1062 / 1224\n \n zero Z rotational\n Zeros the rotation offset.\n jog joint positive\n Set the joint number.\n@@ -48780,15 +48780,15 @@\n float number\n Used for jograte and overrides.\n float alternate number\n For jograte and overrides that can toggle between two float numbers.\n view type string\n Can be:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1063 / 1224\n \n \u2014 p,\n \u2014 x, y, y2, z, z2,\n \u2014 zoom-in, zoom-out,\n \u2014 pan-up, pan-down, pan-left, pan-right,\n@@ -48828,15 +48828,15 @@\n to switch to the recorded position. If it is not as you like, modify its existing position and re-record.\n \n 12.7.2.3 RoundButton - Round Shapped ActionButton Widget\n Round buttons work the same as ActionButtons other than the button is cropped round.\n They are intended only to be visually different.\n They have two path properties for displaying images on true and false.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1064 / 1224\n \n 12.7.2.4 AxisToolButton - Select and Set Axis Widget\n This allows one to select and set an axis.\n If the button is set checkable, it will indicate which axis is selected.\n If you press and hold the button a pop up menu will show allowing one to:\n@@ -48873,15 +48873,15 @@\n The DROLabel widget holds a property isHomed that can be used with a stylesheet to change the color\n of the DRO_Label based on homing state of the joint number in LinuxCNC.\n Here is a sample stylesheet entry that:\n \u2014 Sets the font of all DRO_Label widgets,\n \u2014 Sets the text template (to set resolution) of the DRO,\n \u2014 Then sets the text color based on the Qt isHomed property.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1065 / 1224\n \n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019%9.4f\u2019;\n qproperty-metric_template: \u2019%10.3f\u2019;\n@@ -48928,15 +48928,15 @@\n qproperty-styleColorMarginBackground: blue;\n qproperty-styleFont0: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont1: \u201dTimes,18,-1,0,90,1,0,0,0,0\u201d;\n qproperty-styleFont2: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont3: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont4: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1066 / 1224\n \n qproperty-styleFont5: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont6: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont7: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFontMargin: \u201dTimes,14,-1,0,90,0,0,0,0,0\u201d;\n@@ -48963,15 +48963,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1067 / 1224\n \n 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Figure 12.88 \u2013 QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -48991,15 +48991,15 @@\n Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.\n The following shows an example of how to set this property (referenced using the widget user\n selected name):\n #gcodegraphics{\n qproperty-_view: z;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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@@ -49051,15 +49051,15 @@\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-background_color: blue;\n }\n \n 1068 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1069 / 1224\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 #gcodegraphics{\n@@ -49133,15 +49133,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Mode\n 6\n 7\n 8\n 9\n 10\n@@ -49203,15 +49203,15 @@\n \u2014 set-recorded-view\n \u2014 P\n \u2014 X\n \u2014 Y\n \u2014 Y2\n \u2014 Z\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1071 / 1224\n \n \u2014 Z2\n \u2014 set-large-dro\n \u2014 set-small-dro\n ACTION.ADJUST_PAN(_X,Y_)\n@@ -49252,15 +49252,15 @@\n A textTemplate of %d would typically be used.\n actual_surface_speed_status\n Used to display the actual cutting surface speed on a lathe based on X axis and spindle speed.\n It\u2019s converted to distance per minute.\n A textTemplate of %4.1f (feet per minute) and altTextTemplate of %d (meters per minute)\n would typically be used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1072 / 1224\n \n blendcode_status\n Shows the current G64 setting.\n current_feedrate_status\n Shows the current actual feedrate.\n@@ -49307,15 +49307,15 @@\n \u2014 None\n \u2014 Rapid\n \u2014 Feed\n \u2014 Arc\n \u2014 Tool Change\n \u2014 Probe\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1073 / 1224\n \n \u2014 Rotary Index\n requested_spindle_speed_status\n Shows the requested spindle speed - actual may be different.\n rapid_override_status\n@@ -49360,15 +49360,15 @@\n 12.7.2.12 StatusImageSwitcher - Controller Status Image Switcher\n Status image switcher will switch between images based on LinuxCNC states.\n *watch_spindle\n Toggles between 3 images: stop, fwd, revs.\n *watch_axis_homed\n Toggles between 2 images: axis not homed, axis homed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1074 / 1224\n \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@@ -49386,15 +49386,15 @@\n The pixmap setting is for test display only and will be ignored outside of Qt Designer.\n \n \u2014 Right click the image name and you should see Copy path.\n \u2014 Click Copy path.\n \u2014 Now double click the image list property so the dialog shows.\n \u2014 Click the New button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1075 / 1224\n \n \u2014 Paste the image path in the entry box.\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@@ -49431,15 +49431,15 @@\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 close_overlay_color\n Color of transparent layer shown when quitting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1076 / 1224\n \n catch_error_option\n Monitoring of the LinuxCNC error channel.\n This also sends the message through STATUS to anything that registers.\n play_sounds_option\n@@ -49488,15 +49488,15 @@\n keyboardDialog_option\n Sets up a keyboard entry widget.\n keyboard_overlay_color\n Color of transparent layer shown when the keyboard dialog is shown.\n vesaProbe_option\n Sets up the Versa style probe dialog.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1077 / 1224\n \n versaProbe_overlay_color\n Color of transparent layer shown when the versaProbe dialog is shown.\n macroTabDialog_option\n Sets up the macro selection dialog.\n@@ -49543,15 +49543,15 @@\n /* red, green, blue 0-255, alpha 0-100% or 0.0 to 1.0 */\n /* the # sign is used to refer to Qt Designer defined widget name */\n /* matches/applied to only this named widget */\n #screen_options {\n qproperty-close_overlay_color: rgba(0, 255, 0, 0.75)\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1078 / 1224\n \n /* red, green, blue 0-255, alpha 0-100% or 0.0 to 1.0 */\n /* use widget class name */\n /* matches/applied to all widgets of this class */\n ScreenOptions {\n@@ -49597,15 +49597,15 @@\n Short title string to display in dialog.\n shutdown_msg_focus_text (str)\n Large text string to superimpose in focus layer.\n shutdown_msg_detail (str)\n Longer descriptive string to display in dialog.\n NOTIFY_OPTIONS\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1079 / 1224\n \n notify_start_greeting (bool)\n Whether to display a greeting dialog on start-up.\n notify_start_title (str)\n Short Title string.\n@@ -49646,15 +49646,15 @@\n \u2014 Feed rate\n \u2014 Spindle override rate\n \u2014 Rapid override rate\n Properties StatusSlider has the following properties:\n halpin_option\n Sets option to make a HAL float pin that reflects current value.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1080 / 1224\n \n rapid_rate\n Selects a rapid override rate slider.\n feed_rate\n Selects a feed override rate slider.\n@@ -49698,15 +49698,15 @@\n \n Properties There are properties that can be changed:\n halpin_option\n Adds an output pin that reflects selected state.\n invert_state_status\n Invert the LED state compared to the LinuxCNC state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1081 / 1224\n \n diameter\n Diameter of the LED.\n color\n Color of the LED when on.\n@@ -49749,15 +49749,15 @@\n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1082 / 1224\n \n 12.7.2.20 MacroTab - Special Macros Widget\n \n Figure 12.90 \u2013 QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -49775,15 +49775,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1083 / 1224\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@@ -49820,15 +49820,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1084 / 1224\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@@ -49870,15 +49870,15 @@\n \u2014 Example: unlinkp motion.jog-stop\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 It is based on PyQt\u2019s QLineEdit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1085 / 1224\n \n 12.7.2.22 MDIHistory - MDI Commands History Widget\n Displays a scrollable list of past MDI command.\n An edit line is embedded for MDI commands. The same MDILine embedded commands may be accessed from this widget.\n The history is recorded on a file defined in the INI under the heading [DISPLAY] (this shows the\n@@ -49891,15 +49891,15 @@\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 \u2014 First press one of the G/XY, G/RO, M or T button. On the left will show the entry fields that can be\n filled out.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1086 / 1224\n \n \u2014 Then press Next and Back to navigate between fields.\n \u2014 Calc will pop up a calculator dialog.\n \u2014 Clear clears the current entry.\n \u2014 Set Tool will call for a tool change.\n@@ -49940,15 +49940,15 @@\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 move will be invoked, moving one unit to the left.\n This macro capability is useful for edge/hole probing and other setup tasks, as well as perhaps hole\n milling or other simple operations that can be done from the panel without requiring specially-written\n G-code programs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1087 / 1224\n \n 12.7.2.24 OriginOffsetView - Origins View and Setting Widget\n \n Figure 12.92 \u2013 QtVCP OriginOffsetsView: Origins View and Setting Widget\n This widget allows one to visualize and modify User System Origin offsets directly.\n@@ -49961,15 +49961,15 @@\n These actions depend on extra code added either to a combined widget, like originoffsetview dialog,\n or the screens handler code.\n Typical actions might be Clear Current User offsets or Zero X.\n Clicking on the columns and rows allows one to adjust the settings.\n A dialog can be made to popup for data or text entry.\n The comments section will be recorded in the preference file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n It is based on PyQt\u2019s QTableView, QAbstractTableModel, and ItemEditorFactory.\n Properties, functions and styles of the PyQt base objects are always available.\n Properties OriginOffsetView has the following properties:\n dialog_code_string\n Sets which dialog will pop up with numerical entry.\n test_dialog_code_string\n@@ -50004,15 +50004,15 @@\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 \n 1088 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1089 / 1224\n \n 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget\n This widget will display images based on LinuxCNC status.\n You can watch:\n \u2014 the state of the spindle,\n@@ -50025,15 +50025,15 @@\n Figure 12.93 \u2013 QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n It has a the ability to scroll the names with hardware such as a MPG.\n One can class patch the function load(self,fname) to customize file loading.\n The function getCurrentSelected() will return a Python tuple, containing the file path and whether\n it is a file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1090 / 1224\n \n temp = FILEMANAGER.getCurrentSelected()\n print(\u2019filepath={}\u2019.format(temp[0]))\n if temp[1]:\n print(\u2019Is a file\u2019)\n@@ -50058,15 +50058,15 @@\n It is based on PyQt\u2019s FIXME\n 12.7.2.30 RadioAxisSelector - FIXME\n FIXME RadioAxisSelector documentation\n 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget\n \n Figure 12.94 \u2013 QtVCP ToolOffsetView: Tools Offsets View And Edit Widget\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1091 / 1224\n \n This widget displays and allows one to modify tools offsets.\n It will update LinuxCNC\u2019s tool table for changes made or found.\n The tool settings can only be changed in LinuxCNC after homing and when the motion controller is\n idle.\n@@ -50110,15 +50110,15 @@\n \n Functions ToolOffsetView has some functions useful for screen builders to add actions:\n add_tool()\n Adds a blank dummy tool (99) that the user can edit to suit.\n delete_tools()\n Deletes the currently checkbox selected tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n get_checked_list()\n Returns a list of tools selected by checkboxs.\n set_all_unchecked()\n Uncheck all selected tools.\n Example for handler file executing aforementioned functions.\n self.w.tooloffsetview.add_tool()\n@@ -50129,15 +50129,15 @@\n 12.7.2.32 BasicProbe - Simple Mill Probing Widget\n \n Figure 12.95 \u2013 QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1092 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1093 / 1224\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Figure 12.96 \u2013 QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -50155,15 +50155,15 @@\n \n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1094 / 1224\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@@ -50208,29 +50208,29 @@\n FOCUSCOLOR (QColor(_R, G, B, A_))\n Color to use if focus overlay is used.\n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK <spoken_message> .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1095 / 1224\n \n 12.7.3.2 ToolDialog - Manual Tool Change Dialog Widget\n \n Figure 12.97 \u2013 QtVCP ToolDialog: Manual Tool Change Dialog\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1096 / 1224\n \n 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget\n \n Figure 12.98 \u2013 QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -50245,15 +50245,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1097 / 1224\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@@ -50265,15 +50265,15 @@\n \n Figure 12.99 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1098 / 1224\n \n 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figure 12.100 \u2013 QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -50293,61 +50293,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1099 / 1224\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Figure 12.101 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Figure 12.102 \u2013 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 1100 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1101 / 1224\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figure 12.103 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1102 / 1224\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figure 12.104 \u2013 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1103 / 1224\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Figure 12.105 \u2013 QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -50356,15 +50356,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1104 / 1224\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@@ -50405,15 +50405,15 @@\n \n joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1105 / 1224\n \n Properties These can be set in stylesheets or Python code:\n highlightPosition\n Set the indicator position.\n setColorState\n@@ -50451,15 +50451,15 @@\n If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in\n Qesigner. This will be replaced with the QtWebEngine widget at run time.\n \n 12.7.5 BaseClass/Mixin Widgets\n These widgets are used to 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1106 / 1224\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@@ -50493,15 +50493,15 @@\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n \u2014 Is Estopped\n \u2014 Is On\n \u2014 All Homed\n \u2014 Is Joint Homed\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1107 / 1224\n \n \u2014 Idle\n \u2014 Paused\n \u2014 Flood\n \u2014 Mist\n@@ -50547,15 +50547,15 @@\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 its\n checked state.\n It uses the following properties to specify the text for each state:\n true_state_string , false_state_string\n \\\\n will be converted to a newline.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1108 / 1224\n \n You can set/change these in stylesheets:\n ActionButton #action_aux{\n qproperty-true_state_string: \u201dAir\\\\nOn\u201d;\n qproperty-false_state_string: \u201dAir\\\\nOff\u201d;\n@@ -50591,15 +50591,15 @@\n Widget for measuring two heights with a probe.\n For setup.\n 12.7.6.2 G-code Utility\n Widgets for performing common machining processes.\n 12.7.6.3 Facing\n Slab or face a definable area with different strategies.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1109 / 1224\n \n 12.7.6.4 Hole Circle\n Drill multiple holes on a bolt hole circle.\n 12.7.6.5 Qt NGCGUI\n \n@@ -50626,15 +50626,15 @@\n \u2014 SELECT POST - select a file that add post G-code\n \u2014 REREAD FILE - reload the subroutine file\n \u2014 CREATE FEATURE - add feature to the list\n \u2014 RESTART FEATURE - remove all features from the list\n \u2014 FINALIZE GCODE - create the full G-code and send it to LinuxCNC/a file\n You can create your own subroutines for use with NGCGUI. They must follow these rules:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1110 / 1224\n \n \u2014 For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the\n same.\n \u2014 The subroutine must be in a folder within LinuxCNC\u2019s INI designated search path.\n \u2014 On the first line there may be a comment of type info:\n@@ -50661,15 +50661,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1111 / 1224\n \n 12.8.1.1 Usage\n \u2014 Import Status modules\n Add this Python code to your import section:\n ############################\n@@ -50704,15 +50704,15 @@\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 12.8.2.1 Available data and defaults\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n LINUXCNC_IS_RUNNING\n LINUXCNC_VERSION\n INIPATH\n INI = linuxcnc.ini(INIPATH)\n MDI_HISTORY_PATH = \u2019~/.axis_mdi_history\u2019\n QTVCP_LOG_HISTORY_PATH = \u2019~/qtvcp.log\u2019\n@@ -50759,15 +50759,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 1112 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1113 / 1224\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@@ -50811,15 +50811,15 @@\n INFO = Info()\n \n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1114 / 1224\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@@ -50856,15 +50856,15 @@\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 ACTION.SAVE_PROGRAM(text_source, fname):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 ACTION.SET_MAX_VELOCITY_RATE(rate)\n@@ -50905,15 +50905,15 @@\n ACTION.RELOAD_DISPLAY()\n ACTION.SET_GRAPHICS_VIEW(view)\n ACTION.UPDATE_MACHINE_LOG(text, option=None):\n ACTION.CALL_DIALOG(command):\n \n 1115 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1116 / 1224\n \n ACTION.HIDE_POINTER(state):\n ACTION.PLAY_SOUND(path):\n ACTION.PLAY_ERROR():\n ACTION.PLAY_DONE():\n@@ -50952,15 +50952,15 @@\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 This array is expected to use the LinuxCNC raw tool array, i.e. it does not feature tool wear\n entries.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1117 / 1224\n \n It will return True if there was an error.\n CONVERT_TO_WEAR_TYPE(_toolarray_)\n This function converts a LinuxCNC raw tool array to a QtVCP tool array.\n QtVCP\u2019s tool array includes entries for X and Z axis tool wear.\n@@ -50998,15 +50998,15 @@\n PATH.PANELDIR\n The QtVCP builtin VCP folder.\n PATH.HANDLER\n Handler file Path.\n PATH.HANDLERDIR\n Directory where the Python handler file was found.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1118 / 1224\n \n PATH.XML\n QtVCP UI file path.\n PATH.HANDLERDIR\n Directory where the UI file was found.\n@@ -51049,15 +51049,15 @@\n PATH = Path()\n \n 12.8.6 VCPWindow\n VCPWindow module gives reference to the MainWindow and widgets.\n Typically this would be used for a library (e.g., the toolbar library uses it) as the widgets get a reference\n to the MainWindow from the _hal_init() function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1119 / 1224\n \n 12.8.6.1 Usage\n \u2014 Import VCPWindow module\n Add this Python code to your import section:\n ############################\n@@ -51098,15 +51098,15 @@\n load_tooledit()\n Load Tooledit program:\n AUX_PRGM.load_tooledit(<TOOLEFILE_PATH>)\n \n load_calibration()\n Load Calibration program:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1120 / 1224\n \n AUX_PRGM.load_calibration()\n \n keyboard_onboard()\n Load onboard/Matchbox keyboard\n@@ -51140,15 +51140,15 @@\n Instantiate Keylookup module To instantiate Keylookup module* so you can use it, add this Python\n code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n KEYBIND = Keylookup()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1121 / 1224\n \n Note\n Keylookup requires code under the processed_key_event function to call KEYBIND.call().\n Most handler files already have this code.\n \n@@ -51195,15 +51195,15 @@\n Qt.Key_Pause: \u201dKey_Pause\u201d,\n Qt.Key_Print: \u201dKey_Print\u201d,\n Qt.Key_SysReq: \u201dKey_SysReq\u201d,\n Qt.Key_Clear: \u201dKey_Clear\u201d,\n Qt.Key_Home: \u201dKey_Home\u201d,\n Qt.Key_End: \u201dKey_End\u201d,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Left: \u201dKey_Left\u201d,\n Qt.Key_Up: \u201dKey_Up\u201d,\n Qt.Key_Right: \u201dKey_Right\u201d,\n Qt.Key_Down: \u201dKey_Down\u201d,\n Qt.Key_PageUp: \u201dKey_PageUp\u201d,\n Qt.Key_PageDown: \u201dKey_PageDown\u201d,\n@@ -51262,15 +51262,15 @@\n Qt.Key_Any: \u201dKey_Any\u201d,\n Qt.Key_Exclam: \u201dKey_Exclam\u201d,\n Qt.Key_QuoteDbl: \u201dKey_QuoteDdl\u201d,\n Qt.Key_NumberSign: \u201dKey_NumberSign\u201d,\n \n 1122 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Dollar: \u201dKey_Dollar\u201d,\n Qt.Key_Percent: \u201dKey_Percent\u201d,\n Qt.Key_Ampersand: \u201dKey_Ampersand\u201d,\n Qt.Key_Apostrophe: \u201dKey_Apostrophe\u201d,\n Qt.Key_ParenLeft: \u201dKey_ParenLeft\u201d,\n Qt.Key_ParenRight: \u201dKey_ParenRight\u201d,\n@@ -51318,15 +51318,15 @@\n _BOLDTEXT\n Generally is a title.\n _TEXT\n Text below title, and usually longer.\n \n 1123 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1124 / 1224\n \n _DETAIL\n Text hidden unless clicked on.\n _PINNAME\n Basename of the HAL pin(s).\n@@ -51370,15 +51370,15 @@\n \n 12.8.10 Notify\n Notify module is used to send messages that are integrated into the desktop.\n It uses the pynotify library.\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1125 / 1224\n \n Ubuntu/Mint does not follow the standard so you can\u2019t set how long the message stays up for.\n I suggest fixing this with the notify-osd package available from this PPA (DISCONTINUED due to\n move of Ubuntu to Gnome).\n Notify keeps a list of all the alarm messages since starting in self.alarmpage.\n@@ -51414,15 +51414,15 @@\n \u2014 play sounds using the beep library (currently blocks while beeping),\n \u2014 speak words using the espeak library (non blocking while speaking).\n There are default alert sounds using Mint or FreeDesktop default sounds.\n You can play arbitrary sounds or even songs by specifying the path.\n STATUS has messages to control Player module.\n The ScreenOptions widget can automatically set up the audio system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1126 / 1224\n \n 12.8.12.1 Sounds\n Alerts There are default alerts to choose from:\n \u2014 ERROR\n \u2014 READY\n@@ -51460,15 +51460,15 @@\n STATUS.emit(\u2019play-alert\u2019,\u2019SPEAK This is a test screen for Q t V C P\u2019)\n STATUS.emit(\u2019play-sound\u2019, \u2019PATH TO SOUND\u2019)\n \n 12.8.13 Virtual Keyboard\n This library allows you to use STATUS messages to launch a virtual keyboard.\n It uses Onboard or Matchbox libraries for the keyboard.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1127 / 1224\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 \u2014 built in Qt Designer, and\n@@ -51505,15 +51505,15 @@\n TOOLBAR.configure_submenu(self.w.menuHoming, \u2019home_submenu\u2019)\n TOOLBAR.configure_action(self.w.actionEstop, \u2019estop\u2019)\n TOOLBAR.configure_action(self.w.actionQuit, \u2019quit\u2019, lambda d:self.w.close())\n TOOLBAR.configure_action(self.w.actionEdit, \u2019edit\u2019, self.edit)\n # Add a custom function\n TOOLBAR.configure_action(self.w.actionMyFunction, \u2019my_Function\u2019, self.my_function)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1128 / 1224\n \n \u2014 Add a custom toolbar function:\n #####################\n # GENERAL FUNCTIONS #\n #####################\n@@ -51550,15 +51550,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1129 / 1224\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@@ -51602,15 +51602,15 @@\n Build a box centered on origin by specifying the width in X and Y, and the height in Z.\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 Capture current transformation matrix of a collection.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1130 / 1224\n \n Note\n This transforms from the current coordinate system to the viewport system, NOT to the world\n system.\n \n@@ -51648,15 +51648,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1131 / 1224\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@@ -51667,15 +51667,15 @@\n \u2014 rotate by right-button drag\n \u2014 tilt by left button drag\n A Vismach model takes the form of a Python script and can use standard Python syntax.\n This means that there is more than one way to lay out the script, but in the examples given in this\n document the simplest and most basic of them will be used.\n The basic sequence in creating the Vismach model is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1132 / 1224\n \n 1. Create the parts\n 2. Define how they move\n 3. Assemble into movement groups\n \n@@ -51749,15 +51749,15 @@\n |---(tool cylinder function)\n \n As you can see, the lowest parts must exist first before those can be grouped with others into an\n assembly. So you build upwards from lowest point in tree and assemble them together.\n The same is applicable for any design of machine: look at the machine arm example and you will see\n that it starts with the tip and adds to the larger part of the arm, then it finally groups with the base.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1133 / 1224\n \n 12.9.3 Start the script\n It is useful for testing to include the #!/usr/bin/env python3 shebang line to _allow the file to be\n executed directly from the command line.\n The first thing to do is to import the required libraries.\n@@ -51789,15 +51789,15 @@\n part = AsciiOBJ(data=\u201dv 0.123 0.234 0.345 1.0 ...\u201d)\n \n \u2014 STL model parts are added to the Vismach space in the same locations as they were created in the\n STL or OBJ space, i.e. ideally with a rotational point at their origin.\n Note\n It is much easier to move while building if the origin of the model is at a rotational pivot point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1134 / 1224\n \n 12.9.5.2 Build from Geometric Primitives\n Alternatively parts can be created inside the model script from a range of shape primitives.\n Many shapes are created at the origin and need to be moved to the required location after creation.\n \n@@ -51833,15 +51833,15 @@\n 12.9.6.1 Translating Model parts\n part1 = Translate([part1], x, y, z)\n Move part1 the specified distances in x, y and z.\n 12.9.6.2 Rotating Model Parts\n part1 = Rotate([part1], theta, x, y, z)\n Rotate the part by angle theta [degrees] about an axis between the origin and x, y, z.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1135 / 1224\n \n 12.9.7 Animating Parts\n To animate the model controlled by the values of HAL pins there are four functions: HalTranslate,\n HalRotate, HalToolCylinder and HalToolTriangle.\n For parts to move inside an assembly they need to have their HAL motions defined before being\n@@ -51878,15 +51878,15 @@\n Defines the axis of rotation from the origin the point of coordinates (x,y,z).\n When the part is moved back away from the origin to its correct location, the axis of rotation\n can be considered to remain \u201dembedded\u201d in the part.\n angle_scale\n Rotation angles are in degrees, so for a rotary joint with a 0-1 scaling you would need to use\n an angle scale of 360.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1136 / 1224\n \n 12.9.7.3 HalToolCylinder\n tool = HalToolCylinder()\n Make a cylinder to represent a cylindrical mill tool, based on the tool table and current loaded\n tool.\n@@ -51926,15 +51926,15 @@\n #Drawbar\n draw = CylinderZ(120,3,125,3)\n draw = Color([1,0,.5,1],[draw])\n draw = Translate([draw],-1,49,0)\n draw = HalTranslate([draw],c,\u201ddrawbar\u201d,0,0,1)\n # head/spindle\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1137 / 1224\n \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@@ -51978,15 +51978,15 @@\n myhud.add_pin(\u2019axis-y: \u2019,\u201d{:10.4f}\u201d,\u201daxis.y.pos-cmd\u201d)\n myhud.add_pin(\u2019axis-z: \u2019,\u201d{:10.4f}\u201d,\u201daxis.z.pos-cmd\u201d)\n myhud.show(\u201d-------------\u201d)\n \n part = Capture()\n This sets the current position in the model.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1138 / 1224\n \n main(model, tooltip, work, size=10, hud=myhud, rotation_vectors=None, lat=0, lon=0)\n This is the command that makes it all happen, creates the display, etc. if invoked directly from\n Python. Usually this file is imported by QtVCP and the window() object is instantiated and embedded into another screen.\n _model_\n@@ -52031,15 +52031,15 @@\n work = Capture()\n tooltip = Capture()\n # Build and assemble the model\n part1 = Collection([Box(-6,-3,94,6,3,100)])\n part1 = Color([1,1,1,1],[part1])\n part1 = HalRotate([part1],None,\u201djoint.0.pos-fb\u201d,360,0,0,1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1139 / 1224\n \n part1 = Translate([dogs],-1,49,0)\n # create a top-level model\n model = Collection([base, saddle, head, carousel])\n # we want to either embed into qtvcp or display directly with PyQt5\n@@ -52076,15 +52076,15 @@\n \n 12.10 QtVCP: Building Custom Widgets\n 12.10.1 Overview\n Building custom widgets allows one to use the Qt Designer editor to place a custom widget rather\n than doing it manually in a handler file.\n A useful custom widgets would be a great way to contribute back to LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1140 / 1224\n \n 12.10.1.1 Widgets\n Widget is the general name for the UI objects such as buttons and labels in PyQt.\n There are also special widgets made for LinuxCNC that make integration easier.\n All these widgets can be placed with Qt Designer editor - allowing one to see the result before actually\n@@ -52126,15 +52126,15 @@\n self.PATHS_\n The QtVCP\u2019s path library instance\n self.PREFS_\n The optional preference file instance\n self.SETTINGS_\n The Qsettings object instance\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1141 / 1224\n \n 12.10.1.4 cleanup process\n When QtVCP closes, it calls the +_hal_cleanup()+ function on all HAL-ified widgets.\n The base class creates an empty +_hal_cleanup()+ function, which can be redefined in the custom\n widget subclass.\n@@ -52208,15 +52208,15 @@\n \n This defines the class name and the libraries it inherits from.\n This class, named Lcnc_GridLayout, inherits the functions of QWidget and +_HalSensitiveBase+.\n +_HalSensitiveBase+ is subclass of +_HalWidgetBase+, the base class of most QtVCP widgets,\n meaning it has all the functions of +_HalWidgetBase+ plus the functions of +_HalSensitiveBase+.\n It adds the function to make the widget be enabled or disabled based on a HAL input BIT pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n y\n \n 2\n \n y\n \n@@ -52270,15 +52270,15 @@\n #########################################################################\n # Qt Designer properties setter/getters/resetters\n ########################################################################\n # invert status\n def set_invert_state(self, data):\n self.invert_state = data\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1143 / 1224\n \n def get_invert_state(self):\n return self.invert_state\n def reset_invert_state(self):\n self.invert_state = False\n@@ -52335,15 +52335,15 @@\n 12.10.3.2 In The Instantiate Libraries Section\n Here we create the Status library instance:\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1144 / 1224\n \n Typically we instantiated the library outside of the widget class so that the reference to it is global meaning you don\u2019t need to use self. in front of it.\n By convention we use all capital letters in the name for global references.\n 12.10.3.3 In The Custom Widget Class Definition Section\n This is the meat and potatoes of our custom widget.\n@@ -52421,15 +52421,15 @@\n definition (class Lcnc_State_Led(Lcnc_Led):) - it\u2019s called because Lcnc_Led inherits +_HalWidgetBase+.\n In this function you have access to some extra information (though we don\u2019t use them in this example):\n self.HAL_GCOMP\n the HAL component instance\n self.HAL_NAME\n This widget\u2019s name as a string\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1145 / 1224\n \n self.QT_OBJECT_\n This widget\u2019s PyQt object instance\n self.QTVCP_INSTANCE_\n The very top level parent of the screen\n@@ -52477,15 +52477,15 @@\n # machine is estopped status\n def set_is_estopped(self, data):\n self.is_estopped = data\n def get_is_estopped(self):\n return self.is_estopped\n def reset_is_estopped(self):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1146 / 1224\n \n self.is_estopped = False\n # machine is on status\n def set_is_on(self, data):\n self.is_on = data\n@@ -52529,15 +52529,15 @@\n STATUS = Status()\n INFO = Info()\n ACTION = Action()\n class SystemToolButton(QToolButton, _HalWidgetBase):\n def __init__(self, parent=None):\n super(SystemToolButton, self).__init__(parent)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1147 / 1224\n \n self._joint = 0\n self._last = 0\n self._block_signal = False\n self._auto_label_flag = True\n@@ -52581,15 +52581,15 @@\n def G59_3(self):\n ACTION.SET_USER_SYSTEM(\u201959.3\u2019)\n def _set_user_system_text(self, w, data):\n convert = { 1:\u201dG54\u201d, 2:\u201dG55\u201d, 3:\u201dG56\u201d, 4:\u201dG57\u201d, 5:\u201dG58\u201d, 6:\u201dG59\u201d, 7:\u201dG59.1\u201d, 8:\u201dG59 \u2190.2\u201d, 9:\u201dG59.3\u201d}\n if self._auto_label_flag:\n self.setText(convert[int(data)])\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1148 / 1224\n \n def ChangeState(self, joint):\n if int(joint) != self._joint:\n self._block_signal = True\n self.setChecked(False)\n@@ -52634,15 +52634,15 @@\n def setisHomed(self, data):\n self._isHomed = data\n # Qproperty\n isHomed = QtCore.pyqtProperty(bool, getisHomed, setisHomed)\n \n Here is a sample stylesheet to change text color based on home state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1149 / 1224\n \n In this case any widget based on the HomeLabel widget above will change text color.\n You would usually pick specific widgets using HomeLabel #specific_widget_name[homed=true]:\n HomeLabel[homed=true] {\n color: green;\n@@ -52684,15 +52684,15 @@\n ####################################\n # GridLayout\n ####################################\n class LcncGridLayoutPlugin(QPyDesignerCustomWidgetPlugin):\n def __init__(self, parent = None):\n QPyDesignerCustomWidgetPlugin.__init__(self)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n self.initialized = False\n def initialize(self, formEditor):\n if self.initialized:\n return\n self.initialized = True\n def isInitialized(self):\n@@ -52746,15 +52746,15 @@\n return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(\u2019systemtoolbutton\u2019)))\n def toolTip(self):\n return \u201dButton for selecting a User Coordinate System\u201d\n def whatsThis(self):\n \n 1150 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1151 / 1224\n \n return \u201d\u201d\n def isContainer(self):\n return False\n def domXml(self):\n@@ -52801,15 +52801,15 @@\n if manager:\n self.factory = ActionButtonTaskMenuFactory(manager)\n manager.registerExtensions(self.factory, Q_TYPEID[\u2019QDesignerTaskMenuExtension\u2019 \u2190])\n self.initialized = True\n def isInitialized(self):\n return self.initialized\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n # This factory method creates new instances of our custom widget\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@@ -52851,15 +52851,15 @@\n layout = QtWidgets.QGridLayout()\n self.c_estop = QtWidgets.QCheckBox(\u201dEstop Action\u201d)\n self.c_estop.setChecked(widget.estop )\n layout.addWidget(self.c_estop)\n \n 1152 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1153 / 1224\n \n layout.addWidget(buttonBox, 5, 0, 1, 2)\n self.setLayout(layout)\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n@@ -52898,15 +52898,15 @@\n 12.11.1 Preference File Loading/Saving\n Here is how to load and save preferences at launch and closing time.\n Prerequisites\n \u2014 Preference file option must be set in the ScreenOptions widget.\n \u2014 Preference file path must be set in the INI configuration.\n Reading preferences at launch time Under the def initialized__(self): function add:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1154 / 1224\n \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@@ -52946,15 +52946,15 @@\n 12.11.3 Add A Basic Style Editor\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1155 / 1224\n \n STYLEEDITOR = SSE()\n \n Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets,\n paths):+ function add:\n@@ -52993,15 +52993,15 @@\n \u2014 ID - needs to be set to a unique name that the function supplies. ID should be a unique key.\n \u2014 TITLE sets the dialog title.\n \u2014 Arbitrary data can be added to the dict. The dialog will ignore them but send them back to\n the return code.\n \u2014 Sends the dict as a dialog-request STATUS message\n Add message data processing function in the CALLBACKS FROM STATUS section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1156 / 1224\n \n # Process the STATUS return message from set-tool-offset\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@@ -53044,15 +53044,15 @@\n Edit the object name, text, and button type for an appropriate action.\n In this example the:\n \u2014 submenu name must be menuRecent,\n \u2014 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1157 / 1224\n \n Instantiate ToolBarActions module in the INSTANTIATE LIBRARY SECTION\n TOOLBAR = ToolBarActions()\n \n Configure submenus and actions in the SPECIAL FUNCTIONS SECTION Under the def initialized_\n@@ -53099,15 +53099,15 @@\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 self.w.filemanager.load()\n elif tab == self.w.tab_mdi:\n self.w.mditouchy.run_command()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1158 / 1224\n \n This function assumes there is a Tab widget, named mainTab, that has tabs with the names tab_auto,\n tab_graphics, tab_filemanager and tab_mdi.\n In this way the cycle start button works differently depending on what tab is shown.\n This is simplified - checking state and error trapping might be helpful.\n@@ -53147,15 +53147,15 @@\n \u2014 Set the AbstractButton property checkable to True.\n \u2014 Set the ActionButton properties incr_imperial_number and incr_mm_number to 0.\n \u2014 Use Qt Designer\u2019s slot editor to use the button signal clicked(bool) to call form\u2019s handler function\n toggle_continuous_clicked().\n See Using Qt Designer To Add Slots section for more information.\n Then add this code snippets to the handler file under the initialized__ function:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1159 / 1224\n \n # at this point:\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n def initialized__(self):\n@@ -53199,15 +53199,15 @@\n We can \u201dclass patch\u201d the library to redirect the function call. In the IMPORT SECTION add:\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 2. Redirect the class to call our custom function (2) in the handler file instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1160 / 1224\n \n ##########################################\n # Special Functions called from QtVCP\n #\n ##########################################\n@@ -53257,15 +53257,15 @@\n print(fname)\n self.w.filemanager.super__load(fname)\n \n 12.11.11 Adding Widgets Programmatically\n In some situation it is only possible to add widgets with Python code rather then using the Qt\n Designer editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1161 / 1224\n \n When adding QtVCP widgets programmatically, sometimes there are extra steps to be taken.\n Here we are going to add a spindle speed indicator bar and up-to-speed LED to a tab widget corner.\n Qt Designer does not support adding corner widgets to tabs but PyQt does.\n This is a cut down example from QtAxis screen\u2019s handler file.\n@@ -53308,15 +53308,15 @@\n STATUS.connect(\u2019actual-spindle-speed-changed\u2019, \\\n lambda w,speed: self.update_spindle(speed))\n \n Add the widgets to the tab We need to make sure the Qt Designer widgets are already built before\n we try to add to them. For this, we add a call to self.make_corner_widgets() function to build our\n extra widgets at the right time, i.e. under the initialized__() function:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1162 / 1224\n \n ##########################################\n # Special Functions called from QtScreen #\n ##########################################\n # at this point:\n@@ -53410,15 +53410,15 @@\n 1\n \n self.HAL_GCOMP\n the HAL component instance\n self.HAL_NAME\n This widget\u2019s name as a string\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1163 / 1224\n \n self.QT_OBJECT_\n This widget\u2019s PyQt object instance\n self.QTVCP_INSTANCE_\n The very top level parent of the screen\n@@ -53505,15 +53505,15 @@\n \n Instantiate Qhal In the INSTANTIATE LIBRARY SECTION add:\n QHAL = Qhal()\n \n Now add/modify these sections to include code that is similar to this:\n Register a function to be called at CYCLE_TIME period This is usually every 100 ms.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1164 / 1224\n \n ########################\n # **** INITIALIZE **** #\n ########################\n # widgets allows access to widgets from the QtVCP files\n@@ -53557,15 +53557,15 @@\n You will need to run LinuxCNC from a terminal to see the printed text.\n #####################\n # general functions #\n #####################\n def test_zmq_function(self, arg1, arg2):\n print(\u2019zmq_test_function called: \u2019, arg1, arg2)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1165 / 1224\n \n Create an external program sending ZMQ messages that will trigger function call Here is a\n sample external program to call a function. It alternates between two data sets every second. Run this\n in a separate terminal from LinuxCNC to see the sent messages.\n #!/usr/bin/env python3\n@@ -53621,15 +53621,15 @@\n 12.11.13.2 ZMQ Messages Writing\n You may also want to communicate with an external program from the screen.\n In the ScreenOptions widget, you can select the property use_send_zmq_message. You can also set\n this property directly in the handler file, as in this sample.\n We assume the ScreenOptions widget is called screen_options in Qt Designer:\n Enable sending of ZMQ messages\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1166 / 1224\n \n ########################\n # **** INITIALIZE **** #\n ########################\n # widgets allows access to widgets from the QtVCP files\n@@ -53672,15 +53672,15 @@\n A status bar is used for short information to show the user.\n Note\n Not all screens have a status bar.\n \n Status bar usage example\n self.w.statusbar.showMessage(message, timeout * 1000)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1167 / 1224\n \n timeout is in seconds and we assume statusbar is the Qt Designer set name of the widget.\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@@ -53725,15 +53725,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1168 / 1224\n \n 12.11.16 Read Command Line Load Time Options\n Some panels need information at load time for setup/options. QtVCP covers this requirement with -o\n options.\n The -o argument is good for a few, relatively short options, that can be added to the loading command\n@@ -53771,15 +53771,15 @@\n \n # set the camera number either as default or if -o option changed the \u2019number\u2019\n variable, to that number.\n self.w.camview._camNum = number\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1169 / 1224\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@@ -53818,15 +53818,15 @@\n d. Installs an event filter.\n Now the window/widgets are instantiated, the HAL pins are built. This also initiates the +_init_hal()+\n function of the widgets. . The +initialized__()+ handler function is called . The STATUS library is\n forced to update. . HAL component is set ready at this point. . A variety of optional switch arguments\n are set, including calling a POSTGUI HAL file (if a screen). . Terminate signals are trapped and QtVCP\n now polls for events.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1170 / 1224\n \n 12.12.3.2 QtVCP Shutdown\n Finally when QtVCP is asked to shutdown:\n 1. It calls shutdown functions in the handler file,\n 2. STATUS monitoring is shut down\n@@ -53864,15 +53864,15 @@\n These try to cover non-obvious situations.\n 12.12.5.1 Error Code Collecting\n LinuxCNC\u2019s error code collecting can only be read from one place.\n When read, it is consumed, i.e. no other object can read it.\n In QtVCP screens, it is recommended to use the ScreenOptions widget to set up error reading.\n Errors are then sent to other objects via STATUS signals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1171 / 1224\n \n 12.12.5.2 Jog Rate\n LinuxCNC has no internal record of jog rate: you must specify it at the time of jogging.\n QtVCP uses the STATUS library to keep track of the latest linear and angular jog rates.\n It is always specified in machine units per minute and must be converted when in non-machine\n@@ -53909,15 +53909,15 @@\n self.QT_OBJECT_\n This widget\u2019s PyQt object instance\n self.QTVCP_INSTANCE_\n The very top level parent of the screen\n self.PATHS_\n The instance of QtVCP\u2019s path library\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1172 / 1224\n \n self.PREFS_\n The instance of an optional preference file\n self.SETTINGS_\n The Qsettings object\n@@ -53930,15 +53930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1173 / 1224\n \n Chapitre 13\n \n User Interface Programming\n 13.1 Panelui\n@@ -53967,15 +53967,15 @@\n #\n # sampler is needed for panelui\n # cfg= must always be u for panelui. depth sets the available buffer\n loadrt sampler cfg=u depth=1025\n #uncomment to validate the panelui INI file\n #loadusr pyui\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1174 / 1224\n \n # -d = debug, -v = verbose debug\n # -d will show you keypress identification and commands called\n # -v is for develeper info\n loadusr -W panelui -d\n@@ -54024,15 +54024,15 @@\n ENABLE = True\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1175 / 1224\n \n [RADIO_BUTTONS]\n # The double bracket section(s) define the group(s) of radio buttons.\n # The group name must be unique and is case sensitive.\n # Groups output is controlled by what button is active not directly by keycode.\n@@ -54088,15 +54088,15 @@\n # It also has a status pin which will follow its 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 [[tool_change]]\n KEY = R2C5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1176 / 1224\n \n OUTPUT = BIT\n TRUE_COMMAND = NONE, NONE\n FALSE_COMMAND = NONE, NONE\n STATUS_PIN = True\n@@ -54144,15 +54144,15 @@\n spindle_reverse_adjust\n \u2014 optional argument: starting RPM (int) - default 100\n \u2014 Description: If the spindle is stopped it will start in the reverse 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_faster\n \u2014 Description: increases spindle speed by 100 RPM\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n spindle_slower\n \u2014 Description: decreases spindle speed by 100 RPM, until RPM is 100\n set_linear_jog_velocity\n \u2014 required argument: velocity in inches per minute (float)\n \u2014 description: sets the jog velocity on axis 0,1,2,6,7,8 (X,Y,Z,U,V,W)\n set_angular_jog_velocity\n@@ -54190,15 +54190,15 @@\n \u2014 Description: records the current mode, calls commands and then returns to mode.\n mdi\n \u2014 required argument: G-code command(s)\n \u2014 Description: sets mode to MDI, calls commands.\n \n 1177 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1178 / 1224\n \n 13.1.5 ZMQ Messages\n Panelui can send ZMQ based messages on button presses.\n In this way panelui can interact will other programs such as QtVCP screens.\n [TOGGLE_BUTTONS]\n@@ -54239,15 +54239,15 @@\n # linuxcnc_stat: is the python status instance of LinuxCNC\n # linuxcnc_cmd: is the python command instance of LinuxCNC\n # commands: is the command instance so one can call the internal routines\n # master: give access to the master functions/data\n def __init__(self, linuxcnc_stat, linuxcnc_cmd, commands, master):\n self.parent = commands\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1179 / 1224\n \n self.current_mode = 0\n # command functions are expected to have this layout:\n # def some_name(self, widget_instance, arguments from widget):\n # widget_instance gives access to the calling widget\u2019s function/data\n@@ -54291,15 +54291,15 @@\n channel.\n Programmatic access to NML is through a C++ API; however, the most important parts of the NML\n interface to LinuxCNC are also available to Python programs through the linuxcnc module.\n Beyond the NML interface to the command, status and error channels, the linuxcnc module also\n contains:\n \u2014 support for reading values from INI files\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1180 / 1224\n \n 13.2.2 Usage Patterns for the LinuxCNC NML interface\n The general pattern for linuxcnc usage is roughly like this:\n \u2014 import the linuxcnc module\n \u2014 establish connections to the command, status and error NML channels as needed\n@@ -54341,15 +54341,15 @@\n adaptive_feed_enabled\n (returns boolean) - status of adaptive feedrate override (0/1).\n ain\n (returns tuple of floats) - current value of the analog input pins.\n angular_units\n (returns float) - machine angular units per deg, reflects [TRAJ]ANGULAR_UNITS INI value.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1181 / 1224\n \n aout\n (returns tuple of floats) - current value of the analog output pins.\n axes\n Removed since version 2.9 use axis_mask.bit_count() to get the number of axes configured\n@@ -54398,15 +54398,15 @@\n feed_hold_enabled\n (returns boolean) - enable flag for feed hold.\n feed_override_enabled\n (returns boolean) - enable flag for feed override.\n feedrate\n (returns float) - current feedrate override, 1.0 = 100%.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1182 / 1224\n \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@@ -54454,15 +54454,15 @@\n \u2014 KINEMATICS_IDENTITY\n \u2014 KINEMATICS_FORWARD_ONLY\n \u2014 KINEMATICS_INVERSE_ONLY\n \u2014 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1183 / 1224\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@@ -54511,15 +54511,15 @@\n probing\n (returns boolean) - flag, True if a probe operation is in progress.\n program_units\n (returns integer) - one of CANON_UNITS_INCHES=1, CANON_UNITS_MM=2, CANON_UNITS_CM=3\n queue\n (returns integer) - current size of the trajectory planner queue.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1184 / 1224\n \n queue_full\n (returns boolean) - the trajectory planner queue is full.\n rapidrate\n (returns float) - rapid override scale.\n@@ -54566,15 +54566,15 @@\n \n velocity\n (returns float) - This property is defined, but it does not have a useful interpretation.\n 13.2.3.2 The axis dictionary\n The axis configuration and status values are available through a list of per-axis dictionaries. Here\u2019s an\n example how to access an attribute of a particular axis: Note that many properties that were formerly\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1185 / 1224\n \n in the axis dictionary are now in the joint dictionary, because on nontrivial kinematics machines\n these items (such as backlash) are not the properties of an axis.\n max_position_limit\n (returns float) - maximum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MAX_LIMIT.\n@@ -54615,15 +54615,15 @@\n max_hard_limit\n (returns integer) - non-zero means max hard limit exceeded.\n max_position_limit\n (returns float) - maximum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MAX_LIMIT.\n max_soft_limit\n non-zero means max_position_limit was exceeded, int\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1186 / 1224\n \n min_ferror\n (returns float) - configuration parameter, reflects [JOINT_n]MIN_FERROR.\n min_hard_limit\n (returns integer) - non-zero means min hard limit exceeded.\n@@ -54668,15 +54668,15 @@\n Some commands can always be sent, regardless of mode and state; for instance, the linuxcnc.command.abor\n method can always be called.\n Other commands may be sent only in appropriate state, and those tests can be a bit tricky. For instance,\n an MDI command can be sent only if:\n \u2014 ESTOP has not been triggered, and\n \u2014 the machine is turned on and\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1187 / 1224\n \n \u2014 the axes are homed and\n \u2014 the interpreter is not running and\n \u2014 the mode is set to MDI mode\n so an appropriate test before sending an MDI command through linuxcnc.command.mdi() could be:\n@@ -54717,15 +54717,15 @@\n c.mist(linuxcnc.MIST_ON)\n c.mist(linuxcnc.MIST_OFF)\n \n jjogmode, joint_num_or_axis_index)\n jjogmode, joint_num_or_axis_index, velocity)\n jjogmode, joint_num_or_axis_index, velocity, increment)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1188 / 1224\n \n c.mode(linuxcnc.MODE_MDI)\n c.mode(linuxcnc.MODE_AUTO)\n c.mode(linuxcnc.MODE_MANUAL)\n c.override_limits()\n@@ -54767,15 +54767,15 @@\n jog(command-constant, bool, int[, float[, float]])\n Syntax\n jog(command, jjogmode, joint_num_or_axis_index, velocity[, distance])\n jog(linuxcnc.JOG_STOP, jjogmode, joint_num_or_axis_index)\n jog(linuxcnc.JOG_CONTINUOUS, jjogmode, joint_num_or_axis_index, velocity)\n jog(linuxcnc.JOG_INCREMENT, jjogmode, joint_num_or_axis_index, velocity, distance)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1189 / 1224\n \n Command Constants\n linuxcnc.JOG_STOP\n linuxcnc.JOG_CONTINUOUS\n linuxcnc.JOG_INCREMENT\n@@ -54822,15 +54822,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1190 / 1224\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@@ -54872,15 +54872,15 @@\n Set spindle override factor. Defaults to spindle 0.\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 On completion of this call, the VAR file on disk is updated with live values from the interpreter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1191 / 1224\n \n teleop_enable(int)\n Enable/disable teleop mode (disable for joint jogging).\n tool_offset(int, float, float, float, float, float, int)\n Set the tool offset. See usage example above.\n@@ -54920,15 +54920,15 @@\n import linuxcnc\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1192 / 1224\n \n # inifile.findall() returns a list of matches, or an empty list\n # if the key wasn\u2019t found:\n extensions = inifile.findall(\u201dFILTER\u201d, \u201dPROGRAM_EXTENSION\u201d)\n print(\u201dextensions: \u201d, extensions)\n@@ -54964,15 +54964,15 @@\n last([int])\n Return the most recent point on the plot or None\n \n 13.3 The HAL Python module\n This documentation describes the hal python module, which provides a Python API for creating and\n accessing HAL pins and signals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1193 / 1224\n \n 13.3.1 Basic usage\n #!/usr/bin/env python3\n import hal, time\n h = hal.component(\u201dpassthrough\u201d)\n@@ -55016,15 +55016,15 @@\n Get the current Realtime msg level.\n set_msg_level\n Set the current Realtime msg level. used for debugging information.\n connect\n Connect a pin to a signal.\n Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n disconnect\n Disconnect a pin from a signal.\n Example\n hal.disconnect(\u201dpinname\u201d)\n@@ -55069,15 +55069,15 @@\n get_name\n Get the HAL object name.\n Return a string.\n h.in.get_name()\n \n 1194 / 1224\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1195 / 1224\n \n get_type\n Get the HAL object\u2019s type.\n Returns an integer.\n h.in.get_type()\n@@ -55118,15 +55118,15 @@\n as event-driven programming, which is more efficient then every program polling LinuxCNC at the\n same time. GladeVCP, Gscreen, Gmoccapy and QtVCP use GStat extensively. GStat is in the hal_glib\n module.\n Overview\n \u2014 First, a program imports the hal_glib module and instantiates GStat.\n \u2014 Then it connects to the messages it wishes to monitor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1196 / 1224\n \n \u2014 GStat checks LinuxCNC\u2019s status every 100 ms and if there are differences from the last check, it\n will send a callback message to all the connected programs with the current status.\n \u2014 When GStat calls the registered function, it sends the GStat object plus any return codes from the\n message.\n@@ -55167,15 +55167,15 @@\n GSTAT.forced_update()\n # loop till exit\n try:\n GLib.MainLoop().run()\n except KeyboardInterrupt:\n raise SystemExit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1197 / 1224\n \n This would be loaded with loadusr python PATH-TO-FILE/FILENAME.py or if you need to wait for the\n pins to be made before continuing:\n loadusr python -Wn metric_status PATH-TO-FILE/FILENAME.py\n The pins would be: metric_status.g20 and metric_status.g21.\n@@ -55212,15 +55212,15 @@\n \u2014 state_label\n \u2014 e_state_label\n \u2014 interp_state_label\n #!/usr/bin/env python3\n from qtvcp.core import Status\n GSTAT = Status()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1198 / 1224\n \n class HandlerClass:\n def __init__(self, halcomp,widgets,paths):\n self.w = widgets\n GSTAT.connect(\u201dstate-estop\u201d,lambda w: self.update_estate_label(\u2019ESTOP\u2019))\n@@ -55262,15 +55262,15 @@\n (returns bool, Python List) - Sent when any hard limit is tripped. bool indicates if any limit is\n tripped, the list shows all available joint\u2019s current limit values.\n mode-manual\n (returns nothing) - Sent when LinuxCNC switches to manual mode.\n mode-mdi\n (returns nothing) - Sent when LinuxCNC switches to MDI mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1199 / 1224\n \n mode-auto\n (returns nothing) - Sent when LinuxCNC switches to auto mode.\n command-running\n (returns nothing) - Sent when running a program or MDI\n@@ -55320,15 +55320,15 @@\n (returns nothing) - Sent when there is a request to reload the display\n line-changed\n (returns integer) - Sent when LinuxCNC has read a new line.\n LinuxCNC does not update this for every type of line.\n tool-in-spindle-changed\n (returns integer) - Sent when the tool has changed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1200 / 1224\n \n tool-info-changed\n (returns Python object) - Sent when current tool info changes.\n current-tool-offset\n (returns Python object) - Sent when the current tool offsets change.\n@@ -55378,15 +55378,15 @@\n css-mode\n (returns bool) - Sent when G96 status changes\n (constant surface feed mode)\n rpm-mode\n (returns bool) - Sent when G97 status changes\n (constant RPM mode)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1201 / 1224\n \n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n diameter-mode\n@@ -55433,15 +55433,15 @@\n \u2014 y (string): Y extents (bounds) 1\n \u2014 y_zero_rxy (string): Y extents without rotation around z (bounds) 1\n \u2014 z (string): Z extents (bounds) 1\n \u2014 z_zero_rxy (string): Z extents without rotation around z (bounds) 1\n \u2014 machine_unit_sys (string): Machine units (Metric or Imperial)\n \u2014 gcode_units (string): Units in G-code file (mm or in)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1202 / 1224\n \n Note\n 1. See the images\n better understanding.\n \n@@ -55492,15 +55492,15 @@\n show-preferences\n (returns None) - intended to be sent when requesting the screen preferences to be displayed.\n This depends on the widget/libraries used.\n shutdown\n (returns None) - intended to be sent when requesting LinuxCNC to shutdown.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1203 / 1224\n \n error\n (returns integer, string) - intended to be sent when an error has been reported .\n integer represents the kind of error. ERROR, TEXT or DISPLAY\n string is the actual error message.\n@@ -55543,15 +55543,15 @@\n (None) set_jog_increments\n (float, string) get_jog_increments\n (None) is_all_homed\n (nothing) - This will return the current state of all_homed (BOOL).\n machine_is_on\n (nothing) - This will return the current state of machine (BOOL).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1204 / 1224\n \n estop_is_clear\n (nothing) - This will return the state of Estop (BOOL)\n set_tool_touchoff\n (tool,axis,value) - This command will\n@@ -55595,15 +55595,15 @@\n Requests the axis to be selected by emitting the axis-selection-changed message.\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) -\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1205 / 1224\n \n is_auto_mode\n (None) is_on_and_idle\n (None) is_auto_running\n (None) is_auto_paused\n@@ -55619,15 +55619,15 @@\n state-tags branch.\n \n 13.5 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1206 / 1224\n \n The Vismach viewport view can be manipulated as follows:\n \u2014 zoom by scroll wheel or right button drag,\n \u2014 pan by left button drag,\n \u2014 rotate by middle-button drag or shift-drag.\n@@ -55636,15 +55636,15 @@\n use the simplest and most basic of them.\n The basic sequence in creating the Vismach model is\n \u2014 Create the HAL pins that control the motion.\n \u2014 Create the parts.\n \u2014 Define how they move.\n \u2014 Assemble into movement groups.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1207 / 1224\n \n 13.5.1 Start the script\n It is useful for testing to include the #!/usr/bin/env python3 to allow the file to be run as a script. The\n first thing to do is to import the required libraries.\n #!/usr/bin/env python3\n@@ -55687,15 +55687,15 @@\n \u2014 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 \u2014 arc = ArcX(x1, x2, r1, r2, a1, a2)\n Create an arc shape.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1208 / 1224\n \n \u2014 box = Box(x1, y1, z1, x2, y2, z2)\n Creates a rectangular prism with opposite corners at the specified positions and edges parallel to\n the XYZ axes.\n \u2014 box = BoxCentered(xw, yw, zw)\n@@ -55740,15 +55740,15 @@\n move the part to the origin first to define the axis.\n \u2014 The axis of rotation is from the origin point to the point defined by (x,y,z).\n When the part is moved back away from the origin to its correct location the axis of rotation can\n be considered to remain \u201dembedded\u201d in the part.\n \u2014 Rotation angles are in degrees, so for a rotary joint with a 0-1 scaling you would need to use an\n angle scale of 360.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1209 / 1224\n \n 13.5.6 Assembling the model.\n In order for parts to move together they need to be assembled with the Collection() command. It is\n important to assemble the parts and define their motions in the correct sequence. For example to\n create a moving head milling machine with a rotating spindle and an animated draw bar you would:\n@@ -55789,15 +55789,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1210 / 1224\n \n 13.5.7 Other functions\n \u2014 part = Color([colorspec], [part])\n Sets the display color of the part. Note that unlike the other functions the part definition comes\n second in this case.\n@@ -55838,23 +55838,23 @@\n part1 = Translate([dogs],-1,49,0)\n ...\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1211 / 1224\n \n Troisi\u00e8me partie\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1212 / 1224\n \n Chapitre 14\n \n Overleaf\n \n@@ -55874,15 +55874,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1213 / 1224\n \n Chapitre 15\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -55919,15 +55919,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1214 / 1224\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@@ -55976,15 +55976,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1215 / 1224\n \n Feedback\n A method (e.g., quadrature encoder signals) by which LinuxCNC receives information about the\n position of motors.\n Feedrate Override\n@@ -56031,15 +56031,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1216 / 1224\n \n Machine units\n The linear and angular units used for machine configuration. These units are specified and used\n in the INI file. HAL pins and parameters are also generally in machine units.\n MDI\n@@ -56090,15 +56090,15 @@\n A portable interface to real-time operating systems including RTAI and POSIX pthreads with\n realtime extensions.\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 ac-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1217 / 1224\n \n tuator. Also, a motor which is specially-designed to provide improved performance in such applications.\n Servo Loop\n A control loop used to control position or velocity of an motor equipped with a feedback device.\n Signed Integer\n@@ -56131,15 +56131,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1218 / 1224\n \n Chapitre 16\n \n Copyright\n 16.1 Legal Section\n@@ -56166,15 +56166,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1219 / 1224\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@@ -56223,15 +56223,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1220 / 1224\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@@ -56277,15 +56277,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1221 / 1224\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@@ -56326,15 +56326,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1222 / 1224\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@@ -56361,15 +56361,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1223 / 1224\n \n Chapitre 17\n \n Histoire de LinuxCNC\n 17.1 Origin\n@@ -56401,15 +56401,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1224 / 1224\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"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Guide de d\u00e9marrage V2.9.3, 25 Jan 2025'\n+Title: 'Guide de d\u00e9marrage V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Guide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+Guide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n ii\n \n Table des mati\u00e8res\n 1 About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.2.3 Command line - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n iii\n \n 3.2.4 Command line - MacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n@@ -267,15 +267,15 @@\n 7.2 GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 29\n 29\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n iv\n \n L\u2019\u00e9quipe LinuxCNC\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@@ -293,15 +293,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 1 / 33\n \n Chapitre 1\n \n About LinuxCNC\n 1.1 The Software\n@@ -332,15 +332,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 2 / 33\n \n 1.2 The Operating System\n LinuxCNC is available as ready-to-use packages for the Ubuntu and Debian distributions.\n \n 1.3 Getting Help\n@@ -379,22 +379,22 @@\n sure that your message is seen by the developers then the mailing list is to be preferred.\n \n 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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 1.3.5 Bug Reports\n Report bugs to the LinuxCNC github bug tracker.\n \n 3 / 33\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 4 / 33\n \n Chapitre 2\n \n System Requirements\n 2.1 Minimum Requirements\n@@ -422,15 +422,15 @@\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \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 \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 5 / 33\n \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@@ -465,24 +465,24 @@\n compile from source to do this.\n \n 2.3 Problematic Hardware\n 2.3.1 Laptops\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 \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 6 / 33\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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 7 / 33\n \n Chapitre 3\n \n Getting LinuxCNC\n This section describes the recommended way to download and make a fresh install of LinuxCNC.\n@@ -509,15 +509,15 @@\n This section describes some methods for downloading the Live/Install image.\n \n 3.1.1 Normal Download\n Software for LinuxCNC to download is presented on the project\u2019s Downloads page. Most users will aim\n for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 8 / 33\n \n Note\n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n@@ -555,15 +555,15 @@\n but there are alternatives. More information can be found at: How To MD5SUM\n \n 3.2 Write the image to a bootable device\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 9 / 33\n \n 3.2.1 Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n@@ -603,15 +603,15 @@\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 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 10 / 33\n \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 2. Right-click on the file in the Finder window and select \u201dBurn to disc\u201d (The option to burn to disc\n@@ -645,15 +645,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 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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 11 / 33\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@@ -738,15 +738,15 @@\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n systems that can not run a 64-bit OS.\n \n 3.7.1 Installing on Debian Bookworm (with Preempt-RT kernel)\n 1. Install Debian Bookworm (Debian 12), amd64 version. You can download the installer here:\n https://www.debian.org/distrib/\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 12 / 33\n \n 2. After burning the iso and booting up if you don\u2019t want Gnome desktop select Advanced Options\n > Alternative desktop environments and pick the one you like. Then select Install or Graphical\n Install.\n \n@@ -782,15 +782,15 @@\n 3.7.2 Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n running the installer script as decribed above. If an RTAI kernel is detected it will stop before\n installing any packages.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 13 / 33\n \n 3. Update the package list from linuxcnc.org\n sudo apt-get update\n \n 4. Install the new realtime kernel, RTAI and the rtai version of linuxcnc.\n@@ -799,15 +799,15 @@\n Reboot the machine, ensuring that the system boots from the new 5.4.258-rtai kernel.\n \n 3.7.3 Installing on Raspbian 12\n Don\u2019t do that. The latencies are too bad with the default kernel and the PREEMPT_RT (the RT is\n important) kernel of Debian does not boot on the Pi (as of 1/2024). Please refer to the images provided\n online. You can create them yourself following the scripts provided online.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 14 / 33\n \n Chapitre 4\n \n Running LinuxCNC\n 4.1 Invoking LinuxCNC\n@@ -837,15 +837,15 @@\n The sim configurations are often the most useful starting point for new users and are organized around\n supported GUIs:\n \u2014 axis - Keyboard and Mouse GUI\n \u2014 craftsman - Touch Screen GUI (no longer maintained ???)\n \u2014 gmoccapy - Touch Screen GUI\n \u2014 gscreen - Touch Screen GUI\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 15 / 33\n \n \u2014 pyvcp_demo - Python Virtual Control Panel\n \u2014 qtaxis - Touch Screen GUI, axis lookalike\n \u2014 qtdragon - Touch Screen GUI\n \u2014 qtdragon_hd - Touch Screen GUI, high definition\n@@ -887,15 +887,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 16 / 33\n \n Figure 4.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@@ -909,15 +909,15 @@\n \n 4.4 Simulator Configurations\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 \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 17 / 33\n \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 4.5 Configuration Resources\n@@ -934,15 +934,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 18 / 33\n \n Chapitre 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@@ -974,15 +974,15 @@\n \n You should be running on Debian Buster, Bullseye or Bookworm or Ubuntu 20.04 \u201dFocal Fossa\u201d or\n newer. LinuxCNC 2.9.y will not run on older distributions than these.\n You will also need to check which realtime kernel is being used:\n uname -r\n 6.1.0-10-rt-amd64\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 19 / 33\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. RTAI packages are available for Bookworm and Buster but not currently for Bullseye.\n@@ -1019,29 +1019,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 20 / 33\n \n Figure 5.1 \u2013 Figure with a screenshot of the repository configuration of the synaptic package manager.\n \u2014 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 Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n 5.1.2.1 Debian Buster, Bullseye and Bookworm\n Debian uses the Synaptic Package Manager.\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 21 / 33\n \n \u2014 Open Synaptic using the instructions in Setting apt sources above.\n \u2014 Click the Reload button.\n \u2014 Use the Search function to search for linuxcnc.\n \u2014 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n@@ -1078,15 +1078,15 @@\n \n 5.3 Updating Configuration Files for 2.9\n 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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 22 / 33\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 Since 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@@ -1119,24 +1119,24 @@\n \n mdro mqtt-publisher pi500_vfd pmx485-test qtplasmac-cfg2prefs qtplasmac-materials qtplasmac-plasmac2q\n qtplasmac-setup sim-torch svd-ps_vfd\n \n 5.5.2 Realtime\n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_sums tof ton\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 23 / 33\n \n 5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 24 / 33\n \n Chapitre 6\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -1173,15 +1173,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 25 / 33\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@@ -1230,15 +1230,15 @@\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 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 \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 26 / 33\n \n Feedback\n A method (e.g., quadrature encoder signals) by which LinuxCNC receives information about the\n position of motors.\n Feedrate Override\n@@ -1285,15 +1285,15 @@\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 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 \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 27 / 33\n \n Machine units\n The linear and angular units used for machine configuration. These units are specified and used\n in the INI file. HAL pins and parameters are also generally in machine units.\n MDI\n@@ -1344,15 +1344,15 @@\n A portable interface to real-time operating systems including RTAI and POSIX pthreads with\n realtime extensions.\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 ac-\n \n-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 28 / 33\n \n tuator. Also, a motor which is specially-designed to provide improved performance in such applications.\n Servo Loop\n A control loop used to control position or velocity of an motor equipped with a feedback device.\n Signed Integer\n@@ -1385,15 +1385,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 29 / 33\n \n Chapitre 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -1419,15 +1419,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 30 / 33\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@@ -1476,15 +1476,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 31 / 33\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@@ -1530,15 +1530,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 32 / 33\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@@ -1579,15 +1579,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-\fGuide de d\u00e9marrage V2.9.3, 25 Jan 2025\n+\fGuide de d\u00e9marrage V2.9.3, 26 Jan 2025\n \n 33 / 33\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"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Manuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025'\n+Title: 'Manuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Manuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+Manuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n ii\n \n Table des mati\u00e8res\n 1 Stepper Information\n \n 1\n@@ -125,15 +125,15 @@\n \n 18\n \n 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n 1 / 18\n \n Chapitre 1\n \n Stepper Information\n 1.1 Stepper Motor Operation\n@@ -152,15 +152,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -179,15 +179,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -232,15 +232,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 \u2014 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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n 4 / 18\n \n \u2014 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 \u2014 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@@ -282,15 +282,15 @@\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 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 \n-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n 5 / 18\n \n to begin stepping. The assumption by the software, driver and end user is that the motor operated\n correctly and the axis has moved to the expected new position. A system operating in this fashion is\n said to be running in open loop, where the device at the end of the signal chain (the stepper motor)\n does not provide any indication to the device at the start of the chain (the computer) that the target\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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n 6 / 18\n \n Chapitre 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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 7 / 18\n \n Gecko\n@@ -479,15 +479,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 8 / 18\n \n Gecko\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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 9 / 18\n \n *Motion\n@@ -858,15 +858,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1105,15 +1105,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1292,15 +1292,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\n \n 12 / 18\n \n Chapitre 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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -1375,15 +1375,15 @@\n more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded types.\n Coverage is typically 70% to 95% depending on how tight the braid has been constructed. Despite the\n lower coverage of braided shield, the effectiveness is greater than foil shielding due to the increased\n 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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -1421,15 +1421,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -1469,15 +1469,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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. 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@@ -1512,15 +1512,15 @@\n as possible. If two conductors must cross over each other make the crossing as close to a 90 degree\n 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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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@@ -1555,15 +1555,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-\fManuel de l\u2019int\u00e9grateur V2.9.3, 25 Jan 2025\n+\fManuel de l\u2019int\u00e9grateur V2.9.3, 26 Jan 2025\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-doc-zh-cn_2.9.3-2_all.deb", "source2": "linuxcnc-doc-zh-cn_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n--rw-r--r-- 0 0 0 1072 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 27564620 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 1068 2025-01-26 08:13:18.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 27567200 2025-01-26 08:13: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-zh-cn\n Source: linuxcnc\n Version: 2.9.3-2\n Architecture: all\n Maintainer: LinuxCNC Developers <emc-developers@lists.sourceforge.net>\n-Installed-Size: 30330\n+Installed-Size: 30332\n Recommends: xdg-utils\n Suggests: pdf-viewer\n Conflicts: linuxcnc-doc-cn\n Replaces: linuxcnc-doc-cn\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 2025-01-26 08:13:18.000000 ./usr/share/applications/\n -rw-r--r-- 0 root (0) root (0) 340 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-documentation_zh_CN.desktop\n -rw-r--r-- 0 root (0) root (0) 366 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gcoderef_zh_CN.desktop\n -rw-r--r-- 0 root (0) root (0) 378 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-gettingstarted_zh_CN.desktop\n -rw-r--r-- 0 root (0) root (0) 370 2024-07-06 08:41:36.000000 ./usr/share/applications/linuxcnc-integratorinfo_zh_CN.desktop\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/\n--rw-r--r-- 0 root (0) root (0) 841938 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf\n--rw-r--r-- 0 root (0) root (0) 29486947 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf\n--rw-r--r-- 0 root (0) root (0) 491913 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf\n--rw-r--r-- 0 root (0) root (0) 150081 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf\n+-rw-r--r-- 0 root (0) root (0) 842024 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf\n+-rw-r--r-- 0 root (0) root (0) 29488764 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf\n+-rw-r--r-- 0 root (0) root (0) 491958 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf\n+-rw-r--r-- 0 root (0) root (0) 150115 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf\n -rw-r--r-- 0 root (0) root (0) 14667 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc/gcode_zh_CN.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-zh-cn/\n -rw-r--r-- 0 root (0) root (0) 11215 2025-01-26 08:13:18.000000 ./usr/share/doc/linuxcnc-doc-zh-cn/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 42238 2024-07-06 08:41:36.000000 ./usr/share/doc/linuxcnc-doc-zh-cn/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/lintian/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/lintian/overrides/\n -rw-r--r-- 0 root (0) root (0) 490 2024-07-06 08:41:36.000000 ./usr/share/lintian/overrides/linuxcnc-doc-zh-cn\n"}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Developer_zh_CN.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Developer Manual V2.9.3, 25 Jan 2025'\n+Title: 'Developer Manual V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Developer Manual V2.9.3, 25 Jan 2025\n+Developer Manual V2.9.3, 26 Jan 2025\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 Introduction\n \n 1\n@@ -117,15 +117,15 @@\n \n 15\n \n 3.8.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iii\n \n 3.8.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 16\n \n@@ -281,15 +281,15 @@\n \n 19\n \n 3.8.16.1Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n iv\n \n 3.8.16.2Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 20\n \n@@ -449,15 +449,15 @@\n \n 3.21.3Process line\n \n 27\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vi\n \n 5 Coding Style\n \n 41\n \n@@ -781,15 +781,15 @@\n \n 8.4.1 LinuxCNC official Git repo\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 55\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n vii\n \n 8.4.2 Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 56\n \n@@ -876,15 +876,15 @@\n 10.2GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 66\n 66\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 1 / 70\n \n Chapter 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 2 / 70\n \n Chapter 2\n \n HAL General Reference\n 2.1 HAL Entity Names\n@@ -941,15 +941,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 \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 3 / 70\n \n \u2022 Hyphens (\u201c-\u201d) separate words or fields in the same level of the hierarchy.\n \u2022 HAL components should not use underscores or \u201cMixedCase\u201d. 1\n \u2022 Use only lowercase letters and numbers in names.\n \n@@ -991,15 +991,15 @@\n number.\n 1 Underlined characters have been removed, but there are still a few cases of broken mixture, for example pid.0.Pgain in\n place of pid.0.p-gain.\n 2 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 4 / 70\n \n <specific-name>\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@@ -1041,15 +1041,15 @@\n ppmc.0.write\n Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc\n board.\n 3 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 5 / 70\n \n Chapter 3\n \n Code Notes\n 3.1 Intended audience\n@@ -1080,15 +1080,15 @@\n \u2022 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\n of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as are\n the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated with\n it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with trivial\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 6 / 70\n \n kinematics that may be the case. Even on those machines, joint position and axis position are fundamentally different things. In this document, the terms joint and axis are used carefully to respect\n their distinct meanings. Unfortunately that isn\u2019t necessarily true everywhere else. In particular,\n GUIs for machines with trivial kinematics may gloss over or completely hide the distinction between\n joints and axes. In addition, the INI file uses the term axis for data that would more accurately be\n@@ -1118,19 +1118,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 7 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 8 / 70\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@@ -1161,19 +1161,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 9 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 10 / 70\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 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 \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 11 / 70\n \n \u2022 \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@@ -1214,26 +1214,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 12 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 3.7 Homing\n 3.7.1 Homing state diagram\n \n 13 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 14 / 70\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@@ -1250,15 +1250,15 @@\n The ABORT command simply stops all motion. It can be issued at any time, and will always be accepted. It does not disable the motion controller or change any state information, it simply cancels\n any motion 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 15 / 70\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@@ -1290,15 +1290,15 @@\n machine is based on Cartesian coordinates using kinematics, rather than on individual joints as in free\n mode. However the trajectory planner per se is not used, instead movement is controlled by a velocity\n vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space instead\n of joint space. On a machine with trivial kinematics, there is little difference between teleop mode\n and free mode, and GUIs for those machines might never even issue this command. However for nontrivial machines like robots and hexapods, teleop mode is used for most user commanded jog type\n movements.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 16 / 70\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@@ -1334,15 +1334,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 17 / 70\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@@ -1369,15 +1369,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 18 / 70\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@@ -1404,15 +1404,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 19 / 70\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\n point I don\u2019t know if it pauses all motion immediately, or if it completes the current move and then\n pauses before pulling another move from the queue.\n@@ -1439,15 +1439,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 20 / 70\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@@ -1477,15 +1477,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\n joint limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user\n presses a jog button, and ABORT when the button is released.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 21 / 70\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@@ -1522,15 +1522,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 22 / 70\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@@ -1563,15 +1563,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 of\n that code is identical or nearly identical for every parameter.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 23 / 70\n \n 3.9 Backlash and Screw Error Compensation\n + FIXME Backlash and Screw Error Compensation\n \n 3.10 Task controller (EMCTASK)\n@@ -1589,15 +1589,15 @@\n iocontrol main loop process:\n \u2022 registers for SIGTERM and SIGINT signals from the OS.\n \u2022 checks to see it HAL inputs have changed\n \u2022 checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status\n \u2022 checks for I/O related NML messages\n nml message numbers: from emc.hh:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 24 / 70\n \n #define EMC_IO_INIT_TYPE\n ((NMLTYPE) 1601)\n #define EMC_TOOL_STAT_TYPE\n ((NMLTYPE) 1199)\n@@ -1644,15 +1644,15 @@\n Base class for producing a linked list - Purpose, to hold pointers to the previous and next nodes, pointer\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). Creation and destruction of the semaphore is handled by the SharedMemory constructor and destructor.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 25 / 70\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@@ -1686,15 +1686,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 26 / 70\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@@ -1712,15 +1712,15 @@\n \u2022 neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format, or\n raw.\n \u2022 RPC# - Obsolete - Place holder retained for backward compatibility only.\n \u2022 buffer# - A unique ID number used if a server controls multiple buffers.\n \u2022 max_procs - is the maximum processes allowed to connect to this buffer.\n \u2022 key - is a numerical identifier for a shared memory buffer\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 27 / 70\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@@ -1754,15 +1754,15 @@\n \u2022 host - specifies where on the network this process is running.\n \u2022 ops - gives the process read only, write only, or read/write access to the buffer.\n \u2022 server - specifies if this process will running a server for this buffer.\n \u2022 timeout - sets the timeout characteristics for accesses to the buffer.\n \u2022 master - indicates if this process is responsible for creating and destroying the buffer.\n \u2022 c_num - an integer between zero and (max_procs -1)\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 28 / 70\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 \u2022 cms buffers created or connected to.\n \u2022 processes and the buffers they connect to\n \u2022 a long list of format functions for each message type\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 29 / 70\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\n is 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 30 / 70\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@@ -1880,15 +1880,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 \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 has got\n an empty spindle.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 31 / 70\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@@ -1925,15 +1925,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 32 / 70\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@@ -1974,15 +1974,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 33 / 70\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@@ -2024,15 +2024,15 @@\n to pocket 0 (the spindle) in interp\u2019s copy of the tool table, settings->tool_table. (This copy\n is not needed on random tool changer machines because there, tools don\u2019t have a home pocket\n and instead we just updated the tool in pocket 0 directly.). The relevant numbered parameters\n (#5400-#5413) are updated from the tool information in the spindle (by copying the information\n from interp\u2019s settings->tool_table to settings->parameters). (FIXME: this is a buglet, the\n params should only be updated if it was the current tool that was modified).\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 34 / 70\n \n 5. If the modified tool is currently loaded in the spindle, and if the config is for a nonrandom\n toolchanger, then the new tool information is written to the tool table\u2019s pocket 0 as well, via\n a second call to SET_TOOL_TABLE_ENTRY(). (This second tool-table update is not needed on\n random toolchanger machines because there, tools don\u2019t have a home pocket and instead we\n@@ -2068,15 +2068,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 35 / 70\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 settings.selected_pocket\n@@ -2114,15 +2114,15 @@\n toolchanger pocket numbers are meaningful. On a nonrandom toolchanger pockets are meaningless; the pocket numbers in the tool table file are ignored and tools are assigned to tool_table\n slots sequentially.\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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 36 / 70\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@@ -2150,15 +2150,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\n axis.*.* pins.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n Chapter 4\n \n NML Messages\n List of NML messages.\n For details see 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 AXIS\n \n 37 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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\n \n 38 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2298,15 +2298,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 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\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@@ -2345,15 +2345,15 @@\n EMC_HALT_TYPE\n EMC_ABORT_TYPE\n EMC_STAT_TYPE\n EMC_EXEC_PLUGIN_CALL_TYPE\n \n 40 / 70\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 41 / 70\n \n Chapter 5\n \n Coding Style\n This chapter describes the source code style preferred by the LinuxCNC team.\n@@ -2378,15 +2378,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 42 / 70\n \n do {\n // something important\n } while (x > 0);\n \n@@ -2429,15 +2429,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 43 / 70\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@@ -2475,15 +2475,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 44 / 70\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@@ -2524,15 +2524,15 @@\n Use the PEP 8 style for Python code.\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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 45 / 70\n \n Chapter 6\n \n Building LinuxCNC\n 6.1 Introduction\n@@ -2561,15 +2561,15 @@\n To retrieve the source tree you have two options:\n Download tarball\n On the LinuxCNC project page in GitHub find a reference to the \u201dreleases\u201d or \u201dtags\u201d, click that\n hyperlink to the archive page and download the latest .tar file. You will find that file compressed\n as a .tar.xz or .tar.gz file. This file, commonly referred to as a \u201dtarball\u201d is an archive very analogous\n to a .zip. Your Linux desktop will know how to treat that file when double-clicking on it.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 46 / 70\n \n Prepare a local copy of the LinuxCNC repository\n You would first install the tool \u201dgit\u201d on your machine if it is not available already (sudo apt\n install git). Then prepare a local instance of the source tree as follows: .\n $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir\n@@ -2610,15 +2610,15 @@\n \n 6.3 Supported Platforms\n The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and\n Mint. 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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 47 / 70\n \n 6.3.1 Realtime\n LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version\n of LinuxCNC supports the following platforms. The first three listed are realtime operating systems:\n RTAI\n@@ -2651,15 +2651,15 @@\n The src/configure script configures how the source code will be compiled. It takes many optional\n arguments. List all arguments to src/configure by running this:\n $ cd linuxcnc-source-dir/src\n $ ./configure --help\n \n The most commonly used arguments are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 48 / 70\n \n --with-realtime=uspace\n Build for any realtime platform, or for non-realtime. The resulting LinuxCNC executables will run\n on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a\n vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).\n@@ -2696,15 +2696,15 @@\n in a Debian package, complete with dependency information. This process by default also includes\n the building of the documentation, which takes its time because of all the I/O for many languages, but\n that can be skipped. LinuxCNC is then installed as part of those packages on the same machines or on\n whatever machine of the same architecture that the .deb files are copied to. LinuxCNC cannot be run\n until the Debian packages are installed on a target machine and then the executables are available in\n /usr/bin and /usr/lib just like other regular software of the sytem.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 49 / 70\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 does not have the build environment installed, or that does\n not have internet access.\n To build packages is primarily useful when packaging the software for delivery to end users. Developers among themselves exchange only the source code, likely supported by the LinuxCNC GitHub\n@@ -2741,15 +2741,15 @@\n 6.4.2.1 LinuxCNC\u2019s debian/configure arguments\n The LinuxCNC source tree has a debian directory with all the info about how the Debian package shall\n be built, but some key files within are only distributed as templates. The debian/configure script\n readies those build instructions for the regular Debian packaging utilities and must thus be run prior\n to dpkg-checkbuilddeps or dpkg-buildpackage.\n The debian/configure script takes a single argument which specifies the underlying realtime or nonrealtime platform to build for. The regular values for this argument are:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 50 / 70\n \n no-docs\n Skip building documentation.\n uspace\n Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).\n@@ -2788,15 +2788,15 @@\n \n which will install all the dependencies required but available. The . is part of the command line,\n i.e. an instruction to retrieve the dependencies for the source tree at hand, not for dependencies of\n another package. This completes the installation of build-dependencies.\n The remainder of this section describes a semi-manual approach. The list of dependencies in debian/control is long and it is tedious to compare the current state of packages already installed with it.\n Debian systems provide a program called dpkg-checkbuilddeps that parses the package meta-data\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 51 / 70\n \n and compares the packages listed as build dependencies against the list of installed packages, and\n tells you what\u2019s missing.\n First, install the dpkg-checkbuilddeps program by running:\n $ sudo apt-get install dpkg-dev\n@@ -2834,15 +2834,15 @@\n -b\n Only compiles the architecture-dependent packages (like the linuxcnc binaries and GUIs). This\n is very helpful to avoid compiling what is hardware-independent, which for LinuxCNC is the\n documentation. That documentation is available online anyway.\n If you happen to run into difficulties while compiling, check the LinuxCNC forum online. Currently\n emerging is the support for the DEB_BUILD_OPTIONS environment variable. Set it to\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 52 / 70\n \n nodocs\n to skip building the documentation, preferably instead use the -B flag to dpkg-buildpackage.\n nocheck\n to skip self-tests of the LinuxCNC build process. This saves some time and reduces the demand\n@@ -2879,25 +2879,25 @@\n If LinuxCNC displays the following message on startup, the problem is your system\u2019s configured limit\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 the following line:\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 53 / 70\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 $ ulimit -l\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 54 / 70\n \n Chapter 7\n \n Adding Configuration Selection Items\n Example Configurations can be added to the Configuration Selector by two methods:\n@@ -2908,15 +2908,15 @@\n \n \u2022 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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 55 / 70\n \n Chapter 8\n \n Contributing to LinuxCNC\n 8.1 Introduction\n@@ -2937,15 +2937,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 56 / 70\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@@ -2980,15 +2980,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 \u2022 Communicate with the project developers and let us know what you\u2019re hacking on. Explain what\n you are doing, and why.\n \u2022 Clone the git repo.\n \u2022 Make your changes in a local branch.\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 57 / 70\n \n \u2022 Adding documentation and writing tests is an important part of adding a new feature. Otherwise,\n others won\u2019t know how to use your feature, and if other changes break your feature it can go\n unnoticed without a test.\n \u2022 Share your changes with the other project developers in one of these ways:\n@@ -3022,15 +3022,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 58 / 70\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 is\n a logical step towards your ultimate goal. For example, first factor out some complex code into a new\n function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new\n@@ -3070,15 +3070,15 @@\n variable, and the declaration of that variable only follows in a later patch.\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 running regression tests):\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n cd linuxcnc-dev\n git-test-sequence origin/master..\n \n 59 / 70\n \n \u2019(cd src && make && ../scripts/runtests)\u2019\n@@ -3109,15 +3109,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\n ways include:\n \u2022 Answering questions on the forum, mailing lists, and in IRC\n \u2022 Reporting bugs on the bug tracker, forum, mailing lists, or in IRC\n \u2022 Helping test experimental features\n \n-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 60 / 70\n \n Chapter 9\n \n Glossary\n A listing of terms and what they mean. Some terms have a general meaning and several additional\n@@ -3151,15 +3151,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 61 / 70\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@@ -3204,15 +3204,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 62 / 70\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@@ -3255,15 +3255,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 63 / 70\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -3307,15 +3307,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 64 / 70\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -3357,28 +3357,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 65 / 70\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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 66 / 70\n \n Chapter 10\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -3405,15 +3405,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.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 67 / 70\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@@ -3462,15 +3462,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 68 / 70\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@@ -3516,15 +3516,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 69 / 70\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@@ -3565,15 +3565,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-\fDeveloper Manual V2.9.3, 25 Jan 2025\n+\fDeveloper Manual V2.9.3, 26 Jan 2025\n \n 70 / 70\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"}]}, {"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf", "unified_diff": null, "details": [{"source1": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf", "source2": "./usr/share/doc/linuxcnc/LinuxCNC_Documentation_zh_CN.pdf", "comments": ["Document info"], "unified_diff": "@@ -1,4 +1,4 @@\n CreationDate: 'D:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'LinuxCNC V2.9.3, 25 Jan 2025'\n+Title: 'LinuxCNC V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-LinuxCNC V2.9.3, 25 Jan 2025\n+LinuxCNC V2.9.3, 26 Jan 2025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n \n I Getting Started & Configuration\n \n@@ -116,15 +116,15 @@\n \n 7\n \n 1.3.2.1 Raspberry Pi Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iii\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n \n . . . . . . . . . . . . . . . . . .\n \n@@ -284,15 +284,15 @@\n \n 1.6.4 Man Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n 1.6.3 Terminal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n iv\n \n 1.6.5 List Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 22\n \n@@ -452,15 +452,15 @@\n \n 44\n \n 2.3.2.2 Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n v\n \n 2.3.2.3 Tool Radius Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 44\n \n@@ -620,15 +620,15 @@\n \n 53\n \n 2.5.3.3 Optional Program Stop Switch . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 53\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vi\n \n 2.5.4 Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 54\n \n@@ -782,15 +782,15 @@\n \n 72\n \n 2.7.13Hole And Small Shape Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 72\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n vii\n \n 2.7.14I/O Pins For Plasma Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 73\n \n@@ -944,15 +944,15 @@\n \n 93\n \n 3.1.8.3 Determining Spindle Calibration . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 93\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n viii\n \n 3.1.9 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 94\n \n@@ -1031,15 +1031,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n 4.1.4.6 Manual tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5 RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.1.5.1 ACPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ix\n \n 4.2 Latency Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.1 What is latency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132\n 4.2.2 Latency Tests\n \n@@ -1087,15 +1087,15 @@\n \n 4.4.2.11 [KINS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157\n 4.4.2.12 [AXIS_<letter>] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157\n 4.4.2.13 [JOINT_<num>] Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158\n 4.4.2.14 [SPINDLE_<num>] Section(s)) . . . . . . . . . . . . . . . . . . . . . . . . . . 164\n 4.4.2.15 [EMCIO] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n x\n \n 4.5 Homing Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165\n 4.5.2 Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n 4.5.3 Separate Home Switch Example Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 166\n@@ -1139,15 +1139,15 @@\n 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179\n 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.4 Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.5 Pinout Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.8.6 Mechanical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180\n 4.9 Stepper Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xi\n \n 4.9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.2 Maximum step rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3 Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182\n 4.9.3.1 Standard Pinout HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183\n@@ -1194,15 +1194,15 @@\n 5.1.3.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197\n 5.1.4 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198\n 5.1.5 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.1.6 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200\n 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xii\n \n 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201\n 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202\n 5.2.1.3 loadusr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203\n@@ -1250,15 +1250,15 @@\n 5.4.2.2 Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.2.3 The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3.1 Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215\n 5.4.3.2 Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216\n 5.4.3.3 Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiii\n \n 5.4.3.4 Changing Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219\n \n@@ -1308,15 +1308,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n \n 5.6.5 INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n 5.6.5.1 Pins )\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xiv\n \n 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251\n 5.7.1.1 User Interfaces (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n 5.7.1.2 Motion (non-realtime) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252\n@@ -1357,15 +1357,15 @@\n 5.8.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275\n 5.8.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.5.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276\n 5.8.6.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xv\n \n 5.8.6.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n 5.8.7 SigGen\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277\n@@ -1413,15 +1413,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291\n \n 5.9.16Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292\n 5.10.1Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.10.2Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvi\n \n 5.10.3Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293\n 5.10.4Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294\n 5.10.5Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n 5.10.6Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295\n@@ -1488,15 +1488,15 @@\n \n 5.13Creating Non-realtime Python Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.1Basic usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306\n 5.13.2Non-realtime components and delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.3Create pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n 5.13.3.1Changing the prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xvii\n \n 5.13.4Reading and writing pins and parameters . . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.4.1Driving output (HAL_OUT) pins . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.4.2Driving bidirectional (HAL_IO) pins . . . . . . . . . . . . . . . . . . . . . . . . 308\n 5.13.5Exiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308\n@@ -1533,15 +1533,15 @@\n 5.15.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314\n 5.15.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.15.5Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316\n 5.15.6Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.15.7HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317\n 5.15.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xviii\n \n 6 Hardware Drivers\n \n 322\n \n@@ -1583,15 +1583,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xix\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@@ -1636,15 +1636,15 @@\n 6.7.2 Firmware Binaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355\n 6.7.3 Installing Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.4 Loading HostMot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356\n 6.7.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xx\n \n 6.7.6 HostMot2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n 6.7.7 Pinouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357\n 6.7.8 PIN Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n 6.7.9 Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358\n@@ -1686,15 +1686,15 @@\n 6.8.5.2 fnct_02_read_discrete_inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n 6.8.5.3 fnct_03_read_holding_registers\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n \n 6.8.5.4 fnct_04_read_input_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxi\n \n 6.8.5.5 fnct_05_write_single_coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.6 fnct_06_write_single_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.7 fnct_15_write_multiple_coils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n 6.8.5.8 fnct_16_write_multiple_registers . . . . . . . . . . . . . . . . . . . . . . . . . . 376\n@@ -1733,15 +1733,15 @@\n 6.13.1.4LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387\n 6.13.1.5Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.6PC interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.7Rebuilding the FPGA firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.1.8For more information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n 6.13.2Pluto Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxii\n \n 6.13.2.1Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389\n 6.13.2.2Input latching and output updating . . . . . . . . . . . . . . . . . . . . . . . . 390\n 6.13.2.3HAL Functions, Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . 391\n 6.13.2.4Compatible driver hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391\n@@ -1775,15 +1775,15 @@\n 6.17.6Panel operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.7Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8Configuring the VFS11 VFD for Modbus usage . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8.1Connecting the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.8.2Modbus setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402\n 6.17.9Programming Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiii\n \n 7 Hardware Examples\n \n 404\n \n@@ -1826,15 +1826,15 @@\n 8.2.5.4 Symbol Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422\n 8.2.5.5 The Editor window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423\n 8.2.5.6 Config Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424\n 8.2.6 Ladder objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.1 CONTACTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n 8.2.6.2 IEC TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxiv\n \n 8.2.6.3 TIMERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427\n 8.2.6.4 MONOSTABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427\n 8.2.6.5 COUNTERS\n \n@@ -1884,15 +1884,15 @@\n 9.1.3.2 Inverse transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 9.1.4 Implementation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461\n 9.1.4.1 Kinematics module using the userkins.comp template . . . . . . . . . . . . . 462\n 9.2 Setting up \u201dmodified\u201d Denavit-Hartenberg (DH) parameters for genserkins . . . . . . . . 462\n 9.2.1 Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462\n 9.2.2 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxv\n \n 9.2.3 Modified DH-Parameters\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463\n \n@@ -1940,15 +1940,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n \n 9.4.6 User kinematics provisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506\n 9.4.7 Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.4.8 Code Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5 PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvi\n \n 9.5.1 PID Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507\n 9.5.1.1 Control loop basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n 9.5.1.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508\n 9.5.1.3 Loop Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509\n@@ -1998,15 +1998,15 @@\n 9.6.7 Creating new G-code cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8 Configuring Embedded Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8.1 Python plugin : INI file configuration . . . . . . . . . . . . . . . . . . . . . . . 528\n 9.6.8.2 Executing Python statements from the interpreter . . . . . . . . . . . . . . . 529\n 9.6.9 Programming Embedded Python in the RS274NGC Interpreter . . . . . . . . . . . . 529\n 9.6.9.1 The Python plugin namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 529\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxvii\n \n 9.6.9.2 The Interpreter as seen from Python . . . . . . . . . . . . . . . . . . . . . . . 529\n 9.6.9.3 The Interpreter __init__ and __delete__ functions . . . . . . . . . . . . . 530\n 9.6.9.4 Calling conventions: NGC to Python\n \n@@ -2060,15 +2060,15 @@\n . . . . . . . . . . . . . . . . . . . . . 547\n \n 9.6.17.1Interpreter state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547\n 9.6.17.2Task and Interpreter interaction, Queuing and Read-Ahead . . . . . . . . . 547\n 9.6.17.3Predicting the machine position . . . . . . . . . . . . . . . . . . . . . . . . . . 547\n 9.6.17.4Queue-busters break position prediction . . . . . . . . . . . . . . . . . . . . . 548\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxviii\n \n 9.6.17.5How queue-busters are dealt with . . . . . . . . . . . . . . . . . . . . . . . . . 548\n 9.6.17.6Word order and execution order . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n 9.6.17.7Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n 9.6.17.8Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549\n@@ -2114,15 +2114,15 @@\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n \n 9.10Tool Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n 9.10.1Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n 9.10.1.1INI file Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxix\n \n 9.10.1.2db_program operation (v2.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 563\n 9.10.1.3Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564\n 9.10.1.4Example program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n 9.10.1.5Python tooldb module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565\n@@ -2179,15 +2179,15 @@\n 10.1.12.1\n Program Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589\n 10.1.12.2\n The X Resource Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n 10.1.12.3\n Jogwheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxx\n \n 10.1.12.4\n ~/.axisrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590\n 10.1.12.5\n USER_COMMAND_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591\n@@ -2254,15 +2254,15 @@\n 10.2.4.1The DISPLAY Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602\n 10.2.4.2The TRAJ Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603\n 10.2.4.3Macro Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604\n 10.2.4.4Embedded Tabs and Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606\n 10.2.4.5User Created Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609\n 10.2.4.6Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxi\n \n 10.2.4.7User Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610\n 10.2.4.8User CSS File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611\n 10.2.4.9Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611\n 10.2.5HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612\n@@ -2317,15 +2317,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641\n \n 10.2.12.1\n Strange numbers in the info area . . . . . . . . . . . . . . . . . . . . . . . . . 641\n 10.2.12.2\n Not ending macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxii\n \n 10.3The Touchy Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642\n 10.3.1Panel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643\n 10.3.1.1HAL connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643\n 10.3.1.2Recommended for any setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644\n@@ -2368,15 +2368,15 @@\n 10.5.2.6Jogging increments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.7Jog speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.8User message dialog system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.9Embed Custom VCP Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664\n 10.5.2.10\n Subroutine Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiii\n \n 10.5.2.11\n Preview Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666\n 10.5.2.12\n Program Extensions/Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666\n@@ -2447,15 +2447,15 @@\n 10.5.17.6\n Probe Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.7\n Camview Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.8\n G-codes Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxiv\n \n 10.5.17.9\n Setup Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688\n 10.5.17.10\n Settings Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689\n@@ -2502,15 +2502,15 @@\n 10.7.3.2Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.3Coordinate Display Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.4TkLinuxCNC Interpreter / Automatic Program Control . . . . . . . . . . . . 713\n 10.7.3.5Manual Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713\n 10.7.3.6Code Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714\n 10.7.3.7Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxv\n \n 10.7.3.8Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.7.3.9Spindle speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.7.4Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715\n 10.8QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716\n@@ -2547,15 +2547,15 @@\n 10.8.8.2MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740\n 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746\n 10.8.8.5PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747\n 10.8.8.6SETTINGS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752\n 10.8.8.7STATISTICS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvi\n \n 10.8.9Using QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756\n 10.8.9.1Units Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n 10.8.9.2Preamble and Postamble Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n 10.8.9.3Mandatory Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757\n@@ -2623,15 +2623,15 @@\n 10.8.9.36\n Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786\n 10.8.9.37\n MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787\n 10.8.10\n Conversational Shape Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxvii\n \n 10.8.10.1\n Conversational Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790\n 10.8.10.2\n Conversational Lines And Arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . 790\n@@ -2709,15 +2709,15 @@\n 10.8.15.15\n Hypertherm PowerMax Communications . . . . . . . . . . . . . . . . . . . . . 815\n 10.8.16\n Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816\n 10.8.17\n Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxviii\n \n 10.8.17.1\n Example Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817\n 10.8.17.2\n NGC Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818\n@@ -2778,15 +2778,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842\n \n 11.2.2.3Tool Changers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843\n 11.2.3Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843\n 11.2.4Cutter Radius Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844\n 11.2.4.1Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xxxix\n \n 11.2.4.2Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847\n 11.3Tool Edit GUI\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848\n@@ -2846,15 +2846,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869\n \n 11.4.22\n File Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xl\n \n 11.4.23\n G-code Order of Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870\n 11.4.24\n G-code Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871\n@@ -2924,15 +2924,15 @@\n 11.5.28\n G43 Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894\n 11.5.29\n G43.1 Dynamic Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895\n 11.5.30\n G43.2 Apply additional Tool Length Offset . . . . . . . . . . . . . . . . . . . . . . . . . 896\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xli\n \n 11.5.31\n G49 Cancel Tool Length Compensation . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n 11.5.32\n G52 Local Coordinate System Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896\n@@ -3006,15 +3006,15 @@\n 11.5.58\n G92.3 Restore G92 Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.5.59G93, G94, G95 Feed Rate Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918\n 11.5.60G96, G97 Spindle Control Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n 11.5.61G98, G99 Canned Cycle Return Level . . . . . . . . . . . . . . . . . . . . . . . . . . . 919\n 11.6M-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlii\n \n 11.6.1M-Code Quick Reference Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920\n 11.6.2 M0, M1 Program Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920\n 11.6.3M2, M30 Program End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920\n 11.6.4M60 Pallet Change Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921\n@@ -3075,15 +3075,15 @@\n 11.7.6 Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936\n 11.7.7 Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n 11.7.8Indirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n 11.7.9Calling Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937\n 11.7.10\n Subroutine return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliii\n \n 11.7.11\n Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938\n 11.8Other Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938\n 11.8.1F: Set Feed Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938\n@@ -3163,15 +3163,15 @@\n 11.11\n RS274/NGC Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n 11.11.1\n Changes from RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947\n 11.11.2\n Additions to RS274/NGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xliv\n \n 12 Virtual Control Panels\n \n 950\n \n@@ -3224,15 +3224,15 @@\n 12.3.2.2Exploring the User Interface description . . . . . . . . . . . . . . . . . . . . . 991\n 12.3.2.3Exploring the Python callback . . . . . . . . . . . . . . . . . . . . . . . . . . . 991\n 12.3.3Creating and Integrating a Glade user interface . . . . . . . . . . . . . . . . . . . . . 991\n 12.3.3.1Prerequisite: Glade installation\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . 991\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlv\n \n 12.3.3.2Running Glade to create a new user interface . . . . . . . . . . . . . . . . . . 991\n 12.3.3.3Testing a panel\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992\n@@ -3303,15 +3303,15 @@\n HAL_sourceview widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029\n 12.3.6.28\n MDI history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030\n 12.3.6.29\n Animated function diagrams: HAL widgets in a bitmap . . . . . . . . . . . . 1031\n 12.3.7Action Widgets Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvi\n \n 12.3.7.1VCP Action Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.3.7.2VCP Action Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032\n 12.3.7.3VCP ToggleAction widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033\n 12.3.7.4The Action_MDI Toggle and Action_MDI widgets . . . . . . . . . . . . . . . . 1034\n@@ -3372,15 +3372,15 @@\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048\n \n 12.4.2Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050\n 12.5QtVCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052\n 12.5.1Showcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052\n 12.5.2Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlvii\n \n 12.5.2.1QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059\n 12.5.2.2INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059\n 12.5.2.3Qt Designer UI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060\n 12.5.2.4Handler Files\n@@ -3427,15 +3427,15 @@\n 12.5.6.3Python Handler Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083\n 12.5.7More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084\n 12.6QtVCP Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084\n 12.6.1Builtin Virtual Control Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084\n 12.6.1.1copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084\n 12.6.1.2spindle_belts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlviii\n \n 12.6.1.3test_dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087\n 12.6.1.4test_button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088\n 12.6.1.5test_led . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088\n 12.6.1.6test_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089\n@@ -3486,15 +3486,15 @@\n 12.7.1.13\n LCDNumber - LCD Style Number Readout Widget . . . . . . . . . . . . . . . . 1112\n 12.7.1.14\n DoubleScale - Spin Button Entry Widget . . . . . . . . . . . . . . . . . . . . . 1113\n 12.7.1.15\n GeneralHALInput - General Signals/Slots Input Connection Widget . . . . 1113\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n xlix\n \n 12.7.1.16\n GeneralHALOutput - General Signals/Slots Output Connection Widget . . . 1113\n 12.7.1.17\n WidgetSwitcher - Multi-widget Layout View Switcher Widget . . . . . . . . 1113\n@@ -3565,15 +3565,15 @@\n BasicProbe - Simple Mill Probing Widget . . . . . . . . . . . . . . . . . . . . 1149\n 12.7.2.33\n VersaProbe - Mill Probing Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1150\n 12.7.3Dialog Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150\n 12.7.3.1LcncDialog - General Message Dialog Widget . . . . . . . . . . . . . . . . . 1151\n 12.7.3.2ToolDialog - Manual Tool Change Dialog Widget . . . . . . . . . . . . . . . 1152\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n l\n \n 12.7.3.3FileDialog - Load and Save File Chooser Dialog Widget . . . . . . . . . . . 1153\n 12.7.3.4OriginOffsetDialog - Origin Offset Setting Dialog Widget . . . . . . . . . 1154\n 12.7.3.5ToolOffsetDialog - Tool Offset Setting Dialog Widget . . . . . . . . . . . . 1155\n 12.7.3.6MacroTabDialog - Macro Launch Dialog Widget . . . . . . . . . . . . . . . . 1155\n@@ -3612,15 +3612,15 @@\n 12.8.2.5Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171\n 12.8.3Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171\n 12.8.3.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171\n 12.8.3.2Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171\n 12.8.4Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173\n 12.8.4.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n li\n \n 12.8.5Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174\n 12.8.5.1Referenced Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175\n 12.8.5.2Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176\n 12.8.5.3Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176\n@@ -3686,15 +3686,15 @@\n 12.9.3Start the script\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192\n \n 12.9.4HAL pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192\n 12.9.5Creating Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lii\n \n 12.9.5.1Import STL or OBJ Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192\n 12.9.5.2Build from Geometric Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . 1193\n 12.9.6Moving Model Parts\n \n@@ -3763,15 +3763,15 @@\n 12.11.3\n Add A Basic Style Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214\n 12.11.4\n Request Dialog Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215\n 12.11.5\n Speak a Startup Greeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liii\n \n 12.11.6\n ToolBar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216\n 12.11.7\n Add HAL Pins That Call Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217\n@@ -3843,15 +3843,15 @@\n 13.1.3panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234\n 13.1.4Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236\n 13.1.5ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 13.1.6Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239\n 13.2The LinuxCNC Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240\n 13.2.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n liv\n \n 13.2.2Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1241\n 13.2.3Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241\n 13.2.3.1linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241\n 13.2.3.2The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246\n@@ -3898,15 +3898,15 @@\n \n 1276\n \n 14 Overleaf\n \n 1277\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n lv\n \n 15 Glossary\n \n 1278\n \n@@ -3921,23 +3921,23 @@\n \n 1289\n \n 17.1Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289\n 17.1.1Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290\n 17.1.2Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1 / 1290\n \n Part I\n \n Getting Started & Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 2 / 1290\n \n Chapter 1\n \n Getting Started with LinuxCNC\n 1.1 About LinuxCNC\n@@ -3965,15 +3965,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3 / 1290\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@@ -4010,15 +4010,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4 / 1290\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@@ -4048,15 +4048,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5 / 1290\n \n 1.2.2 Kernel and Version requirements\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@@ -4090,15 +4090,15 @@\n compile from source to do this.\n \n 1.2.3 Problematic Hardware\n 1.2.3.1 Laptops\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 6 / 1290\n \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@@ -4131,15 +4131,15 @@\n will aim for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n \n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 7 / 1290\n \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@@ -4174,15 +4174,15 @@\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n 1.3.2.1 Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8 / 1290\n \n 1.3.2.2 AMD-64 (x86-64, PC) Image using GUI tools\n Download and install [Balena Etcher](https://etcher.balena.io/#download-etcher) (Linux, Windows,\n Mac) and write the downloaded image to a USB drive.\n If your image fails to boot then please also try Rufus. It looks more complicated but seems to be more\n@@ -4216,15 +4216,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9 / 1290\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@@ -4259,15 +4259,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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 10 / 1290\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@@ -4349,15 +4349,15 @@\n \u2022 Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n systems that can not run a 64-bit OS.\n 1.3.7.1 Installing on Debian Bookworm (with Preempt-RT kernel)\n 1. Install Debian Bookworm (Debian 12), amd64 version. You can download the installer here:\n https://www.debian.org/distrib/\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11 / 1290\n \n 2. After burning the iso and booting up if you don\u2019t want Gnome desktop select Advanced Options\n > Alternative desktop environments and pick the one you like. Then select Install or Graphical\n Install.\n \n@@ -4391,15 +4391,15 @@\n 1.3.7.2 Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n running the installer script as decribed above. If an RTAI kernel is detected it will stop before\n installing any packages.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12 / 1290\n \n 3. Update the package list from linuxcnc.org\n sudo apt-get update\n \n 4. Install the new realtime kernel, RTAI and the rtai version of linuxcnc.\n@@ -4434,15 +4434,15 @@\n \u2013 by_machine - Configurations organized by machine.\n \u2013 apps - Applications that do not require starting linuxcnc but may be useful for testing or trying\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 13 / 1290\n \n \u2022 axis - Keyboard and Mouse GUI\n \u2022 craftsman - Touch Screen GUI (no longer maintained ???)\n \u2022 gmoccapy - Touch Screen GUI\n \u2022 gscreen - Touch Screen GUI\n@@ -4473,15 +4473,15 @@\n \u2022 sherline\n \u2022 smithy\n \u2022 tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 14 / 1290\n \n 2. demonstrations of 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@@ -4496,15 +4496,15 @@\n \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 Figure 1.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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 15 / 1290\n \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@@ -4542,15 +4542,15 @@\n \n 1.5 Updating LinuxCNC\n Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example\n from 2.9.1 to 2.9.2) is an automatic process if your PC is connected to the internet. You will see an\n update prompt after a minor release along with other software updates. If you don\u2019t have an internet\n connection to your PC see Updating without Network.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 16 / 1290\n \n 1.5.1 Upgrade to the new version\n This section describes how to upgrade LinuxCNC from version 2.8.x to a 2.9.y 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@@ -4591,15 +4591,15 @@\n \u2013 Ubuntu Precise:\n \u2217 Click on the Dash Home icon in the top left.\n \u2217 In the Search field, type \u201dsoftware\u201d, then click on the Ubuntu Software Center icon.\n \u2217 In the Ubuntu Software Center window, click on the Edit menu, then click on Software Sources...\n to open the Software Sources window.\n \u2013 Ubuntu Lucid:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 17 / 1290\n \n \u2217 Click the System menu, then Administration, then Synaptic Package Manager.\n \u2217 In Synaptic, click on the Settings menu, then click on Repositories to open the Software\n Sources window.\n \u2022 In the Software Sources window, select the Other Software tab.\n@@ -4619,29 +4619,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 18 / 1290\n \n Figure 1.2: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 1.5.1.2 Upgrading to the new version\n Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n Debian uses the Synaptic Package Manager.\n \u2022 Open Synaptic using the instructions in Setting apt sources above.\n \u2022 Click the Reload button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 19 / 1290\n \n \u2022 Use the Search function to search for linuxcnc.\n \u2022 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n \u2022 Click the check box to mark the new linuxcnc and linuxcnc-doc-* packages for upgrade. The package\n manager may select a number of additional packages to be installed, to satisfy dependencies that\n@@ -4680,15 +4680,15 @@\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 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 Since 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 20 / 1290\n \n 1.5.3.2 Canterp\n If you just run regular G-code and you don\u2019t use the canterp pluggable interpreter, then this section\n does not affect you.\n In the extremely unlikely event that you are using canterp, know that the module has moved from\n@@ -4722,15 +4722,15 @@\n \n 1.5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n \n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 21 / 1290\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 1.6.1 Automatic Login\n@@ -4760,15 +4760,15 @@\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 Example:\n linuxcnc /home/mill/linuxcnc/config/mill/mill.ini\n \n The documentation refers to your respective .ini file as INI-file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 22 / 1290\n \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@@ -4805,15 +4805,15 @@\n you can open and view most root files, but they will open in read only mode.\n 1.6.6.1 The Command Line Way\n Open a terminal and type\n sudo gedit\n \n Open the file with File > Open > Edit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 23 / 1290\n \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@@ -4843,15 +4843,15 @@\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 or\n ls\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 24 / 1290\n \n 1.6.7.4 Finding a File\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@@ -4887,15 +4887,15 @@\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 After boot up open a terminal and type:\n dmesg|grep parport\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 25 / 1290\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@@ -4919,15 +4919,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 26 / 1290\n \n Chapter 2\n \n General User Information\n 2.1 User Foreword\n@@ -4956,15 +4956,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 27 / 1290\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@@ -5002,15 +5002,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 28 / 1290\n \n Figure 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@@ -5032,15 +5032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 29 / 1290\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@@ -5067,85 +5067,85 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.2: AXIS, the standard keyboard GUI interface\n \n Touchy\n Touchy, a touch screens GUI:\n \n 30 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 31 / 1290\n \n Figure 2.3: Touchy, a touch screen GUI\n \n Gscreen\n Gscreen, a user-configurable touch screen GUI:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 32 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 33 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 34 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 35 / 1290\n \n Figure 2.7: TkLinuxCNC graphical interface\n \n QtDragon\n QtDragon, a touch screen GUI based on QtVCP using the PyQt5 library. It comes in two versions\n QtDragon and QtDragon_hd. They are very similar in features but QtDragon_hd is made for\n larger monitors.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 36 / 1290\n \n Figure 2.8: QtDragon, a touch screen GUI based on QtVCP\n \n QtPlasmaC\n QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP using the PyQt5 library. It comes\n in three aspect ratios, 16:9, 4:3, and 9:16.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 37 / 1290\n \n Figure 2.9: QtPlasmaC, a touch screen plasma cutting GUI based on QtVCP\n \n 2.2.4 User Interfaces\n These User interfaces are a way to interact with LinuxCNC outside of the graphical user interfaces.\n@@ -5159,41 +5159,41 @@\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 PyVCP\n PyVCP, a Python-based virtual control panel that can be added to the AXIS GUI. PyVCP only\n utilises virtual signals contained within the Hardware Abstraction Layer, such as the spindle-atspeed indicator or the Emergency Stop output signal, and has a simple no-frills appearance. This\n makes it an excellent choice if the user wants to add a Virtual Control Panel with minimal fuss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 38 / 1290\n \n Figure 2.10: PyVCP Example Embedded Into AXIS GUI\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 39 / 1290\n \n Figure 2.11: GladeVCP Example Embedded Into AXIS GUI\n \n QtVCP\n QtVCP, a PyQt5-based virtual control panel that can be added to most GUIs or run as a standalone\n panel. QtVCP has the advantage over PyVCP in that it is not limited to the display or control of\n HAL virtual signals, but can include other external interfaces outside LinuxCNC such as window\n or network events by extending with python code. QtVCP is also more flexible in how it may be\n configured to appear on the GUI with many special widgets:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 40 / 1290\n \n Figure 2.12: QtVCP Example Embedded Into QtDragon GUI\n \n 2.2.6 Languages\n LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including\n@@ -5208,15 +5208,15 @@\n the lessons learned. A beautiful finish, tight tolerances and caution during the work are evidence of\n lessons learned. No machine nor program can replace human experience.\n Now that you start working with the LinuxCNC software, you have to put yourself in the shoes of an\n operator. You must be in the role of someone in charge of a machine. It\u2019s a machine that will wait\n for your commands and then execute the orders that you will give it. In these pages, we will give the\n explanations which will help you to become a good CNC operator with LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 41 / 1290\n \n 2.2.8 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@@ -5258,15 +5258,15 @@\n cam detector is not employed with G64 Pn.\n The basic acceleration and deceleration described above is not complex and there is no compromise\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 For more information on the Trajectory Planner INI options see the Trajectory Section in the INI\n chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 42 / 1290\n \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 \u2022 It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new\n@@ -5307,15 +5307,15 @@\n backward compatibility for old G-code programs. See the G64 section of the G-code chapter.\n Blending without tolerance\n The controlled point will touch each specified movement at at least one point. The machine\n will never move at such a speed that it cannot come to an exact stop at the end of the current\n movement (or next movement, if you pause when blending has already started). The distance\n from the end point of the move is as large as it needs to be to keep up the best contouring feed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 43 / 1290\n \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@@ -5348,15 +5348,15 @@\n the feed rate in units per second, the acceleration time is ta = F/A and the acceleration distance is\n da = F*ta /2. The deceleration time and distance are the same, making the critical distance d = da +\n dd = 2 * da = F2 /A.\n For example, for a feed rate of 1 inch per second and an acceleration of 10 inches/sec2 , the critical\n distance is 12 /10 = 1/10 = 0.1 inches.\n For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 44 / 1290\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@@ -5389,15 +5389,15 @@\n There are several options when doing manual tool changes. See the [EMCIO] section for information\n on configuration of these options. Also see the G28 and G30 section of the G-code chapter.\n \n 2.3.5 Coordinate Systems\n The Coordinate Systems can be confusing at first. Before running a CNC machine you must understand the basics of the coordinate systems used by LinuxCNC. In depth information on the LinuxCNC\n Coordinate Systems is in the Coordinate System section of this manual.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 45 / 1290\n \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@@ -5429,22 +5429,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 46 / 1290\n \n Figure 2.14: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 2.15: 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] [<INI-file>]\n@@ -5459,15 +5459,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 INI file\n \n 47 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 48 / 1290\n \n Options:\n -d: Turn on \u201ddebug\u201d mode\n -v: Turn on \u201dverbose\u201d mode\n -r: Disable redirection of stdout and stderr to ~/linuxcnc_print.txt and\n@@ -5493,15 +5493,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 49 / 1290\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@@ -5516,15 +5516,15 @@\n with two motors for one axis is better handled by kinematics rather than by a second linear axis.\n \n If the motion of mechanical components is not independent, as with hexapod machines, the\n RS274/NGC language and the canonical machining functions will still be usable, as long as the lower\n levels of control know how to control the actual mechanisms to produce the same relative motion of\n tool and workpiece as would be produced by independent axes. This is called kinematics.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 50 / 1290\n \n With LinuxCNC, the case of the XYYZ gantry machine with two motors for one axis is better handled\n by the kinematics than by an additional linear axis.\n \n Primary Linear Axesaxesprimary linear primary linear The X, Y, and Z axes produce linear motion\n@@ -5554,15 +5554,15 @@\n \n 2.5.2 Control and Data Components\n 2.5.2.1 Linear Axes\n The X, Y, and Z axes form a standard right-handed coordinate system of orthogonal linear axes. Positions of the three linear motion mechanisms are expressed using coordinates on these axes.\n The U, V and W axes also form a standard right-handed coordinate system. X and U are parallel, Y\n and V are parallel, and Z and W are parallel (when A, B, and C are rotated to zero).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 51 / 1290\n \n 2.5.2.2 Rotational Axes\n The rotational axes are measured in degrees as wrapped linear axes in which the direction of positive\n rotation is counterclockwise when viewed from the positive end of the corresponding X, Y, or Z-axis.\n By wrapped linear axis, we mean one on which the angular position increases without limit (goes\n@@ -5602,15 +5602,15 @@\n revolution modes are being used, in which case see section G93-G94-G95-Mode).\n 1. If any of XYZ are moving, F is in units per minute in the XYZ cartesian system, and all other axes\n (ABCUVW) move so as to start and stop in coordinated fashion.\n 2. Otherwise, if any of UVW are moving, F is in units per minute in the UVW cartesian system, and\n all other axes (ABC) move so as to start and stop in coordinated fashion.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 52 / 1290\n \n 3. Otherwise, the move is pure rotary motion and the F word is in rotary units in the ABC pseudocartesian system.\n 2.5.2.6 Cooling\n Flood or droplets cooling can be enabled separately. RS274/NGC language stops them together. See\n section about cooling control.\n@@ -5637,15 +5637,15 @@\n machining center. The Z-axis is, of course, perpendicular to the XY-plane, the X-axis to the YZ-plane,\n and the Y-axis to the XZ-plane.\n 2.5.2.11 Tool Carousel\n Zero or one tool is assigned to each slot in the tool carousel.\n 2.5.2.12 Tool Change\n A machining center may be commanded to change tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 53 / 1290\n \n 2.5.2.13 Pallet Shuttle\n The two pallets may be exchanged by command.\n 2.5.2.14 Speed Override\n The speed override buttons can be activated (they function normally) or rendered inoperative (they no\n@@ -5676,15 +5676,15 @@\n 2.5.3.2 Block Delete Switch\n If the block delete switch is on, lines of G-code which start with a slash (the block delete character)\n are not interpreted. If the switch is off, such lines are interpreted. Normally the block delete switch\n should be set before starting the NGC program.\n 2.5.3.3 Optional Program Stop Switch\n If this switch is on and an M1 code is encountered, program execution is paused.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 54 / 1290\n \n 2.5.4 Tool Table\n A tool table is required to use the Interpreter. The file tells which tools are in which tool changer slots\n and what the size and type of each tool is. The name of the tool table is defined in the INI file:\n [EMCIO]\n@@ -5733,15 +5733,15 @@\n 0.0\n 0.0\n \n Comment\n G28 Home X\n G28 Home Y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 55 / 1290\n \n See the Parameters section for more information.\n \n 2.6 Lathe User Information\n This chapter will provide information specific to lathes.\n@@ -5772,30 +5772,30 @@\n L1,L10,L11. There is also a built-in tool table editor in the AXIS display. The maximum number of\n entries in the tool table is 56. The maximum tool and pocket number is 99999.\n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines. Just ignore the parts of the tool table that\n don\u2019t pertain to your machine, or which you don\u2019t need to use. For more information on the specifics\n of the tool table format, see the Tool Table Section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 56 / 1290\n \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.16: Lathe Tool Orientations\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 57 / 1290\n \n 2.6.4 Tool Touch Off\n When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off\n window. If you have a tool turret you normally have Touch off to fixture selected when setting up your\n turret. When setting the material Z zero you have Touch off to material selected. For more information\n@@ -5821,15 +5821,15 @@\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 use the spindle nose or chuck face. This gives you the ability to change to a new tool and set its Z\n offset without having to reset all the tools.\n A typical session might be:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 58 / 1290\n \n 1. Home each axis if not homed.\n 2. Make sure no offsets are in effect for the current coordinate system.\n 3. Set the current tool with Tn M6 G43 where n is the tool number.\n 4. Select the Z axis in the Manual Control window.\n@@ -5862,15 +5862,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 59 / 1290\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@@ -5898,15 +5898,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 60 / 1290\n \n Figure 2.17: 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@@ -5914,29 +5914,29 @@\n same as long as we are moving in an X or Z direction only.\n \n Figure 2.18: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 61 / 1290\n \n Figure 2.19: 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\n programmed path and the tool is touching the OD of the part.\n \n Figure 2.20: Turning Cut\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 62 / 1290\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@@ -5944,15 +5944,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.22: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 63 / 1290\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.23: Face Cut\n@@ -5973,15 +5973,15 @@\n width.\n Plasma torches are similar in design to the automotive spark plug. They consist of negative and\n positive sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap\n between the negatively charged electrode and the positively charged tip. Once the pilot arc has\n ionised the plasma gas, the superheated column of gas flows through the small orifice in the torch tip,\n which is focused on the metal to be cut.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 64 / 1290\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@@ -5997,15 +5997,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 65 / 1290\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@@ -6030,15 +6030,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 \u2022 Torch to work distance can impact edge bevel\n \n \u2022 Negative cut angle: torch too low, increase torch to work distance.\n \u2022 Positive cut angle: torch too high, decrease torch to work distance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 66 / 1290\n \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 a very difficult challenge. Fortunately there is a very linear relationship between Torch height (Arc\n@@ -6063,15 +6063,15 @@\n \u2022 Blowback start to minimise electrical noise to simplify construction\n \u2022 A Machine torch is preferred but many have used hand torches.\n \u2022 A fully shielded torch tip to allow ohmic sensing\n If you have the budget, a higher end machines will supply:\n \u2022 Manufacturer provided cut charts which will save many hours and material waste calibrating cut\n parameters\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 67 / 1290\n \n \u2022 Dry Contacts for ArcOK\n \u2022 Terminals for Arc On switch\n \u2022 Raw arc voltage or divided arc voltage output\n \u2022 Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the\n@@ -6115,15 +6115,15 @@\n A plasma table builder should connect one side of these pins to field power and the other to an input\n pin. This then allows the CNC controller to know when a valid arc is established and also when an\n arc is lost unexpectedly. There is a potential trap here when the input is a high impedance circuit\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 68 / 1290\n \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 resistor should be mounted in such a way that the generated heat does not damage anything whilst\n@@ -6163,15 +6163,15 @@\n of the material surface. This ohmic sensing circuit is operating in an extremely hostile environment\n so a number of failsafes need to be implemented to ensure safety of both the CNC electronics and\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 69 / 1290\n \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@@ -6193,15 +6193,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 70 / 1290\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@@ -6218,15 +6218,15 @@\n setp ohmicsense.thcad-fullscale\n \n 140200\n 988300\n 32\n 5\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 71 / 1290\n \n setp ohmicsense.volt-divider\n 4.9\n setp ohmicsense.ohmic-threshold\n 22.0\n@@ -6259,15 +6259,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 72 / 1290\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@@ -6298,15 +6298,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\n with 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 73 / 1290\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@@ -6343,15 +6343,15 @@\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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 74 / 1290\n \n 2.7.14.2 Torch On (output)\n \u2022 Triggers a relay to close the torch on switch in the inverter.\n \u2022 Connect the torch on terminals on the inverter to the relay output terminals.\n \u2022 Connect one side of the coil to the output pin.\n@@ -6381,15 +6381,15 @@\n 2.7.14.5 Ohmic Sensing (input)\n \u2022 Take care to follow the ohmic sensing schematic shown previously.\n \u2022 An isolated power supply triggers a relay when the torch shield contacts the material.\n \u2022 Connect field power to one output terminal and the other to the input.\n \u2022 Take care to observe relay polarity if opto-coupled solid State relays are used.\n \u2022 Usually connected to motion.probe-input and may be or\u2019d with the float switch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 75 / 1290\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@@ -6430,15 +6430,15 @@\n G41.1 D#<_hal[plasmac_run.kerf-width-f]> ; for left of programmed path\n G42.1 D#<_hal[plasmac_run.kerf-width-f]> for right of programmed path\n G40 to turn compensation off\n \n Integrators should familiarise themselves with the LinuxCNC documentation for the various LinuxCNC\n G-code commands mentioned above.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 76 / 1290\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@@ -6489,15 +6489,15 @@\n \u2022 Full scale\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 77 / 1290\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@@ -6530,15 +6530,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 78 / 1290\n \n \u2022 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 \u2022 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@@ -6576,15 +6576,15 @@\n located away from the electronics and the plasma machine. This hardware also allows the use of 24\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 79 / 1290\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@@ -6629,15 +6629,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 80 / 1290\n \n possible without sacrificing torsional stiffness. A 100 mm x 100 mm x 2 mm aluminium box section\n has 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@@ -6678,29 +6678,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 81 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 82 / 1290\n \n Chapter 3\n \n Configuration Wizards\n 3.1 Stepper Configuration Wizard\n@@ -6711,15 +6711,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 83 / 1290\n \n 3.1.2 Start Page\n \n Figure 3.1: StepConf Entry Page\n The three first radio buttons are self-explanatory:\n@@ -6730,15 +6730,15 @@\n StepConf Wizard. StepConf will highlight the lastconf that was built.\n \u2022 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 \u2022 Create Desktop Shortcut - This will place a link on your desktop to the files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 84 / 1290\n \n \u2022 Create Desktop Launcher - This will place a launcher on your desktop to start your application.\n \u2022 Create Simulated Hardware - This allows you to build a config for testing, even if you don\u2019t have\n the actual hardware.\n \n@@ -6750,15 +6750,15 @@\n \u2022 Machine Name - Choose a name for your machine. Use only uppercase letters, lowercase letters,\n digits, - and _.\n \u2022 Axis Configuration - Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe).\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 85 / 1290\n \n \u2022 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@@ -6786,15 +6786,15 @@\n as glxgears. The idea is to put the PC through its paces while the latency test checks to see what the\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 Do not attempt run LinuxCNC while the latency test is running.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 86 / 1290\n \n Figure 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@@ -6810,15 +6810,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 87 / 1290\n \n 3.1.5 Parallel Port Setup\n \n Figure 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@@ -6827,15 +6827,15 @@\n if the signal is inverted (0V for true/active, 5V for false/inactive).\n \u2022 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 \u2022 Inputs and Outputs - If the input or output is not used set the option to Unused.\n \u2022 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 \u2022 Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 88 / 1290\n \n \u2022 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@@ -6847,15 +6847,15 @@\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 89 / 1290\n \n 3.1.7 Axis Configuration\n \n Figure 3.6: Axis Configuration Screen\n \u2022 Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many\n@@ -6866,15 +6866,15 @@\n If not, enter 1:1.\n \u2022 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 \u2022 Maximum Velocity - Enter the maximum velocity for the axis in units per second.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 90 / 1290\n \n \u2022 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 \u2022 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@@ -6903,15 +6903,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 \u2022 Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps\n per user unit.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 91 / 1290\n \n Figure 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 \n@@ -6934,15 +6934,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 \u2022 Correct step waveform timings\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 92 / 1290\n \n \u2022 Correct pinout, including Invert on step pins\n \u2022 Correct, well-shielded cabling\n \u2022 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@@ -6954,15 +6954,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 Figure 3.8: Spindle Configuration Page\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 93 / 1290\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@@ -7007,29 +7007,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 94 / 1290\n \n \u2022 Make sure the two calibration speeds are not too close together in RPM.\n \u2022 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 3.1.9 Options\n \n Figure 3.9: Advanced Options Configuration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 95 / 1290\n \n \u2022 Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more\n information on.\n \u2022 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@@ -7053,15 +7053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 96 / 1290\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\n@@ -7089,15 +7089,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: Normally Closed Switches (N/C) wiring in series (simplified diagram)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 97 / 1290\n \n Figure 3.12: Normally Open Switches (N/O) wiring in parallel (simplified diagram)\n The following combinations of switches are permitted in StepConf:\n \u2022 Combine home switches for all axes\n \u2022 Combine limit switches for all axes\n@@ -7120,15 +7120,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 \n PnCconf\u2019s help page should have the most up to date info and has additional details.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 98 / 1290\n \n 3.2.1 Step by Step Instructions\n \n Figure 3.13: PnCconf Splash\n \n@@ -7140,15 +7140,15 @@\n PnCconf places a note in those files. It also allows you to select desktop shortcut / launcher options.\n A desktop shortcut will place a folder icon on the desktop that points to your new configuration files.\n Otherwise 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 99 / 1290\n \n 3.2.3 Basic Machine Information\n \n Figure 3.14: PnCconf Basic\n \n@@ -7160,15 +7160,15 @@\n \n Defaults are not converted when using metric so make sure they are sane values!\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 100 / 1290\n \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 interrupted by lower priority requests (such as user input to screen buttons or drawing etc).\n@@ -7215,15 +7215,15 @@\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 displayed for a few seconds during start up. For PCI parallel port cards the address can be found\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 101 / 1290\n \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\n with a list of addresses. One of those addresses should work. Not all PCI parallel ports work\n properly. Either type can be selected as in (maximum amount of input pins) or out (maximum\n@@ -7251,15 +7251,15 @@\n \u2022 has no graphical window\n \u2022 look can be changed with custom themes\n QtPlasmaC\n \u2022 fully featured plasmac configuration based on the QtVCP infrastructure.\n \u2022 mouse/keyboard operation or touchscreen operation\n \u2022 no VCP integration\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 102 / 1290\n \n 3.2.4 External Configuration\n This page allows you to select external controls such as for jogging or overrides.\n \n Figure 3.15: External Controls\n@@ -7270,15 +7270,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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 103 / 1290\n \n \u2022 Add a device rule will allow you to configure a new device by following the prompts. You will\n need your device available.\n \u2022 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@@ -7295,15 +7295,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 104 / 1290\n \n Figure 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@@ -7314,15 +7314,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 105 / 1290\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@@ -7362,15 +7362,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 106 / 1290\n \n \u2022 Require homing before MDI / Running\n \u2013 If you want to be able to move the machine before homing uncheck this checkbox.\n \u2022 Popup Tool Prompt\n \u2013 Choose between an on screen prompt for tool changes or export standard signal names for\n@@ -7386,15 +7386,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 107 / 1290\n \n Figure 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@@ -7403,15 +7403,15 @@\n Many PCI cards do not support the EPP protocol properly.\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 It\u2019s important to follow these to avoid damage and get the best performance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 108 / 1290\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@@ -7437,49 +7437,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 109 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 110 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 111 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 112 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 113 / 1290\n \n 3.2.9 Axis Configuration\n \n Figure 3.21: Axis Drive Configuration\n This page allows configuring and testing of the motor and/or encoder combination. If using a servo\n@@ -7491,15 +7491,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 114 / 1290\n \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 Since at the moment PID settings can not be tested in PnCconf the settings are really for when you\n@@ -7544,15 +7544,15 @@\n \u2022 Note that we want raw output such that our measured result is identical to the commanded output.\n This means\n \u2013 cmd=a*raw+b\n \u2013 raw=(cmd-b)/a\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 115 / 1290\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@@ -7569,25 +7569,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 116 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 117 / 1290\n \n Figure 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@@ -7597,15 +7597,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 \u2022 when the TABLE moves out that is the positive Y direction\n \u2022 when the TABLE moves left that is the positive X direction\n \u2022 when the TABLE moves down that is the positive Z direction\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 118 / 1290\n \n \u2022 when the HEAD moves up that is the positive Z direction\n On a typical lathe\n \u2022 when the TOOL moves right, away from the chuck\n \u2022 that is the positive Z direction\n@@ -7650,15 +7650,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 119 / 1290\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@@ -7698,29 +7698,29 @@\n Use Compensation File\n Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 120 / 1290\n \n Figure 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 is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION\n to be 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive\n limit 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 121 / 1290\n \n Many of the option on this page will not show unless the proper option was selected on previous\n pages!\n \n Figure 3.25: Spindle Motor/Encoder Configuration\n@@ -7731,15 +7731,15 @@\n \u2022 If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be\n shown.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 122 / 1290\n \n \u2022 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 \u2022 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@@ -7754,25 +7754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 123 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 124 / 1290\n \n Figure 3.27: HAL Components\n The first selection is components that pncconf uses internally. You may configure pncconf to load\n extra 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@@ -7783,15 +7783,15 @@\n heading Thread command. The components will be added to the thread between reading of\n inputs 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 125 / 1290\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@@ -7823,15 +7823,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 126 / 1290\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@@ -7842,15 +7842,15 @@\n \u2022 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 \u2022 custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP\n display loads.\n \u2022 custom_gvcp.hal is for commands that must be run after GladeVCP is loaded.\n \u2022 shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 127 / 1290\n \n Chapter 4\n \n Configuration\n 4.1 Integrator Concepts\n@@ -7870,15 +7870,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 128 / 1290\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@@ -7913,15 +7913,15 @@\n drive 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 129 / 1290\n \n The simplest way to avoid this problem is to choose a BASE_PERIOD that is the sum of the longest timing requirement of your drive, and the worst case latency of your computer. This is not always the best\n 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 to 20+11 = 31 \u00b5s you get a not-so-nice 32,258 steps per second in one mode and 16,129 steps per\n@@ -7952,15 +7952,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\n of 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 130 / 1290\n \n Figure 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@@ -7978,15 +7978,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 131 / 1290\n \n Figure 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@@ -8014,15 +8014,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 132 / 1290\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@@ -8059,15 +8059,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 133 / 1290\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 \u2022 limited maximum step rate\n@@ -8091,15 +8091,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 134 / 1290\n \n Figure 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@@ -8123,15 +8123,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 135 / 1290\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@@ -8173,15 +8173,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n --logscale\n --text\n --show\n --nobase\n --verbose\n --nox\n@@ -8210,15 +8210,15 @@\n and they all may benefit from tuning for optimal latency.\n A primary goal in tuning the system for LinuxCNC is to reserve a CPU for the exclusive use of LinuxCNC\u2019s realtime tasks, so that other tasks (both user programs and kernel threads) do not interfere\n with LinuxCNC\u2019s access to that CPU.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 137 / 1290\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@@ -8254,15 +8254,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 \u2022 limited maximum step rate\n \u2022 jitter in the generated pulses\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 138 / 1290\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@@ -8302,15 +8302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 139 / 1290\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@@ -8355,15 +8355,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 140 / 1290\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@@ -8408,15 +8408,15 @@\n 4.4 INI Configuration\n 4.4.1\n \n The INI File Components\n \n A typical INI file follows a rather simple layout that includes;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 141 / 1290\n \n \u2022 comments\n \u2022 sections\n \u2022 variables\n Each of these elements is separated on single lines. Each end of line or newline character creates a\n@@ -8461,15 +8461,15 @@\n \u2022 [RS274NGC] settings used by the G-code interpreter\n \u2022 [EMCMOT] settings used by the real time motion controller\n \u2022 [TASK] settings used by the task controller\n \u2022 [HAL] specifies .hal files\n \u2022 [HALUI] MDI commands used by HALUI\n \u2022 [APPLICATIONS] Other applications to be started by LinuxCNC\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 142 / 1290\n \n \u2022 [TRAJ] additional settings used by the real time motion controller\n \u2022 [JOINT_n] individual joint variables\n \u2022 [AXIS_l] individual axis variables\n \u2022 [KINS] kinematics variables\n@@ -8513,15 +8513,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 143 / 1290\n \n [PROBE]\n Z_FEEDRATE = 50\n Z_OFFSET = 12\n Z_SAFE_DISTANCE = -10\n@@ -8563,15 +8563,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2\n \n INI File Sections\n \n 4.4.2.1\n \n@@ -8613,15 +8613,15 @@\n value.\n \u2022 CONE_BASESIZE = .25 - Override the default cone/tool base size of .5 in the graphics display.\n \u2022 MAX_FEED_OVERRIDE = 1.2 - The maximum feed override the user may select. 1.2 means 120% of\n the programmed feed rate.\n \u2022 MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means 50%\n of the programmed spindle speed. (This is used to set the minimum spindle speed.)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 145 / 1290\n \n \u2022 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@@ -8657,15 +8657,15 @@\n powered CPU may see improvement with a longer setting. Usually the default is fine.\n \u2022 PREVIEW_TIMEOUT = 5 - Timeout (in seconds) for loading graphical preview of G-code. Currently\n AXIS only.\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 146 / 1290\n \n \u2022 EMBED_TAB_NAME = GladeVCP demo\n \n \u2022 EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\\} -u ./glad\n ./gladevcp/manual-example.ui\n@@ -8703,15 +8703,15 @@\n \u2022 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 \u2022 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 \u2022 FOAM = 1 - Any non-empty value (including \u201d0\u201d) causes axis to change the display for foam-cutter\n mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 147 / 1290\n \n \u2022 GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of a\n sequence of axis letters and control characters, optionally preceded with a \u201d-\u201d sign:\n 1. The letters X, Y, Z specify translation along the named coordinate.\n 2. The letters A, B, C specify rotation about the corresponding axes X, Y, Z.\n@@ -8753,15 +8753,15 @@\n configurations on one computer.\n \u2022 JOG_AXES = - The order in which jog keys are assigned to axis letters. The left and right arrows are assigned to the first axis letter, up and down to the second, page up/page down to the\n third, and left and right bracket to the fourth. If unspecified, the default is determined from the\n [TRAJ]COORDINATES, [DISPLAY]LATHE and [DISPLAY]FOAM values.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 148 / 1290\n \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 page up/page down: joint2, left/right bracket: joint3\n@@ -8801,15 +8801,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 149 / 1290\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@@ -8854,15 +8854,15 @@\n \u2022 PARAMETER_FILE = myfile.var - The file located in the same directory as the INI file which contains\n the parameters used by the interpreter (saved between runs).\n \u2022 ORIENT_OFFSET = 0 - A float value added to the R word parameter of an M19 Orient Spindle operation. Used to define an arbitrary zero position regardless of encoder mount orientation.\n \u2022 RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 150 / 1290\n \n \u2022 SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:)\n separated list of up to 10 directories to be searched when single-file subroutines are specified in Gcode. These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified)\n and before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order\n that they are listed. The first matching subroutine file found in the search is used. Directories are\n@@ -8914,15 +8914,15 @@\n \u2022 OWORD_WARNONLY = 0 (Default: 0)\n Warn rather than error in case of errors in O-word subroutines.\n \u2022 DISABLE_G92_PERSISTENCE = 0 (Default: 0) Allow to clear the G92 offset automatically when config\n start-up.\n \u2022 DISABLE_FANUC_STYLE_SUB = 0 (Default: 0) If there is reason to disable Fanuc subroutines set it to\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 151 / 1290\n \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 FEATURES & 0x1 -> RETAIN_G43\n@@ -8961,15 +8961,15 @@\n \n [TASK] Section\n \n \u2022 TASK = milltask - Specifies the name of the task executable. The task executable does various\n things, such as\n \u2013 communicate with the UIs over NML,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 152 / 1290\n \n \u2013 communicate with the realtime motion planner over non-HAL shared memory, and\n \u2013 interpret G-code. Currently there is only one task executable that makes sense for 99.9% of users,\n milltask.\n \u2022 CYCLE_TIME = 0.010 - The period, in seconds, at which TASK will run. This parameter affects the\n@@ -9009,15 +9009,15 @@\n provided to make checks for these conditions and report to stdout and in a pop-up GUI:\n HALFILE = LIB:halcheck.tcl [nopopup]\n \n The LIB:halcheck.tcl line should be the last [HAL]HALFILE. Specify the nopopup option to suppress\n the popup message and allow immediate starting. Connections made using a POSTGUI_HALFILE are\n not checked.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 153 / 1290\n \n \u2022 TWOPASS = ON - Use twopass processing for loading HAL components. With TWOPASS processing,\n lines of files specified in [HAL]HALFILE are processed in two passes. In the first pass (pass0), all\n HALFILES are read and multiple appearances of loadrt and loadusr commands are accumulated.\n These accumulated load commands are executed at the end of pass0. This accumulation allows\n@@ -9062,15 +9062,15 @@\n (first character is / or ~), a relative filename (first characters of filename are ./), or as a file in the\n INI file directory. If no executable file is found using these names, then the user search PATH is\n used to find the application.\n Examples:\n \u2013 Simulate inputs to HAL pins for testing (using sim_pin \u2014 a simple GUI to set inputs to parameters,\n unconnected pins, or signals with no writers):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 154 / 1290\n \n APP = sim_pin motion.probe-input halui.abort motion.analog-in-00\n \n \u2013 Invoke halshow with a previuosly saved watchlist. Since LinuxCNC sets the working directory to\n the directory for the INI file, you can refer to files in that directory (example: my.halshow):\n@@ -9115,15 +9115,15 @@\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 depth\n unless you have lots of very short segments. If during testing, you notice strange slowdowns and\n can\u2019t figure out where they come from, first try increasing this depth using the formula above.\n If you still see strange slowdowns, it may be because you have short segments in the program. If\n this is the case, try adding a small tolerance for Naive CAM detection. A good rule of thumb is this:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 155 / 1290\n \n # min_length ~= v_req * t_c\n # where:\n # v_req = desired velocity in UU / sec\n # t_c = servo period (seconds)\n@@ -9168,15 +9168,15 @@\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 \u2022 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 \u2022 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 156 / 1290\n \n name more than once (e.g., X Y Y Z for a gantry machine). For the common trivkins kinematics,\n joint numbers are assigned in sequence according to the trivkins parameter coordinates=. So, for\n trivkins coordinates=xz, joint0 corresponds to X and joint1 corresponds to Z. See the kinematics\n man page ($ man kins) for information on trivkins and other kinematics modules.\n@@ -9218,15 +9218,15 @@\n \u2022 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 default\n (tpmod). Module parameters (tp_parms) may be included if supported by the named module. The\n setting may be overridden from the command line using the -t option ($ linuxcnc -h).\n \u2022 NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.\n \u2022 NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.11\n \n 157 / 1290\n \n [KINS] Section\n \n@@ -9273,15 +9273,15 @@\n offsets:\n axis.<letter>.eoffset-enable\n axis.<letter>.eoffset-count\n axis.<letter>.eoffset-scale\n \n See the chapter: External Axis Offsets for usage information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 4.4.2.13\n \n 158 / 1290\n \n [JOINT_<num>] Sections\n \n@@ -9322,15 +9322,15 @@\n by a space. The first value is the nominal value (the commanded position). The second and third\n values depend on the setting of COMP_FILE_TYPE. Points in between nominal values are interpolated\n between the two nominals. Compensation files must start with the smallest nominal and be in\n ascending order to the largest value of nominals. File names are case sensitive and can contain\n letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.\n If COMP_FILE is specified for a joint, BACKLASH is not used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 159 / 1290\n \n \u2022 COMP_FILE_TYPE = 0 or 1 - Specifies the type of compensation file. The first value is the nominal\n (commanded) position for both types.\n A COMP_FILE_TYPE must be specified for each COMP_FILE.\n \u2013 Type 0: The second value specifies the actual position as the joint is moving in the positive direction (increasing value). The third value specifies the actual position as the joint is moving in the\n@@ -9371,15 +9371,15 @@\n produce a ramp of error trip points. You could think of this as a graph where one dimension is speed\n and the other is permitted following error. As speed increases the amount of following error also\n increases toward the FERROR value.\n \u2022 FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference\n between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI\n file, velocity-proportional following errors are used. Here, the maximum allowable following error\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 160 / 1290\n \n is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and\n proportionally smaller following errors for slower speeds. The maximum allowable following error\n will always be greater than MIN_FERROR. This prevents small following errors for stationary axes\n from inadvertently aborting motion. Small following errors will always be present due to vibration,\n@@ -9419,15 +9419,15 @@\n Additional sequences may be specified with numbers increasing by 1 (in absolute value). Skipping\n of sequence numbers is not allowed. If a HOME_SEQUENCE is omitted, the joint will not be homed\n by the \u201dHome All\u201d function. More than one joint can be homed at the same time by specifying the\n same sequence number for more than one joint. A negative sequence number is used to defer the\n final move for all joints having that (negative or positive) sequence number. For additional info, see:\n HOME SEQUENCE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 161 / 1290\n \n \u2022 VOLATILE_HOME = 0 - When enabled (set to 1) this joint will be unhomed if the Machine Power is\n off or if E-Stop is on. This is useful if your machine has home switches and does not have position\n feedback such as a step and direction driven machine.\n These parameters are relevant to joints controlled by servos.\n@@ -9461,15 +9461,15 @@\n for the motor amplifier. The units on the I gain are volts per machine unit second, e.g.,\n \u2022 D = 0 - The derivative gain for the joint servo. The value multiplies the difference between the current and previous errors, resulting in a contribution to the computed voltage for the motor amplifier.\n The units on the D gain are volts per machine unit per second, e.g.,\n \u2022 FF0 = 0 - The 0th order feed forward gain. This number is multiplied by the commanded position,\n resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF0\n gain are volts per machine unit, e.g.,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 162 / 1290\n \n \u2022 FF1 = 0 - The 1st order feed forward gain. This number is multiplied by the change in commanded\n position per second, resulting in a contribution to the computed voltage for the motor amplifier. The\n units on the FF1 gain are volts per machine unit per second, e.g.,\n \u2022 FF2 = 0 - The 2nd order feed forward gain. This number is multiplied by the change in commanded\n@@ -9509,15 +9509,15 @@\n -10\n -9\n \n Measured\n -9.93\n -8.83\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 163 / 1290\n \n Table 4.1: (continued)\n Raw\n 0\n 1\n@@ -9556,15 +9556,15 @@\n section. For stepper systems, this is the number of step pulses issued per machine unit. For a linear\n joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is\n equal to the setting in ANGULAR_UNITS. For servo systems, this is the number of feedback pulses per\n machine unit. A second number, if specified, is ignored.\n For example, on a 1.8 degree stepper motor with half-stepping, and 10 revs/inch gearing, and desired\n machine units of inch, we have:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 164 / 1290\n \n Old INI and HAL files used INPUT_SCALE for this value.\n \n \u2022 ENCODER_SCALE = 20000 (Optionally used in PnCconf built configs) - Specifies the number of pulses\n that corresponds to a move of one machine unit as set in the [TRAJ] section. For a linear joint one\n@@ -9603,15 +9603,15 @@\n must not be run in reverse. In this context \u201dmax\u201d refers to the absolute magnitude of the spindle\n speed.\n \u2022 MIN_REVERSE_VELOCITY = 3000 \u0300This setting is equivalent to MIN_FORWARD_VELOCITY but for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted.\n \u2022 INCREMENT = 200 Sets the step size for spindle speed increment / decrement commands. This can\n have a different value for each spindle. This setting is effective with AXIS and Touchy but note that\n some control screens may handle things differently.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 165 / 1290\n \n \u2022 HOME_SEARCH_VELOCITY = 100 - FIXME: Spindle homing not yet working. Sets the homing speed\n (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the\n spindle index is located, at which point the spindle position will be set to zero. Note that it makes\n no sense for the spindle home position to be any value other than zero, and so there is no provision\n@@ -9652,15 +9652,15 @@\n absolute encoders. Homing seems simple enough - just move each joint to a known location, and set\n LinuxCNC\u2019s internal variables accordingly. However, different machines have different requirements,\n and homing is actually quite complicated.\n \n While it is possible to use LinuxCNC without homing switches/home procedures or limit switches, It\n defeats the extra security of the soft limits.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 166 / 1290\n \n 4.5.2 Prerequisite\n Homing relies on some fundamental machine assumptions.\n \u2022 The negative and positive directions are based on Tool Movement which can be different from the\n actual machine movement. I.e., on a mill typically the table moves rather then the tool.\n@@ -9687,15 +9687,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 167 / 1290\n \n Figure 4.6: Demonstrative Separate Switch Layout\n \u2022 A is the negative soft limit\n \u2022 B is the G53 machine coordinate Origin\n \u2022 C is the home switch trip point\n@@ -9714,15 +9714,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 168 / 1290\n \n Figure 4.7: Demonstrative Shared Switch Layout\n \u2022 A is the negative soft limit.\n \u2022 B is the G53 machine coordinate Origin.\n \u2022 C is the home switch trip point shared with (-L) minimum limit trip.\n@@ -9741,21 +9741,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 169 / 1290\n \n Figure 4.8: Homing Sequences\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 170 / 1290\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@@ -9808,15 +9808,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 171 / 1290\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@@ -9851,15 +9851,15 @@\n of 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\n small move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was\n skipped). This final move will be made at the joint\u2019s maximum velocity unless HOME_FINAL_VEL has\n been set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 172 / 1290\n \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 \n@@ -9892,15 +9892,15 @@\n The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers must increment by one \u2014 skipping sequence numbers is not supported. If a sequence number is\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 173 / 1290\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\n together with a synchronized final move. If the HOME_SEQUENCE value is zero or positive, a\n command to home the joint will home only the specified joint.\n@@ -9944,15 +9944,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 174 / 1290\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@@ -9996,15 +9996,15 @@\n net hsequence_select => home_sequence_mux.sel\n net hsequence_select => motion.homing-inhibit\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 175 / 1290\n \n Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale,\n joint.N.counts).\n \n An example simulation config (gantry_jjog.ini) that demonstrates joint jogging when using negative\n@@ -10036,15 +10036,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 176 / 1290\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@@ -10077,15 +10077,15 @@\n \u2022 iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-stop be cleared\n Additional pins added by I/O Control V2\n \u2022 emc-abort: (bit, out) signals emc-originated abort to toolchanger.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 177 / 1290\n \n \u2022 emc-reason: (S32, out) convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort TRUE.\n \u2022 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 operations are executed.\n \u2022 start-change-ack: (bit, in) acknowledgment line for start-change.\n@@ -10121,15 +10121,15 @@\n \u2022 EMC_ABORT_AUX_ESTOP = 2,\n \u2022 EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,\n \u2022 EMC_ABORT_TASK_STATE_OFF = 4,\n \u2022 EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,\n \u2022 EMC_ABORT_TASK_STATE_ESTOP = 6,\n \u2022 EMC_ABORT_TASK_STATE_NOT_ON = 7,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 178 / 1290\n \n \u2022 EMC_ABORT_TASK_ABORT = 8,\n \u2022 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@@ -10166,15 +10166,15 @@\n [DISPLAY]\n DISPLAY = axis\n LATHE = 1\n ...\n [KINS]\n KINEMATICS = trivkins\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 179 / 1290\n \n JOINTS = 3\n [TRAJ]\n COORDINATES = X Z\n ...\n@@ -10217,15 +10217,15 @@\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\n CNC/EMC then pick the Sherline configuration that matches yours and save a copy.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 180 / 1290\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@@ -10324,15 +10324,15 @@\n \n Leadscrew\n Teeth\n \n Leadscrew\n Pitch\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Axis\n \n Steps/Rev.\n \n 181 / 1290\n \n@@ -10382,15 +10382,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 182 / 1290\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@@ -10428,15 +10428,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.\n Further on we\u2019ll investigate the standard_pinout.hal.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -10482,15 +10482,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 183 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 184 / 1290\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@@ -10526,15 +10526,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 the code gets executed every few tens of microseconds.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 185 / 1290\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@@ -10568,15 +10568,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 186 / 1290\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@@ -10606,15 +10606,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 187 / 1290\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\n@@ -10660,15 +10660,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 188 / 1290\n \n 4.11 Filter Programs\n 4.11.1 Introduction\n Most of LinuxCNC\u2019s screens have the ability to send loaded files through a filter program or use the\n filter program to make G-code. Such a filter can do any desired task: Something as simple as making\n@@ -10690,15 +10690,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 189 / 1290\n \n Figure 4.9: Circular Holes\n If the filter program sends lines to stderr of the form:\n FILTER_PROGRESS=10\n \n@@ -10718,15 +10718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 190 / 1290\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@@ -10769,15 +10769,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 191 / 1290\n \n # push out processed code\n print(codeLine, file=sys.stdout)\n self.line +=1\n # update progress\n@@ -10799,15 +10799,15 @@\n else:\n path = None\n app = QApplication(sys.argv)\n w = CustomDialog(path=path)\n w.show()\n sys.exit( app.exec_() )\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 192 / 1290\n \n Chapter 5\n \n HAL (Hardware Abstraction Layer)\n 5.1 HAL Introduction\n@@ -10831,15 +10831,15 @@\n reminiscent of what CNC machines need to do, or space craft.\n Any machine controller needs to know:\n \u2022 about its internal state and how this maps to the environment (machine coordinates, state of switches/regulators),\n \u2022 how actuators are expected to change that state,\n \u2022 how allow for updates of the internal state by sensors (encoders, probes).\n The HAL layer consists of parts (referred to as \u201dcomponents\u201d) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 193 / 1290\n \n \u2022 are connected with each other, e.g., to update position data or have the planning algorithm tell the\n motors about the next step.\n \u2022 may know how to communicate with hardware,\n \u2022 may simply process incoming data and provide data outputs to other components,\n@@ -10873,15 +10873,15 @@\n but none of these interfaces are HAL itself.\n HAL itself is not a program, it consists of one or more lists of loaded programs (the components) that\n are periodically executed (in strict sequence), and an area of shared-memory that these components\n use to interchange data. The main HAL script runs only once at machine startup, setting up the\n realtime threads and the shared-memory locations, loading the components and setting up the data\n links between them (the \u201dsignals\u201d and \u201dpins\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 194 / 1290\n \n In principle multiple machines could share a common HAL to allow them to inter-operate, however\n the current implementation of LinuxCNC is limited to a single interpreter and a single Task module.\n Currently this is almost always a G-code interpreter and \u201dmilltask\u201d (which was found to also work well\n for lathes and adequately for robots) but these modules are selectable at load-time. With an increasing\n@@ -10922,15 +10922,15 @@\n number of components that know a lot about CNC and present that information via pins. There are\n pins representing\n \u2022 static information about the machine\n \u2022 the current state of the machine\n \u2013 end switches\n \u2013 positions counted by steppers or as measured by encoders\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 195 / 1290\n \n \u2022 recipients for instructions\n \u2013 manual control of machine position (\u201djogging\u201d)\n \u2013 positions that stepper motors should take next\n In a analogy to electronic cables, pins can be wired, so the value changing in one pin serves as input\n@@ -10970,15 +10970,15 @@\n \u2013 developing over time.\n \n 5.1.3 HAL System Design\n HAL is based on traditional system design techniques. HAL is based on the same principles that\n are used to design hardware circuits and systems, so it is useful to examine those principles first. Any\n system, including a CNC machine, consists of interconnected components. For the CNC machine,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 196 / 1290\n \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 aselect, mount and wire these pieces together to make a complete system.\n \n@@ -11000,15 +11000,15 @@\n black boxes. During the design stage, he decides which parts he is going to use - steppers or servos,\n which brand of servo amp, what kind of limit switches and how many, etc. The integrator\u2019s decisions\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\n the choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback\n needed by the amp and the velocity or position signals that must be sent to the amp from a control.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 197 / 1290\n \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 5.1.3.2 Interconnection Design\n The designer of a hardware system not only selects the parts, he also decides how those parts will be\n@@ -11034,15 +11034,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.3.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 198 / 1290\n \n Figure 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@@ -11067,15 +11067,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 199 / 1290\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. + + Many HAL\n 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.\n@@ -11117,15 +11117,15 @@\n Currently there are 4 types, as follows:\n \u2022 bit - a single TRUE/FALSE or ON/OFF value\n \u2022 float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits\n of dynamic range.\n \u2022 u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295\n \u2022 s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 200 / 1290\n \n Function\n Real hardware components tend to act immediately on their inputs. For example, if the input\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\n@@ -11169,15 +11169,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 201 / 1290\n \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@@ -11192,15 +11192,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 202 / 1290\n \n Figure 5.3: HAL Configuration Window\n \n 5.2.1.1\n \n@@ -11220,15 +11220,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. A negative position\n indicates the position with respect to the end of the thread. For example 1 is start of thread, -1 is the\n end of the thread, -3 is third from the end.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 203 / 1290\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@@ -11301,15 +11301,15 @@\n applies if the component has a name option.\n to wait for the program to exit\n to ignore the program return value (with -w)\n name a component when it is a valid option for that component.\n \n Syntax and Examples of loadusr\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 204 / 1290\n \n loadusr <component> <options>\n loadusr halui\n loadusr -Wn spindle gs2_vfd -n spindle\n \n@@ -11334,15 +11334,15 @@\n A pin can be connected to a signal if it obeys the following rules:\n \u2022 An IN pin can always be connected to a signal.\n \u2022 An IO pin can be connected unless there\u2019s an OUT pin on the signal.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 205 / 1290\n \n Figure 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\n the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.\n@@ -11368,15 +11368,15 @@\n \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 Syntax and Examples of setp\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 206 / 1290\n \n setp <pin/parameter-name> <value>\n setp parport.0.pin-08-out TRUE\n \n 5.2.1.6\n@@ -11419,15 +11419,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 <signame> and the data type of <type>.\n Type must be bit, s32, u32 or float. Error if <signame> already exists.\n Syntax and Examples of newsig\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 207 / 1290\n \n newsig <signame> <type>\n newsig Xstep bit\n \n More information can be found in the HAL manual or the man pages for halrun.\n@@ -11468,15 +11468,15 @@\n you used the Stepper Config Wizard.\n \u2022 custom.hal This file is loaded next and before the GUI loads. This is where you put your custom\n HAL commands that you want loaded before the GUI is loaded.\n \u2022 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\n widgets need to be placed here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 208 / 1290\n \n 5.2.4 HAL Parameter\n Two parameters are automatically added to each HAL component when it is created. These parameters allow you to scope the execution time of a component.\n .time\n .tmax\n@@ -11524,15 +11524,15 @@\n \n out\n False\n False\n False\n True\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.2\n \n 209 / 1290\n \n not\n \n@@ -11588,15 +11588,15 @@\n \n out\n True\n True\n True\n False\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 5.2.5.4\n \n 210 / 1290\n \n xor2\n \n@@ -11651,15 +11651,15 @@\n \n The weighted sum converts a group of bits into an integer. The conversion is the sum of the weights\n of the bits present plus any offset. It\u2019s similar to binary coded decimal but with more options. The\n hold bit interrupts the input processing, so that the sum value no longer changes.\n Syntax for loading component weighted_sum\n loadrt weighted_sum wsum_sizes=size[,size,...]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 211 / 1290\n \n Creates groups of \u0300 \u0300weighted_sum \u0300 \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 to servo thread\n addf process_wsums servo-thread\n@@ -11748,15 +11748,15 @@\n loadrt and2 count=3\n \n Configurations are more readable if you specify with the names= option for components where it is\n supported, e.g.:\n Example load command resulting in explicitly named components aa, ab, ac.\n loadrt and2 names=aa,ab,ac\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 212 / 1290\n \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@@ -11798,15 +11798,15 @@\n you use a derivative component to estimate the velocities and accelerations on each (x,y,z) coordinate,\n using the count= method will give arcane component names like ddt.0, ddt.1, ddt.2, etc.\n Alternatively, using the names= option like:\n loadrt ddt names=xvel,yvel,zvel\n ...\n loadrt ddt names=xaccel,yaccel,zaccel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 213 / 1290\n \n results in components sensibly named xvel, yvel, zvel, xaccel, yaccel, zaccel.\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@@ -11849,15 +11849,15 @@\n are expected. More complex parameter items included in specialized LinuxCNC components may not\n be handled properly.\n A .hal file may be excluded from TWOPASS processing by including a magic comment line anywhere in\n the .hal file. The magic comment line must begin with the string: #NOTWOPASS. Files specified with this\n magic comment are sourced by halcmd using the -k (keep going if failure) and -v (verbose) options.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 214 / 1290\n \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 \n While the order of loadrt directives is not usually critical, ordering of addf directives is often very\n@@ -11894,15 +11894,15 @@\n \n 5.4.2 Halcmd\n halcmd is a command line tool for manipulating HAL. A more complete man page exists for halcmd and\n installed together with LinuxCNC, from source or from a package. If LinuxCNC has been compiled as\n run-in-place, the man page is not installed but is accessible in the LinuxCNC main directory with the\n following command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 215 / 1290\n \n $ man -M docs/man halcmd\n \n 5.4.2.1 Notation\n For this tutorial, commands for the operating system are typically shown without the prompt provided\n@@ -11943,15 +11943,15 @@\n 5.4.3 A Simple Example\n 5.4.3.1 Loading a component\n For this tutorial, we are going to assume that you have successfully installed the Live CD and, if using\n a RIP 1 , invoke the rip-environment script to prepare your shell. In that case, all you need to do is load\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 216 / 1290\n \n the required RTOS and RTAPI modules into memory. Just run the following command from a terminal\n window:\n Loading HAL\n cd linuxcnc\n@@ -12032,15 +12032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 217 / 1290\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@@ -12116,15 +12116,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 218 / 1290\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@@ -12232,15 +12232,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 219 / 1290\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@@ -12324,15 +12324,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 220 / 1290\n \n Save configuration to a file with halcmd\n halcmd: save all saved.hal\n \n 5.4.3.6 Exiting halrun\n@@ -12370,15 +12370,15 @@\n halmeter\n \n Two windows will appear. The selection window is the largest and includes three tabs:\n \u2022 One lists all the pins currently defined in HAL,\n \u2022 one lists all the signals,\n \u2022 one lists all the parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 221 / 1290\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@@ -12405,27 +12405,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 222 / 1290\n \n Figure 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 Figure 5.6: Halmeter Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 223 / 1290\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@@ -12499,15 +12499,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 3\n 3\n 3\n 3\n 3\n 3\n@@ -12673,15 +12673,15 @@\n the velocity input of the first step pulse generator. The first step is to connect the signal to the signal\n generator 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 225 / 1290\n \n halcmd: show sig\n Signals:\n Type\n float\n@@ -12760,15 +12760,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 226 / 1290\n \n The main function for the step pulse generator is stepgen.make_pulses. Every time make_pulses\n runs it decides if it is time to take a step, and if so sets the outputs accordingly. For smooth step\n pulses, it should run as frequently as possible. Because it needs to run so fast, make_pulses is highly\n optimized and performs only a few calculations. Unlike the others, it does not need floating point\n@@ -12843,15 +12843,15 @@\n fine, we want the table speed to vary from +1 to -1 inches per second. However the scaling of the step\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 227 / 1290\n \n to multiply the velocity input to the step pulse generator by 10000 to get the proper output. That\n is exactly what the parameter stepgen.n.velocity-scale is for. In this case, both the X and Y axis\n have the same scaling, so we set the scaling parameters for both to 10000.\n halcmd: setp stepgen.0.position-scale 10000\n@@ -12888,24 +12888,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 228 / 1290\n \n Figure 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\n the record length at 4000 samples, so that we can use up to four channels at one time. When you\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 229 / 1290\n \n select a thread and then click OK, the dialog disappears, and the scope window looks something like\n the following figure.\n \n Figure 5.8: Initial scope window\n@@ -12917,33 +12917,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 230 / 1290\n \n Figure 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\n on the Signals tab then click on X-vel and the dialog closes and the channel is now selected.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 231 / 1290\n \n Figure 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 232 / 1290\n \n Figure 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\n@@ -12954,15 +12954,15 @@\n have a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope\n about 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen\n will show the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven\u2019t\n configured one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger\n section at the top right. You should see the remainder of the buffer fill, then the screen will display\n the captured waveforms. The result will look something like the following figure.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 233 / 1290\n \n Figure 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@@ -12970,30 +12970,30 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 234 / 1290\n \n Figure 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,\n click on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is\n simply a list of all the probes that are currently connected. Select a probe to use for triggering by\n clicking on it. For this example we will use channel 3, the triangle wave as shown in the following\n figure.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 235 / 1290\n \n Figure 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@@ -13003,15 +13003,15 @@\n point is visible as a vertical line in the progress box above the screen. The trigger polarity can be\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 236 / 1290\n \n Figure 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 the\n@@ -13019,15 +13019,15 @@\n visible. However, sometimes simply expanding the waveforms isn\u2019t enough and you need to increase\n the sampling rate. For example, we would like to look at the actual step pulses that are being generated in our example. Since the step pulses may be only 50 \u00b5s long, sampling at 1 kHz isn\u2019t fast enough.\n To change the sample rate, click on the button that displays the number of samples and sample rate\n to 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 237 / 1290\n \n Figure 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\n@@ -13036,15 +13036,15 @@\n if off, and do the same for channel 4. Even though the channels are turned off, they still remember\n what they are connected to, and in fact we will continue to use channel 3 as the trigger source.\n To add new channels, select channel 5, and choose pin stepgen.0.dir, then channel 6, and select\n stepgen.0.step. Then click run mode Normal to start the scope, and adjust the horizontal zoom to\n 5 ms per division. You should see the step pulses slow down as the velocity command (channel 1)\n approaches zero, then the direction pin changes state and the step pulses speed up again. You might\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 238 / 1290\n \n want toincrease the gain on channel 1 to about 20 milli per division to better see the change in the\n velocity command. The result should look like the following figure.\n \n Figure 5.17: Step Pulses\n@@ -13056,15 +13056,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 239 / 1290\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@@ -13126,15 +13126,15 @@\n pin. From the direction arrow you can see that the button is and output and the or2.0.in0 is an input.\n 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\n Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 240 / 1290\n \n tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is\n best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to\n 1. load the hal_manualtoolchange component,\n 2. then send the iocontrol tool change to the hal_manualtoolchange change and\n@@ -13174,15 +13174,15 @@\n Make the connections.\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 241 / 1290\n \n In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per\n minute (IPM) that we get from the ddt.0.out.\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@@ -13196,15 +13196,15 @@\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 a signal changes.\n In this example we have a servo motor driving a lathe spindle. If we just used the commanded\n spindle speeds on the servo it will try to go from present speed to commanded speed as fast as it\n can. This could cause a problem or damage the drive. To slow the rate of change we can send the\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 242 / 1290\n \n spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to\n new settings more slowly.\n Three built-in components that limit a signal are:\n \u2022 limit2 limits the range and first derivative of a signal.\n@@ -13243,15 +13243,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 243 / 1290\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@@ -13265,15 +13265,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 244 / 1290\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@@ -13312,15 +13312,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 245 / 1290\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 \u2022 base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the\n@@ -13358,15 +13358,15 @@\n \u2022 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 \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 246 / 1290\n \n \u2022 motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled\n by M67 or M68.\n \u2022 motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a\n soft limit\n@@ -13404,15 +13404,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 \u2022 motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated\n mode\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 247 / 1290\n \n \u2022 motion.on-soft-limit - (bit, out) TRUE when the machine is on a soft limit.\n \u2022 motion.probe-input - (bit, in) G38.n uses the value on this pin to determine when the probe has made\n contact. TRUE for probe contact closed (touching), FALSE for probe contact open.\n \u2022 motion.program-line - (s32, out) The current program line while executing. Zero if not running or\n@@ -13443,15 +13443,15 @@\n to determine whether the realtime motion controller is meeting its timing constraints\n \u2022 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 \u2022 motion-command-handler - Receives and processes motion commands\n \u2022 motion-controller - Runs the LinuxCNC motion controller\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 248 / 1290\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@@ -13488,15 +13488,15 @@\n \u2022 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 \u2022 spindle.N.orient-mode - (s32,out) Desired spindle rotation mode M19. Default 0.\n \u2022 spindle.N.orient - (out,bit) Indicates start of spindle orient cycle. Set by M19. Cleared by any of\n M3, M4, or M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails\n with an error message.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 249 / 1290\n \n \u2022 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 and\n the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.\n \u2022 spindle.N.orient-fault - (s32, in) Fault code input for orient cycle. Any value other than zero will\n@@ -13535,15 +13535,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 non-realtime I/O commands via NML, interacts with HAL .\n iocontrol\u2019s HAL pins are turned on and off in non-realtime context. If you have strict timing requirements or simply need more I/O, consider using the realtime synchronized I/O provided by motion\n instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 250 / 1290\n \n 5.6.4.1 Pins )\n \u2022 iocontrol.0.coolant-flood (bit, out) TRUE when flood coolant is requested.\n \u2022 iocontrol.0.coolant-mist (bit, out) TRUE when mist coolant is requested.\n \u2022 iocontrol.0.emc-enable-in (bit, in) Should be driven FALSE when an external E-Stop condition exists.\n@@ -13573,15 +13573,15 @@\n \u2022 ini.N.home_offset - (float, in) [JOINT_N]HOME_OFFSET\n \u2022 ini.N.home_offset - (s32, in) [JOINT_N]HOME_SEQUENCE\n \u2022 ini.L.min_limit - (float, in) [AXIS_L]MIN_LIMIT\n \u2022 ini.L.max_limit - (float, in) [AXIS_L]MAX_LIMIT\n \u2022 ini.L.max_velocity - (float, in) [AXIS_L]MAX_VELOCITY\n \u2022 ini.L.max_acceleration - (float, in) [AXIS_L]MAX_ACCELERATION\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 251 / 1290\n \n The per-axis min_limit and max_limit pins are honored continuously after homing. The per-axis\n ferror and min_ferror pins are honored when the machine is on and not in position. The per-axis\n max_velocity and max_acceleration pins are sampled when the machine is on and the motion_state\n is free (homing or jogging) but are not sampled when in a program is running (auto mode) or in MDI\n@@ -13613,15 +13613,15 @@\n If you do not find the man page or the name of the man page is already taken by another UNIX tool\n with the LinuxCNC man page residing in another section, then try to explicitly specify the section, as\n in man _sectionno_ axis, with sectionno = 1 for non-realtime and 9 for realtime components.\n \n See also the Man Pages section of the docs main page or the directory listing. To search in the man\n pages, use the UNIX tool apropos.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 252 / 1290\n \n 5.7.1.1 User Interfaces (non-realtime)\n axis\n axis-remote\n gmoccapy\n@@ -13702,15 +13702,15 @@\n gs2_vfd\n hy_gt_vfd\n \n Communicate with Mesa ethernet cards\n HAL non-realtime component for Automation Direct GS2 VFDs\n HAL non-realtime component for Huanyang GT-series VFDs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n hy_vfd\n mb2hal\n mitsub_vfd\n monitorxhc-hb04\n pi500_vfd\n pmx485\n@@ -13793,15 +13793,15 @@\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 sserial\n hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics\n HostMot2 Smart-Serial remote cards\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n thc\n \n 254 / 1290\n \n Torch Height Control using a Mesa THC card or any analog to velocity input\n \n@@ -13884,15 +13884,15 @@\n Toggles between a specified number of output bits\n Inverter\n One-shot pulse generator\n Two-input OR gate\n 8-bit binary match detector.\n IEC TOF timer - delay falling edge on a signal\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 255 / 1290\n \n toggle\n toggle2nist\n ton\n timedelay\n@@ -13985,15 +13985,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 256 / 1290\n \n bin2gray\n Converts a number to the gray-code representation\n bitslice\n Converts an unsigned-32 input into individual bits\n@@ -14061,15 +14061,15 @@\n \n Accepts NML motion commands, interacts with HAL in realtime\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 257 / 1290\n \n 5.7.1.9 Motor control (Realtime)\n at_pid\n bldc\n clarke2\n@@ -14140,15 +14140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -14199,15 +14199,15 @@\n rtapi_exit.3rtapi\n rtapi_get_clocks.3rtapi\n rtapi_get_msg_level.3rtapi\n rtapi_get_time.3rtapi\n \n 258 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 259 / 1290\n \n rtapi_inb.3rtapi\n rtapi_init.3rtapi\n rtapi_module_param.3rtapi\n RTAPI_MP_ARRAY_INT.3rtapi\n@@ -14252,21 +14252,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.19: Step Pulse Generator Block Diagram position mode\n \n 260 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 261 / 1290\n \n Loading stepgen component\n halcmd: loadrt stepgen step_type=<type-array> [ctrl_type=<ctrl_array>]\n \n <type-array>\n@@ -14316,15 +14316,15 @@\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-C \u0300 - Phase C output (step types 3-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-D \u0300 - Phase D output (step types 5-14 only).\n \u2022 (bit) stepgen. \u0300\n __<chan>__.phase-E \u0300 - Phase E output (step types 11-14 only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 262 / 1290\n \n 5.8.1.2 Parameters\n \u2022 (float) stepgen. \u0300\n __<chan>__.position-scale \u0300 - Steps per position unit. This parameter is used for\n both output and feedback.\n@@ -14373,15 +14373,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)\u2019. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 263 / 1290\n \n Figure 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@@ -14392,33 +14392,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 5.21: Two-and-Three-Phase Step Types\n \n 264 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 265 / 1290\n \n Figure 5.22: Four-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 266 / 1290\n \n Figure 5.23: Five-Phase Step Types\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 267 / 1290\n \n 5.8.1.4 Functions\n The component exports three functions. Each function acts on all of the step pulse generators running different generators in different threads is not supported.\n \u2022 (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point).\n \u2022 (funct) stepgen.update-freq - Low speed function does position to velocity conversion, scaling and\n@@ -14452,15 +14452,15 @@\n is no default value, if <config-array> is not not specified, no PWM generator will be installed. The\n maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator is independent, but all are updated by the same function(s), at the same time. In the descriptions\n that follow, <chan> is the number of specific generators. The numbering of PWM generators starts\n at 0.\n Unloading PWMgen\n unloadrt pwmgen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 268 / 1290\n \n 5.8.2.1 Output Types\n The PWM generator supports three different output types.\n \u2022 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@@ -14505,15 +14505,15 @@\n to zero when disabled, regardless of this setting).\n \u2022 (float) pwmgen. \u0300\n __<chan>__.max-dc \u0300 - Maximum duty cycle, between 0.0 and 1.0.\n \u2022 (float) pwmgen. \u0300\n __<chan>__.curr-dc \u0300 - Current duty cycle - after all limiting and rounding (read\n only).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 269 / 1290\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 \u2022 (funct) pwmgen.make-pulses - High speed function to generate PWM waveforms (no floating point).\n@@ -14534,15 +14534,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 270 / 1290\n \n Figure 5.24: Encoder Counter Block Diagram\n Loading Encoder\n halcmd: loadrt encoder [num_chan=<counters>]\n \n@@ -14556,15 +14556,15 @@\n \n 5.8.3.1 Pins\n \u2022 encoder._<chan>_.counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true,\n the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is\n useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in\n quadrature mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 271 / 1290\n \n \u2022 encoder._<chan>_.missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index.\n This allows a single IO pin to provide both position and index information. If the encoder wheel has\n 58 teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then\n the position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should\n@@ -14603,15 +14603,15 @@\n pulse.\n \u2022 encoder._<chan>_.reset (bit, In) - When True, force counts and position to zero immediately.\n \u2022 encoder._<chan>_.velocity (float, Out) - Velocity in scaled units per second. encoder uses an\n 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 272 / 1290\n \n \u2022 encoder._<chan>_.x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the\n counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it\n only counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful\n for some jogwheels.\n@@ -14628,15 +14628,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 273 / 1290\n \n Figure 5.25: PID Loop Block Diagram\n Loading PID\n halcmd: loadrt pid [num_chan=<loops>] [debug=1]\n \n@@ -14649,15 +14649,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 274 / 1290\n \n \u2022 (float) pid. \u0300\n __<loopnum>__.command \u0300 - The desired position, as commanded by another system\n component.\n \u2022 (float) pid. \u0300\n@@ -14695,15 +14695,15 @@\n \u2022 (float) pid.<loopnum>.deadband - Amount of error that will be ignored\n \u2022 (float) pid.<loopnum>.maxerror - Limit on error\n \u2022 (float) pid.<loopnum>.maxerrorI - Limit on error integrator\n \u2022 (float) pid.<loopnum>.maxerrorD - Limit on error derivative\n \u2022 (float) pid.<loopnum>.maxcmdD - Limit on command derivative\n \u2022 (float) pid.<loopnum>.maxcmdDD - Limit on command 2nd derivative\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 275 / 1290\n \n \u2022 (float) pid.<loopnum>.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 \u2022 (float) pid.<loopnum>.errorI - Integral of error.\n@@ -14736,15 +14736,15 @@\n __<chan-num>__.phase-A \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-B \u0300 - Quadrature output.\n \u2022 (bit) sim-encoder. \u0300\n __<chan-num>__.phase-Z \u0300 - Index pulse output.\n When .speed is positive, .phase-A leads .phase-B.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 276 / 1290\n \n 5.8.5.2 Parameters\n \u2022 (u32) sim-encoder. \u0300\n __<chan-num>__.ppr \u0300 - Pulses Per Revolution.\n \u2022 (float) sim-encoder. \u0300\n@@ -14782,15 +14782,15 @@\n 5.8.6.1 Pins\n Each individual filter has two pins.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.in \u0300 - Input of filter <F> in group <G>.\n \u2022 (bit) debounce. \u0300\n __<G>__.__<F>__.out \u0300 - Output of filter <F> in group <G>.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 277 / 1290\n \n 5.8.6.2 Parameters\n Each group of filters has one parameter6 .\n \u2022 (s32) debounce. \u0300\n __<G>__.delay \u0300 - Filter delay for all filters in group <G>.\n@@ -14829,15 +14829,15 @@\n \u2022 (float) siggen. \u0300\n __<chan>__.triangle \u0300 - Triangle wave output.\n \u2022 (float) siggen. \u0300\n __<chan>__.square \u0300 - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 278 / 1290\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 \u2022 (float) siggen. \u0300\n __<chan>__.frequency \u0300 - Sets the frequency in Hertz, default value is 1 Hz.\n@@ -14915,15 +14915,15 @@\n 0\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\n other components.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 279 / 1290\n \n Table 5.22: (continued)\n Bit 4\n 0\n 0\n@@ -15106,15 +15106,15 @@\n function is 0xa. The hexadecimal prefix is 0x.\n \n 5.9 HAL Component Generator\n 5.9.1 Introduction\n This section introduces to the compilation HAL components, i.e. the addition of some machinists\u2019\n knowledge on how to deal with the machine. It should be noted that such components do not nec-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 280 / 1290\n \n essarily deal with the hardware directly. They often do, but not necessarily, e.g. there could be a\n component to convert between imperial and metric scales, so this section does not require to dive\n into the interaction with hardware.\n Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions\n@@ -15154,15 +15154,15 @@\n loadrt threads name1=servo-thread period1=1000000\n loadrt ddt\n addf ddt.0 servo-thread\n \n More information on loadrt and addf can be found in the HAL Basics.\n To test your component you can follow the examples in the HAL Tutorial.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 281 / 1290\n \n 5.9.4 Definitions\n \u2022 component - A component is a single real-time module, which is loaded with halcmd loadrt. One\n .comp file specifies one component. The component name and file name must match.\n \u2022 instance - A component can have zero or more instances. Each instance of a component is created\n@@ -15196,15 +15196,15 @@\n \u2022 option OPT (VALUE);\n \u2022 variable CTYPE STARREDNAME ([SIZE]);\n \u2022 description DOC;\n \u2022 examples DOC;\n \u2022 notes DOC;\n \u2022 see_also DOC;\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 282 / 1290\n \n \u2022 license LICENSE;\n \u2022 author AUTHOR;\n \u2022 include HEADERFILE;\n Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate\n@@ -15255,15 +15255,15 @@\n \u2022 MAXSIZE : CONDSIZE - A number that gives the maximum size of the array, followed by an expression involving the variable personality and which always evaluates to less than MAXSIZE. When the\n array is created its size will be CONDSIZE.\n \u2022 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 283 / 1290\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@@ -15301,15 +15301,15 @@\n items for numbered instances are named component-name.<num>.item-name.\n \u2022 option default_count number - (default: 1) Normally, the module parameter count defaults to 1. If\n specified, the count will default to this value instead.\n \u2022 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 284 / 1290\n \n \u2022 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 \u2018int rtapi_app_main(void);\u2018\n@@ -15353,15 +15353,15 @@\n command-line with --extra-compile-args=\u201d-I\u2026..\u201d. This alternative provides a way to set extra flags\n in cases where the input file is a .c file rather than a .comp file.\n \u2022 option homemod yes - (default: no)\n Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename .\n \u2022 option tpmod yes - (default: no)\n Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename .\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 285 / 1290\n \n If an option\u2019s VALUE is not specified, then it is equivalent to specifying option \u2026 yes.\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@@ -15394,15 +15394,15 @@\n 5.9.8 Restrictions\n Though HAL permits a pin, a parameter, and a function to have the same name, halcompile does not.\n Variable and function names that can not be used or are likely to cause problems include:\n \u2022 Anything beginning with _comp.\n \u2022 comp_id\n \u2022 fperiod\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 286 / 1290\n \n \u2022 rtapi_app_main\n \u2022 rtapi_app_exit\n \u2022 extra_setup\n \u2022 extra_cleanup\n@@ -15439,15 +15439,15 @@\n they do in realtime functions.\n \n 5.9.10 Components with one function\n If a component has only one function and the string \u201dFUNCTION\u201d does not appear anywhere after ;;,\n then the portion after ;; is all taken to be the body of the component\u2019s single function. See the Simple\n Comp for an example of this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 287 / 1290\n \n 5.9.11 Component Personality\n If a component has any pins or parameters with an \u201dif condition\u201d or \u201d[maxsize : condsize]\u201d, it is called a\n component with personality. The personality of each instance is specified when the module is loaded.\n Personality can be used to create pins only when needed. For instance, personality is used in the logic\n@@ -15480,15 +15480,15 @@\n \n Or, it can process and compile in one step, leaving example.ko (or example.so for the simulator) in the\n current directory:\n halcompile --compile rtexample.comp\n \n Or it can simply process, leaving example.c in the current directory:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 288 / 1290\n \n halcompile rtexample.comp\n \n halcompile can also compile and install a component written in C, using the --install and --compile\n options shown above:\n@@ -15525,15 +15525,15 @@\n pin out float out;\n param r float value = 1.0;\n function _;\n license \u201dGPL\u201d; // indicates GPL v2 or later\n ;;\n FUNCTION(_) { out = value; }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 289 / 1290\n \n 5.9.15.2 sincos\n This component computes the sine and cosine of an input angle in radians. It has different capabilities\n than the \u201dsine\u201d and \u201dcosine\u201d outputs of siggen, because the input is an angle, rather than running\n freely based on a \u201dfrequency\u201d parameter.\n@@ -15579,15 +15579,15 @@\n // set this I/O port to 0 so that EXTRA_CLEANUP does not release the IO\n // ports that were never requested.\n io[extra_arg] = 0;\n return -EBUSY;\n }\n ioaddr = io[extra_arg];\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 290 / 1290\n \n return 0;\n }\n EXTRA_CLEANUP() {\n int i;\n@@ -15629,15 +15629,15 @@\n ;;\n #include <unistd.h>\n void user_mainloop(void) {\n while(1) {\n usleep(1000);\n FOR_ALL_INSTS() out = drand48();\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 291 / 1290\n \n }\n }\n \n 5.9.15.7 logic\n@@ -15683,15 +15683,15 @@\n logic.1.in-03, logic.1.in-04,\n \n \u2022 3-input AND and XOR gates: logic.2.and, logic.2.xor, logic.2.in-00, logic.2.in-01, logic.2.in-02\n 5.9.15.8 General Functions\n This example shows how to call functions from the main function. It also shows how to pass reference\n of HAL pins to those functions.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 292 / 1290\n \n component example;\n pin in s32 in;\n pin out bit out1;\n pin out bit out2;\n@@ -15735,15 +15735,15 @@\n level languages.\n The haltcl facility provides a means to use Tcl scripting and its features for computation, looping,\n branching, procedures, etc. in INI files. To use this functionality, you use the Tcl language and the\n extension .tcl for HAL files.\n The .tcl extension is understood by the main script (linuxcnc) that processes INI files. Haltcl files\n are identified in the the HAL section of INI files (just like HAL files).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 293 / 1290\n \n Example\n [HAL]\n HALFILE = conventional_file.hal\n HALFILE = tcl_based_file.tcl\n@@ -15790,15 +15790,15 @@\n ...\n \n The INI file values are accessible by text substitution in HAL files using the form:\n [SECTION]ITEM\n \n The same INI file values are accessible in Tcl files using the form of a Tcl global array variable:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 294 / 1290\n \n $::SECTION(ITEM)\n \n For example, an INI file item like:\n [JOINT_0]\n@@ -15840,15 +15840,15 @@\n above. The process can be automated with scripts that convert using these substitutions.\n [SECTION]ITEM ---> $::SECTION(ITEM)\n gets\n ---> hal gets\n list\n ---> hal list\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 295 / 1290\n \n 5.10.5 Haltcl Notes\n In haltcl, the value argument for the sets and setp commands is implicitly treated as an expression in\n the Tcl language.\n Example\n@@ -15891,15 +15891,15 @@\n net ${axis}vel => ddt.$ddt.in\n net ${axis}acc <= ddt.$ddt.out\n incr ddt\n }\n puts [show sig *vel]\n puts [show sig *acc]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 296 / 1290\n \n 5.10.7 Haltcl Interactive\n The halrun command recognizes haltcl files. With the -T option, haltcl can be run interaactively as a\n Tcl interpreter. This capability is useful for testing and for standalone HAL applications.\n Example\n@@ -15935,15 +15935,15 @@\n ...\n \n When halui starts it will read the MDI_COMMAND fields in the INI and export pins from 00 to the number\n of MDI_COMMAND \u2019s found in the INI, up to a maximum of 64 commands. These pins can be connected\n like any HAL pins. A common method is to use buttons provided by virtual control panels like shown\n in the example Example for MDI_COMMAND connections.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 297 / 1290\n \n Example 5.1 Example for MDI_COMMAND connections\n HAL file\n net quill-up\n halui.mdi-command-00 <= pyvcp.quillup\n@@ -15983,15 +15983,15 @@\n \u2022 halui.estop.reset (bit, in) - pin for requesting E-Stop reset\n 5.11.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 \u2022 halui.feed-override.decrease (bit, in) - pin for decreasing the FO (-=scale)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 298 / 1290\n \n \u2022 halui.feed-override.increase (bit, in) - pin for increasing the FO (+=scale)\n \u2022 halui.feed-override.reset (bit, in) - pin for resetting the FO (scale=1.0)\n \u2022 halui.feed-override.direct-value (bit, in) - false when using encoder to change counts, true when\n setting counts directly.\n@@ -16015,15 +16015,15 @@\n \u2022 halui.lube.on (bit, in) - pin for requesting lube on\n 5.11.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 299 / 1290\n \n 5.11.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@@ -16057,15 +16057,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 300 / 1290\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@@ -16098,15 +16098,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 301 / 1290\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@@ -16139,15 +16139,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 302 / 1290\n \n 5.11.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@@ -16177,15 +16177,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 303 / 1290\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@@ -16210,15 +16210,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 304 / 1290\n \n 5.11.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@@ -16239,15 +16239,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 305 / 1290\n \n Figure 5.26: Remote Start Example\n The hal commands needed to accomplish the above are:\n net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin>\n net program-run-ok and2.0.in1 <= halui.mode.is-auto\n@@ -16270,15 +16270,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 306 / 1290\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@@ -16328,15 +16328,15 @@\n Name\n passthrough.in\n passthrough.out\n \n halcmd: setp passthrough.in 3.14\n halcmd: show pin\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Component Pins:\n Owner Type Dir\n 03\n float IN\n 03\n float OUT\n@@ -16394,15 +16394,15 @@\n h.ready()\n \n Once all the pins and parameters have been created, call the .ready() method.\n 5.13.3.1 Changing the prefix\n The prefix can be changed by calling the .setprefix() method. The current prefix can be retrieved by\n calling the .getprefix() method.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 308 / 1290\n \n 5.13.4 Reading and writing pins and parameters\n For pins and parameters which are also proper Python identifiers, the value may be accessed or set\n using the attribute syntax:\n h.out = h.in\n@@ -16438,15 +16438,15 @@\n \n 5.13.7 Constants\n Use these to specify details rather then the value they hold.\n \u2022 HAL_BIT\n \u2022 HAL_FLOAT\n \u2022 HAL_S32\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 309 / 1290\n \n \u2022 HAL_U32\n \u2022 HAL_IN\n \u2022 HAL_OUT\n \u2022 HAL_RO\n@@ -16478,15 +16478,15 @@\n 5.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 310 / 1290\n \n 5.14.2.2 Parameters\n None\n 5.14.2.3 Functions\n \n@@ -16512,15 +16512,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.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 311 / 1290\n \n 5.14.4.2 Parameters\n \n (float) scale\n The input voltage (or current) will be multiplied by scale before being output to value.\n@@ -16555,15 +16555,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 312 / 1290\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@@ -16603,15 +16603,15 @@\n lists will disappear, and the small window will display the name and value of the selected item. The\n display is updated approximately 10 times per second. If you click \u201dAccept\u201d instead of \u201dOK\u201d, the small\n window will display the name and value of the selected item, but the large window will remain on the\n screen. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 313 / 1290\n \n background. You can also make halmeter start displaying a specific item immediately, by adding\n pin|sig|par[am] _<name>_ to the command line. It will display the pin, signal, or parameter <name>\n as soon as it starts - if there is no such item, it will simply start normally. And finally, if you specify an\n item to display, you can add -s before the pin|sig|param to tell halmeter to use a small window. The\n@@ -16625,15 +16625,15 @@\n 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 Figure 5.27: Halmeter selection window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 314 / 1290\n \n Figure 5.28: Halmeter watch window\n \n 5.15.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\n@@ -16647,15 +16647,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 315 / 1290\n \n Figure 5.29: 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@@ -16668,15 +16668,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 316 / 1290\n \n 5.15.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 5.4.6 in the tutorial chapter, which explains the basics.\n@@ -16727,15 +16727,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 317 / 1290\n \n Figure 5.30: sim_pin Window\n \n 5.15.6 Simulate Probe\n simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage:\n@@ -16743,15 +16743,15 @@\n \n Figure 5.31: simulate_probe Window\n \n 5.15.7 HAL Histogram\n hal-histogram is a command line utility to display histograms for HAL pins.\n Usage:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 318 / 1290\n \n hal-histogram --help | -?\n or\n hal-histogram [Options] [pinname]\n \n@@ -16791,15 +16791,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 319 / 1290\n \n Figure 5.32: hal-histogram Window\n \n 5.15.8 Halreport\n halreport is a command-line utility that generates a report about HAL connections for a running\n@@ -16810,15 +16810,15 @@\n 3. Each pin\u2019s component_function, thread, and addf-order.\n 4. Non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 320 / 1290\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@@ -16894,15 +16894,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 321 / 1290\n \n alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb\n \n Questionable component function detection may occur for\n 1. unsupported (deprecated) components,\n@@ -16914,15 +16914,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 322 / 1290\n \n Chapter 6\n \n Hardware Drivers\n 6.1 Parallel Port Driver\n@@ -16955,15 +16955,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.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 323 / 1290\n \n If 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@@ -16987,15 +16987,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 <config-string> does not contain at least one address, it is an error.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 324 / 1290\n \n Figure 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 Table 6.1: Parallel Port Direction\n@@ -17055,15 +17055,15 @@\n out\n out\n in\n in\n in\n in\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 325 / 1290\n \n Table 6.1: (continued)\n Pin\n 14\n 15\n@@ -17126,15 +17126,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 get under the hood and re-arrange\n things, be sure to check these values before you start LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 326 / 1290\n \n 6.1.3 Pins\n \u2022 parport.<p>.pin- \u0300\n __<n>__-out \u0300 (bit) Drives a physical output pin.\n \u2022 parport.<p>.pin- \u0300\n@@ -17178,15 +17178,15 @@\n in the same thread as write. If -reset is TRUE, then the reset function will set the pin to the value\n of -out-invert. This can be used in conjunction with stepgen\u2019s doublefreq to produce one step per\n period. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 327 / 1290\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@@ -17228,15 +17228,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 328 / 1290\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@@ -17275,15 +17275,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.<boardnum>.read \u2014 Reads all digital inputs on one board.\n \u2022 (funct) ax5214.<boardnum>.write \u2014 Writes all digital outputs on one board.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 329 / 1290\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@@ -17302,15 +17302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 330 / 1290\n \n Figure 6.2: GM6-PCI card connectors and LEDs\n \n 6.3.1 I/O connectors\n \n@@ -17346,15 +17346,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 331 / 1290\n \n gm.<card_no>.gpio.<gpio_con_no>\n \n where <gpio_con_no> is from 0 to 3.\n State of the first pin of the first GPIO connector on the GM6-PCI card.\n@@ -17402,15 +17402,15 @@\n When True, pin value will be inverted.\n Used when pin is configured as output.\n \n 6.3.2 Axis connectors\n \n Figure 6.4: Pin numbering of axis connectors\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 332 / 1290\n \n Table 6.6: Pinout of axis connectors\n 1\n 2\n 3\n@@ -17438,15 +17438,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 333 / 1290\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@@ -17510,15 +17510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 334 / 1290\n \n Table 6.8: Encoder parameters\n Parameters\n .counter-mode\n \n@@ -17593,15 +17593,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 335 / 1290\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@@ -17672,15 +17672,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 336 / 1290\n \n Table 6.10: (continued)\n Parameters\n .control-type\n \n@@ -17737,15 +17737,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 337 / 1290\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@@ -17763,15 +17763,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 338 / 1290\n \n setp gm.0.stepgen.0.dirdelay 2000\n \n # 2000 ns = 2 \u00b5s\n \n@@ -17824,15 +17824,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 339 / 1290\n \n Table 6.12: (continued)\n Pins\n \n Type and\n@@ -17895,15 +17895,15 @@\n gm.<card_no>.can-gm.<axis_no>\n \n where <axis_no> 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.<card_no>.write\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 340 / 1290\n \n 6.3.3.1 Pins\n Table 6.14: CAN module pins\n Pins\n \n@@ -17949,15 +17949,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 341 / 1290\n \n Table 6.17: Watchdog parameters\n Parameters\n \n Type and\n@@ -18062,15 +18062,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 342 / 1290\n \n gm.<card_no>.joint.<axis_no>\n \n where <axis_no> 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@@ -18126,15 +18126,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 343 / 1290\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@@ -18159,15 +18159,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 344 / 1290\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@@ -18197,15 +18197,15 @@\n Type and\n direction\n (bit, Out)\n \n Pin description\n Output pin for relay\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 345 / 1290\n \n Table 6.23: Relay output module parameters\n Parameters\n \n Type and\n@@ -18268,15 +18268,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 346 / 1290\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.<card_no>.rs485\n@@ -18348,15 +18348,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 347 / 1290\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.<card_no>.rs485\n@@ -18438,15 +18438,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 348 / 1290\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@@ -18479,15 +18479,15 @@\n number you set on the GS2.\n \u2022 -v or --verbose Turn on debug messages.\n \u2022 -A or --accel-seconds <n> (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.\n \u2022 -D or --decel-seconds <n> (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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 349 / 1290\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@@ -18517,15 +18517,15 @@\n \u2022 <name>.spindle-on (bit, in) 1 for ON and 0 for OFF sent to VFD\n \u2022 <name>.status-1 (s32, out) Drive Status of the VFD (see the GS2 manual)\n \u2022 <name>.status-2 (s32, out) Drive Status of the VFD (see the GS2 manual)\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 350 / 1290\n \n 6.4.3 Parameters\n With <name> being gs2_vfd or the name given during loading with the -n option:\n \u2022 <name>.error-count (s32, RW)\n \u2022 <name>.loop-time (float, RW) how often the modbus is polled (default: 0.1)\n@@ -18573,15 +18573,15 @@\n 0x00000004\n \n Pin Num\n 3\n 5\n 7\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 351 / 1290\n \n Table 6.29: (continued)\n GPIO Num\n 5\n 6\n@@ -18695,15 +18695,15 @@\n \n 6.5.4 Parameters\n Only the standard timing parameters which are created for all components exist.\n *hal_pi_gpio.read.tmax *hal_pi_gpio.read.tmax-increased *hal_pi_gpio.write.tmax *hal_pi_gpio.write.tmaxincreased\n For unknown reasons the driver also creates HAL pins to indicate timing\n *hal_pi_gpio.read.time *hal_pi_gpio.write.time\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 352 / 1290\n \n 6.5.5 Functions\n \u2022 hal_pi_gpio.read - Add this to the base thread to update the HAL pin values to match the physical\n input values.\n \u2022 hal_pi_gpio.write - Add this to the base thread to update the physical pins to match the HAL values.\n@@ -18741,15 +18741,15 @@\n reset=GPIO21,GPIO22\n \n This driver relies on the libgpiod-dev library and the gpiod package, which contains a number of\n utilities for configuring and querying GPIO. The GPIO pin names in the \u201dloadrt\u201d line of the HAL given\n above should be the names given by the gpioinfo command.\n Sample output (truncated):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n $ gpioinfo\n gpiochip0 - 54 lines:\n line\n 0:\n \u201dID_SDA\u201d\n line\n@@ -18890,15 +18890,15 @@\n opendrain\n opensource\n biasdisable\n pulldown\n pullup\n The version of libgpiod-dev installed can be determined by the command gpioinfo -v\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 354 / 1290\n \n 6.6.3 Pins\n \u2022 hal_gpio.NAME-in - HAL_OUT The value of an input pin presented in to HAL\n \u2022 hal_gpio.NAME-in-not - HAL_OUT An inverted version of the above, for convenience\n \u2022 hal_gpio.NAME-out - HAL_IN use this pin to transfer a HAL bit value to a physical output\n@@ -18935,15 +18935,15 @@\n SUBSYSTEM==\u201dbcm2835-gpiomem\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio\u201d, GROUP=\u201dgpio\u201d, MODE=\u201d0660\u201d\n SUBSYSTEM==\u201dgpio*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/ \u2190virtual/gpio;\\\n chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 355 / 1290\n \n \u2019\u201d\n SUBSYSTEM==\u201dpwm*\u201d, PROGRAM=\u201d/bin/sh -c \u2019\\\n chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\\\n chown -R root:gpio /sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 \u2190/sys/devices/platform/soc/*.pwm/pwm/pwmchip*\\\n@@ -18976,15 +18976,15 @@\n \u2022 5I22 (96 I/O pins): using hm2_pci module\n \u2013 16-channel servo\n \u2013 8-channel servo plus 24 step/dir generators\n \u2022 5I20, 5I23, 4I65, 4I68 (72 I/O pins): using hm2_pci module\n \u2013 12-channel servo\n \u2013 8-channel servo plus 4 step/dir generators\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 356 / 1290\n \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@@ -19023,15 +19023,15 @@\n because the I/O Pins have become inputs).\n Resetting the watchdog resets the I/O pins to the configuration chosen at load-time.\n If the firmware includes a watchdog, the following HAL objects will be exported:\n 6.7.5.1 Pins\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 357 / 1290\n \n 6.7.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@@ -19071,15 +19071,15 @@\n connections to your card based on your configuration.\n An example of a 5I20 configuration:\n [HOSTMOT2]\n DRIVER=hm2_pci\n BOARD=5i20\n CONFIG=\u201dfirmware=hm2/5i20/SVST8_4.BIT num_encoders=1 num_pwmgens=1 num_stepgens=3\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 358 / 1290\n \n The above configuration produced this printout.\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@@ -19122,15 +19122,15 @@\n mothercard on LinuxCNC startup. If you are using Run In Place, you must still install a hostmot2firmware-<board> package. There is more information about firmware and configuration in the Configurations section.\n \n 6.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 359 / 1290\n \n Figure 6.9: 5i20 HAL Pins\n \n 6.7.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@@ -19146,15 +19146,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SV24\n SVST16_24\n \n Encoder\n 24\n@@ -19367,15 +19367,15 @@\n 0\n 4\n \n GPIO\n 0\n 0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Firmware\n SVST8_4IM2\n \n Encoder\n 8 (+IM)\n \n@@ -19480,15 +19480,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 362 / 1290\n \n 6.7.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@@ -19525,15 +19525,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 363 / 1290\n \n 6.7.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@@ -19568,15 +19568,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.7.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 364 / 1290\n \n 6.7.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@@ -19618,15 +19618,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.7.15 Encoder\n Encoders have names like hm2_<BoardType>.<BoardNum>.encoder.<Instance>.. 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 365 / 1290\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@@ -19663,15 +19663,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 366 / 1290\n \n 6.7.16 5I25 Configuration\n 6.7.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@@ -19705,15 +19705,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 367 / 1290\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@@ -19745,15 +19745,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 368 / 1290\n \n 6.8.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@@ -19833,15 +19833,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 369 / 1290\n \n Value\n Type\n Required\n Description\n@@ -19934,15 +19934,15 @@\n parameter above.\n \n 6.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 370 / 1290\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@@ -19978,15 +19978,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 371 / 1290\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@@ -20031,15 +20031,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 372 / 1290\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@@ -20123,15 +20123,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 373 / 1290\n \n # fnct_16_write_multiple_registers:\n #\n mb2hal.m.n.float\n (input)\n@@ -20194,15 +20194,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #/* Program or connection */\n #COMM_TIME_OUT\n -0x0C (-12)\n #PORT_SOCKET_FAILURE\n -0x0D (-13)\n #SELECT_FAILURE\n@@ -20259,15 +20259,15 @@\n HAL_TX_NAME=XDrive02\n MAX_UPDATE_RATE=10.0\n DEBUG=1\n [TRANSACTION_07]\n \n 374 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 375 / 1290\n \n MB_TX_CODE=fnct_06_write_single_register\n FIRST_ELEMENT=20\n NELEMENTS=1\n HAL_TX_NAME=XDrive03\n@@ -20300,15 +20300,15 @@\n 6.8.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.8.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 376 / 1290\n \n 6.8.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.8.5.6 fnct_06_write_single_register\n@@ -20338,15 +20338,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 377 / 1290\n \n 6.9.1 Command Line Options\n The command line options are:\n \u2022 -b or --baud <rate> : set the baud rate - all networked VFDs must be the same\n \u2022 -p or --port <device path> : sets the port to use such as /dev/ttyUSB0\n@@ -20372,15 +20372,15 @@\n \u2022 <n>.scale-fb (float, in) Scales the motor-fb pin to arbitrary units. default 1 = Hertz.\n \u2022 <n>.scale-amps (float, in) Scales the motor-amps pin to arbitrary units. default 1 = amps.\n \u2022 <n>.scale-power (float, in) Scales the motor-power pin to arbitrary units. default 1 = .\n \u2022 <n>.estop (bit, in) puts the VFD into emergency-stopped status.\n \u2022 <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 378 / 1290\n \n 6.9.3 HAL example\n #\n # example usage of the Mitsubishi VFD driver\n #\n@@ -20439,15 +20439,15 @@\n Fr-A700 F700 E700 D700 technical manual for the 700 series\n The VFD must have PR settings adjusted manually for serial communication.\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 379 / 1290\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 (maximum) COM errors then VFD faults.\n@@ -20483,15 +20483,15 @@\n \u2022 (bit) motenc.<board>.enc-<channel>-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.<board>.dac-<channel>-value - Analog output value for DAC (in user units, see -gain\n and -offset)\n \u2022 (float) motenc.<board>.adc-<channel>-value - Analog input value read by ADC (in user units, see\n -gain and -offset)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 380 / 1290\n \n \u2022 (bit) motenc.<board>.in-<channel> - State of digital input pin, see canonical digital input.\n \u2022 (bit) motenc.<board>.in-<channel>-not - Inverted state of digital input pin, see canonical digital\n input.\n \u2022 (bit) motenc.<board>.out-<channel> - Value to be written to digital output, seen canonical digital\n@@ -20537,15 +20537,15 @@\n \u2022 (funct) motenc.<board>.encoder-read - Reads all encoder counters.\n \u2022 (funct) motenc.<board>.adc-read - Reads the analog-to-digital converters.\n \u2022 (funct) motenc.<board>.digital-in-read - Reads digital inputs.\n \u2022 (funct) motenc.<board>.dac-write - Writes the voltages to the DACs.\n \u2022 (funct) motenc.<board>.digital-out-write - Writes digital outputs.\n \u2022 (funct) motenc.<board>.misc-update - Updates misc stuff.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 381 / 1290\n \n 6.11 Opto22 Driver\n PCI AC5 ADAPTER CARD / HAL DRIVER\n \n 6.11.1 The Adapter Card\n@@ -20581,15 +20581,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 382 / 1290\n \n 6.11.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@@ -20626,15 +20626,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 383 / 1290\n \n 6.11.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@@ -20677,15 +20677,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 384 / 1290\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@@ -20728,15 +20728,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.<port>.encoder.<channel>.position - Encoder position, in user units.\n \u2022 (All bit bidir) ppmc.<port>.encoder.<channel>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 385 / 1290\n \n \u2022 (PPMC float output) ppmc.<port>.DAC.<channel>.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.<port>.pwm.<channel>.enable - Enables a PWM generator.\n@@ -20775,15 +20775,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.<port>.pwm.<channel>.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.<port>.pwm.<channel>.max-dc - Maximum duty cycle, from 0.0 to 1.0.\n \u2022 (UPC float) ppmc.<port>.pwm.<channel>.min-dc - Minimum duty cycle, from 0.0 to 1.0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 386 / 1290\n \n \u2022 (UPC float) ppmc.<port>.pwm.<channel>.duty-cycle - Actual duty cycle (used mostly for troubleshooting.)\n \u2022 (UPC bit) ppmc.<port>.pwm.<channel>.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@@ -20818,15 +20818,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.13 Pluto P Driver\n 6.13.1 General Info\n The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 387 / 1290\n \n 6.13.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@@ -20863,15 +20863,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.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 388 / 1290\n \n 6.13.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@@ -20902,15 +20902,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 389 / 1290\n \n 6.13.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@@ -20940,15 +20940,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 390 / 1290\n \n Table 6.41: (continued)\n Primary function\n \n Alternate Function\n@@ -21061,15 +21061,15 @@\n \n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 391 / 1290\n \n \u2022 Quadrature positions for each channel are latched at different times.\n 6.13.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@@ -21096,15 +21096,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 392 / 1290\n \n Figure 6.11: Pluto-Step Pinout\n \n 6.13.3.2 Input latching and output updating\n \u2022 Step frequencies for each channel are updated at different times.\n@@ -21113,15 +21113,15 @@\n \u2022 Feedback positions for each channel are latched at different times.\n 6.13.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 393 / 1290\n \n Figure 6.12: Pluto-Step Timings\n \n 6.13.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@@ -21136,15 +21136,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 394 / 1290\n \n 6.14.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@@ -21175,15 +21175,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.14.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 395 / 1290\n \n 6.15 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@@ -21223,15 +21223,15 @@\n 6.15.2 Pins\n \u2022 stg.<channel>.counts - (s32) Tracks the counted encoder ticks.\n \u2022 stg.<channel>.position - (float) Outputs a converted position.\n \u2022 stg.<channel>.dac-value - (float) Drives the voltage for the corresponding DAC.\n \u2022 stg.<channel>.adc-value - (float) Tracks the measured voltage from the corresponding ADC.\n \u2022 stg.in-<pinnum> - (bit) Tracks a physical input pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 396 / 1290\n \n \u2022 stg.in-<pinnum>-not - (bit) Tracks a physical input pin, but inverted.\n \u2022 stg.out-<pinnum> - (bit) Drives a physical output pin\n For each pin, <channel> is the axis number, and <pinnum> 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@@ -21265,15 +21265,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 397 / 1290\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@@ -21311,15 +21311,15 @@\n <Prefix>.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 <Prefix>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 398 / 1290\n \n 6.17 VFS11 VFD Driver\n This is a non-realtime HAL program to control the S11 series of VFDs 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@@ -21352,15 +21352,15 @@\n \u2022 <n>.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 <n>.alarm-code (s32, out) non-zero if drive is in alarmed state. Bitmap describing alarm information (see register FC91 description). Use err-reset (see below) to clear the alarm.\n \u2022 <n>.at-speed (bit, out) when drive is at commanded speed (see speed-tolerance below)\n \u2022 <n>.current-load-percentage (float, out) reported from the VFD\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 399 / 1290\n \n \u2022 <n>.dc-brake (bit, in) engage the DC brake. Also turns off spindle-on.\n \u2022 <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 \u2022 <n>.err-reset (bit, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may\n@@ -21397,15 +21397,15 @@\n \u2022 <n>.status (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function\n Instruction Manual, register FD01). A bitmap.\n \u2022 <n>.trip-code (s32, out) trip code if VF-S11 is in tripped state.\n \u2022 <n>.error-count (s32, out) number of Modbus transactions which returned an error\n \u2022 <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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 400 / 1290\n \n 6.17.3 Parameters\n Where <n> is vfs11_vfd or the name given during loading with the -n option.\n \u2022 <n>.frequency-limit (float, RO) upper limit read from VFD setup.\n \u2022 <n>.loop-time (float, RW) how often the Modbus is polled (default interval 0.1 seconds)\n@@ -21441,15 +21441,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -21488,15 +21488,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 401 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 402 / 1290\n \n 6.17.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@@ -21530,15 +21530,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 403 / 1290\n \n 6.17.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@@ -21546,15 +21546,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 404 / 1290\n \n Chapter 7\n \n Hardware Examples\n 7.1 PCI Parallel Port\n@@ -21585,15 +21585,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 405 / 1290\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@@ -21629,15 +21629,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 406 / 1290\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@@ -21679,15 +21679,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 407 / 1290\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@@ -21727,15 +21727,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 408 / 1290\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@@ -21775,15 +21775,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 409 / 1290\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@@ -21830,15 +21830,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 410 / 1290\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@@ -21881,15 +21881,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 411 / 1290\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 non-realtime component for the Automation Direct GS2 VFDs\n@@ -21917,15 +21917,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 412 / 1290\n \n Chapter 8\n \n ClassicLadder\n 8.1 ClassicLadder Introduction\n@@ -21955,15 +21955,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 413 / 1290\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@@ -21993,15 +21993,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 414 / 1290\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@@ -22033,15 +22033,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 8.2\n \n 415 / 1290\n \n ClassicLadder Programming\n \n@@ -22073,15 +22073,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 \n Ladder files (.clp) must not contain any blank spaces in the name.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 416 / 1290\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@@ -22160,15 +22160,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 417 / 1290\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@@ -22201,29 +22201,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 418 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 419 / 1290\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@@ -22241,15 +22241,15 @@\n %Q and the first %W (in an equation). You might see some funny labels, such as (103) in the rungs.\n This is displayed (on purpose) because of an old bug- when erasing elements older versions sometimes\n didn\u2019t erase the object with the right code. You might have noticed that the long horizontal connection\n button sometimes did not work in the older versions. This was because it looked for the free code but\n found something else. The number in the brackets is the unrecognized code. The ladder program will\n still work properly, to fix it erase the codes with the editor and save the program.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 420 / 1290\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@@ -22260,28 +22260,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 421 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 422 / 1290\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@@ -22289,30 +22289,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 423 / 1290\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 424 / 1290\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@@ -22341,21 +22341,21 @@\n \u2022 Compare - creates a compare block to compare variable to values or other variables, e.g. %W1<=5\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, e.g. %W2=7\n or %W1=%W2. ASSIGNMENT functions can only be placed at the right most side of the section 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 425 / 1290\n \n Figure 8.7: Config Window\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 426 / 1290\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@@ -22392,15 +22392,15 @@\n The time intervals can be set in multiples of 100&8239;ms, 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 427 / 1290\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@@ -22430,15 +22430,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 428 / 1290\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@@ -22471,15 +22471,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 429 / 1290\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@@ -22495,23 +22495,23 @@\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\n 5 and when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will\n be set to True.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 8.8: Assign/Compare Ladder Example\n \n Figure 8.9: Assignment Expression Example\n \n 430 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 431 / 1290\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@@ -22536,15 +22536,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 432 / 1290\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@@ -22591,15 +22591,15 @@\n \u2022 %M \u0300\n __xx__.P \u0300 - Monostable xx preset (integer)\n \u2022 %C \u0300\n __xx__.D \u0300 - Counter xx done (Boolean, user read only)\n \u2022 %C \u0300\n __xx__.E \u0300 - Counter xx empty overflow (Boolean, user read only)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 433 / 1290\n \n \u2022 %C \u0300\n __xx__.F \u0300 - Counter xx full overflow (Boolean, user read only)\n \u2022 %C \u0300\n __xx__.V \u0300 - Counter xx current value (integer)\n@@ -22638,15 +22638,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 434 / 1290\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 - shows the variable that must be true for control to pass through to the next step.\n@@ -22657,15 +22657,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 435 / 1290\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 %X \u0300\n __xxx__ (e.g., \u0300\n@@ -22699,21 +22699,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 non-realtime program this page\n will not be displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 436 / 1290\n \n Figure 8.12: Modbus I/O Config\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 437 / 1290\n \n Figure 8.13: Modbus Communication Config\n \u2022 SERIAL PORT - For IP blank. For serial the location/name of serial driver, e.g., /dev/ttyS0 ( or\n /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@@ -22728,15 +22728,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 438 / 1290\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@@ -22775,15 +22775,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 439 / 1290\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@@ -22813,24 +22813,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 440 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 441 / 1290\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@@ -22858,15 +22858,15 @@\n (2\n 1 to 125 (0x7D)\n Bytes)\n (2\n Calculated\n bytes) automatically\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 442 / 1290\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 <Data-21 0 0 1 8E 36\n \n Slave address-1\n@@ -22909,15 +22909,15 @@\n Exception code meaning:\n \u2022 1 - illegal Function\n \u2022 2 - illegal data address\n \u2022 3 - illegal data value\n \u2022 4 - slave device failure\n Here is an example received command as printed in the terminal (all Hex):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 443 / 1290\n \n INFO CLASSICLADDERModbus I/O module received: Lgt=5 ->\n code-83 ) 2 C0 F1\n \n (Slave address-1\n@@ -22977,15 +22977,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 444 / 1290\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@@ -23004,15 +23004,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 445 / 1290\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@@ -23028,48 +23028,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 446 / 1290\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 447 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 448 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 449 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 450 / 1290\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@@ -23080,15 +23080,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 451 / 1290\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@@ -23098,15 +23098,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 452 / 1290\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@@ -23120,15 +23120,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 453 / 1290\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@@ -23139,15 +23139,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 454 / 1290\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@@ -23181,36 +23181,36 @@\n <halpin>\u201dpy-reset\u201d</halpin>\n <text>\u201dReset\u201d</text>\n </button>\n </pyvcp>\n \n Now start up your config and it should look like this.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 455 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 456 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 457 / 1290\n \n Chapter 9\n \n Advanced Topics\n 9.1 Kinematics\n@@ -23238,15 +23238,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 458 / 1290\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@@ -23300,15 +23300,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 459 / 1290\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@@ -23329,15 +23329,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 460 / 1290\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@@ -23369,15 +23369,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 461 / 1290\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@@ -23412,15 +23412,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 462 / 1290\n \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 int kinematicsHome(EmcPose *world, double *joint,\n@@ -23453,15 +23453,15 @@\n This document illustrates a method to set up the DH-parameters for a Mitsubishi RV-6SDL in LinuxCNC using genserkins kinematics.\n \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 There may be errors and/or shortcomings \u2014 use at your own risk!\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 463 / 1290\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@@ -23504,15 +23504,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 464 / 1290\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@@ -23544,87 +23544,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 465 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 466 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 467 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 468 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 469 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 470 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 471 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 472 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 473 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 474 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 475 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 476 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 477 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 478 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 479 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 480 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 481 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 482 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 483 / 1290\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@@ -23653,27 +23653,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 484 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 485 / 1290\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@@ -23683,15 +23683,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 486 / 1290\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@@ -23699,43 +23699,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 487 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 488 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 489 / 1290\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@@ -23754,56 +23754,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 490 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 491 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 492 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 493 / 1290\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@@ -23817,42 +23817,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 494 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 495 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 496 / 1290\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@@ -23867,15 +23867,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 497 / 1290\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@@ -23919,15 +23919,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 498 / 1290\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@@ -23949,29 +23949,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 9.3.8 Figures\n \n Figure 9.10: Table tilting/rotating configuration\n \n 499 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 9.11: Spindle/table tilting configuration\n \n 500 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 501 / 1290\n \n Figure 9.12: Spindle tilting/rotary configuration\n \n 9.3.9 REFERENCES\n 1. AXIS MACHINE TOOLS: Kinematics and Vismach Implementation in LinuxCNC, RJ du Preez,\n@@ -23986,15 +23986,15 @@\n \n 9.4 Switchable Kinematics (switchkins)\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 502 / 1290\n \n calculations for most operations but can be switched to identity kinematics for control of individual\n 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@@ -24029,15 +24029,15 @@\n KINEMATICS = genhexkins coordinates=xyzabc\n # custom identity ordering: joint0==c, joint1==b, ...\n # KINEMATICS = genhexkins coordinates=cbazyx\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 503 / 1290\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@@ -24069,15 +24069,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 504 / 1290\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@@ -24115,15 +24115,15 @@\n XYZABCUVW):\n [AXIS_L]\n MIN_LIMIT =\n MAX_LIMIT =\n MAX_VELOCITY =\n MIN_ACCELERATION =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 505 / 1290\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@@ -24166,15 +24166,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 506 / 1290\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@@ -24219,15 +24219,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 507 / 1290\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@@ -24260,15 +24260,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 508 / 1290\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@@ -24307,15 +24307,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 509 / 1290\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@@ -24393,15 +24393,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Control type\n PID\n \n 510 / 1290\n \n P\n@@ -24445,15 +24445,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 511 / 1290\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<test> call [1.234] [4.65]\n \n@@ -24489,15 +24489,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 512 / 1290\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@@ -24535,15 +24535,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 513 / 1290\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@@ -24580,15 +24580,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 514 / 1290\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@@ -24626,15 +24626,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=<Python function name>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 515 / 1290\n \n prolog=<Python function name>\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=<Python function name>\n@@ -24673,15 +24673,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 516 / 1290\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@@ -24723,15 +24723,15 @@\n (the q argspec is optional since its lowercase in the argspec. Use as follows:)\n o100 if [EXISTS[#<q>]]\n (debug, Q word set: #<q>)\n o100 endif\n o<m400> endsub\n M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 517 / 1290\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@@ -24772,15 +24772,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 518 / 1290\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@@ -24824,15 +24824,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 519 / 1290\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@@ -24876,15 +24876,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 520 / 1290\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@@ -24919,15 +24919,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 521 / 1290\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@@ -24978,15 +24978,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 522 / 1290\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@@ -25032,15 +25032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 523 / 1290\n \n self.set_tool_parameters()\n return INTERP_OK\n else:\n return \u201dM6 aborted (return code %.1f)\u201d % (self.return_value)\n@@ -25077,15 +25077,15 @@\n \u2022 M6 (change_prolog): #<tool_in_spindle>, #<selected_tool>, #<current_pocket>, #<selected_pocket>\n \u2022 M61 (settool_prolog): #<tool> , #<pocket>\n \u2022 S (setspeed_prolog): #<speed>\n \u2022 F (setfeed_prolog): #<feed>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 524 / 1290\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@@ -25134,15 +25134,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 525 / 1290\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@@ -25190,15 +25190,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 526 / 1290\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@@ -25246,15 +25246,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 527 / 1290\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@@ -25287,15 +25287,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 528 / 1290\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@@ -25339,15 +25339,15 @@\n [PYTHON]\n TOPLEVEL = <filename>\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 = <directory>\n Prepend this directory to PYTHON_PATH. A repeating group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 529 / 1290\n \n PATH_APPEND = <directory>\n Append this directory to PYTHON_PATH. A repeating group.\n LOG_LEVEL = <integer>\n Log level of plugin-related actions. Increase this if you suspect problems. Can be very\n@@ -25387,15 +25387,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.<funct\n and remap.<function> Python calls are methods of this Interp class, although there is no explicit\n Python definition of this class (it is a Boost.Python wrapper instance) and hence receive the as the\n first parameter self which can be used to access internals.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 530 / 1290\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@@ -25435,15 +25435,15 @@\n \u2013 when a comment like ;py,<Python statement> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 531 / 1290\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@@ -25481,15 +25481,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 532 / 1290\n \n INTERP_OK\n Return this on success. You need to import this from interpreter.\n a message text\n Returning a string from a handler means this is an error message, abort the program. Works like\n@@ -25526,15 +25526,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n The yield feature is fragile.\n TERP_EXECUTE_FINISH:\n \n 533 / 1290\n \n The following restrictions apply to the usage of yield IN-\n@@ -25577,15 +25577,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 #<result>\u201d\n return INTERP_OK\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 534 / 1290\n \n o<testparam> sub\n (debug, call_level=#<_call_level> myname=#<myname>)\n ; try commenting out the next line and run again\n #<result> = [#<myname> * 3]\n@@ -25629,15 +25629,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 535 / 1290\n \n Canon The canon layer is practically all free functions. Example:\n import emccanon\n def example(self,*args):\n ....\n@@ -25676,15 +25676,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 #<circumference> = [2 * #<radius> * #<_pi>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 536 / 1290\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@@ -25715,15 +25715,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 #<tool> and #<pocket> 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(#<tool>) is executed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 537 / 1290\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@@ -25753,15 +25753,15 @@\n behavior be preceding or following it with some other statements.\n \u2022 Otherwise, the #<selected_pocket> 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(#<selected_pocket>) is executed.\n \u2022 The new tool parameters (offsets, diameter etc) are set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 538 / 1290\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@@ -25794,15 +25794,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 539 / 1290\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@@ -25857,15 +25857,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 540 / 1290\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@@ -25884,15 +25884,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<pydevd> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 541 / 1290\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@@ -25908,15 +25908,15 @@\n Now, what about preview of this procedure? At preview time, of course it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 542 / 1290\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@@ -25960,15 +25960,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 543 / 1290\n \n Table 9.6: Table of Allocated G-codes 10-19\n #\n 10\n 11\n@@ -26051,15 +26051,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 544 / 1290\n \n Table 9.9: (continued)\n #\n 43\n 44\n@@ -26140,15 +26140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 545 / 1290\n \n Table 9.12: (continued)\n #\n 76\n 77\n@@ -26241,15 +26241,15 @@\n \n Mx7\n \n Mx8\n \n Mx9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 546 / 1290\n \n Table 9.15: (continued)\n #\n 10-19\n 20-29\n@@ -26379,15 +26379,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 547 / 1290\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@@ -26421,15 +26421,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 548 / 1290\n \n N10 G91\n N20 G0 X10 Y-5 Z20\n N30 G1 Y20 Z-5\n N40 G0 Z30\n@@ -26470,15 +26470,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 549 / 1290\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@@ -26514,15 +26514,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 550 / 1290\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@@ -26559,15 +26559,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 551 / 1290\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@@ -26602,15 +26602,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 552 / 1290\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@@ -26653,15 +26653,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 553 / 1290\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 component 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@@ -26704,15 +26704,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 554 / 1290\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@@ -26753,15 +26753,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 555 / 1290\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@@ -26804,15 +26804,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 556 / 1290\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@@ -26877,15 +26877,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 557 / 1290\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@@ -26923,15 +26923,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 558 / 1290\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@@ -26962,15 +26962,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 559 / 1290\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@@ -27008,15 +27008,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 560 / 1290\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@@ -27051,15 +27051,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 561 / 1290\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@@ -27097,15 +27097,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 562 / 1290\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@@ -27140,15 +27140,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 563 / 1290\n \n INI file settings for [EMCIO]TOOL_TABLE are ignored when a db_program is specified.\n \n The db_program may be implemented in any language currently supported in LinuxCNC (e.g., BASH\n scripts, Python or Tcl scripts, C/C++ programs) as long as it conforms to the interface messages received on stdin and replied on stdout. A db_program could manage data from a flat file, a relational\n@@ -27180,15 +27180,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 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 564 / 1290\n \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 to specify an empty tool,\n@@ -27230,15 +27230,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 565 / 1290\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@@ -27282,15 +27282,15 @@\n user_unload_spindle,\n )\n tooldb_loop()\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 566 / 1290\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@@ -27310,35 +27310,35 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 567 / 1290\n \n Part II\n \n Usage\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 568 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 569 / 1290\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@@ -27348,15 +27348,15 @@\n \n 10.1 above opens.\n \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\n and the Axis Section of the INI Configuration Chapter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 570 / 1290\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@@ -27390,15 +27390,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 571 / 1290\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@@ -27434,15 +27434,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 572 / 1290\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@@ -27477,15 +27477,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 573 / 1290\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@@ -27525,15 +27525,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 574 / 1290\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@@ -27583,15 +27583,15 @@\n \n Execute next line [T]\n \n \u2022\n \n Pause Execution [P] Resume Execution [S]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022\n \n Stop Program Execution [ESC]\n \n \u2022\n \n@@ -27658,15 +27658,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 576 / 1290\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>\n (Tool Change) will not show on the preview until after the first feed move. To turn either of these\n@@ -27700,15 +27700,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 577 / 1290\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@@ -27729,15 +27729,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 578 / 1290\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@@ -27763,15 +27763,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 579 / 1290\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@@ -27785,15 +27785,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 580 / 1290\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@@ -27807,15 +27807,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 581 / 1290\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@@ -27892,15 +27892,15 @@\n Manual\n Manual\n Manual\n Manual\n Manual\n Manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 582 / 1290\n \n Table 10.1: (continued)\n Keystroke\n R\n P\n@@ -27943,15 +27943,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 583 / 1290\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@@ -27968,15 +27968,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 584 / 1290\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@@ -28007,50 +28007,50 @@\n \u2022 hal allows the creation of non-realtime 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 585 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 586 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 587 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 588 / 1290\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@@ -28058,15 +28058,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=<filename> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 589 / 1290\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@@ -28088,15 +28088,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 590 / 1290\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@@ -28132,15 +28132,15 @@\n Example of .axisrc file\n root_window.bind(\u201d<Control-q>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 591 / 1290\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@@ -28177,15 +28177,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 592 / 1290\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@@ -28268,15 +28268,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 593 / 1290\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@@ -28315,15 +28315,15 @@\n root_window.bind(\u2019<Control-Key-5>\u2019,lambda event: set_rapidrate(50))\n root_window.bind(\u2019<Control-Key-6>\u2019,lambda event: set_rapidrate(60))\n root_window.bind(\u2019<Control-Key-7>\u2019,lambda event: set_rapidrate(70))\n root_window.bind(\u2019<Control-Key-8>\u2019,lambda event: set_rapidrate(80))\n root_window.bind(\u2019<Control-Key-9>\u2019,lambda event: set_rapidrate(90))\n root_window.bind(\u2019<Control-Key-0>\u2019,lambda event: set_rapidrate(100))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n root_window.bind(\u2019<Key-quoteleft>\u2019,lambda event: set_feedrate(0))\n root_window.bind(\u2019<Key-1>\u2019,lambda event: set_feedrate(10))\n root_window.bind(\u2019<Key-2>\u2019,lambda event: set_feedrate(20))\n root_window.bind(\u2019<Key-3>\u2019,lambda event: set_feedrate(30))\n root_window.bind(\u2019<Key-4>\u2019,lambda event: set_feedrate(40))\n root_window.bind(\u2019<Key-5>\u2019,lambda event: set_feedrate(50))\n@@ -28362,15 +28362,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 594 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 595 / 1290\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@@ -28411,15 +28411,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 596 / 1290\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@@ -28475,15 +28475,15 @@\n = BooleanVar\n = DoubleVar\n = IntVar\n = IntVar\n = IntVar\n = IntVar\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 597 / 1290\n \n interp_state\n = IntVar\n ja_rbutton\n = StringVar\n@@ -28580,15 +28580,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 598 / 1290\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@@ -28618,15 +28618,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 599 / 1290\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@@ -28661,15 +28661,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 600 / 1290\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@@ -28680,15 +28680,15 @@\n other versions, please inform about problems and / or solutions on the LinuxCNC forum or the German\n CNC Ecke Forum or LinuxCNC users mailing list.\n The minimum screen resolution for GMOCCAPY for the normal layout (without side panels) is 980 x\n 750 Pixel, so it should fit to every standard screen. It is recommended to use screens with minimum\n resolution of 1024x768. There is also a configuration which fits for 800x600 screens (introduced in\n GMOCCAPY 3.4.8).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 601 / 1290\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 CD/DVD/USB-stick. This allows you to receive updates with the regular Debian packages.\n@@ -28701,15 +28701,15 @@\n edit the settings of the machine.\n \u2022 -logo <path to logo file>: 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 602 / 1290\n \n \u2022 gmoccapy.ini\n \u2022 gmoccapy_4_axis.ini\n \u2022 lathe_configs/gmoccapy_lathe.ini\n \u2022 lathe_configs/gmoccapy_lathe_imperial.ini\n@@ -28743,15 +28743,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 603 / 1290\n \n If no path or file is given, GMOCCAPY will use as default <your_machinename>.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 several machines, you need to include PREFERENCE_FILE_PATH in your INI.\n@@ -28785,15 +28785,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 \n Defaults to 600 if not set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 604 / 1290\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@@ -28833,15 +28833,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 605 / 1290\n \n ; Test file \u201dgo to position\u201d\n ; will jog the machine to a given position\n O<go_to_position> sub\n G17\n@@ -28861,15 +28861,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 \n If you would like to use a macro without any movement, see also the notes in known problems.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 606 / 1290\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@@ -28883,15 +28883,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 607 / 1290\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@@ -28928,29 +28928,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 608 / 1290\n \n Figure 10.14: Embedded tab locations\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ntb_preview\n \n 609 / 1290\n \n box_right - and GMOCCAPY in MDI mode\n \n@@ -28973,15 +28973,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 <span background=\u201d#ff0000\u201d foreground=\u201d#ffffff\u201d>info-message</span \u2190> test\n MESSAGE_TYPE = status\n MESSAGE_PINNAME = statustest\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 610 / 1290\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>small</small>, <big>big</big>, <b>bold</b <i>italic</i>,\n@@ -29021,15 +29021,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 \n The widget names can the looked up in the /usr/share/gmoccapy.glade file\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 611 / 1290\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 being applied to the GUI.\n@@ -29073,15 +29073,15 @@\n \n You can specify where to save the log file:\n [DISPLAY]\n LOG_FILE = gmoccapy.log\n \n If LOG_FILE is not set, logging happens to $HOME/<base_log_name>.log.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 612 / 1290\n \n 10.2.5 HAL Pins\n GMOCCAPY exports several HAL pins to be able to react to hardware devices. The goal is to get a\n GUI that may be operated in a tool shop, completely/mostly without mouse or keyboard.\n \n@@ -29116,15 +29116,15 @@\n For the bottom (horizontal) buttons they are:\n \u2022 gmoccapy.h-button.button-0 (bit IN)\n \u2022 gmoccapy.h-button.button-1 (bit IN)\n \u2022 gmoccapy.h-button.button-2 (bit IN)\n \u2022 gmoccapy.h-button.button-3 (bit IN)\n \u2022 gmoccapy.h-button.button-4 (bit IN)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 613 / 1290\n \n \u2022 gmoccapy.h-button.button-5 (bit IN)\n \u2022 gmoccapy.h-button.button-6 (bit IN)\n \u2022 gmoccapy.h-button.button-7 (bit IN)\n \u2022 gmoccapy.h-button.button-8 (bit IN)\n@@ -29225,15 +29225,15 @@\n zero G92\n unhome all\n back\n \n set selected\n back\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 614 / 1290\n \n Table 10.5: Functional assignment of horizontal buttons\n (3)\n Pin\n Tool Mode\n@@ -29282,15 +29282,15 @@\n back\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 a touch panel, or protect it from\n excessive use by placing hardware buttons around the panel. They are available in a sample configuration like shown in the image below.\n Sample configuration \u201dgmoccapy_sim_hardware_button\u201d showing the side buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 615 / 1290\n \n 10.2.5.2 Velocities and Overrides\n All sliders from GMOCCAPY can be connected to hardware encoders or hardware potentiometers.\n \n For GMOCCAPY 3 some HAL pin names have changed when new controls have been implemented.\n@@ -29302,15 +29302,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 616 / 1290\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@@ -29340,15 +29340,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 617 / 1290\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@@ -29382,15 +29382,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 618 / 1290\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-<your fourth axis letter >-plus (bit IN)\n \u2022 gmoccapy.jog.jog-<your fourth axis letter >-minus (bit IN)\n@@ -29421,15 +29421,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 619 / 1290\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@@ -29463,15 +29463,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 620 / 1290\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@@ -29491,15 +29491,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 621 / 1290\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@@ -29514,15 +29514,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 622 / 1290\n \n \u2022 gmoccapy.tooloffset-z (float IN)\n \n The tooloffset-x line is not needed on a mill, and will not be displayed on a mill with trivial kinematics.\n \n@@ -29549,15 +29549,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 623 / 1290\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 \n@@ -29573,15 +29573,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 INI File Modifications\n Modify your INI file to include the following sections.\n The RS274NGC Section\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 624 / 1290\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 <on_abort> call\n@@ -29622,15 +29622,15 @@\n \u2022 toplevel.py\n \u2022 remap.py\n \u2022 stdglue.py\n From <your_linuxcnc-dev_directory>/configs/sim/gmoccapy/macros copy\n \u2022 on_abort.ngc\n \u2022 change.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 625 / 1290\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@@ -29666,15 +29666,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 626 / 1290\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@@ -29685,15 +29685,15 @@\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 Window decorated - Allows the title bar to be hidden. (default: title bar visible)\n \u2022 hide cursor - Does allow to hide the cursor, what is very useful if you use a touch screen.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 627 / 1290\n \n \u2022 hide tooltips - Hides the tool tips.\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@@ -29718,15 +29718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 628 / 1290\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@@ -29737,15 +29737,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 629 / 1290\n \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@@ -29782,15 +29782,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 630 / 1290\n \n The mouse wheel will still zoom the preview in every mode.\n \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@@ -29807,15 +29807,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 631 / 1290\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@@ -29830,15 +29830,15 @@\n Keyboard shortcuts Some users want to jog there machine using the keyboard buttons and there\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 It is not recommended to use keyboard jogging, as it represents a serious risk for operator and\n machine.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 632 / 1290\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@@ -29869,15 +29869,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 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 633 / 1290\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@@ -29892,15 +29892,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 \n This button can be controlled using the Turtle-Jog HAL Pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 634 / 1290\n \n 10.2.7.3 Advanced Settings\n \n Tool Measurement Please check Auto Tool Measurement\n \n@@ -29913,15 +29913,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 635 / 1290\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@@ -29955,15 +29955,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 636 / 1290\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@@ -30000,15 +30000,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 637 / 1290\n \n [16x16/actions]\n Size=16\n Type=Fixed\n Context=Actions\n@@ -30057,25 +30057,25 @@\n Warning: this color indicates \u201dwarning\u201d (usually something\n yellow/orange\u2019ish).\n Error: this color indicates \u201derror\u201d (usually something\n red\u2019ish).\n \n Examples of symbolic icons can be found at linuxcnc/share/gmoccapy/icons/material.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 638 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 639 / 1290\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@@ -30086,15 +30086,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 640 / 1290\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@@ -30106,15 +30106,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 641 / 1290\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@@ -30133,15 +30133,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 642 / 1290\n \n 10.2.12.2 Not ending macro\n If you use a macro without movement, like this one:\n o<zeroxy> sub\n G92.1\n@@ -30167,15 +30167,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 643 / 1290\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=<filename>.\n Typically <filename> would be touchy_postgui.hal, but can be any legal filename. These commands\n@@ -30188,15 +30188,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 644 / 1290\n \n \u2022 touchy.jog.wheel.N, which is to be connected to axis.N.jog-enable for each axis N.\n \n N represents the axis number 0-8.\n \n@@ -30228,15 +30228,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 645 / 1290\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@@ -30267,39 +30267,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 646 / 1290\n \n Figure 10.21: Gscreen Default Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.22: Gscreen Silverdragon Screen\n \n 647 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 648 / 1290\n \n Figure 10.23: Gscreen Spartan Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 649 / 1290\n \n Figure 10.24: Gscreen Gaxis Screen\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 650 / 1290\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@@ -30307,15 +30307,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 is programmed in C. PyGTK\n uses Python to bind with GTK.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 651 / 1290\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@@ -30360,15 +30360,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 652 / 1290\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@@ -30399,15 +30399,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 653 / 1290\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@@ -30420,15 +30420,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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 654 / 1290\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@@ -30436,15 +30436,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 its 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 655 / 1290\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@@ -30484,15 +30484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 656 / 1290\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@@ -30539,15 +30539,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 657 / 1290\n \n from hal_glib import GStat\n GSTAT = GStat()\n \n In the handler file under def __init__(self): add:\n@@ -30590,15 +30590,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 658 / 1290\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 non-realtime 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@@ -30635,15 +30635,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 659 / 1290\n \n 10.4.6 INI Settings\n Under the [DISPLAY] heading:\n DISPLAY = gscreen -c tester\n options:\n@@ -30684,15 +30684,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 660 / 1290\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@@ -30736,15 +30736,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 661 / 1290\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@@ -30759,15 +30759,15 @@\n \n 10.5.1.1 QtDragon\n \n Figure 10.26: QtDragon - 3 or 4 axis 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 662 / 1290\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@@ -30782,15 +30782,15 @@\n You can only have one of each section (e.g., [HAL]) in the INI file. If you see in these docs multiple\n section options, place them all under the one appropriate section name.\n \n 10.5.2.1 Display\n In the section [DISPLAY] change the DISPLAY = assignment to read:\n \u2022 qtdragon for a small version\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 663 / 1290\n \n \u2022 qtdradon_hd for the large version.\n You can add -v, -d, -i, or -q for (respectably) verbose, debug, info or quiet output to the terminal.\n [DISPLAY]\n DISPLAY = qtvcp qtdragon\n@@ -30827,15 +30827,15 @@\n [DISPLAY]\n DEFAULT_SPINDLE_0_SPEED = 500\n SPINDLE_INCREMENT = 200\n MIN_SPINDLE_0_SPEED = 100\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_POWER = 1500\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 664 / 1290\n \n 10.5.2.6 Jogging increments\n Set selectable jogging increments.\n These increments can be user changed.\n [DISPLAY]\n@@ -30882,15 +30882,15 @@\n panel.\n If using stackedWidget_mainTab, a button labelled User will appear.\n Pressing this button will cycle through displaying all available panels (specified for this location) on\n the main tab area.\n Sample adding a builtin panel to the utilities tab, i.e., a graphical animated machine using\n the vismach library.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 665 / 1290\n \n [DISPLAY]\n EMBED_TAB_NAME = Vismach demo\n EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz\n EMBED_TAB_LOCATION = tabWidget_utilities\n@@ -30914,15 +30914,15 @@\n ~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap- \u2190subroutines: \\\n ~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib\n \n QtVCP\u2019s NGCGUI program also need to know where to open for subroutine selection and pre-selection.\n NGCGUI_SUBFILE_PATH must point to an actual path on your system and also a path described in\n SUBROUTINE_PATHS.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 666 / 1290\n \n [DISPLAY]\n # NGCGUI subroutine path.\n # Thr path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n@@ -30964,15 +30964,15 @@\n jpg = image-to-gcode\n py = python\n \n 10.5.2.13 Probe/Touchplate/Laser Settings\n QtDragon has INI entries for two optional probing tab screens available. Comment/uncomment which\n ever you prefer.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 667 / 1290\n \n \u2022 Versa probe is a QtVCP ported version of a popular GladeVCP probing panel.\n \u2022 Basic Probe is a QtVCP ported version based on the third party basic probe screen.\n Both perform similar probing routines, though Versa probe optionally handles auto tool measurement.\n [PROBE]\n@@ -31013,15 +31013,15 @@\n RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9\n \n 10.5.2.16 Macro Buttons\n QtDragon has up to ten convenience buttons for calling macro actions.\n These could also call OWord routines if desired.\n In the sample configurations they are labelled for moving between current user system origin (zero\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 668 / 1290\n \n point) and Machine system origin.\n User origin is the first MDI command in the INI list, machine origin is the second.\n This example shows how to move Z axis up first. The commands are separated by the ;.\n The label is set after the comma. The symbols \\n adds a line break.\n@@ -31061,15 +31061,15 @@\n F1 - Estop on/off\n F2 - Machine on/off\n F12 - Style Editor\n Home - Home All Joint of the Machine\n Escape - Abort Movement\n Pause - Pause Machine Movement\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 669 / 1290\n \n 10.5.4 Buttons\n Buttons that are checkable will change their text colour when checked. This is controlled by the\n stylesheet/theme\n \n@@ -31118,15 +31118,15 @@\n qtdragon.spindle-fault\n qtdragon.spindle-volts\n \n This bit pin is an output to the spindle control to pause it.\n You would connect it to spindle.0.inhibit.\n qtdragon.spindle-inhibit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 670 / 1290\n \n QtDragon spindle speed display and spindle-at-speed LED require that spindle.0.speed-in be connected to spindle speed feedback.\n Encoder or VFD feedback could be used, as long as the feedback is in revolutions per second (RPS).\n If no feedback is available you can have the display show the requested speed by connecting pins like\n so:\n@@ -31182,15 +31182,15 @@\n <=\n <=\n \n iocontrol.0.tool-change\n iocontrol.0.tool-changed\n iocontrol.0.tool-prep-number\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 671 / 1290\n \n 10.5.9 Spindle\n The screen is intended to interface to a VFD, but will still work without it.\n There are a number of VFD drivers included in the LinuxCNC distribution.\n It is up to the end user to supply the appropriate driver and HAL file connections according to his own\n@@ -31237,15 +31237,15 @@\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 \n This is only available in the QtDragon_hd version.\n \n Z level compensation is a bed levelling/distortion correction function typically used in 3D printing\n or engraving. It uses a HAL non-realtime component which utilizes the external offsets feature of\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 672 / 1290\n \n LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of\n cubic, linear or nearest (0, 1, 2 respectively). If none is specified or if an invalid number is specified,\n the default is assumed to be cubic.\n When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must\n@@ -31262,15 +31262,15 @@\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 \u2022 In qtdragon_hd, switch to the file tab and press the load G-code Ripper button.\n \u2022 Set origin to match the origin of the G-code file to be probed.\n \u2022 Under G-Code Operations, check Auto Probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 673 / 1290\n \n \u2022 File -> Open G-Code File (The file you will run after compensation)\n \u2022 If necessary, make adjustments and press Recalculate.\n \u2022 Press Save G-Code File - Probe Only.\n \u2022 Save the generated file to the nc_files folder.\n@@ -31327,15 +31327,15 @@\n z_level_compensation.z-pos\n \n => logic-and.in-01\n <= axis.x.pos-cmd\n <= axis.y.pos-cmd\n <= axis.z.pos-cmd\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n net z_compensation_on\n net eoffset-zlevel-count\n count\n \n z_level_compensation.enable-in\n z_level_compensation.counts\n@@ -31369,15 +31369,15 @@\n 1. how far above the table the probe trigger point is (tool setter height) and\n 2. how far above the table the top of the workpiece is.\n This operation has to be done every time the tool is changed as the tool length is not saved.\n For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0\n or use a probing routine, the height from table to top of workpiece parameter is not taken into account\n and can be ignored. It is only for the tool setter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 675 / 1290\n \n 10.5.12.1 Versa Probe\n \n Figure 10.29: QtDragon - Versa Probe Option\n Versa probe is used to semi-automatically probe work pieces to find edges, centers and angles.\n@@ -31395,15 +31395,15 @@\n \u2022 SEARCH:: This is the feed rate at which the probe searches for the target workpiece in machine\n units per minute. The search speed should be slow enough to give an acceptable initial accuracy,\n but fast enough to not waste time waiting for movement. Recommendation: 200-500 mm/min.\n \u2022 PROBE:: Once initial contact has been made and the probe is retracted, it will wait for 0.5 seconds\n before performing the search again at a lower speed, the probe velocity. This lower speed ensures\n the machine can stop movement as quickly as possible on contact with the workpiece.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 676 / 1290\n \n \u2022 RAPID:: Axis movements not associated with searching are done at the speed defined by RAPID in\n machine units per minute.\n \u2022 SIDE/EDGE LENGTH:: This is the distance the probe will move at the rapid rate to the position\n where it will begin a search. If measuring a corner, it will move EDGE LENGTH units away from\n@@ -31423,15 +31423,15 @@\n CLEARANCE to 0.\n There are three toggle buttons:\n \u2022 Auto Zero This selects if after probing the relevant axis is set to zero in the current user system.\n \u2022 Auto Skew This selects if after probing, the system will be rotated or just display the calculated\n rotation.\n \u2022 Tool Measure This (if integrated) turns auto tool probing on and off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 677 / 1290\n \n 10.5.12.2 Basic probe\n \n Figure 10.30: QtDragon - Basic Probe Option\n Basic probe is used to semi-automatically probe work pieces to find edges, centers and angles. The\n@@ -31444,15 +31444,15 @@\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 \u2022 Probe Diameter: the size of the probe tip\n \u2022 Probe Rapid: the speed of rapid moves in machine units\n \u2022 Probe Search: the speed of the first rough search in machine units\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 678 / 1290\n \n \u2022 Probe Feed: the speed of the second fine search in machine units\n \u2022 Step Off : back off and re-probe distance\n \u2022 Max XY Distance: the maximum distance the probe will search for in X and Y before failing with\n error\n@@ -31483,15 +31483,15 @@\n \u2022 EDGE WIDTH - distance along edge wall (away from corner) to start probing.\n \n These distance are always to be set in machine units (mm for metric machine, inch for imperial\n machine).\n \n Preset:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 679 / 1290\n \n \u2022 manual set probe at the intersection of the edges (ie corner) of material as described by the green\n bullseye on the button. Set it Z CLEARANCE above the top of material. These can be done by eye.\n \u2022 set EXTRA CLEARANCE to a value that you want the probe to go below the top of material. (So the\n probe will move from its start position down Z Clearance + Extra Clearance distance.)\n@@ -31507,15 +31507,15 @@\n 3. probe wall twice (rough and fine),\n 4. move diagonally to the other wall as set by EDGE WIDTH and XY CLEARANCE,\n 5. probe wall twice,\n 6. raise probe up by Z CLEARANCE + EXTRA DEPTH (returns to starting height),\n 7. rapid back to starting corner (now calculated using the probed walls),\n 8. if auto zero button is enabled, set X and Y of the current user system to zero.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 680 / 1290\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@@ -31534,15 +31534,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 681 / 1290\n \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 Tool Measurement in QtDragon is done with the following steps:\n@@ -31556,15 +31556,15 @@\n When fist setting up auto tool measurement, please use caution until you confirm tool change and\n probe locations - it is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 682 / 1290\n \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 technique.\n@@ -31578,15 +31578,15 @@\n \u2022 Probe down in Z to maximum defined in the INI\u2019s [VERSA_TOOLSETTER] MAXPROBE\n \u2022 Return Z to position defined in the INI\u2019s [TOOL_CHANGE] Z\n \n The [TOOL_CHANGE] Z position should be high enough so the tool will not hit the tool probe when\n moving to the [VERSA_TOOLSETTER] X and Y position. MAXPROBE distance needs to be high enough\n for the tool to touch the probe.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 683 / 1290\n \n 10.5.14.1 Work Piece Height Probing\n \n Figure 10.33: QtDragon_hd - Work piece Height probing\n This program probes 2 user specified locations in the Z axis and calculates the difference in heights.\n@@ -31599,15 +31599,15 @@\n displayed on the DROs.\n Autofill Workpiece Height on Main Screen\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 684 / 1290\n \n \u2022 the X, Y and Z coordinates specify where the first probing routine should start, in current WCS\n Machine Probe At\n \u2022 the X, Y and Z coordinates specify where the second probing routine should start, in current WCS\n Z Safe Travel Height\n@@ -31641,15 +31641,15 @@\n Reflects screen entry.\n \u2022 qtversaprobe.probeheight (HAL_FLOAT) the toolsetter probe switch height. Reflects screen entry.\n \u2022 qtversaprobe.searchvel (HAL_FLOAT) the velocity to search for the tool probe switch\n \u2022 qtversaprobe.probevel (HAL_FLOAT) the velocity to probe tool length. Reflects screen entry.\n \u2022 qtversaprobe.backoffdist (HAL_FLOAT) the distance the probe backs off after triggering. Reflects\n screen entry.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 685 / 1290\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@@ -31689,15 +31689,15 @@\n \u2022 wait for manual tool change acknowledgement\n \u2022 go to VERSA_TOOLSETTER XY position\n \u2022 go to VERSA_TOOLSETTER Z position\n \u2022 fast probe\n \u2022 slow probe\n \u2022 go to TOOLCHANGE Z position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 686 / 1290\n \n Z_MAX_CLEAR is the Z position to go to before moving to the tool setter when using the Travel to\n Toolsetter button.\n Travel to Toolsetter Action sequence:\n \n@@ -31741,15 +31741,15 @@\n mode. A dialog will be shown allowing the spindle direction and speed to be preset. The start line is\n indicated in the box labelled LINE, next to the CYCLE START button. The run from line feature can\n be disabled in the settings page.\n \n LinuxCNC\u2019s run-from-line is not very user friendly. E.g., it does not start the spindle or confirm the\n proper tool. Also, it does not handle subroutines well. If used it is best to start on a rapid move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 687 / 1290\n \n 10.5.16 Laser buttons\n The LASER ON/OFF button in intended to turn an output on or off which is connected to a small laser\n crosshair projector. When the crosshair is positioned over a desired reference point on the workpiece,\n the REF LASER button can be pushed, which then sets the X and Y offsets to the values indicated by\n@@ -31781,15 +31781,15 @@\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. When this tab is selected the individual home buttons in the DRO area will\n change to tool offset setting buttons. They will return to home buttons when you select another tab.\n Pressing this tool button will drop down a when menu of options:\n \u2022 Set Current Tool Position\n \u2022 Adjust Current Tool Position\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 688 / 1290\n \n \u2022 Zero Current Tool Position\n \u2022 Set Tool Offset Directly\n \u2022 Reset To Last\n 10.5.17.5 Status Tab\n@@ -31821,15 +31821,15 @@\n Some program, such as Fusion 360 and Aspire will create these files for you. You can also write your\n own HTML docs with the included SetUp Writer button.\n There are three sub tabs:\n \u2022 HTML - any loaded HTML pages are displayed here. The navigation buttons work on this page.\n \u2022 PDF - any loaded PDF setup pages are displayed here.\n \u2022 PROPERTIES - when a program is loaded its G-code properties are displayed here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 689 / 1290\n \n There are navigation buttons for HTML page:\n \u2022 The up arrow returns you to the default HTML page.\n \u2022 The left arrow moves backward one HTML page.\n \u2022 The right arrow moves forward one HTML page.\n@@ -31844,15 +31844,15 @@\n The settings tab is used to set running options, probing/touchplate/laser/camera offsets and load debugging external programs.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 690 / 1290\n \n \u2022 NGCGUI: is a QtVCP version of the popular G-code subroutine builder/selector, see Widgets-NGCGUI.\n \n Custom QtVCP panels can be displayed here by setting the EMBED_TAB_LOCATION option to tabWidget_uti\n 10.5.17.12 User Tab\n@@ -31880,15 +31880,15 @@\n DROLabel,\n StatusLabel#status_rpm {\n border: 1px solid black;\n border-radius: 4px;\n font: 20pt \u201dNoto Mono\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To change the DRO display font and display format:\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@@ -31940,15 +31940,15 @@\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 691 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 692 / 1290\n \n To have the manual spindle buttons also incrementally increase/decrease speed:\n #action_spindle_fwd{\n qproperty-spindle_up_action: true;\n }\n@@ -31967,15 +31967,15 @@\n [DISPLAY]\n USER_COMMAND_FILE = CONFIGFOLDER/qtdragonrc.py\n \n See Modifying Screens for more information about customization.\n \n Figure 10.36: QtDragon - Customized QtDragon\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 693 / 1290\n \n 10.6 NGCGUI\n \n Figure 10.37: NGCGUI embedded into AXIS\n \n@@ -31985,15 +31985,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 694 / 1290\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@@ -32025,15 +32025,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 695 / 1290\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@@ -32073,15 +32073,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 696 / 1290\n \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 To see special key bindings, click inside an NGCGUI tab page to get focus and then press Control-k.\n@@ -32116,15 +32116,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 697 / 1290\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@@ -32176,15 +32176,15 @@\n \n 10.6.4.2 Standalone PyNGCGUI\n For usage, type in a terminal:\n pyngcgui --help\n Usage:\n pyngcgui [Options] [<sub_filename>]\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 698 / 1290\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@@ -32235,15 +32235,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 699 / 1290\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 \n@@ -32273,15 +32273,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 700 / 1290\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@@ -32355,15 +32355,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 701 / 1290\n \n GCMC_INCLUDE_PATH = /home/myname/gcmc_includes\n TTT\n TTT_PREAMBLE\n \n@@ -32409,15 +32409,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 702 / 1290\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@@ -32456,15 +32456,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 703 / 1290\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@@ -32510,15 +32510,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 704 / 1290\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@@ -32562,15 +32562,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 705 / 1290\n \n #<xparm> = #1\n #<yparm> = #2\n #<zparm> = #3\n \n@@ -32619,15 +32619,15 @@\n o<helper> call [#<x1>] [#<x2>] (call a subroutine)\n #<xresult> = #<_helper:answer> (immediately localize the helper global result)\n #<_helper:answer> = 0.0\n (nullify global named parameter used by subroutine)\n ...\n o<examp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 706 / 1290\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@@ -32669,15 +32669,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 707 / 1290\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@@ -32719,28 +32719,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n This photo shows the backplot of the DB25 subroutine.\n \n 708 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 709 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 710 / 1290\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@@ -32758,15 +32758,15 @@\n #<feedrate> = #3 (Feedrate)\n ;Example de param\u00e8tre sans preset\n g0x0y0z1\n g3 i#<ra> f#<feedrate>\n g3 i[0-#<radius_b>]\n o<simp> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 711 / 1290\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@@ -32782,15 +32782,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 712 / 1290\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@@ -32822,15 +32822,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 713 / 1290\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@@ -32862,15 +32862,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 714 / 1290\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@@ -32893,15 +32893,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 715 / 1290\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@@ -32950,15 +32950,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 716 / 1290\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. Version\n history can be seen by visiting this link which will show the latest available version. The installed\n@@ -32978,25 +32978,25 @@\n there are 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 717 / 1290\n \n Figure 10.40: 16:9\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 718 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 719 / 1290\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@@ -33004,15 +33004,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 from here.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 720 / 1290\n \n Following these instructions will yield a machine with the current stable branch of LinuxCNC (v2.9)\n on Debian 12 (Bookworm).\n 10.8.4.2 Package Installation (Buildbot) If The User Has Linux on Debian 12 (Bookworm)\n Follow the instructions from the Updating LinuxCNC on Debian Bookworm section from here.\n@@ -33052,15 +33052,15 @@\n for Arc OK rather than the soft (calculated) Arc OK provided by mode 0. It may also be possible\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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 721 / 1290\n \n 10.8.5.2 Available I/Os\n \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@@ -33141,15 +33141,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Move Up\n \n Modes\n 2\n \n@@ -33215,15 +33215,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 723 / 1290\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@@ -33255,48 +33255,48 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.43: PnCConf QtPlasmaC Options\n \n 724 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 10.44: StepConf QtPlasmaC Options\n \n 725 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 726 / 1290\n \n Figure 10.45: QtPlasmaC User Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 727 / 1290\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 loaded and edited at a later time, a working QtPlasmaC configuration will be created in the following\n directory: ~/linuxcnc/configs/<machine_name>.\n The way the newly created QtPlasmaC configuration can be run from the terminal command line\n slightly differs depending the way LinuxCNC was installed:\n For a package installation (Buildbot):\n linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 728 / 1290\n \n For a run in place installation:\n ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/_<machine_name>_/_<machine_name>_.ini\n \n After running the above command LinuxCNC should be running with the QtPlasmaC GUI visible.\n@@ -33318,25 +33318,25 @@\n For a run in place installation enter the following command in a terminal window:\n ~/linuxcnc-dev/lib/python/qtvcp/designer/install_script\n \n 10.8.5.6 Initial Setup\n The following heights diagram will help the user visualize the different heights involved in plasma\n cutting and how they are measured:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 729 / 1290\n \n Click on the Parameters Tab to view the CONFIGURATION section which shows the user settable\n parameters. It is necessary to ensure every one of these settings is tailored to the machine.\n To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following\n steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on\n the Z axis position while running a G-code program. These steps simply allow the user to more easily\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 730 / 1290\n \n set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to\n Z axis MINIMUM_LIMIT.\n \n The user should be familiar with the recommended Z Axis Settings.\n@@ -33372,15 +33372,15 @@\n 9. If the table has a laser or camera for sheet alignment, a scribe, or uses offset probing then the\n required offsets need to be applied by following the procedure described in Peripheral Offsets.\n 10. CONGRATULATIONS! The user should now have a working QtPlasmaC Configuration.\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 731 / 1290\n \n IF USING A Mesa Electronics THCAD THEN THE Voltage Scale VALUE WAS OBTAINED MATHEMATICALLY. IF THE USER INTENDS TO USE CUT VOLTAGES FROM A MANUFACTURE\u2019S CUT\n CHART THEN IT WOULD BE ADVISABLE TO DO MEASUREMENTS OF ACTUAL VOLTAGES AND\n FINE TUNE THE Voltage Scale AND Voltage Offset.\n \n@@ -33405,15 +33405,15 @@\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-plasmac2qt\n \n The following screen will be displayed:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 732 / 1290\n \n Table 10.10: Mandatory Settings\n Field\n INI FILE IN\n EXISTING\n@@ -33441,15 +33441,15 @@\n 2 - Estop is a button.\n \n ESTOP:1\n \n Optional Setting - This setting is not required unless the machine has a laser for sheet\n alignment. Leave this blank if it is not used/required. Leave this blank if it is not used/required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Field\n Laser On HAL Pin\n \n Description\n Power on a laser crosshair for sheet\n alignment.\n@@ -33492,15 +33492,15 @@\n For a package installation (Buildbot) enter the following line in a terminal window:\n qtplasmac-cfg2prefs\n \n For a run in place installation enter the following lines in terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-cfg2prefs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 734 / 1290\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@@ -33514,15 +33514,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 735 / 1290\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@@ -33559,15 +33559,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 736 / 1290\n \n Schematics are shown at contact load schematics.\n More information on contact switching load can be seen on page VI of the finder General Technical\n Information document.\n Calculations:\n@@ -33604,15 +33604,15 @@\n Terminal=false\n Name=LinuxCNC\n Exec=sh -c \u201dlinuxcnc $HOME/linuxcnc/configs/<machine_name>/<machine_name>.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 737 / 1290\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@@ -33665,15 +33665,15 @@\n QtPlasmaC.\n \n The configuration files (<machine_name>.ini and <machine_name>.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 The <machine_name>.prefs file is plain text and may be edited with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 738 / 1290\n \n 10.8.7.6 INI File\n QtPlasmaC has some specific <machine_name>.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@@ -33718,15 +33718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 739 / 1290\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@@ -33766,15 +33766,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 740 / 1290\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@@ -33791,15 +33791,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 741 / 1290\n \n Table 10.14: (continued)\n Name\n PH:\n PD:\n@@ -33875,15 +33875,15 @@\n CYCLE START\n CYCLE PAUSE\n \n CYCLE STOP\n \n FEED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 742 / 1290\n \n Table 10.15: (continued)\n Name\n RAPID\n \n@@ -33955,15 +33955,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 743 / 1290\n \n Table 10.18: CONTROL\n Name\n TORCH ON\n TORCH ON ENABLE\n@@ -34055,15 +34055,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\n option is configured in the [POWERMAX] section of the\n <machine_name>.prefs file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 744 / 1290\n \n Table 10.18: (continued)\n Name\n Status\n \n@@ -34129,15 +34129,15 @@\n This button moves the Z axis in the positive direction.\n This button moves the Z axis in the negative direction.\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n PAUSED MOTION\n FEED SLIDER\n \n FEED\n REV\n@@ -34217,15 +34217,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 746 / 1290\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@@ -34238,30 +34238,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 747 / 1290\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 hide 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 748 / 1290\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 This tab is used to display configuration parameters that are modified infrequently.\n It is possible to hide this tab so machine settings cannot be modified by unauthorized personnel. This\n@@ -34283,15 +34283,15 @@\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 This sets the number of times QtPlasmaC will attempt to start\n the arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 749 / 1290\n \n Table 10.25: (continued)\n Name\n Retry Delay\n \n@@ -34366,15 +34366,15 @@\n before falling back to the float switch for material detection.\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 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 750 / 1290\n \n Table 10.27: CONFIGURATION - SAFETY\n Name\n Safe Height\n \n@@ -34424,15 +34424,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 751 / 1290\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@@ -34518,15 +34518,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 752 / 1290\n \n Table 10.32: (continued)\n Name\n Pierce Height\n Pierce Delay\n@@ -34587,15 +34587,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 753 / 1290\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 hide this tab so machine settings cannot be modified by unauthorized personnel. This\n may be achieved either by wiring the pin to a physical key-switch or similar or it may also be set in a\n@@ -34611,15 +34611,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 754 / 1290\n \n Table 10.33: (continued)\n Name\n LED\n Background\n@@ -34697,15 +34697,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 755 / 1290\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@@ -34742,15 +34742,15 @@\n <machine_name> is the machine name entered in the configuration wizard, <version> is the current\n QtPlasmaC version the user is on, <date> is the current date (YY-MM-DD), and <time> is the current\n time (HH-MM-SS).\n Prior to the backup being made, the machine log will be saved to a file in the configuration directory named machine_log_<date>_<time>.txt where <date> and <time> are formatted as described\n above. This file along with up to five previous machine logs will also be included in the backup.\n These files are not required by QtPlasmaC and are safe to delete at any time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 756 / 1290\n \n 10.8.8.7 STATISTICS Tab\n The STATISTICS Tab provides statistics to allow for the tracking of consumable wear and job run times.\n These statistics are shown for the current job as well as the running total. Previous job statistics are\n reset once the next program is run. The total values may be reset either individually by clicking the\n@@ -34763,15 +34763,15 @@\n of the configuration from the SETTINGS Tab then the machine log is also included in the backup.\n \n 10.8.9 Using QtPlasmaC\n Once QtPlasmaC is successfully installed, no Z axis motion is required to be part of the G-code cut\n program. In fact, if any Z axis references are present in the cut program, the standard QtPlasmaC\n configuration will remove them during the program loading process.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 757 / 1290\n \n For reliable use of QtPlasmaC the user should NOT use any Z axis offsets other than the coordinate\n system offsets (G54-G59.3).\n QtPlasmaC will automatically add a line of G-code to move the Z axis to the correct height at the\n beginning of every G-code program.\n@@ -34808,15 +34808,15 @@\n Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code\n syntax for QtPlasmaC to run a G-code program using a torch for cutting is M3 $0 S1 to begin a cut\n and M5 $0 to end a cut.\n For backwards compatibility it is permissible to use M3 S1 in lieu of M3 $0 S1 to begin a cutting job\n and M5 in lieu of M5 $0 to end a cutting job. Note, that this applies to cutting jobs only, for scribe and\n spotting jobs the $n tool identifier is mandatory.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 758 / 1290\n \n 10.8.9.4 Coordinates\n See recommended Z axis settings.\n Each time LinuxCNC (QtPlasmaC) is started Joint homing is required. This allows LinuxCNC (QtPlasmaC) to establish the known coordinates of each axis and set the soft limits to the values specified in\n the <machine_name>.ini file in order to prevent the machine from crashing into a hard stop during\n@@ -34852,15 +34852,15 @@\n QtPlasmaC does not require the use of a material file. Instead, the user could change the cut parameters manually from the MATERIAL section of the PARAMETERS Tab. It is also not required to use\n the automatic material changes. If the user does not wish to use this feature they can simply omit the\n material change codes from the G-code file.\n It is also possible to not use the material file and automatically load materials from within the G-code\n file.\n Material numbers in the materials file do not need to be consecutive nor do they need to be in numerical order.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 759 / 1290\n \n The following variables are mandatory and an error message will appear if any are not found when\n the material file is loaded.\n \u2022 PIERCE_HEIGHT\n \u2022 PIERCE_DELAY\n@@ -34910,15 +34910,15 @@\n PAUSE_AT_END\n = value\n GAS_PRESSURE\n = value (only used for PowerMax communications)\n CUT_MODE\n = value (only used for PowerMax communications)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 760 / 1290\n \n It is possible to add new material, delete material, or edit existing material from the PARAMETERS\n tab.. It is also possible to achieve this by using magic comments in a G-code file.\n The material file may be edited with a text editor while LinuxCNC is running. After any changes have\n been saved, press Reload in the MATERIAL section of the PARAMETERS Tab to reload the material\n@@ -34957,15 +34957,15 @@\n M66 P3 L3 Q1\n F#<_hal[plasmac.cut-feed-rate]>\n M3 $0 S1\n .\n .\n M5 $0\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 761 / 1290\n \n Returning to the default material prior to the end of the program is possible with the code M190 P-1.\n \n 10.8.9.9 Material Addition Via Magic Comments In G-code\n By using \u201dmagic comments\u201d in a G-code file it is possible to do the following:\n@@ -35010,15 +35010,15 @@\n o\n nu\n \n Description\n Selects the option to be used.\n Sets the material number (not used for option 0).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n na\n ph\n pd\n ch\n fr\n@@ -35081,43 +35081,43 @@\n For a run in place installation enter the following two commands in a terminal window:\n source ~/linuxcnc-dev/scripts/rip-environment\n qtplasmac-materials\n \n This will bring up the Material Converter Main dialog box with Manual selected as the default.\n Select one of:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022 Manual - to manually create a new material file.\n \n \u2022 SheetCam - to convert a SheetCam tool file.\n \n For SheetCam only, select whether the user requires a metric or imperial output file.\n \u2022 Fusion 360 - to convert a Fusion 360 tool file.\n \n To convert:\n \n 763 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 764 / 1290\n \n 1. Select the Input File to be converted, press INPUT to bring up a file selector or directly enter\n the file in the entry box.\n 2. Select the Output File to write to, press OUTPUT to bring up a file selector or directly enter the\n file in the entry box. This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg.\n If necessary, the user could select a different file and hand edit the <machine_name>_material.cfg\n file.\n 3. Click CREATE/CONVERT and the new material file will be created.\n For both a Manual creation or a Fusion 360 conversion, a dialog box will show with all available\n parameters displayed for input. Any entry marked with *** is mandatory and all other entries are\n optional depending on the user\u2019s configuration needs.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 765 / 1290\n \n If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it\n will be overwritten.\n \n 10.8.9.11 LASER\n@@ -35155,15 +35155,15 @@\n 3. Jog until the laser cross hairs are at the edge of the material a suitable distance away from the\n desired origin point.\n 4. Press MARK EDGE. The MARK EDGE button label will change to SET ORIGIN.\n 5. Jog until the laser cross hairs are at the origin point of the material.\n 6. Press SET ORIGIN. The SET ORIGIN button label will change to MARK EDGE and the HAL\n pin named qtplasmac.laser_on will be turned off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 766 / 1290\n \n 7. The torch will now move to the X0 Y0 position.\n 8. The offset is now successfully set.\n To turn the laser off and cancel an alignment:\n 1. Press the LASER button and hold for longer than 750 mSec.\n@@ -35173,15 +35173,15 @@\n If an alignment laser has been set up then it is possible to use the laser during CUT RECOVERY for\n accurate positioning of the new start coordinates.\n 10.8.9.12 CAMERA\n \n QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation.\n Rotation compensation can be used to align the work offset to a sheet of material with edge(s) that\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 767 / 1290\n \n are not parallel to the machine\u2019s X/Y axes. The CAMERA button will be enabled after the machine is\n homed.\n To use this feature, the user must set the camera\u2019s offset from the torch center by following the\n procedure described in Peripheral Offsets.\n@@ -35212,15 +35212,15 @@\n 6. The offset is now successfully set.\n In the CAMVIEW panel, the mouse can affect the cross hairs and the zoom level as follows:\n \u2022 Mouse Wheel Scroll - Change cross hair diameter.\n \u2022 Mouse Wheel Button Double Click - Restores cross hair diameter to default.\n \u2022 Mouse Left Button Clicked + Wheel Scroll - Changes camera zoom level.\n \u2022 Mouse Left Button Clicked + Wheel Button Double Click - Restores default camera zoom level.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 768 / 1290\n \n 10.8.9.13 Path Tolerance\n Path tolerance is set with a G64 command and a following P value. The P value corresponds to the\n amount that the actual cut path followed by the machine may deviate from the programmed cut path.\n The default LinuxCNC path tolerance is set for maximum speed which will severely round corners\n@@ -35262,15 +35262,15 @@\n \n TOOL #\n 0\n \n Description\n Used for normal Plasma cutting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n Scribe\n Plasma Torch\n \n TOOL #\n 1\n@@ -35314,15 +35314,15 @@\n \u2022 M67 E3 Q60 would set the velocity to 60% of CutFeedRate.\n \u2022 M67 E3 Q100 would set the velocity to 100% of CutFeedRate.\n The minimum percentage allowed is 10%, values below this will be set to 10%.\n The maximum percentage allowed is 100%, values above this will be set to 100%.\n If the user intends to use this feature it would be prudent to add M68 E3 Q0 to both the preamble and\n postamble of the G-code program so the machine starts and ends in a known state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 770 / 1290\n \n G-CODE THC AND VELOCITY BASED THC ARE NOT ABLE TO BE USED IF CUTTER COMPENSATION IS IN EFFECT; AN ERROR MESSAGE WILL BE DISPLAYED.\n \n If Cut Feed Rate in the MATERIAL section of the PARAMETERS Tab is set to Zero then QtPlasmaC\n will use motion.requested-velocity (as set by a standard Feedrate call in the G-code) for the\n@@ -35354,15 +35354,15 @@\n It is important to thoroughly understand the difference between Synchronized with Motion and\n Immediate:\n \u2022 M62 and M63 (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for\n example) will happen at the beginning of the next motion command. If there is no subsequent\n motion command, the output changes will not occur. It is best practice to program a motion code\n (G0 or G1 for example) right after a M62 or M63.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 771 / 1290\n \n \u2022 M64 and M65 (Immediate) - These commands happen immediately as they are received by the motion\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n@@ -35396,15 +35396,15 @@\n 1. If the THC is disabled, or the THC is enabled but not active, then the IHS skip will occur if the\n start of the cut is less than Skip IHS distance from the last successful probe.\n 2. If the THC is enabled and active, then the IHS skip will occur if the start of the cut is less than\n Skip IHS distance from the end of the last cut.\n A value of zero for Skip IHS will disable all IHS skipping.\n Any errors encountered during a cut will disable IHS skipping for the next cut if Skip IHS is enabled.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 772 / 1290\n \n 10.8.9.21 Probing\n Probing may be done with either ohmic sensing or a float switch. It is also possible to combine the\n two methods, in which case the float switch will provide a fallback to ohmic probing. An alternative\n to ohmic probing is Offset Probing\n@@ -35443,15 +35443,15 @@\n Ohmic Offset in the PROBING frame of the CONFIGURATION section of the PARAMETERS Tab is\n used to set the correct measured height.\n The probe could be a mechanically deployed probe, a permanently mounted proximity sensor or even\n simply a stiff piece of wire extending about 0.5 mm (0.2\u201d) below the torch tip. If the probe is mechanically deployed then it needs to extend/retract rather quickly to avoid excessive probing times and\n would commonly be pneumatically operated.\n To use this feature, the user must set the probe\u2019s offset from the torch center by following the procedure described in Peripheral Offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 773 / 1290\n \n To modify the offsets manually, the user could edit either or both the following options in the [OFFSET_PROBING] section of the <machine_name>.prefs file:\n X axis = n.n\n Y axis = n.n\n Delay = t.t\n@@ -35487,15 +35487,15 @@\n cut type is toggled.\n 10.8.9.24 Hole Cutting - Intro\n It is recommended that any holes to be cut have a diameter no less than one and a half times the\n thickness of the material to be cut.\n It is also recommended that holes with a diameter of less than 32 mm (1.26\u201d) are cut at 60% of the\n feed rate used for profile cuts. This should also lock out THC due to velocity constraints.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 774 / 1290\n \n QtPlasmaC can utilize G-code commands usually set by a CAM Post Processor (PP) to aid in hole cutting\n or if the user does not have a PP or the user\u2019s PP does not support these methods then QtPlasmaC\n can automatically adapt the G-code to suit. This automatic mode is disabled by default.\n There are three methods available for improving the quality of small holes:\n@@ -35538,15 +35538,15 @@\n the M-Codes M62 (Synchronized with Motion)* or M64 (Immediate). After turning the torch off it is\n necessary to allow the torch to be turned on again before beginning the next cut by resetting the\n motion.digital-out-03 pin with the M-Codes M63 or M65, this will be done automatically by the\n QtPlasmaC G-code parser if it reaches an M5 command without seeing a M63 P3 or M65 P3.\n After the torch is turned off the hole path will be followed for a default length of 4 mm (0.157\u201d). This\n distance may be specified by adding #<oclength> = n to the G-code file.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 775 / 1290\n \n \u2022 M62 P3 will turn the torch off (Synchronized with Motion)\n \u2022 M63 P3 will allow the torch to be turned on (Synchronized with Motion)\n \u2022 M64 P3 will turn the torch off (Immediately)\n \u2022 M65 P3 will allow the torch to be turned on (Immediately)\n@@ -35587,15 +35587,15 @@\n G-code parameters to select the desired hole sensing mode:\n \u2022 #<holes> = 0 - Causes QtPlasmaC to disable hole sensing if it was previously enabled.\n \u2022 #<holes> = 1 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) to 60% of\n CutFeedRate.\n \u2022 #<holes> = 2 - Causes QtPlasmaC to Over cut the hole in addition to the velocity changes in setting\n 1.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 776 / 1290\n \n \u2022 #<holes> = 3 - Causes QtPlasmaC to reduce the speed of holes less than 32 mm (1.26\u201d) and arcs\n less than 16 mm (0.63\u201d) to 60% of CutFeedRate.\n \u2022 #<holes> = 4 - Causes QtPlasmaC to Over cut the hole in addition to the velocity change in setting\n 3.\n@@ -35636,15 +35636,15 @@\n to running a G-code program.\n The machine needs to be homed before commencing a single cut.\n A single cut will commence from the machine\u2019s current X/Y position.\n Automatic Single Cut\n This is the preferred method. The parameters for this method are entered in the following dialog box\n that is displayed after pressing a user button which has been coded to run single cut:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 777 / 1290\n \n 1. Jog to the required X/Y start position.\n 2. Set required appropriate material, or edit the Feed Rate for the default material in the PARAMETERS Tab.\n 3. Press the assigned single cut user button.\n 4. Enter the length of the cut along the X and/or Y axes.\n@@ -35659,15 +35659,15 @@\n 6. When the cut is complete stop the spindle.\n 7. The torch will turn off and the Z axis will return to the starting position.\n Manual Single Cut\n Manual single cut requires that either keyboard shortcuts are enabled in the GUI SETTINGS section\n of the SETTINGS Tab, or a custom user button is specified as a manual cut button.\n If the user is using a custom user button then substitute F9 with User Button in the following description.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 778 / 1290\n \n 1. Jog to the required X/Y start position.\n 2. Start the procedure by pressing F9. The jog speed will be automatically set to the feed rate of the\n currently selected material. The jog label will blink to indicate that the jog speed is temporarily\n being overridden (jog speed manipulation will be disabled while a manual cut is active). CYCLE\n@@ -35704,15 +35704,15 @@\n puddle of molten material that may be caused by piercing. The maximum allowable height is 200% of\n the Pierce Height\n Setting for Puddle Jump are described in cut parameters\n The recommended option is to use Pierce Only due to it being able to utilise near end of life consumables.\n \n PUDDLE JUMP IS DISABLED DURING CUT RECOVERY\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 779 / 1290\n \n 10.8.9.29 Mesh Mode (Expanded Metal Cutting)\n QtPlasmaC is capable of cutting of expand (mesh) metal provided the machine has a pilot arc torch\n and it is capable of Constant Pilot Arc (CPA) mode.\n Mesh Mode disables the THC and also ignores a lost Arc OK signal during a cut. It can be selected\n@@ -35743,15 +35743,15 @@\n controller. Since these are not synchronized with motion, they will break blending. This means if\n these codes are used in the middle of active motion codes, the motion will pause to activate these\n commands.\n This mode may also be used in conjunction with Mesh Mode if the user doesn\u2019t require an Arc OK\n signal to begin the cut.\n Both Mesh Mode and Ignore Arc OK can be enabled/disabled at any time during a job.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 780 / 1290\n \n 10.8.9.31 Cut Recovery\n \n This feature will produce a CUT RECOVERY panel that will allow the torch to be moved away from\n the cut path during a paused motion event in order to position the torch over a scrap portion of the\n@@ -35775,15 +35775,15 @@\n JOGGING panel. It will not reset any REV or FWD motion.\n If an alignment laser has been set up then it is possible to use the laser during cut recovery for very\n accurate positioning of the new start coordinates. If either the X axis offset or Y axis offset for the\n laser would cause the machine to move out of bounds then an error message will be displayed.\n To use a laser for cut recovery when paused during a cut:\n 1. Click the LASER button.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 781 / 1290\n \n 2. LASER button will change to disabled, the HAL pin named qtplasmac.laser_on will be turned on\n and the X and Y axis will offset so that the laser cross hairs will indicate the starting coordinates\n of the cut when it is resumed.\n 3. Continue the cut recovery as described above.\n@@ -35810,15 +35810,15 @@\n a subroutine and clicks \u201dSELECTED nn\u201d then an error message will be displayed that includes the\n O-code name of the subroutine.\n It is not possible to use Run From Line if previous G-code has set cutter compensation active. If the\n user selects a line while cutter compensation is active and clicks \u201dSELECTED nn\u201d then an error\n message will be displayed.\n It is possible to select a new line while Run From Line is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Name\n USE LEADIN\n LEADIN LENGTH\n LEADIN ANGLE\n \n CANCEL\n@@ -35856,15 +35856,15 @@\n 3. Clicking RELOAD in the G-code window header - this method will cancel the Run From Line\n process if LOAD was clicked on the Run From Line dialog box and \u201drfl.ngc\u201d is displayed as the\n loaded file name in the G-code window header. This will return the user to the originally loaded\n file.\n 10.8.9.33 Scribe\n A scribe may be operated by QtPlasmaC in addition to the plasma torch.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 783 / 1290\n \n Using a scribe requires the use of the LinuxCNC tool table. Tool 0 is assigned to the plasma torch\n and Tool 1 is assigned to the scribe. The scribe X and Y axes offsets from the plasma torch need to be\n entered into the LinuxCNC tool table. This is done by editing the tool table via the main GUI, or by\n editing the tool.tbl file in the <machine_name> configuration directory. This will be done after the\n@@ -35910,15 +35910,15 @@\n The user can switch between the torch and the scribe any number of times during a program by using\n the appropriate G-codes.\n Issuing M3 S1 (without $n) will cause the machine to behave as if an M3 $0 S1 had been issued\n and issuing M5 (without $n) will cause the machine to behave as if an M5 $0 had been issued. This\n will control the torch firing by default in order to provide backward compatibility for previous G-code\n files.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 784 / 1290\n \n If there is an existing manual tool change parameter set in the <machine_name>.hal file then\n QtPlasmaC will convert it to an automatic tool change.\n \n 10.8.9.34 Spotting\n@@ -35956,30 +35956,30 @@\n \n The high feed rate of 99999 is to ensure that the motion is at the machine\u2019s highest feed rate.\n \n SOME PLASMA CUTTERS WILL NOT BE SUITABLE FOR THIS FEATURE.\n IT IS RECOMMENDED THAT THE USER CARRY OUT SOME TEST SPOTTING TO ENSURE THAT THE\n PLASMA CUTTER IS CAPABLE OF UTILIZING THIS FEATURE.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 785 / 1290\n \n 10.8.9.35 Virtual Keyboard Custom Layouts\n Virtual keyboard support is available for only the \u201donboard\u201d onscreen keyboard. If it is not already on\n the system it may be installed by typing the following in a terminal:\n sudo apt install onboard\n \n The following two custom layouts are used for soft key support:\n \n Figure 10.48: Number keypad - used for the CONVERSATIONAL Tab and the PARAMETERS Tab\n \n Figure 10.49: Alpha-numeric keypad - used for G-code editing and file management.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 786 / 1290\n \n If the virtual keyboard has been repositioned and on the next opening of a virtual keyboard it is not\n visible then clicking twice on the onboard icon in the system tray will reposition the virtual keyboard\n so the move handle is visible.\n 10.8.9.36 Keyboard Shortcuts\n@@ -36056,15 +36056,15 @@\n Jogs the Y axis positive.\n Jogs the Y axis negative.\n Jogs the Z axis positive.\n Jogs the Z axis negative.\n Jogs the A axis positive.\n Jogs the A axis negative.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Keyboard\n Shortcut\n .\n ,\n SHIFT (+ Jog Key)\n + (+Jog Key)\n@@ -36089,15 +36089,15 @@\n and their use: 12.7.2.21 [MDILine Widget]\n \n M3, M4, and M5 are not allowed in the QtPlasmaC MDI.\n \n In addition, pressing RETURN (or ENTER) with no entry in the MDI will close the MDI\n window.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 788 / 1290\n \n 10.8.10 Conversational Shape Library\n \n The Conversational Shape Library consists of several basic shapes and functions to assist the user\n with generating quick G-code at the machine to cut simple shapes quickly. This feature is found on\n@@ -36107,15 +36107,15 @@\n what can be achieved.\n \n Blank entries in the shape input boxes will use the current setting at the time the G-code was generated. For example, if X start was left blank then the current X axis position would be used.\n All leadins and leadouts are arcs except for Circles and Stars:\n Circles:\n \u2022 If the circle is external then any leadin or leadout will be an arc.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 789 / 1290\n \n \u2022 If the circle is internal and a small hole then any leadin will be perpendicular and there will be no\n lead out.\n \u2022 If the circle is internal and not a small hole then any leadin and leadout will be an arc. If the leadin\n has a length greater than half the radius then the leadin will revert to perpendicular and there will\n@@ -36174,15 +36174,15 @@\n required then it can be removed by pressing the NEW button.\n If there is an added shape that is unsaved or unsent then it is not possible to switch tabs in the GUI.\n To re-enable switching tabs it is necessary to either SAVE the shape, SEND the shape, or press NEW\n to remove the shape.\n If NEW is pressed to remove an added shape that is unsaved or unsent then a warning dialog will be\n displayed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 790 / 1290\n \n All distances are in machine units relative to the current User Coordinate System and all angles are\n in degrees.\n \n 10.8.10.1 Conversational Settings\n@@ -36209,15 +36209,15 @@\n G21\\nG40\\nG49\\nG64p0.1\\nG80\\nG90\\nG92.1\\nG94\\nG97\n \n Pressing the RELOAD button will discard any changed but unsaved settings.\n Pressing the SAVE button will save all the settings as displayed.\n Pressing the EXIT button will close the setting panel and return to the previous shape.\n 10.8.10.2 Conversational Lines And Arcs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 791 / 1290\n \n Lines and arcs have an additional option in that they may be strung together to create a complex\n shape.\n There are two line types and three arc types available:\n 1. Line given a start point and an end point.\n@@ -36239,15 +36239,15 @@\n segment of the shape. If a leadout is required it will need to be the last segment of the shape.\n \n At this stage there is no automatic option for a leadin/leadout creation if the shape is closed.\n \n 10.8.10.3 Conversational Single Shape\n The following shapes are available for creation:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 792 / 1290\n \n To create a shape:\n 1. Select the corresponding icon for the shape to create. The available parameters will be displayed.\n 2. Choose the material from the MATERIAL drop down. If no material is chosen, the default material\n (00000) will be used.\n@@ -36258,15 +36258,15 @@\n For CIRCLE, the OVER CUT button will become valid when a CUT TYPE of INTERNAL is selected\n and the value entered in the DIAMETER field is less than the Small Hole Diameter parameter in the\n Conversational SETTINGS section.\n For BOLT CIRCLE the OVER CUT button will become valid if the value entered in the HOLE DIA\n field is less than the SMALL HOLES DIAMETER parameter in the Conversational SETTINGS section.\n For the following shapes, KERF OFFSET will become active once a LEAD IN is specified:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 793 / 1290\n \n 1. TRIANGLE\n 2. RECTANGLE\n 3. POLYGON\n 4. SLOT\n@@ -36293,15 +36293,15 @@\n using the Conversational Shape Library that has been previously loaded from the MAIN Tab.\n A previously saved Block G-code file may also be loaded from the MAIN Tab and then have any of its\n operations edited using the Conversational Block feature.\n Block operations:\n \u2022 Rotate\n \u2022 Scale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 794 / 1290\n \n \u2022 Array\n \u2022 Mirror\n \u2022 Flip\n To create a block:\n@@ -36339,15 +36339,15 @@\n 10.8.11 Error Messages\n 10.8.11.1 Error Logging\n All errors are logged into the machine log which is able to be viewed in the STATISTICS Tab. The log\n file is saved into the configuration directory when QtPlasmaC is shutdown. The five last logfiles are\n kept, after which the oldest logfile is deleted each time a new log file is created. These saved log files\n may be viewed with any text editor.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 795 / 1290\n \n 10.8.11.2 Error Message Display\n By default, QtPlasmaC will display error messages via a Operator Error popup window. In addition,\n QtPlasmaC will alert the user that an error has been sent to the machine log by displaying the message\n \u201dERROR SENT TO MACHINE LOG\u201d in the lower left portion of the status bar.\n@@ -36380,15 +36380,15 @@\n \u2022 ohmic probe detected before probing program is paused\n \u2022 float switch detected before probing program is paused\n \u2022 breakaway switch detected before probing program is paused\n The Arc OK signal was lost during cutting motion, before the M5 command was reached:\n \u2022 valid arc lost program is paused\n The Z axis reached the bottom limit before the work piece was detected:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 796 / 1290\n \n \u2022 bottom limit reached while probing down program is paused\n The work piece is too high for any safe rapid removes:\n \u2022 material too high for safe traverse, program is paused\n One of these values in MATERIAL section of the PARAMETERS Tab is invalid (For example: if they\n@@ -36417,15 +36417,15 @@\n Warning messages will not pause a running program and are informational only.\n These messages indicate the corresponding sensor was activated before a probe test commenced:\n \u2022 ohmic probe detected before probing probe test aborted\n \u2022 float switch detected before probing probe test aborted\n \u2022 breakaway switch detected before probing probe test aborted\n This indicates that the corresponding sensor was activated during a consumable change:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 797 / 1290\n \n \u2022 breakaway, float, or ohmic activated during consumable change, motion is paused\n WARNING: MOTION WILL RESUME IMMEDIATELY UPON RESOLVING THIS CONDITION!\n \n CONSUMABLE CHANGE MOTION WILL RESUME IMMEDIATELY UPON RESOLVING THE CORRESPONDING SENSOR ACTIVATION.\n@@ -36456,15 +36456,15 @@\n released. QtPlasmaC will then automatically update its configuration the first time it is run after a\n LinuxCNC update.\n LinuxCNC is normally updated by entering the following commands into a terminal window (one at a\n time):\n sudo apt update\n sudo apt dist-upgrade\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 798 / 1290\n \n 10.8.12.2 Continuous Update\n Enhancements and bug fixes will not be available on a standard installation until a new minor release\n of LinuxCNC has been released. If the user wishes to update whenever a new QtPlasmaC version has\n been pushed, they could use the LinuxCNC Buildbot repository rather than the standard LinuxCNC\n@@ -36500,15 +36500,15 @@\n #led_torch_on {\n qproperty-diameter: 30;\n qproperty-color: green }\n #torch_enable::indicator {\n width: 30;\n height: 30}\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 799 / 1290\n \n 10.8.14.2 Create A New Style\n Custom stylesheets are enabled by setting the following option in the [GUI_OPTIONS] section of the\n <machine_name>.prefs file. This option must be set to the filename of the stylesheet as shown below.\n Custom style = the_cool_style.qss\n@@ -36568,15 +36568,15 @@\n background of active camera/laser buttons\n foreground of G-code editor cursor\n background of G-code display active line\n \n 10.8.14.3 Returning To The Default Styling\n The user may return to the default styling at any time by following the following steps:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 800 / 1290\n \n 1. Close QtPlasmaC if open.\n 2. Delete qtplasmac.qss from the machine config directory.\n 3. Delete qtplasmac_custom.qss from the machine config directory (if it exists).\n 4. Open <machine_name>.prefs file.\n@@ -36616,15 +36616,15 @@\n Function\n custom_pre_process This does basic processing of each line before any processing is done in\n the filter.\n custom_pre_parse\n This parses any G-code from a line before any parsing done in the filter.\n custom_post_parse This parses any G-code from a line after any parsing done in the filter.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 801 / 1290\n \n These methods are applied by the following procedure:\n \u2022 Define the method with an argument for the incoming data.\n \u2022 Add any required code to manipulate the data.\n \u2022 Return the resultant data.\n@@ -36659,15 +36659,15 @@\n \u2022 9:16 - Minimum 15, Maximum 20\n The user will need to run QtPlasmaC at the desired screen size to determine how many user buttons\n are available for use.\n All <machine_name>.prefs file settings for the buttons are found in the [BUTTONS] section.\n Button Names The text that appears on the button is set the following way:\n n Name = HAL Show\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 802 / 1290\n \n Where n is the button number and HAL Show is the text.\n For text on multiple lines, split the text with a \\ (backslash):\n n Name = HAL\\Show\n \n@@ -36702,15 +36702,15 @@\n .py extension. It is valid to use the ~ character as a shortcut for the users home directory.\n n Code = %halshow\n \n G-code\n To run G-code, just enter the code to be run.\n n Code = G0 X100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 803 / 1290\n \n To run an existing subroutine.\n n Code = o<the_subroutine> call\n \n <machine_name>.ini file variables can be entered by using the standard LinuxCNC G-code format. If\n@@ -36751,15 +36751,15 @@\n n Code = toggle-halpin the-hal-pin-name runcritical\n \n Toggle Alignment Laser HAL Pin\n The following code will allow the user to use a button to invert the current state of the alignment laser\n HAL bit pin:\n n Code = toggle-laser\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 804 / 1290\n \n This code is also able to be used as a multiple command with G-code or external commands but may\n control only the alignment laser HAL bit pin.\n The button colors will follow the state of the alignment laser HAL pin.\n After setting the code, upon clicking, the button will invert colors and the alignment laser HAL pin\n@@ -36799,15 +36799,15 @@\n time specified then the probe time will default to 10 seconds.\n n Code = probe-test 6\n \n Enabling a user button as a Probe Test button will add an external HAL pin that may be connected\n from a pendant etc. HAL connections to this HAL pin needs to be specified in a postgui HAL file as\n the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 805 / 1290\n \n Ohmic Test\n QtPlasmaC will enable the Ohmic Probe Enable output signal and if the Ohmic Probe input is sensed,\n the LED indicator in the SENSOR Panel will light. The main purpose of this is to allow a quick test for\n a shorted torch tip.\n@@ -36844,15 +36844,15 @@\n HAL file as the HAL pin is not available until the QtPlasmac GUI has loaded.\n \n Load\n Loading a G-code program from the directory specified by the PROGRAM_PREFIX variable in the\n <machine_name>.ini file (usually ~/linuxcnc/nc_files) is possible by using the following format:\n n Code = load G-code.ngc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 806 / 1290\n \n If the user\u2019s G-code file is located in a sub-directory of the PROGRAM_PREFIX directory, it would be\n accessed by adding the sub-directory name to the beginning of the G-code file name. Example for a\n sub-directory named plasma:\n n Code = load plasma/G-code.ngc\n@@ -36893,15 +36893,15 @@\n portion of the button code. If the feed rate is omitted from the button code, framing motion velocity\n will default to the feed rate for the currently selected material.\n The following GUI buttons and Keyboard Shortcuts (if enabled in the SETTINGS Tab) are valid during\n Framing motion:\n 1. Pressing CYCLE STOP or the ESC keyboard shortcut - Stops Framing motion.\n 2. Pressing CYCLE PAUSE or the SPACE BAR keyboard shortcut- Pauses Framing motion.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 807 / 1290\n \n 3. Pressing CYCLE RESUME or the CTRL+r keyboard shortcut- Resumes paused Framing motion.\n 4. Changing the FEED SLIDER or any of the CTRL+0-9 keyboard shortcuts - Slows the feed rate.\n \n IF THE FEED RATE IS CHANGED FOR THE FRAMING MOTION, IT WILL BE NECESSARY TO RETURN THE\n@@ -36937,15 +36937,15 @@\n n Code = latest-file /home/me/linuxcnc/nc_files/qtplasmac-test\n \n User Manual\n This allows the showing/hiding of the online HTML user manual specific to the version of LinuxCNC\n currently running. Note that internet access is required for this functionality.\n n Code = user-manual\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 808 / 1290\n \n 10.8.15.2 Peripheral Offsets (Laser, Camera, Scribe, Offset Probe)\n Use the following sequence to set the offsets for a laser, camera, scribe, or offset probe:\n 1. Place a piece of scrap material under the torch.\n 2. The machine must be homed and idle before proceeding.\n@@ -36959,15 +36959,15 @@\n 7. Click the appropriate button to activate the peripheral.\n 8. The Get Peripheral Offsets dialog will now be showing.\n \n 9. Raise the Z axis so the torch and peripheral are clear of the material.\n 10. Jog the X/Y axes so that the peripheral is centered in the mark from the torch.\n 11. Click the GET OFFSETS button to get the offsets and a confirmation dialog will open.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 809 / 1290\n \n 12. Click SET OFFSETS and the offsets will now be saved.\n Canceling may be done at any stage by pressing the CANCEL button which will close the dialog and\n no changes will be saved.\n If CAMERA was selected at item 7 above and more than one camera exists then a camera selection\n@@ -36976,15 +36976,15 @@\n \n If PROBE was selected at item 7 above then a delay dialog will show prior to the confirmation dialog\n at item 11. This is for the delay required for the probe to deploy to its working position.\n \n It may be necessary to click the preview window to enable jogging. By following the above procedure\n the offsets are available for use immediately and no restart of LinuxCNC is required.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 810 / 1290\n \n 10.8.15.3 Keep Z Motion\n By default, QtPlasmaC will remove all Z motion from a loaded G-code file and add an initial Z movement\n to bring the torch near the top of travel at the beginning of the file. If the user wishes to use their\n table with a marker, a drag knife, diamond scribe, etc. mounted in the torch holder, QtPlasmaC has\n@@ -37081,15 +37081,15 @@\n qtplasmac.ext_ignore_arc_ok\n IGNORE OK\n qtplasmac.ext_cutrec_fwd\n CUT RECOVERY FWD\n qtplasmac.ext_cutrec_rev\n CUT RECOVERY REV\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n User Button Function\n Cancel any Cut Recovery\n movement\n Move up\n Move down\n Move right\n@@ -37159,15 +37159,15 @@\n Hide run = True\n Hide pause = True\n Hide abort = True\n \n For the 16:9 or 4:3 GUIs, the hiding of each of these GUI buttons will expose two more custom user\n buttons in the GUI.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 812 / 1290\n \n 10.8.15.6 Tuning Mode 0 Arc OK\n Mode 0 Arc OK relies on the arc voltage to set the Arc OK signal. This is accomplished by sampling the\n arc voltage every servo thread cycle. There needs to be a specified number of consecutive samples,\n all within a specified threshold for the Arc OK signal to be set. These voltages are also required to be\n@@ -37206,15 +37206,15 @@\n many different variables (electrical noise, incorrect THCAD tuning, etc.).\n After all contributing factors have been mitigated, if a small fluctuation still exists it is possible to\n eliminate it by widening the voltage window for which QtPlasmaC will display 0 V.\n The pin for adjusting this value is named plasmac.zero-window and the default value is set to 0.1. To\n change this value, add the pin and the required value to the custom.hal file.\n The following example would set the voltage window to be displayed as 0 V from -5 V to +5 V:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 813 / 1290\n \n setp plasmac.zero-window 5\n \n 10.8.15.9 Tuning Void Sensing\n In addition to the Void Slope setting in the PARAMETERS Tab there are two HAL pins to aid in the\n@@ -37244,15 +37244,15 @@\n HAL pin True:\n setp qtplasmac.tabs_always_enabled 1\n \n It is the responsibility of the operator to ensure that the machine is equipped with a suitable,\n working hardware E-stop. If using only a touchscreen to navigate the QtPlasmaC GUI, there is\n no way to stop automated machine motion on any tab but the MAIN tab.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 814 / 1290\n \n 10.8.15.12 Override Jog Inhibit Via Z+ Jog\n It is possible to override the jog inhibit by using the GUI or keyboard to jog in the Z+ direction rather\n than checking the Override Jog box on the SETTINGS Tab.\n This is done by changing the following option to True in the [GUI_OPTIONS] of the <machine_name>.prefs\n@@ -37347,15 +37347,15 @@\n cut recovery is deactivated\n \n The DEBUG state is for testing purposes only and will not normally be encountered.\n 10.8.15.14 QtPlasmaC Debug Print\n The plasmac HAL component has a HAL pin named plasmac.debug-print which if set to 1 (true) will\n print to terminal every state change as a debug aid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 815 / 1290\n \n 10.8.15.15 Hypertherm PowerMax Communications\n Communications can be established with a Hypertherm PowerMax plasma cutter that has a RS485\n port. This feature enables the setting of Cut Mode, Cutting Amperage and Gas Pressure automatically from the Cut Parameters of the material file. In addition, the user will be able to view the\n PowerMax\u2019s Arc On Time in hh:mm:ss format on the STATISTICS Tab.\n@@ -37391,15 +37391,15 @@\n 1. Disable PowerMax Comms from the MAIN Tab\n 2. Close LinuxCNC which will put the PowerMax into local mode during shutdown.\n 3. Turn the PowerMax off for 30 seconds and then power it back on.\n \n If PowerMax communications is active then selecting Mesh Mode will automatically select CPA mode\n on the PowerMax unit.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 816 / 1290\n \n To use the PowerMax communications feature it is necessary to have the Python pyserial module\n installed.\n If pyserial is not installed an error message will be displayed.\n \n@@ -37447,15 +37447,15 @@\n \n pylupdate5\n \n .py\n \n ../.py\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 817 / 1290\n \n The editing of the translation is done with the linguist application:\n linguist\n \n 1. Open the TS file and translate the strings\n@@ -37489,15 +37489,15 @@\n as:\n 1. ARC VOLTAGE\n 2. OHMIC SENSE\n 3. FLOAT SWITCH\n 4. BREAKAWAY SWITCH\n 5. ESTOP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 818 / 1290\n \n 10.8.17.2 NGC Samples\n There are some sample G-code files in the ~/linuxcnc/nc_files/examples/plasmac directory.\n 10.8.17.3 QtPlasmaC Specific G-codes\n Description\n@@ -37576,15 +37576,15 @@\n #<holes> = 2\n for holes less than 32 mm (1.26\u201d) diameter\n over cut length = 4 mm (0.157\u201d)\n #<holes> = 3\n for holes less than 32 mm (1.26\u201d) diameter\n for arcs less than 16 mm (0.63\u201d) radius\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut holes and arcs at 60% feed\n rate, turn torch off at hole end,\n continue hole path for over cut.\n Specify hole diameter for\n #<holes> = 1-4.\n@@ -37662,15 +37662,15 @@\n M67 E3 Q60 (reduce feed rate to 60%)\n G3 I10 (the hole)\n M67 E3 Q100 (restore feed rate to 100%)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Cut a hole with 60% reduced\n speed using the #<holes>\n command\n \n Cut a hole with over cut using\n@@ -37736,15 +37736,15 @@\n M3 $0 S1 (start cut)\n G1 X0\n G3 I10 (the hole)\n M5 $0 (end cut)\n G0 X0 Y0\n M2 (end job)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Description\n Select scribe and select torch\n at end of scribing\n \n Hole center spotting.\n \n@@ -37807,15 +37807,15 @@\n F/32\n \n This value is required to be entered into PnCconf during installation.\n \n If using a parallel port it may be necessary for the user to adjust the jumper setting and the subsequent scaling values on the Parameters Tab to achieve optimal results. Symptoms may include\n random torch raises or dives during otherwise stable cutting. Halscope plots may be useful in diagnosing these issues.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 822 / 1290\n \n Located on the rear of the THCAD is a calibration sticker showing:\n THCAD-nnn\n 0V\n 5V\n@@ -37855,15 +37855,15 @@\n RECOMMENDED.\n \n These values can be calculated by using this online calculator.\n \n There is a lowpass filter available which may be useful if using a THCAD and there is a lot of noise on\n the returned arc voltage.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 823 / 1290\n \n 10.8.17.6 RS485 Connections\n Hypertherm RS485 Wiring Diagram (wire colors inside the Hypertherm in parentheses):\n Connection at Machine Pin #\n 1 - Tx+ (Red)\n@@ -37876,56 +37876,56 @@\n DTECH DT-5019 USB to RS-485 converter adapter:\n \n Connection at Breakout Board\n ->RXD+\n ->RXD->T/R+\n ->T/R->GND\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 824 / 1290\n \n The following is necessary to convert a motherboard Serial connection or Serial card (RS232) to\n RS485:\n DTECH RS-232 to RS-485 converter:\n \n Serial card example (Sunnix SER5037A PCI Card shown with Breakout Board):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 825 / 1290\n \n 10.8.17.7 Arc OK With A Reed Relay\n An effective and very reliable method of obtaining an Arc OK signal from a plasma power supply\n without a CNC port is to mount a reed relay inside a non-conductive tube and wrap and secure three\n turns of the work lead around the tube.\n This assembly will now act as a relay that will switch on when current is flowing through the work\n lead which only occurs when a cutting arc has been established.\n This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the QtPlasmaC\n Modes sections for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 826 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 827 / 1290\n \n 10.8.17.8 Contact Load Schematics\n \n A full description is at Contact Load.\n \n 10.8.18 Known Issues\n 10.8.18.1 Keyboard Jogging\n There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and\n starting during jogging. This issue can be prevented by disabling the Operating System\u2019s autorepeat\n feature for all keys. QtPlasmaC uses this disabling feature by default for all keys only when the MAIN\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 828 / 1290\n \n Tab is visible, with the following exceptions when autorepeat is allowed with the MAIN Tab visible: Gcode editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System\u2019s autorepeat\n feature will be enabled for all keys.\n If the user wishes to prevent QtPlasmaC from changing the Operating System\u2019s autorepeat settings,\n enter the following option in the [GUI_OPTIONS] section of the <machine_name>.prefs file:\n@@ -37947,15 +37947,15 @@\n MDRO is a simple graphical front-end for LinuxCNC providing a display of data from Digital Read\n Out (DRO) scales. It provides functionality similar to a normal machinist\u2019s DRO display, allowing the\n user to use the DRO scales on the machine when operating in a manual-only (hand-cranked) mode.\n It is most useful for manual machines such as DRO equipped Bridgeport style mills that have been\n converted to CNC but still have the manual controls.\n MDRO is mouse and touch screen friendly.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 829 / 1290\n \n Figure 10.50: MDRO Window\n \n 10.9.2 Getting Started\n If your configuration is not currently set up to use MDRO, you can change it by editing the INI file. In\n@@ -37968,15 +37968,15 @@\n \n 10.9.2.1 INI File Options\n Other options that can be included on the [DISPLAY] section include:\n \u2022 MDRO_VAR_FILE = <file.var> - preload G54 - G57 coordinate system data.\n \u2013 Preload a .var file. This is typically the .var file used by the operational code.\n \u2022 POINT_SIZE = <n> - Set text point size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 830 / 1290\n \n \u2013 This option sets the size of the font used which sets the overall size of the window. The default\n point size is 20, Typical sizes are 20 to 30.\n \u2022 MM = 1 Set this if the DRO scales provide data scaled in millimeters.\n 10.9.2.2 Command Line Options\n@@ -38012,15 +38012,15 @@\n \u2013 a \u201dz\u201d button that zeros the value,\n \u2013 a \u201d1/2\u201d button that halves the value,\n \u2013 a entry field that can be used to set a user-defined value. This field can be set from the keyboard\n or from the on-screen keypad.\n \u2013 A \u201dI\u201d button that starts an index operation (see below),\n \u2022 a keypad used to set values in the entry field via a mouse or touchscreen,\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 831 / 1290\n \n \u2022 coordinate system selection buttons:\n \u2013 The \u201dmcs\u201d button selects the machine coordinate system. These are the raw values from the\n encoders connected to the mdro.axis.n pins.\n \u2013 The \u201dcs1\u201d - \u201dcs4\u201d buttons allow the user to select among one of four user-defined coordinate\n@@ -38038,15 +38038,15 @@\n The easiest way to see how MDRO works is to try it in a simulation environment. Add this section to the\n end of your simulation HAL file, usually \u201dhallib/core_sim.hal\u201d:\n loadusr -W mdro -l sim.var XYZ\n net x-pos-fb => mdro.axis.0\n net y-pos-fb => mdro.axis.1\n net z-pos-fb => mdro.axis.2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 832 / 1290\n \n Chapter 11\n \n G-code Programming\n 11.1 Coordinate Systems\n@@ -38073,15 +38073,15 @@\n will move from the current position to the position where the machine coordinates of the three axes\n will be at zero. You can use this command if you have a fixed position for the tool change or if your\n machine has an automatic tool changer. You can also use this command to clear the work area and\n access the workpiece in the vise.\n G53 is a non modal command. It must be used in every block where a move in machine coordinate\n system is desired.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 833 / 1290\n \n 11.1.3 Coordinate Systems\n \n Figure 11.1: Coordinate Systems Example\n Coordinate System Offsets\n@@ -38104,15 +38104,15 @@\n In the VAR file scheme, the first variable number stores the X offset, the second the Y offset and so on\n for all nine axes. There are numbered sets like this for each of the coordinate system offsets.\n Each of the graphical interfaces has a way to set values for these offsets. You can also set these values\n by editing the VAR file itself and then restart LinuxCNC so that the LinuxCNC reads the new values\n however this is not the recommended way. Using G10, G52, G92, G28.1, etc are better ways to set\n the variables. For our example, we will directly edit the file so that G55 will take the following values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 834 / 1290\n \n Table 11.1: Example of G55 parameters\n Axis\n X\n Y\n@@ -38178,15 +38178,15 @@\n uses parameters of \u2190coordinate system 4G58\n uses parameters of coordinate system 5G59\n uses \u2190parameters of coordinate system 6G59.1\n uses parameters of coordinate system 7G59.2 \u2190uses parameters of coordinate system 8G59.3\n uses parameters of coordinate system \u21909---=== Default Coordinate System\n One other variable in the VAR file becomes important when we think about offset systems. \u2190This variable is named 5220. In the default files its value is set to 1.00000. This \u2190means that when the LinuxCNC starts up it should use the first coordinate system as its \u2190default. If you set this to 9.00000 it would use the ninth offset system as its default \u2190for start up and reset. Any value other than an integer (decimal really) between 1 and \u21909, or a missing 5220 variable will cause the LinuxCNC to revert to the default value of \u21901.00000 on start up.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 835 / 1290\n \n === Setting Coordinate System Offsets\n The G10 L2x command can be used to set coordinate system offsets:\n * \u2019G10 L2 P(1-9)\u2019 - Set offset(s) to a value. Current position irrelevant (see <<gcode:g10- \u2190l2,G10 L2>> for details).\n * \u2019G10 L20 P(1-9)\u2019 - Set offset(s) so current position becomes a value (see <<gcode:g10-l20 \u2190,G10 L20>> for details).\n@@ -38209,15 +38209,15 @@\n \n \u2190-\n \n [[sec:g92-axes-offsets]]\n == G92 Axes Offsets\n G92 is the most misunderstood and cleverest command programmable with LinuxCNC. The way it \u2190works has changed a bit between the first versions and the current one. These changes \u2190have doubt baffled many users. They should be seen as a command producing a temporary \u2190offset, which applies to all the other offsets.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 836 / 1290\n \n [[sec:g92-commands]]\n === The G92 commands\n \u2019G92\u2019 is typically used in two conceptually different ways: as a \u201dglobal coordinate system\n offset\u201d or as a \u201dlocal coordinate system offset\u201d.\n@@ -38244,15 +38244,15 @@\n \n \u2190\u2190\u2190-\n \n [NOTE]\n It is good practice to clear the \u2019G92\u2019 offsets at the end of their use with \u2019G92.1\u2019 or \u2019G92 \u2190.2\u2019. When starting up LinuxCNC with \u2019G92\u2019 persistence enabled (the default), any offsets \u2190in the \u2019G92\u2019 variables will be applied when an axis is homed. See <<sec:g92-persistence \u2190-cautions,G92 Persistence Cautions>> below.\n === Setting G92 Values\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 837 / 1290\n \n There are at least two ways to set G92 values:\n * With a right click on the position displays in tklinuxcnc, a window opens where it is\n possible to enter a value.\n * With the G92 command\n@@ -38286,15 +38286,15 @@\n * 5218 - V Axis Offset\n * 5219 - W Axis Offset\n where 5210 is the \u2019G92\u2019 enable flag (1 for enabled, 0 for disabled) and 5211 to 5219 are \u2190the axis offsets. If you are seeing unexpected positions as the result of a commanded \u2190move, as a result of storing an offset in a previous program and not clearing them at \u2190the end then issue a G92.1 in the MDI window to clear the stored offsets.\n If G92 values exist in the VAR file when LinuxCNC starts up, the G92 values in the var file \u2190will be applied to the values of the current location of each axis. If this is home \u2190position and home position is set as machine zero everything will be correct. Once home \u2190has been established using real machine switches, or by moving each axis to a known home \u2190position and issuing an axis home command, any G92 offsets will be applied. If you have \u2190a G92 X1 in effect when you home the X axis the DRO will read \u2019X: 1.000\u2019 instead of the \u2190expected \u2019X: 0.000\u2019 because the G92 was applied to the machine origin. If you issue a \u2190G92.1 and the DRO now reads all zeros then you had a G92 offset in effect when you last \u2190ran LinuxCNC.\n Unless your intention is to use the same G92 offsets in the next program, the best practice \u2190is to issue a G92.1 at the end of any G code files where you use G92 offsets.\n When a program is aborted during processing that has \u2019G92\u2019 offsets in effect a startup will \u2190cause them to become active again. As a safeguard, always have your preamble to set the \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 838 / 1290\n \n environment as you expect it. Additionally, \u2019G92\u2019 persistence may be disabled by \u2190setting \u2019DISABLE_G92_PERSISTENCE = 1\u2019 in the \u2019[RS274NGC]\u2019 section of the INI file.\n [[sec:g92-g52-interaction-cautions]]\n === G92 and G52 Interaction Cautions\n \u2019G52\u2019 and \u2019G92\u2019 share the same offset registers. Unless \u2019G92\u2019 persistence is disabled in \u2190the INI file (see <<sec:g92-commands,G92 Commands>>), \u2019G52\u2019 offsets will also persist \u2190after machine reset, \u2019M02\u2019 or \u2019M30\u2019. Beware that a \u2019G52\u2019 offset in effect during a \u2190program abort may result in unintended offsets when the next program is run. See <<sec: \u2190g92-persistence-cautions,G92 Persistence Cautions>> above.\n@@ -38328,15 +38328,15 @@\n running in each case at Z0. If the mill were at the zero position, a G92 Z1.0000 issued at the head\n of the program would shift everything an inch. You might also shift the whole pattern around in the\n XY plane by adding some X and Y offsets with G92. If you do this you should add a G92.1 command\n just before the M2 that ends the program. If you do not, other programs that you might run after this\n one will also use that G92 offset. Furthermore it would save the G92 values when you shut down the\n LinuxCNC and they will be recalled when you start up again.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 839 / 1290\n \n 11.1.4.1 Sample Program Using G52 Offsets\n (To be written)\n \n 11.2 Tool Compensation\n@@ -38356,15 +38356,15 @@\n \n 11.2.1.1 Using G10 L1/L10/L11\n The G10 L1/L10/L11 commands can be used to set tool table offsets:\n \u2022 G10 L1 P__n__ - Set offset(s) to a value. Current position irrelevant (see G10 L1 for details).\n \u2022 G10 L10 P__n__ - Set offset(s) so current position w/ fixture 1-8 becomes a value (see G10 L10 for\n details).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 840 / 1290\n \n \u2022 G10 L11 P__n__ - Set offset(s) so current position w/ fixture 9 becomes a value (see G10 L11 for\n details).\n \n This is only a brief presentation, refer to the reference guide of the G-code for more detailed explanations.\n@@ -38476,15 +38476,15 @@\n Tool numbers should be unique. Lines beginning with a semicolon are ignored.\n The units used for the length, diameter, etc., are in machine units.\n You will probably want to keep the tool entries in ascending order, especially if you are going to be\n using a randomizing tool changer. Although the tool table does allow for tool numbers in any order.\n One line may contain as many as 16 entries, but will likely contain much fewer. The entries for T (tool\n number) and P (pocket number) are required. The last entry (a remark or comment, preceded by a\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 841 / 1290\n \n semicolon) is optional. It makes reading easier if the entries are arranged in columns, as shown in\n the table, but the only format requirement is that there be at least one space or tab after each of the\n entries on a line and a newline character at the end of each entry.\n The meanings of the entries and the type of data to be put in each are as follows.\n@@ -38523,15 +38523,15 @@\n tool, it does not matter what number is in this column.\n The Comment column may optionally be used to describe the tool. Any type of description is OK. This\n column is for the benefit of human readers only. The comment must be preceded by a semicolon.\n \n Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the\n 2.4.x release, one tool table format is used for all machines.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 842 / 1290\n \n 11.2.2.2 Tool IO\n The non-realtime program specified by [EMCIO]EMCIO = io is conventionally used for tool changer\n management (and other io functions for enabling LinuxCNC and the control of coolant/lube hardware).\n The HAL pins used for tool management are prefixed with iocontrol.0..\n@@ -38564,15 +38564,15 @@\n c. iocontrol.0.tool-prep-pocket = 0\n 5. At M-code M6 (following iocontrol.0.tool-changed pin 0-->1):\n a. iocontrol.0.tool-from-pocket = pocket number used to retrieve tool\n 1. Tool number n==0 is not special.\n 2. Pocket number 0 is special as it indicates the spindle.\n 3. The current pocket number for tool n is the tooldata index (idx) for tool n.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 843 / 1290\n \n 4. At G-code command Tn:\n a. iocontrol.0.tool-prep-index = tooldata index (idx) for tool n\n b. iocontrol.0.tool-prep-number = n\n c. iocontrol.0.tool-prep-pocket = pocket number for tool n\n@@ -38612,15 +38612,15 @@\n \n 11.2.3 Tool Length Compensation\n The tool length compensations are given as positive numbers in the tool table. A tool compensation\n is programmed using G43 H_n_, where n is the index number of the desired tool in the tool table.\n It is intended that all entries in the tool table are positive. The value of H is checked, it must be a\n non-negative integer when read. The interpreter behaves as follows:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 844 / 1290\n \n 1. If G43 H_n_ is programmed, a call to the function USE_TOOL_LENGTH_OFFSET( \u0300\n __length__) \u0300 is\n made (where length is the length difference, read from the tool table, of the indexed tool n),\n tool_length_offset is repositioned in the machine settings model and the value of current_z in\n@@ -38648,15 +38648,15 @@\n 11.2.4 Cutter Radius Compensation\n Cutter Compensation allows the programmer to program the tool path without knowing the exact tool\n diameter. The only caveat is the programmer must program the lead in move to be at least as long as\n the largest tool radius that might be used.\n There are two possible paths the cutter can take since the cutter compensation can be on to the left\n or right side of a line when facing the direction of cutter motion from behind the cutter. To visualize\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 845 / 1290\n \n this imagine you were standing on the part walking behind the tool as it progresses across the part.\n G41 is your left side of the line and G42 is the right side of the line.\n The end point of each move depends on the next move. If the next move creates an outside corner the\n move will be to the end point of the compensated cut line. If the next move creates in an inside corner\n@@ -38671,46 +38671,46 @@\n Any move that is long enough to perform the compensation will work as the entry move. The minimum\n length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are\n issued after a G41/42 only the last one will move the tool to the compensated position.\n In the following figure you can see that the entry move is compensated to the right of the line. This\n puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end\n is at X0 the resulting profile would leave a bump due to the offset of the entry move.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 846 / 1290\n \n Figure 11.4: Entry Move\n Z axis motion may take place while the contour is being followed in the XY plane. Portions of the\n contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the\n next start point.\n Rapid moves may be programmed while compensation is turned on.\n Start a program with G40 to make sure compensation is off.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 847 / 1290\n \n 11.2.4.2 Examples\n \n Figure 11.5: Outside Profile\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 848 / 1290\n \n Figure 11.6: Inside Profile\n \n 11.3 Tool Edit GUI\n 11.3.1 Overview\n \n The tooledit elements described here are available since version 2.5.1 and later. In version 2.5.0, the\n graphical interface interface does not allow these adjustments.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 849 / 1290\n \n Figure 11.7: Tool Edit GUI - Overview\n The tooledit program can update the tool table file with edited changes by using the SaveFile button.\n The SaveFile button updates the system file but a separate action is required to update the tool table\n data used by a running LinuxCNC instance. With the AXIS GUI, both the file and the current tool\n@@ -38724,15 +38724,15 @@\n Figure 11.8: Tool Edit GUI - Column Sorting\n In Ubuntu Lucid 10.04 Tcl/Tk8.4 it is installed by default. The installation is performed as follows:\n sudo apt-get install tcl8.5 tk8.5\n \n Depending upon other applications installed on the system, it may be necessary to enable Tcl/Tk8.5\n with the commands:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n sudo update-alternatives --config tclsh\n sudo update-alternatives --config wish\n \n 850 / 1290\n \n ;# select the option for tclsh8.5\n@@ -38757,15 +38757,15 @@\n Stand Alone\n tooledit\n Usage:\n tooledit filename\n tooledit [column_1 ... column_n] filename\n Valid column names are: x y z a b c u v w diam front back orien\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 851 / 1290\n \n To synchronize a standalone tooledit with a running LinuxCNC application, the filename must resolve\n to the same [EMCIO]TOOL_TABLE filename specified in the LinuxCNC INI file.\n When using the program tooledit while LinuxCNC is running, G-code command execution or other\n programs may alter tool table data and the tool table file. File changes are detected by tooledit and a\n@@ -38808,15 +38808,15 @@\n program may end before the end of a file. Lines of a file that occur after the end of a program are not\n to be executed. The interpreter does not even read them.\n \n 11.4.2 Format of a line\n A permissible line of input code consists of the following, in order, with the restriction that there is a\n maximum (currently 256) to the number of characters allowed on a line.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 852 / 1290\n \n \u2022 an optional block delete character, which is a slash /.\n \u2022 an optional line number.\n \u2022 any number of words, parameter settings, and comments.\n \u2022 an end of line marker (carriage return or line feed or both).\n@@ -38859,15 +38859,15 @@\n B axis of machine\n C axis of machine\n Tool radius compensation number\n Feed rate\n General function (See table G-code Modal Groups)\n Tool length offset index\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 853 / 1290\n \n Table 11.3: (continued)\n Letter\n I\n J\n@@ -38924,15 +38924,15 @@\n \u2022 A number consists of:\n \u2013 an optional plus or minus sign, followed by\n \u2013 zero to many digits, followed, possibly, by\n \u2013 one decimal point, followed by\n \u2013 zero to many digits - provided that there is at least one digit somewhere in the number.\n \u2022 There are two kinds of numbers:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 854 / 1290\n \n \u2013 Integers, that does not have a decimal point,\n \u2013 Decimals, that do have a decimal point.\n \u2022 Numbers may have any number of digits, subject to the limitation on line length. Only about seventeen significant figures will be retained, however (enough for all known applications).\n \u2022 A non-zero number with no sign but the first character is assumed to be positive.\n@@ -38968,15 +38968,15 @@\n \u2022 Uninitialized global parameters, and unused subroutine parameters return the value zero when\n used in an expression.\n \u2022 Uninitialized named parameters signal an error when used in an expression.\n Mode\n Most parameters are read/write and may be assigned to within an assignment statement. However, for many predefined parameters this does not make sense, so they are are read-only - they\n may appear in expressions, but not on the left-hand side of an assignment statement.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 855 / 1290\n \n Persistence\n When LinuxCNC is shut down, volatile parameters lose their values. All parameters except numbered parameters in the current persistent range 1 are volatile. Persistent parameters are saved\n in the .var file and restored to their previous values when LinuxCNC is started again. Volatile\n numbered parameters are reset to zero.\n@@ -39017,15 +39017,15 @@\n 1 The range of persistent parameters may change as development progresses. This range is currently 5161- 5390. It is\n defined in the _required_parameters array in file the src/emc/rs274ngc/interp_array.cc .\n 2 The RS274/NGC interpreter maintains an array of numbered parameters.\n Its size is defined by the symbol\n RS274NGC_MAX_PARAMETERS in the file src/emc/rs274ngc/interp_internal.hh). This number of numerical parameters may\n also increase as development adds support for new parameters.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 856 / 1290\n \n \u2022 5221-5230 - Coordinate System 1, G54 for X, Y, Z, A, B, C, U, V, W & R. R denotes the XY rotation\n angle around the Z axis. Persistent.\n \u2022 5241-5250 - Coordinate System 2, G55 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n \u2022 5261-5270 - Coordinate System 3, G56 for X, Y, Z, A, B, C, U, V, W & R. Persistent.\n@@ -39063,15 +39063,15 @@\n read by the Interpreter and written to the file as it exits.\n Missing Parameters in the persistent range will be initialized to zero and written with their current\n values on the next save operation.\n The parameter numbers must be arranged in ascending order. An Parameter file out of order error\n will be signaled if they are not in ascending order.\n The original file is saved as a backup file when the new file is written.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 857 / 1290\n \n Table 11.4: Parameter File Format\n Parameter Number\n 5161\n 5162\n@@ -39109,15 +39109,15 @@\n are deleted and cannot be referred to anymore.\n It is an error to use a non-existent named parameter within an expression, or at the right-hand side\n of an assignment. Printing the value of a non-existent named parameter with a DEBUG statement like (DEBUG, <no_such_parameter>) will display the string #.\n Global parameters, as well as local parameters assigned to at the global level, retain their value once\n assigned even when the program ends, and have these values when the program is run again.\n The EXISTS function tests whether a given named parameter exists.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 858 / 1290\n \n 11.4.3.4 Predefined Named Parameters\n The following global read only named parameters are available to access internal state of the interpreter and machine state. They can be used in arbitrary expressions, for instance to control flow of\n the program with if-then-else statements. Note that new predefined named parameters can be added\n easily without changes to the source code.\n@@ -39186,15 +39186,15 @@\n 190\n 171\n 181\n 191\n \n \u2022 #<_ccomp> - Status of cutter compensation. Return values:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 859 / 1290\n \n Mode\n G40\n G41\n G41.1\n@@ -39251,15 +39251,15 @@\n \u2022 #<_spindle_css_mode> - Return 1 if constant surface speed mode (G96) is on, else 0.\n \u2022 #<_ijk_absolute_mode> - Return 1 if Absolute Arc distance mode (G90.1) is on, else 0.\n \u2022 #<_lathe_diameter_mode> - Return 1 if this is a lathe configuration and diameter (G7) mode is on,\n else 0.\n \u2022 #<_lathe_radius_mode> - Return 1 if this is a lathe configuration and radius (G8) mode is on, else\n 0.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 860 / 1290\n \n \u2022 #<_spindle_on> - Return 1 if spindle currently running (M3 or M4) else 0.\n \u2022 #<_spindle_cw> - Return 1 if spindle direction is clockwise (M3) else 0.\n \u2022 #<_mist> - Return 1 if mist (M7) is on.\n \u2022 #<_flood> - Return 1 if flood (M8) is on.\n@@ -39291,15 +39291,15 @@\n \u2022 #<_selected_pocket> - Return the tooldata index of the selected pocket post a T code. Default -1\n (no pocket selected).\n \u2022 #<_value> - Return value from the last O-word return or endsub. Default value 0 if no expression\n after return or endsub. Initialized to 0 on program start.\n \u2022 #<_value_returned> - 1.0 if the last O-word return or endsub returned a value, 0 otherwise. Cleared\n by the next O-word call.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 861 / 1290\n \n \u2022 #<_task> - 1.0 if the executing interpreter instance is part of milltask, 0.0 otherwise. Sometimes\n it is necessary to treat this case specially to retain proper preview, for instance when testing the\n success of a probe (G38.n) by inspecting #5070, which will always fail in the preview interpreter\n (e.g. Axis).\n@@ -39343,15 +39343,15 @@\n o100 endif\n \n This feature was motivated by the desire for stronger coupling between user interface components like\n GladeVCP and PyVCP to act as parameter source for driving NGC file behavior. The alternative - going\n through the M6x pins and wiring them - has a limited, non-mnemonic namespace and is unnecessarily\n cumbersome just as a UI/Interpreter communications mechanism.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 862 / 1290\n \n 11.4.5 Expressions\n An expression is a set of characters starting with a left bracket [ and ending with a balancing right\n bracket ] . In between the brackets are numbers, parameter values, mathematical operations, and\n other expressions. An expression is evaluated to produce a number. The expressions on a line are\n@@ -39390,15 +39390,15 @@\n less than 1e-6 (this value is defined as TOLERANCE_EQUAL in src/emc/rs274ngc/interp_internal.hh).\n \n 11.4.8 Functions\n The available functions are shown in following table. Arguments to unary operations which take angle\n measures (COS, SIN, and TAN ) are in degrees. Values returned by unary operations which return\n angle measures (ACOS, ASIN, and ATAN) are also in degrees.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 863 / 1290\n \n Table 11.10: G-code Functions\n Function Name\n ATAN[arg]/[arg]\n ABS[arg]\n@@ -39459,15 +39459,15 @@\n If a parameter setting of the same parameter is repeated on a line, #3=15 #3=6, for example, only\n the last setting will take effect. It is silly, but not illegal, to set the same parameter twice on the same\n line.\n If more than one comment appears on a line, only the last one will be used; each of the other comments\n will be read and its format will be checked, but it will be ignored thereafter. It is expected that putting\n more than one comment on a line will be very rare.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 864 / 1290\n \n 11.4.10 Item order\n The three types of item whose order may vary on a line (as given at the beginning of this section) are\n word, parameter setting, and comment. Imagine that these three types of item are divided into three\n groups by type.\n@@ -39508,15 +39508,15 @@\n F100 G1 @.5 ^90\n G91 @.5 ^90\n @.5 ^90\n @.5 ^90\n @.5 ^90\n G90 G0 X0 Y0 M2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 865 / 1290\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 Figure 11.10: Polar Spiral\n@@ -39527,15 +39527,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 866 / 1290\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@@ -39559,15 +39559,15 @@\n G92.2, G92.3,\n G0, G1, G2, G3, G33, G38.n, G73, G76, G80,\n G81 G82, G83, G84, G85, G86, G87, G88,\n G89\n G17, G18, G19, G17.1, G18.1, G19.1\n G90, G91\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 867 / 1290\n \n Table 11.11: (continued)\n Modal Group Meaning\n Arc IJK Distance Mode\n (Group 4)\n@@ -39630,15 +39630,15 @@\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 11.4.14 Comments\n Comments are purely informative and have no influence on machine behaviour.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 868 / 1290\n \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 Comments may appear between words, but not between words and their corresponding parameter.\n@@ -39676,15 +39676,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 869 / 1290\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@@ -39718,15 +39718,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 870 / 1290\n \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 the next program could start in a dangerous condition.\n@@ -39759,15 +39759,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 871 / 1290\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@@ -39803,15 +39803,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 872 / 1290\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@@ -39845,15 +39845,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 873 / 1290\n \n 11.5.2 G-Code Quick Reference Table\n Code\n G0\n G1\n@@ -39959,15 +39959,15 @@\n Back-boring Cycle (not yet implemented)\n Boring Cycle, Stop, Manual Out (not yet\n implemented)\n Boring Cycle, Dwell, Feed Out\n Distance Mode\n Arc Distance Mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Code\n G92\n G92.1 G92.2\n G92.3\n G93 G94 G95\n G96 G97\n@@ -40015,15 +40015,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 875 / 1290\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@@ -40066,15 +40066,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 876 / 1290\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@@ -40109,15 +40109,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 <X- Z- Y- I- K- P->\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 877 / 1290\n \n \u2022 Y - helix\n \u2022 I - X offset\n \u2022 K - Z offset\n \u2022 P - number of turns\n@@ -40149,28 +40149,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 878 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 879 / 1290\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@@ -40189,15 +40189,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 880 / 1290\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@@ -40232,15 +40232,15 @@\n G5 X- Y- <I- J-> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 881 / 1290\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@@ -40277,15 +40277,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 882 / 1290\n \n 11.5.9 G5.2 G5.3 NURBS Block\n G5.2 <P-> <X- Y-> <L->\n X- Y- <P->\n ...\n@@ -40311,15 +40311,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 883 / 1290\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@@ -40329,15 +40329,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 884 / 1290\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@@ -40367,15 +40367,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 885 / 1290\n \n 11.5.14 G10 L2 Set Coordinate System\n G10 L2 P- <axes R->\n \n \u2022 P - coordinate system (0-9)\n@@ -40435,15 +40435,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 886 / 1290\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@@ -40477,15 +40477,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 887 / 1290\n \n 11.5.16 G10 L11 Set Tool Table\n G10 L11 P- axes <R- I- J- Q->\n \n \u2022 P - tool number\n@@ -40513,15 +40513,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 888 / 1290\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@@ -40554,15 +40554,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 889 / 1290\n \n 11.5.21 G30, G30.1 Go/Set Predefined Position\n \n Only use G30 when your machine is homed to a repeatable position and the desired G30\n position has been stored with G30.1.\n@@ -40598,15 +40598,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 890 / 1290\n \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 Technical Info\n@@ -40642,15 +40642,15 @@\n \u2022 $ - optional spindle selector\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 891 / 1290\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@@ -40685,15 +40685,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 892 / 1290\n \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 for probe contact closed (touching), FALSE for probe contact open.\n@@ -40755,15 +40755,15 @@\n coordinate consisting of XYZABCUVW of each successful straight probe in it. The file must be closed\n with (PROBECLOSE). For more information see the Comments section.\n An example file smartprobe.ngc is included (in the examples directory) to demonstrate using probe\n moves to log to a file the coordinates of a part. The program smartprobe.ngc could be used with\n ngcgui with minimal changes.\n It is an error if:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 893 / 1290\n \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@@ -40795,15 +40795,15 @@\n tool number.\n \n G41/G42 D0 is a little special. Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the Tool Change section). On nonrandom tool changer machines,\n G41/G42 D0 applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no\n tool is in the spindle. On random tool changer machines, G41/G42 D0 applies the TLO of the tool T0\n defined in the tool table file (or causes an error if T0 is not defined in the tool table).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 894 / 1290\n \n To start cutter compensation to the left of the part profile, use G41. G41 starts cutter compensation\n to the left of the programmed line as viewed from the positive end of the axis perpendicular to the\n plane.\n To start cutter compensation to the right of the part profile, use G42. G42 starts cutter compensation\n@@ -40837,15 +40837,15 @@\n G43 <H->\n \n \u2022 H - tool number (optional)\n \u2022 G43 - enables tool length compensation. G43 changes subsequent motions by offsetting the axis\n coordinates by the length of the offset. G43 does not cause any motion. The next time a compensated\n axis is moved, that axis\u2019s endpoint is the compensated location.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 895 / 1290\n \n G43 without an H word uses the currently loaded tool from the last Tn M6.\n G43 Hn uses the offset for tool n.\n The active tool length compensation values are stored in the numbered parameters 5401-5409.\n \n@@ -40878,15 +40878,15 @@\n \n \u2022 See G90 & T & M6 sections for more information.\n It is an error if:\n \u2022 motion is commanded on the same line as G43.1\n \n G43.1 does not write to the tool table.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 896 / 1290\n \n 11.5.30 G43.2 Apply additional Tool Length Offset\n G43.2 H- axes-\n \n \u2022 H - tool number\n@@ -40916,15 +40916,15 @@\n \n 11.5.32 G52 Local Coordinate System Offset\n G52 axes\n \n G52 is used in a part program as a temporary \u201dlocal coordinate system offset\u201d within the workpiece\n coordinate system. More information on G52 is in the Local and Global Offsets section.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 897 / 1290\n \n 11.5.33 G53 Move in Machine Coordinates\n G53 axes\n \n To move in the machine coordinate system, program G53 on the same line as a linear move. G53 is\n@@ -41065,15 +41065,15 @@\n 5270\n 5290\n 5310\n 5330\n 5350\n 5370\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 898 / 1290\n \n Table 11.16: (continued)\n Select CS\n G59.3 9\n \n@@ -41122,15 +41122,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 899 / 1290\n \n 11.5.38 G70 Lathe finishing cycle\n G70 Q- <X-> <Z-> <D-> <E-> <P->\n \n \u2022 Q - The subroutine number.\n@@ -41180,15 +41180,15 @@\n G72\n Q- <X-> <Z-> <D-> <I-> <R->\n G72.1 Q- <X-> <Z-> <D-> <I-> <R->\n G72.2 Q- <X-> <Z-> <D-> <I-> <R->\n \n 11.5.39\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 900 / 1290\n \n \u2022 Q - The subroutine number.\n \u2022 X - The starting X position, defaults to the initial position.\n \u2022 Z - The starting Z position, defaults to the initial position.\n \u2022 D - The remaining distance to the profile, defaults to 0.\n@@ -41229,15 +41229,15 @@\n \n \u2022\n \n 11.5.26\n \n is active.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 901 / 1290\n \n 11.5.40 G73 Drilling Cycle with Chip Breaking\n G73 X- Y- Z- R- Q- <L->\n \n \u2022 R - retract position along the Z axis.\n@@ -41267,15 +41267,15 @@\n \u2022 F- - Feed rate (spindle speed multiplied by distance traveled per revolution (thread pitch)).\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 902 / 1290\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@@ -41290,15 +41290,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 903 / 1290\n \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 \u2022 I- - The thread peak offset from the drive line. Negative I values are external threads, and positive\n@@ -41336,15 +41336,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 904 / 1290\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@@ -41371,15 +41371,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 905 / 1290\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@@ -41413,15 +41413,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 906 / 1290\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@@ -41452,15 +41452,15 @@\n same order as the earlier example. But the program writing economy of a good canned cycle should\n be obvious.\n \n Line numbers are not needed but help clarify these examples.\n \n Eight Holes\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 907 / 1290\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@@ -41483,15 +41483,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 908 / 1290\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@@ -41513,15 +41513,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 909 / 1290\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@@ -41549,15 +41549,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 910 / 1290\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@@ -41570,15 +41570,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 911 / 1290\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@@ -41599,27 +41599,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 912 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 913 / 1290\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@@ -41629,15 +41629,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 914 / 1290\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@@ -41670,15 +41670,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 915 / 1290\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@@ -41710,15 +41710,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.50\n \n 916 / 1290\n \n G86 Boring Cycle, Spindle Stop, Rapid Move Out\n \n@@ -41762,15 +41762,15 @@\n \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 917 / 1290\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@@ -41807,15 +41807,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 918 / 1290\n \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 See the Parameters section for more information.\n@@ -41858,15 +41858,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.5.60\n \n 919 / 1290\n \n G96, G97 Spindle Control Mode\n \n@@ -41910,15 +41910,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 920 / 1290\n \n 11.6 M-Codes\n 11.6.1 M-Code Quick Reference Table\n Code\n M0 M1\n@@ -41987,15 +41987,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 921 / 1290\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@@ -42031,15 +42031,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 922 / 1290\n \n M4 $1\n \n And this will stop spindle 2 and leave the other spindles rotating:\n M5 $2\n@@ -42075,15 +42075,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.7\n \n 923 / 1290\n \n M7, M8, M9 Coolant Control\n \n@@ -42121,15 +42121,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.6.9\n \n 924 / 1290\n \n M48, M49 Speed and Feed Override Control\n \n@@ -42165,15 +42165,15 @@\n \n 11.6.13 M53 Feed Stop Control\n \u2022 M53 <P1> - 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 925 / 1290\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@@ -42206,15 +42206,15 @@\n 11.6.16 M66 Wait on Input\n M66 P- | E- <L->\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 926 / 1290\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@@ -42253,15 +42253,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 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 927 / 1290\n \n 11.6.18 M68 Analog Output, Immediate\n M68 E- Q-\n \n \u2022 M68 - set an analog output immediately.\n@@ -42293,15 +42293,15 @@\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 \u2022 mist (M7) and flood (M8) status\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 928 / 1290\n \n \u2022 speed override (M51) and feed override (M50) settings\n \u2022 adaptive feed setting (M52)\n \u2022 feed hold setting (M53)\n Note that in particular, the motion mode (G1 etc) is NOT restored.\n@@ -42339,15 +42339,15 @@\n g91 (relative mode)\n F5 (low feed)\n S300 (low rpm)\n (debug, in subroutine, state now:)\n o<showstate> call\n O<imperialsub> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 929 / 1290\n \n ; main program\n g21 (metric)\n g90 (absolute)\n f200 (fast speed)\n@@ -42392,15 +42392,15 @@\n (debug, in main, state now:)\n o<showstate> call\n o<imperialsub> call\n (debug, back in main, state now:)\n o<showstate> call\n m2\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 930 / 1290\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@@ -42442,15 +42442,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 931 / 1290\n \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 files.\n@@ -42491,15 +42491,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 932 / 1290\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@@ -42533,15 +42533,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 \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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 933 / 1290\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@@ -42590,15 +42590,15 @@\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 (i.e. parameters\n whose names begin with the underscore character \u201d_\u201d).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.7.4.1\n \n 934 / 1290\n \n Fanuc-Style Numbered Programs\n \n@@ -42647,15 +42647,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 935 / 1290\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@@ -42724,15 +42724,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 936 / 1290\n \n o100 while [#1 LT 3]\n (msg, Loop Done!)\n M2\n \n@@ -42781,15 +42781,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 11.7.7\n \n 937 / 1290\n \n Repeat\n \n@@ -42832,15 +42832,15 @@\n o<myfile> endsub\n M2\n \n The file names are lowercase letters only so o<MyFile> is converted to o<myfile> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 938 / 1290\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@@ -42876,15 +42876,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 939 / 1290\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@@ -42920,37 +42920,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 940 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 941 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 942 / 1290\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@@ -42960,15 +42960,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 943 / 1290\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@@ -42980,15 +42980,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 944 / 1290\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@@ -43022,15 +43022,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 945 / 1290\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@@ -43053,15 +43053,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 946 / 1290\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@@ -43085,15 +43085,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 947 / 1290\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@@ -43115,15 +43115,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 948 / 1290\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@@ -43160,28 +43160,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 949 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 950 / 1290\n \n Chapter 12\n \n Virtual Control Panels\n 12.1 PyVCP\n@@ -43191,15 +43191,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 951 / 1290\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 <pyvcp>\n@@ -43207,15 +43207,15 @@\n <pyvcp>\n <label text=\u201dThis is a LED indicator\u201d/>\n <led/>\n </pyvcp>\n \n Figure 12.2: Simple PyVCP LED Panel Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 952 / 1290\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@@ -43260,15 +43260,15 @@\n </pyvcp>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 953 / 1290\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@@ -43286,15 +43286,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 954 / 1290\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@@ -43333,15 +43333,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 955 / 1290\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@@ -43378,15 +43378,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 956 / 1290\n \n \u2022 white\n \u2022 black\n \u2022 blue and blue1 - 4\n \u2022 cyan and cyan1 - 4\n@@ -43415,15 +43415,15 @@\n <font>(\u201dHelvetica\u201d,20)</font>\n </label>\n \n The above code produced this example:\n \n Figure 12.3: Simple Label Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 957 / 1290\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@@ -43460,15 +43460,15 @@\n red.\n \u2022 <height>n</height> - sets the height of the LED in pixels.\n \u2022 <width>n</width> - sets the width of the LED in pixels.\n \u2022 <disable_pin>false</disable_pin> - when true adds a disable pin to the led.\n \u2022 <disabled_color>color</disabled_color> - sets the color of the LED to color when the pin is disabled.\n Round LED\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 958 / 1290\n \n <led>\n <halpin>\u201dmy-led\u201d</halpin>\n <size>50</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -43497,15 +43497,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 <padx>n</padx> - where n is the amount of extra horizontal extra space.\n \u2022 <pady>n</pady> - where n is the amount of extra vertical extra space.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 959 / 1290\n \n \u2022 <activebackground>\u201dcolor\u201d</activebackground> - the cursor over color set to color.\n \u2022 <fg>\u201dcolor\u201d</fg> - the foreground color set to color.\n \u2022 <bg>\u201dcolor\u201d</bg> - the background color set to color.\n \u2022 <disable_pin>True</disable_pin> - disable pin.\n@@ -43534,15 +43534,15 @@\n \n Figure 12.8: Checked button\n Checkbutton Code Example\n <checkbutton>\n <halpin>\u201dcoolant-chkbtn\u201d</halpin>\n <text>\u201dCoolant\u201d</text>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 960 / 1290\n \n <initval>1</initval>\n </checkbutton>\n <checkbutton>\n <halpin>\u201dchip-chkbtn\u201d</halpin>\n@@ -43570,15 +43570,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 <orient>HORIZONTAL</orient>\n to display horizontally.\n 12.1.6.7 Number Displays\n Number displays can use the following formatting options\n \u2022 <font>(\u201dFont Name\u201d,n)</font>, where n is the font size.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 961 / 1290\n \n \u2022 <width>_n_</width>, where n is the overall width of the space used.\n \u2022 <justify>_pos_</justify>, where pos is LEFT, CENTER, or RIGHT (doesn\u2019t work).\n \u2022 <padx>_n_</padx>, where n is the amount of extra horizontal extra space.\n \u2022 <pady>_n_</pady>, where n is the amount of extra vertical extra space.\n@@ -43607,15 +43607,15 @@\n <width>6</width>\n </s32>\n \n The above code produced this example:\n \n Figure 12.12: Simple s32 Number Example\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 962 / 1290\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 <u32>.\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@@ -43650,15 +43650,15 @@\n </bar>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 963 / 1290\n \n <meter>\n <halpin>\u201dmymeter\u201d</halpin>\n <text>\u201dBattery\u201d</text>\n <subtext>\u201dVolts\u201d</subtext>\n@@ -43684,15 +43684,15 @@\n <spinbox>\n <halpin>\u201dmy-spinbox\u201d</halpin>\n <min_>-12</min_>\n <max_>33</max_>\n <initval>0</initval>\n <resolution>0.1</resolution>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 964 / 1290\n \n <format>\u201d2.3f\u201d</format>\n <font>(\u201dArial\u201d,30)</font>\n <param_pin>1</param_pin>\n </spinbox>\n@@ -43726,15 +43726,15 @@\n <min_>100</min_>\n <max_>0</max_>\n <param_pin>1</param_pin>\n </scale>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 965 / 1290\n \n Figure 12.16: Simple Scale Example\n \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@@ -43757,15 +43757,15 @@\n <edgecolor>\u201dgreen\u201d</edgecolor>\n <dotcolor>\u201dblack\u201d</dotcolor>\n <param_pin>1</param_pin>\n </dial>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 966 / 1290\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@@ -43777,15 +43777,15 @@\n <halpin>\u201dmy-wheel\u201d</halpin>\n <cpr>45</cpr>\n <size>250</size>\n </jogwheel>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 967 / 1290\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@@ -43799,15 +43799,15 @@\n </vbox>\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 968 / 1290\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@@ -43820,15 +43820,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 969 / 1290\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@@ -43864,15 +43864,15 @@\n <text>\u201dRIDGE\u201d</text>\n <bd>3</bd>\n </button>\n </hbox>\n \n The above code produced this example:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 970 / 1290\n \n Figure 12.24: Containers Borders Showcase\n Fill Container fill are specified with the <boxfill fill=\u201d\u201d/> 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 <boxfill fill =\u201dstyle\u201d/>\n@@ -43899,15 +43899,15 @@\n The above code produced this example:\n \n Figure 12.25: Simple hbox Example\n Inside an Hbox, you can use the <boxfill fill=\u201d\u201d/>, <boxanchor anchor=\u201d\u201d/>, and <boxexpand expand=\u201d\u201d/> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 971 / 1290\n \n <vbox>\n <relief>RIDGE</relief>\n <bd>6</bd>\n <label><text>\u201da vbox:\u201d</text></label>\n@@ -43933,15 +43933,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 <tablerow/> tag. A contained widget may span rows or columns through the use of the <tablespan\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 972 / 1290\n \n rows= cols=/> tag. The sides of the cells to which the contained widgets \u201dstick\u201d may be set through\n the use of the <tablesticky sticky=/> tag. A table expands on its flexible rows and columns.\n Table Code Example\n <table flexible_rows=\u201d[2]\u201d flexible_columns=\u201d[1,4]\u201d>\n@@ -43985,15 +43985,15 @@\n <bar>\n <halpin>\u201dspindle-speed\u201d</halpin>\n <max_>5000</max_>\n </bar>\n </vbox>\n <vbox>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <label>\n <text>\u201d(this is the green eggs tab)\u201d</text>\n </label>\n </vbox>\n <vbox>\n <label>\n@@ -44002,15 +44002,15 @@\n </vbox>\n </tabs>\n \n The above code produced this example showing each tab selected.\n \n 973 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 974 / 1290\n \n Figure 12.29: Simple Tabs Example\n \n 12.2 PyVCP Examples\n 12.2.1 AXIS\n@@ -44031,15 +44031,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 975 / 1290\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@@ -44048,27 +44048,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\n will be built upon a StepConf Wizard generated configuration. First we run the StepConf Wizard\n and configure our machine, on the Advanced Configuration Options page we then make a couple of\n selections to add a blank PyVCP panel as shown in the following figure. For this example we named\n the configuration pyvcp_xyz on the Basic Machine Information page of the StepConf Wizard.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 976 / 1290\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 <pyvcp></pyvcp> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n In your custompanel.xml file we will add the description of the widgets.\n <pyvcp>\n <labelframe text=\u201dJog Buttons\u201d>\n <font>(\u201dHelvetica\u201d,16)</font>\n <!-- the X jog buttons -->\n <hbox>\n@@ -44122,15 +44122,15 @@\n </button>\n </hbox>\n <!-- the jog speed slider -->\n <vbox>\n \n 977 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 978 / 1290\n \n <relief>RAISED</relief>\n <bd>3</bd>\n <label>\n <text>\u201dJog Speed\u201d</text>\n@@ -44154,15 +44154,15 @@\n the error is a spelling or syntax error and it will be there.\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 979 / 1290\n \n net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus\n # connect the Y PyVCP buttons\n net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus\n net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus\n@@ -44213,15 +44213,15 @@\n <relief>RIDGE</relief>\n <bd>2</bd>\n <label>\n <text>\u201dPin 10\u201d</text>\n <font>(\u201dHelvetica\u201d,14)</font>\n </label>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 980 / 1290\n \n <led>\n <halpin>\u201dled-10\u201d</halpin>\n <size>25</size>\n <on_color>\u201dgreen\u201d</on_color>\n@@ -44261,15 +44261,15 @@\n start\n \n To run the HAL file we use the following command from a terminal window.\n ~$ halrun -I -f ptest.hal\n \n The following figure shows what a complete panel might look like.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 981 / 1290\n \n To add the rest of the parallel port pins just modify the XML and HAL files.\n To show the pins after running the HAL script use the following command at the halcmd prompt:\n halcmd: show pin\n Component Pins:\n@@ -44359,15 +44359,15 @@\n ptest.led-01 <== pin01\n ptest.led-02 <== pin02\n ptest.led-10 <== pin10\n ptest.led-11 <== pin11\n \n This will show you what pins are IN and what pins are OUT as well as any connections.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 982 / 1290\n \n 12.2.5 GS2 RPM Meter\n The following example uses the Automation Direct GS2 VDF driver and displays the RPM and other\n info in a PyVCP panel. This example is based on the GS2 example in the Hardware Examples section\n this manual.\n@@ -44417,15 +44417,15 @@\n <vbox>\n <relief>RAISED</relief>\n <bd>2</bd>\n <label>\n <text>\u201dFWD\u201d</text>\n <font>(\u201dHelvetica\u201d,18)</font>\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n <width>5</width>\n </label>\n <label width=\u201d2\u201d/>\n <rectled>\n <halpin>\u201dfwd-led\u201d</halpin>\n <height>\u201d30\u201d</height>\n@@ -44455,15 +44455,15 @@\n </hbox>\n </pyvcp>\n \n The above gives us a PyVCP panel that looks like the following.\n \n 983 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 984 / 1290\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@@ -44482,15 +44482,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 985 / 1290\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 <pyvcp>\n <!-- rapid to home button example -->\n@@ -44505,15 +44505,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 986 / 1290\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@@ -44543,15 +44543,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 GTK3 widget set.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 987 / 1290\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@@ -44575,31 +44575,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 988 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n To run this panel inside Touchy:\n $ cd configs/sim/touchy/gladevcp\n $ linuxcnc gladevcp_touchy.ini\n \n 989 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 990 / 1290\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@@ -44614,15 +44614,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 991 / 1290\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@@ -44657,15 +44657,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 <file>.ui or start a new one by just running the glade command from the shell.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 992 / 1290\n \n \u2022 If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up\n with source <linuxcncdir>/scripts/rip-environment, otherwise Glade won\u2019t find the LinuxCNCspecific widgets.\n \u2022 When asked for unsaved preferences, just accept the defaults and hit Close.\n \u2022 From Toplevels (toolbar), pick GtkWindow (first entry) as top level window. Set window1 as ID in\n@@ -44683,15 +44683,15 @@\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 GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless\n overridden by the -c <component name> option. If running AXIS, just try Show HAL configuration and\n inspect its pins.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 993 / 1290\n \n You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive).\n HAL containers have an associated HAL pin which is off by default, which causes all contained widgets to render inactive. A common use case would be to associate these container HAL pins with\n halui.machine.is-on or one of the halui.mode signals, to assure some widgets appear active only\n in a certain state.\n@@ -44726,15 +44726,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 994 / 1290\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@@ -44770,15 +44770,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 995 / 1290\n \n [RS274NGC]\n # gladevcp Demo specific Oword subs live here\n SUBROUTINE_PATH = ../../nc_files/gladevcp_lib\n \n@@ -44823,15 +44823,15 @@\n Re-parent GladeVCP into an existing window XID instead of creating a new top level\n window\n \n \u2190-\n \n \u2190-\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 996 / 1290\n \n -u FILE::\n Use File\u2019s as additional user defined modules with handlers\n -U USEROPT::\n pass USEROPTs to Python modules\n@@ -44864,15 +44864,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 <halcmd file> option (see previous section).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 997 / 1290\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@@ -44903,15 +44903,15 @@\n Exceptions to this rule currently are:\n \n \u2022 HAL_Spinbutton and HAL_ComboBox, which have two pins: a <widgetname>-f (float) and a <widgetname>\n (s32) pin\n \u2022 HAL_ProgressBar, which has a <widgetname>-value input pin, and a <widgetname>-scale input\n pin.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 998 / 1290\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 PyGObject API Reference.\n@@ -44949,15 +44949,15 @@\n doesn\u2019t make sense. You might use setp _pinname_ _value_ in the associated HAL file for testing\n though.\n \n It is perfectly OK to set an output HAL pin\u2019s value with halcomp[pinname] = value provided this HAL\n pin is not associated with a widget, that is, has been created by the hal_glib.GPin(halcomp.newpin(<name>\n method (see GladeVCP Programming for an example).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 999 / 1290\n \n 12.3.6.4 The hal-pin-changed signal\n Event-driven programming means that the UI tells your code when \u201dsomething happens\u201d - through\n a callback, like when a button was pressed. The output HAL widgets (those which display a HAL\n pin\u2019s value) like LED, Bar, VBar, Meter, etc., support the hal-pin-changed signal, which may cause a\n@@ -44975,15 +44975,15 @@\n \u2022 HAL_ToggleButton, HAL_CheckButton: retains on/off state. Important signal: toggled\n \u2022 HAL_RadioButton: a one-of-many group. Important signal: toggled (per button).\n \u2022 Important common methods: set_active(), get_active()\n \u2022 Important properties: label, image\n \n Figure 12.31: Check button\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1000 / 1290\n \n Figure 12.32: Radio buttons\n \n Figure 12.33: Toggle button\n \n@@ -45001,15 +45001,15 @@\n <widgetname>-s\n out s32 pin\n To make a scale useful in Glade, add an Adjustment (General \u2192 Adjustment \u2192 New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set\n adjustment Page size and Page increment to zero to avoid warnings.\n \n Figure 12.34: Example HAL_HScale\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1001 / 1290\n \n 12.3.6.7 SpinButton\n HAL SpinButton is derived from GtkSpinButton and holds two pins:\n <widgetname>-f\n out FLOAT pin\n@@ -45039,15 +45039,15 @@\n <widgetname>-delta-scaled\n out FLOAT pin\n hal_dial has the following properties:\n cpr\n Sets the Counts per Revolution, allowed values are in the range from 25 to 360\n default = 100\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1002 / 1290\n \n show_counts\n Set this to False, if you want to hide the counts display in the middle of the widget.\n default = True\n label\n@@ -45092,15 +45092,15 @@\n \u2022 [widget name].get_scaled_value()\n Will return the counts value as a float\n \u2022 [widget name].get_delta_scaled_value()\n Will return the counts value as a float\n \u2022 [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1003 / 1290\n \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@@ -45125,15 +45125,15 @@\n \u2022 Wheel up = increase counts\n \u2022 Wheel down = reduce counts\n As moving the mouse the drag and drop way may be faster than the widget can update itself, you\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 its count value as HAL pin:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1004 / 1290\n \n <widgetname>-s\n out s32 pin\n jogwheel has the following properties:\n size\n@@ -45156,15 +45156,15 @@\n \u2022 [widget name].get_value()\n Will return the counts value as integer\n \u2022 [widget name].set_label(\u201dstring\u201d)\n Sets the label content with \u201dstring\u201d\n \n Figure 12.37: Example JogWheel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1005 / 1290\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 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@@ -45204,15 +45204,15 @@\n Float\n The min allowed value.\n Allowed values are 0.0 to 99999.0.\n Default is 0.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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1006 / 1290\n \n max\n Float\n The max allowed value.\n Allowed values are 0.001 to 99999.0.\n@@ -45259,15 +45259,15 @@\n There are also Python methods to modify the widget:\n [widget name].set_adjustment(gtk-adjustment)\n \n You can assign a existing adjustment to the control, that way it is easy to replace existing sliders\n without many code changes. Be aware, that after changing the adjustment you may need to set a new\n increment, as it will be reset to its default (100 steps from MIN to MAX):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1007 / 1290\n \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@@ -45296,15 +45296,15 @@\n \u2022 State_Sensitive_Table\n \u2022 HAL_HBox (deprecated)\n These containers are meant to be used to insensitize (grey out) or hide their children.\n Insensitized children will not respond to input.\n HAL_HideTable\n Has one HAL BIT input pin which controls if its child widgets are hidden or not.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1008 / 1290\n \n Pin: , <Panel_basename>.<widgetname>\n in bit pin\n If the pin is low then child widgets are visible which is the default state.\n HAL_Table and HAL_Hbox\n@@ -45342,15 +45342,15 @@\n pick_color_on, pick_color_off\n Colors for ON and OFF states.\n These may be represented as #RRRRGGGGBBBB strings and are optional properties which have\n precedence over on_color and off_color.\n led_size\n LED radius (for square - half of LED\u2019s side)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1009 / 1290\n \n led_shape\n LED Shape.\n Valid values are 0 for round, 1 for oval and 2 for square shapes.\n led_blink_rate\n@@ -45384,15 +45384,15 @@\n scale\n Value scale.\n Sets the maximum absolute value of input. Same as setting the <widgetname>.scale pin.\n A float, range from -224 to +2 24.\n green_limit\n Green zone lower limit\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1010 / 1290\n \n yellow_limit\n Yellow zone lower limit\n red_limit\n Red zone lower limit\n@@ -45424,15 +45424,15 @@\n a float value from the ListStore.\n If you\u2019re confused like me about how to edit ComboBox ListStores and CellRenderer, see https://youtu.be/Z5_F-rW2cL8.\n 12.3.6.16 Bars\n HAL_Bar and HAL_VBar widgets for horizontal and vertical bars representing float values.\n HAL_Bar and HAL_VBar each have one input FLOAT HAL pin.\n HAL_Bar and HAL_VBar both bars have the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1011 / 1290\n \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@@ -45474,15 +45474,15 @@\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 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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1012 / 1290\n \n Figure 12.41: Horizontal bar\n \n Figure 12.42: Vertical bar\n \n@@ -45507,15 +45507,15 @@\n bg_color\n Background color of meter.\n z0_color, z1_color, z2_color\n Colors of different value zones.\n Defaults are green, yellow and red.\n For description of zones see z*_border properties.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1013 / 1290\n \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@@ -45541,15 +45541,15 @@\n show_velocity\n This displays the tool speed.\n Default = true.\n use_commanded\n This selects the DRO to use: commanded or actual values.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1014 / 1290\n \n metric_units\n This selects the DRO to use: metric or imperial units.\n Default = true.\n show_rapids\n@@ -45595,15 +45595,15 @@\n May be any of x, y, y2 , z, z2 , p (perspective).\n Defaults to z view.\n enable_dro\n Type = boolean.\n Whether to draw a DRO on the plot or not.\n Default = true.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1015 / 1290\n \n mouse_btn_mode\n Type = integer.\n Mouse button handling: leads to different functions of the button:\n \u2022 0 = default: left rotate, middle move, right zoom\n@@ -45649,15 +45649,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 is 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1016 / 1290\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@@ -45675,15 +45675,15 @@\n reference_type\n 0:G5x 1:tool 2:G92 3:Rotation around Z\n \n 12.3.6.21 DRO widget\n The DRO widget is used to display the current axis position.\n It has the following properties:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1017 / 1290\n \n display_units_mm\n Used to toggle the display units between metric and imperial. Default is False.\n actual\n Select actual (feedback) position or commanded position. Default is True.\n@@ -45722,15 +45722,15 @@\n \u2022 The DRO widget is a modified gtk label widget. As such, much of what can be done to a gtk\n label can be done to the DRO widget.\n \u2022 The font properties may also be set from a css stylesheet which has the highest priority and\n will override values set by GObject properties.\n There a couple ways to directly control the widget using Python.\n Using GObject to set the above listed properties\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1018 / 1290\n \n [widget name].set_property(\u201ddisplay_units_mm\u201d, True)\n [widget name].set_property(\u201dactual\u201d, True)\n [widget name].set_property(\u201ddiameter\u201d, True)\n [widget name].set_property(\u201dmm_text_template\u201d, \u201d%10.3f\u201d)\n@@ -45774,15 +45774,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1019 / 1290\n \n joint_number\n Used to select which axis (technically which joint) is displayed.\n On a trivialkins machine (mill, lathe, router) axis/joint numbers are:\n 0:X 1:Y 2:Z etc.\n@@ -45824,15 +45824,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1020 / 1290\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@@ -45873,15 +45873,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1021 / 1290\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@@ -45916,15 +45916,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1022 / 1290\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@@ -45949,15 +45949,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1023 / 1290\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@@ -46001,15 +46001,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1024 / 1290\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@@ -46024,15 +46024,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1025 / 1290\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@@ -46067,15 +46067,15 @@\n font\n Display font to use\n hide_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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1026 / 1290\n \n lathe_display_type\n Show lathe format\n There a couple ways to directly control the widget using Python.\n Using goobject to set the above listed properties:\n@@ -46116,15 +46116,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1027 / 1290\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@@ -46151,15 +46151,15 @@\n mm_text_template\n You can use Python formatting to display the position with different precision.\n imperial_text_template\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1028 / 1290\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@@ -46185,15 +46185,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1029 / 1290\n \n Figure 12.48: Offsetpage Example\n \n 12.3.6.27 HAL_sourceview widget\n \n@@ -46214,15 +46214,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1030 / 1290\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@@ -46244,15 +46244,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1031 / 1290\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@@ -46265,15 +46265,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1032 / 1290\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@@ -46296,15 +46296,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1033 / 1290\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@@ -46338,15 +46338,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1034 / 1290\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@@ -46366,15 +46366,15 @@\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 its current value as a parameter\n 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1035 / 1290\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@@ -46390,15 +46390,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1036 / 1290\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@@ -46435,15 +46435,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1037 / 1290\n \n \u2013 interp-idle\n \u2013 interp-paused\n \u2013 interp-reading\n \u2013 interp-waiting\n@@ -46484,15 +46484,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1038 / 1290\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@@ -46527,15 +46527,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 <module> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1039 / 1290\n \n For simple tasks it is 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@@ -46581,15 +46581,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1040 / 1290\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@@ -46624,15 +46624,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1041 / 1290\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@@ -46672,15 +46672,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1042 / 1290\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@@ -46721,15 +46721,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1043 / 1290\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@@ -46768,15 +46768,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1044 / 1290\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@@ -46818,15 +46818,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1045 / 1290\n \n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n \n 12.3.8.17 Value-changed callback with hal_glib\n@@ -46865,15 +46865,15 @@\n window1.visible to False, and ignore an initial unmap event.\n 2. My GladeVCP program starts, but no window appears where I expect it to be?\n The window AXIS allocates for GladeVCP will obtain the natural size of all its child widgets\n combined. It is the child widget\u2019s job to request a size (width and/or height). However, not all\n widgets do request a width greater than 0, for instance the Graph widget in its current form. If\n there\u2019s such a widget in your Glade file and it is the one which defines the layout you might want\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1046 / 1290\n \n to set its width explicitly. Note that setting the window1 width and height properties in Glade\n does not make sense because this window will be orphaned during re-parenting and hence its\n geometry will have no impact on layout (see above). The general rule is: if you manually run a UI\n file with gladevcp <uifile> and its window has reasonable geometry, it should come up in AXIS\n@@ -46912,15 +46912,15 @@\n \u2022 If you\u2019re using HAL_table or HAL_HBox widgets, be aware they have an HAL pin associated with it\n which is off by default. This pin controls whether these container\u2019s children are active or not.\n \n 12.3.11 Implementation note: Key handling in AXIS\n We believe key handling works OK, but since it is new code, we\u2019re telling about it you so you can\n watch out for problems; please let us know of errors or odd behavior. This is the story:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1047 / 1290\n \n AXIS uses the TkInter widget set. GladeVCP applications use Gtk widgets and run in a separate\n process context. They are hooked into AXIS with the Xembed protocol. This allows a child application\n like GladeVCP to properly fit in a parent\u2019s window, and - in theory - have integrated event handling.\n However, this assumes that both parent and child application properly support the Xembed protocol,\n@@ -46956,15 +46956,15 @@\n identically-named files within subdirectories of the system directory specified by LINUXNC_AUX_GLADEVCP\n (e.g., /usr/share/linuxcnc/aux_gladevcp). This provision allows a developer to test an application by\n exporting GLADEVCP_EXTRAS to specify a private application directory without removing a systeminstalled application directory. Messages indicating rejected duplicates are printed to stdout.\n \n Support for auxiliary GladeVCP applications requires a Python module named importlib. This module\n may not be available in older installations like Ubuntu-Lucid.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1048 / 1290\n \n 12.4 GladeVCP Library modules\n Libraries are prebuilt Python modules that give added features to GladeVCP. In this way you can select\n what features you want - yet don\u2019t have to build common ones yourself.\n \n@@ -47011,15 +47011,15 @@\n MAX_LINEAR_JOG_VEL = 300 units per minute\n DEFAULT_ANGULAR_JOG_VEL =\n MIN_ANGULAR_JOG_VEL =\n MAX_ANGULAR_JOG_VEL =\n MAX_FEED_OVERRIDE =\n MAX_TRAJ_VELOCITY =\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1049 / 1290\n \n AVAILABLE_SPINDLES = int(self.INI.find(\u201dTRAJ\u201d, \u201dSPINDLES\u201d) or 1)\n DEFAULT_SPINDLE_0_SPEED = 200\n MAX_SPINDLE_0_SPEED = 2500\n MAX_SPINDLE_0_OVERRIDE = 100\n@@ -47069,15 +47069,15 @@\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n INFO = Info()\n \n To access INFO data use this general syntax:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1050 / 1290\n \n home_state = INFO.NO_HOME_REQUIRED\n if INFO.MACHINE_IS_METRIC is True:\n print(\u2019Metric based\u2019)\n \n@@ -47116,15 +47116,15 @@\n ACTION.SET_TOOL_OFFSET(axis,value,fixture = False)\n ACTION.RUN()\n ACTION.ABORT()\n ACTION.PAUSE()\n ACTION.SET_MAX_VELOCITY_RATE(rate)\n ACTION.SET_RAPID_RATE(rate)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.SET_FEED_RATE(rate)\n ACTION.SET_SPINDLE_RATE(rate)\n ACTION.SET_JOG_RATE(rate)\n ACTION.SET_JOG_INCR(incr)\n ACTION.SET_JOG_RATE_ANGULAR(rate)\n ACTION.SET_JOG_INCR_ANGULAR(incr, text)\n@@ -47165,15 +47165,15 @@\n get_jog_info (num)\n jnum_check(num)\n ensure_mode(modes)\n open_filter_program(filename, filter)\n \n 1051 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1052 / 1290\n \n 12.5 QtVCP\n QtVCP is an infrastructure to build custom CNC screens or control panels for LinuxCNC.\n It displays a .ui file built with Qt Designer screen editor and combines this with Python programming\n to create a GUI screen for running a CNC machine.\n@@ -47181,54 +47181,54 @@\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 Figure 12.55: QtDragon - 3/4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.56: QtDefault - 3-Axis Sample\n \n 1053 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.57: QtAxis - Self Adjusting Axis Sample\n \n 1054 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1055 / 1290\n \n Figure 12.58: Blender - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1056 / 1290\n \n Figure 12.59: X1mill - 4-Axis Sample\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.60: cam_align - Camera Alignment VCP\n \n 1057 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1058 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1059 / 1290\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@@ -47260,15 +47260,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1060 / 1290\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@@ -47302,15 +47302,15 @@\n The Qt Designer editor makes it relatively easy to build and edit this file.\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. Only one file is allowed.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1061 / 1290\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@@ -47340,15 +47340,15 @@\n QtVCP will look for a folder named <screen_name> (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 <screen_name>.ui,\n \u2022 <screen_name>_handler.py, and\n \u2022 <screen_name>.qss.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1062 / 1290\n \n 12.5.2.8 Modifying Stock Screens\n There are three ways to customize a screen/panel.\n Stylesheets can be used to set Qt properties. If a widget uses properties then they usually can be\n modified by stylesheets.\n@@ -47391,15 +47391,15 @@\n # add a terminal message so we know this got loaded\n print(\u2019\\nCustom subclassed handler patch loaded.\\n\u2019)\n def init_pins(self):\n # call original handler init_pins function\n super().init_pins()\n # add jog pins X axis\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1063 / 1290\n \n pin = QHAL.newpin(\u201djog.axis.jog-x-plus\u201d, QHAL.HAL_BIT, QHAL.HAL_IN)\n pin.value_changed.connect(lambda s: self.kb_jog(s, 0, 1, fast = False, linear =\n True))\n \n@@ -47448,15 +47448,15 @@\n # You call this function without the usual preceding \u2019self.\u2019.\n # This is because will will not be patching it into the original handler class instance\n # It will only be called from code in this file.\n def test_function(obj):\n print(dir(obj))\n # This is a new function we will added to the existing handler class instance.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1064 / 1290\n \n # Notice it calls the unbounded function with \u2019self\u2019 as an parameter \u2019self\u2019 is the only\n global reference available.\n # It references the window instance.\n def on_keycall_F10(self,event,state,shift,cntrl):\n@@ -47508,15 +47508,15 @@\n # that calls our new function (of the same name) defined in this file.\n self.after_override__ = types.MethodType(after_override__, self)\n \n If you wish to modify a stock screen with full control, copy its UI and handler file to your configuration folder.\n There is a QtVCP panel to help with this:\n \u2022 Open a terminal and run the following command:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1065 / 1290\n \n qtvcp copy\n \n \u2022 Select the screen and destination folder in the dialog\n \u2022 If you wish to name your screen differently than the builtin screen\u2019s default name, change the\n@@ -47531,40 +47531,40 @@\n QtVCP can be used to create control panels that interface with HAL.\n 12.5.3.1 Builtin Panels\n There are several builtin HAL panels available.\n In a terminal type qtvcp <return> to see a list:\n test_panel\n Collection of useful widgets for testing HAL components, including speech of LED state.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.62: QtVCP HAL Test Builtin Panel\n cam_align\n A camera display widget for rotational alignment.\n \n 1066 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1067 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1068 / 1290\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1069 / 1290\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@@ -47573,15 +47573,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1070 / 1290\n \n halrun -I -f my_panel.hal\n \n Example HAL file loading a QtVCP panel\n # load realtime components\n@@ -47630,15 +47630,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1071 / 1290\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@@ -47654,15 +47654,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1072 / 1290\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@@ -47698,15 +47698,15 @@\n This widget doesn\u2019t add anything visually but sets up some common options.\n It\u2019s recommended to always add this widget before any other.\n Right click on the main window, not the ScreenOptions widget, and set the layout as vertical to make\n the ScreenOptions fullsized.\n Add Panel Content On the right hand side there is a panel with tabs for a Property editor and an\n Object inspector.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1073 / 1290\n \n On the Object inspector click on the ScreenOptions.\n Then switch to the Property Editor and, under the ScreenOptions heading, toggle filedialog_option.\n Drag and drop a GCodeGraphics widget and a GcodeEditor widget.\n Place and resize them as you see fit leaving some room for buttons.\n@@ -47733,21 +47733,21 @@\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 \u2013 Under the Indicated_PushButton heading check the indicator_option.\n \u2013 Under the QAbstactButton heading check checkable.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.67: Qt Designer: Selecting Pause Button\u2019s Properties\n \n 1074 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1075 / 1290\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@@ -47780,15 +47780,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47835,15 +47835,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 1076 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1077 / 1290\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@@ -47894,15 +47894,15 @@\n #######################\n # CALLBACKS FROM FORM #\n #######################\n #####################\n # GENERAL FUNCTIONS #\n #####################\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -47951,15 +47951,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 1078 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1079 / 1290\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@@ -47994,15 +47994,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1080 / 1290\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 class_patch__(self):\n@@ -48040,15 +48040,15 @@\n Bibliography\n [1] + The Linux system will not shutdown if using this function, you will have to do\n that yourself. QtVCP/LinuxCNC will terminate without a prompt once this function\n 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1081 / 1290\n \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 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@@ -48074,15 +48074,15 @@\n \n 12.5.6 Connecting Widgets to Python Code\n It is possible to connect widgets to Python code using signals and slots.\n In this way you can:\n \u2022 Give new functions to LinuxCNC widgets, or\n \u2022 Utilize standard Qt widgets to control LinuxCNC.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1082 / 1290\n \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@@ -48104,15 +48104,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1083 / 1290\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@@ -48129,15 +48129,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1084 / 1290\n \n 12.5.7 More Information\n QtVCP Builtin Virtual Control Panels\n QtVCP Widgets\n QtVCP Libraries\n@@ -48154,25 +48154,25 @@\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1085 / 1290\n \n Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel\n \n 12.6.1.2 spindle_belts\n This panel is designed to display additional RS485 VFD data and also to configure a 4 sheave, 2 belt\n spindle drive via a series of buttons.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1086 / 1290\n \n In addition, it is also a useful template to use for your custom panel because it includes:\n \u2022 Display of additional HAL data\n \u2022 Buttons and button groups\n \u2022 Dynamic changes to button enabled/disabled state based on the state of other buttons\n@@ -48185,15 +48185,15 @@\n \u2022 A custom component that scales the VFD frequency to obtain the desired spindle speed.\n \u2022 A belt driven spindle that uses two belts and an intermediate idler pulley much like a drill press.\n \u2022 Connect the input pins qtdragon.belts.<pin-name> in your postgui HAL file.\n The belts are broken into two button groups, the front belts and the rear belts. These are numbered as\n per the plate on the machine. Buttons in a group are mutually exclusive, i.e., only one can be selected\n in the group.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1087 / 1290\n \n Additionally, it\u2019s not possible to have both belts on the same level with this kind of mechanism because\n you cannot fit two belts to the one idler pulley sheave. So if a belt is selected, its opposite button is\n disabled. E.g., if belt 3 is selected, belt 7 is disabled.\n Add these lines to the [DISPLAY] section in your .ini file\n@@ -48220,15 +48220,15 @@\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 Figure 12.70: QtVCP test_dial Panel - Test Dial VCP\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.6.1.4 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 \u2022 You can add more buttons from the drop down menu.\n \u2022 You can load a Halmeter from the drop down menu.\n@@ -48250,15 +48250,15 @@\n \u2022 A combobox can be used to automatically select and connect to a pin/signal.\n \u2022 You can add more LEDs from the drop down menu.\n \u2022 The LED can be detached from the main windows.\n Here is how to load test_led from a HAL script:\n \n 1088 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1089 / 1290\n \n loadusr qtvcp test_led\n loadusr qtvcp -o 4 test_led\n \n The -o switch sets how many LEDs the panel starts with.\n@@ -48266,24 +48266,24 @@\n \n Figure 12.72: QtVCP test_dial Panel - Test LED VCP\n \n 12.6.1.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.73: QtVCP test_panel - HAL Component Testing Panel\n \n 12.6.1.7 cam_align\n A camera display widget for rotational alignment.\n \n 1090 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1091 / 1290\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@@ -48297,15 +48297,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1092 / 1290\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@@ -48330,95 +48330,95 @@\n If you want to hide both, use a comma between them with no spaces.\n The -a option will make the panel always-on-top of all windows.\n loadusr qtvcp sim_panel\n \n Here we load the panel with no MPG selection buttons and the always-on-top option.\n loadusr qtvcp -a -o hide=groupBoxSelection sim_panel\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1093 / 1290\n \n Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing.\n \n 12.6.1.9 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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 1094 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1095 / 1290\n \n Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel\n \n 12.6.2.2 QtVCP vismach_router_atc\n 3D OpenGL view of a 3-Axis router style, gantry bed milling machine.\n This particular panel shows how to define and connect the model parts in the handler file, rather then\n importing the pre-built model from QtVCP\u2019s vismach library.\n loadusr qtvcp vismach_router_atc\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1096 / 1290\n \n Figure 12.78: QtVCP vismach_router_atc - 3-Axis Gantry Bed Mill 3D View Panel\n \n 12.6.2.3 QtVCP vismach_scara\n 3D OpenGL view of a SCARA based milling machine.\n loadusr qtvcp vismach_scara\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.79: QtVCP vismach_scara - SCARA Mill 3D View Panel\n \n 12.6.2.4 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 1097 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.80: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel\n \n 12.6.2.5 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 1098 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1099 / 1290\n \n Figure 12.81: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel\n \n 12.6.2.6 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1100 / 1290\n \n Figure 12.82: 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@@ -48446,15 +48446,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1101 / 1290\n \n net bit-hide\n \n test_panel.checkbox_4\n \n@@ -48507,15 +48507,15 @@\n There are panels available that are included with LinuxCNC. To see a list open a terminal and type\n qtvcp and press return.\n You will get a help printout and a list of builtin screen and panels.\n Pick any of the names from the panel list and add that to the COMMAND entry after qtvcp.\n The builtin panel search path is share/qtvcp/panels/PANELNAME.\n Run-In-Place and installed versions of LinuxCNC have these in different locations on the system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1102 / 1290\n \n 12.6.4.3 Location of Custom Panels\n Custom panels can be embedded too -either a modified builtin panel or a new user-built one.\n When loading panels, QtVCP looks in the configuration folders path for qtvcp/panels/PANELNAME/PANELNAME.ui.\n PANNELNAME being any valid string with no spaces. If no path is found there, then looks in the\n@@ -48549,15 +48549,15 @@\n If the panel is not embedded, both refer to the panel window.\n 12.6.4.6 Handler Patching - Subclassing Builtin Panels\n We can have QtVCP load a subclassed version of the standard handler file. in that file we can manipulate the original functions or add new ones.\n Subclassing just means our handler file first loads the original handler file and adds our new code on\n top of it - so a patch of changes.\n This is useful for changing/adding behaviour while still retaining standard handler updates from LinuxCNC repositories.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1103 / 1290\n \n You may still need to use the handler copy dialog to copy the original handler file to decide how to\n patch it.\n There should be a folder in the config folder; for panel: named <CONFIG FOLDER>/qtvcp/panels/<PANEL\n NAME>/\n@@ -48596,15 +48596,15 @@\n You are free to use any available default widgets in the Qt Designer editor.\n There are also special widgets made for LinuxCNC that make integration easier. These are split in\n two, heading on the right side of the editor:\n \u2022 One is for HAL only widgets.\n \u2022 The other is for CNC control widgets.\n You are free to mix them in any way on your panel.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1104 / 1290\n \n This description of widget properties can easily be out of date due to further development and lack\n of people to write docs (a good way to give back to the project). The definitive descriptions are found\n by looking in the source code.\n \n@@ -48628,15 +48628,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1105 / 1290\n \n alignment\n Qt alignment hint.\n state\n Current state of LED\n@@ -48656,15 +48656,15 @@\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 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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1106 / 1290\n \n 12.7.1.6 Gauge - Round Dial Gauge Widget\n \n Figure 12.84: QtVCP Gauge: Round Dial Gauge Widget\n Round Gauge can be used in a LinuxCNC GUI to display an input parameter on the dial face.\n@@ -48686,15 +48686,15 @@\n This is the number of ticks/gauge readings 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.\n zone1_color\n Zone1 extends from the maximum reading to the threshold point.\n It can be set to any RGB color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1107 / 1290\n \n zone2_color\n Zone2 extends from the threshold point to the minimum reading, which is 0.\n It can be set to any RGB color.\n bezel_color\n@@ -48721,15 +48721,15 @@\n This widget is used to indicate level or value, usually of a HAL s32/float pin.\n you can also disable the HAL pin and use Qt signals or python commands to change the level.\n HalBar is a subclass of the Bar widget, so it inherits these properties\n \n \u2022 stepColorList: a list of color strings, the number of colors defines the number of bars.\n \u2022 backgroundColor: a QColor definition of the background color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1108 / 1290\n \n \u2022 setMaximum: an integer that defines the maximum level of indication.\n \u2022 setMinimum: an integer that defines the lowest level of indication.\n \u2022 pinType: to select HAL pins type:\n \u2013 NONE no HAL pin will be added\n@@ -48746,15 +48746,15 @@\n qproperty-stepColorList: \u2019green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red \u2190,red\u2019;\n }\n \n 12.7.1.8 HALPad - HAL Buttons Joypad\n \n Figure 12.86: QtVCP HALPad: HAL Buttons Joypad\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1109 / 1290\n \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 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@@ -48791,15 +48791,15 @@\n File or resource path to an image to display in the described button location.\n If the reset button is pressed in the Qt Designer editor property, the image will not be displayed\n (allowing optional text).\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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1110 / 1290\n \n true_color , false_color\n Color selection for the center LED ring to be displayed when the <BASENAME>.light.center HAL\n pin is True or False.\n text_color\n@@ -48820,15 +48820,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.10 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Figure 12.87: 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.11 gridLayout - Grid Layout Widget\n@@ -48836,15 +48836,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.12 hal_label - HAL Label Widget\n This widget displays values sent to it.\n \n 1111 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1112 / 1290\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@@ -48879,15 +48879,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1113 / 1290\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@@ -48918,15 +48918,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1114 / 1290\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@@ -48959,15 +48959,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1115 / 1290\n \n Camview dialog\n Requires camview dialog widget present.\n origin offset dialog\n Requires origin offset dialog widget present.\n@@ -49008,15 +49008,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1116 / 1290\n \n dro absolute , dro relative , dro dtg , exit screen\n Closes down LinuxCNC\n Override limits\n Temporarily override hard limits\n@@ -49055,15 +49055,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Action buttons are subclassed from\n for more information about:\n \n 1117 / 1290\n \n 12.7.5.1 [IndicatedPushButton]. See the following sections\n@@ -49097,15 +49097,15 @@\n If the button is set checkable, it will indicate which axis is selected.\n If you press and hold the button a pop up menu will show allowing one to:\n \u2022 Zero the axis\n \u2022 Divide the axis by 2\n \u2022 Set the axis arbitrarily\n \u2022 Reset the axis to the last number recorded\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1118 / 1290\n \n You must have selected an entry dialog that corresponds to the dialog_code_string, usually this is\n selected from the screenOptions widget.\n You can select the property halpin_option, it will then set a HAL pin true when the axis is selected.\n The property joint_number should be set to the appropriate joint number. The property axis_letter\n@@ -49140,15 +49140,15 @@\n DROLabel {\n font: 25pt \u201dLato Heavy\u201d;\n qproperty-imperial_template: \u2019%9.4f\u2019;\n qproperty-metric_template: \u2019%10.3f\u2019;\n qproperty-angular_template: \u2019%11.2f\u2019;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1119 / 1290\n \n DROLabel[isHomed=false] {\n color: red;\n }\n DROLabel[isHomed=true] {\n@@ -49194,15 +49194,15 @@\n qproperty-styleFont4: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont5: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont6: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFont7: \u201dTimes,12,-1,0,90,0,0,0,0,0\u201d;\n qproperty-styleFontMargin: \u201dTimes,14,-1,0,90,0,0,0,0,0\u201d;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1120 / 1290\n \n For GcodeDisplay widget\u2019s default G-code lexer:\n \u2022 styleColor0 = Default: Everything not part of the groups below\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@@ -49223,15 +49223,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1121 / 1290\n \n 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget\n \n Figure 12.88: QtVCP GcodeGraphics: G-code Graphic Backplot Widget\n This displays the current G-code in a graphical form.\n@@ -49248,15 +49248,15 @@\n \n _view (string)\n Sets the default view orientation on GUI load.\n Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.\n The following shows an example of how to set this property (referenced using the widget user\n selected name):\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #gcodegraphics{\n qproperty-_view: z;\n }\n \n _dro (bool)\n Determines whether or not to show the DRO.\n@@ -49305,15 +49305,15 @@\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-overlay_color: blue;\n }\n \n 1122 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n background_color (primary, secondary, or RGBA formatted color)\n Sets the default background color.\n The following shows an example of how to set this property:\n #gcodegraphics{\n qproperty-background_color: blue;\n }\n@@ -49360,15 +49360,15 @@\n qproperty-MouseButtonMode: 1;\n }\n \n There are 12 valid modes:\n \n 1123 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Mode\n 0\n 1\n 2\n 3\n 4\n@@ -49450,15 +49450,15 @@\n \u2022 rotate-up\n \u2022 rotate-down\n \u2022 overlay-dro-on\n \u2022 overlay-dro-off\n \u2022 overlay-offsets-on\n \u2022 overlay-offsets-off\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n \u2022 alpha-mode-on\n \u2022 alpha-mode-off\n \u2022 inhibit-selection-on\n \u2022 inhibit-selection-off\n \u2022 dimensions-on\n \u2022 dimensions-off\n@@ -49499,15 +49499,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 1125 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1126 / 1290\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@@ -49546,15 +49546,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1127 / 1290\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@@ -49593,15 +49593,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1128 / 1290\n \n Other Properties\n index_number\n Integer that specifies the tool status index to display.\n state_label_list\n@@ -49630,15 +49630,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1129 / 1290\n \n Figure 12.89: 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@@ -49651,15 +49651,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1130 / 1290\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@@ -49693,15 +49693,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1131 / 1290\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@@ -49743,15 +49743,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1132 / 1290\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@@ -49789,15 +49789,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1133 / 1290\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@@ -49840,15 +49840,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1134 / 1290\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@@ -49888,15 +49888,15 @@\n \u2013 DONE\n \u2013 ATTENTION\n \u2013 RING\n \u2013 LOGIN\n \u2013 LOGOUT\n \u2013 BELL\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1135 / 1290\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@@ -49930,15 +49930,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1136 / 1290\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@@ -49974,15 +49974,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1137 / 1290\n \n alignment\n Qt Alignment hint.\n state\n Current state of LED (for testing in Qt Designer).\n@@ -50019,15 +50019,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1138 / 1290\n \n 12.7.2.20 MacroTab - Special Macros Widget\n \n Figure 12.90: QtVCP MacroTab: Special Macros Widget\n This widget allows a user to select and adjust special macro programs for doing small jobs.\n@@ -50045,15 +50045,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1139 / 1290\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@@ -50090,15 +50090,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1140 / 1290\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@@ -50135,15 +50135,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 <pin name>\n \u2022 Example: unlinkp motion.jog-stop\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1141 / 1290\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@@ -50154,15 +50154,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.91: QtVCP MDITouchy: Touch Screen MDI Entry Widget\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1142 / 1290\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@@ -50201,15 +50201,15 @@\n G90\n O<increment> 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1143 / 1290\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@@ -50222,15 +50222,15 @@\n Figure 12.92: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1144 / 1290\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@@ -50269,15 +50269,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -50286,15 +50286,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 1145 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1146 / 1290\n \n 12.7.2.29 FileManager - File Loading Selector Widget\n \n Figure 12.93: QtVCP FileManager: File Loading Selector Widget\n This widget is used to select files to load.\n@@ -50309,15 +50309,15 @@\n \n Stylesheets Properties\n doubleClickSelection (bool)\n Determines whether or not to require double clicking on a folder.\n Single clicking a folder (False) is enabled by default and is intended for touch screen users.\n The following shows an example of how to set this property:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1147 / 1290\n \n #filemanager {\n qproperty-doubleClickSelection: True;\n }\n \n@@ -50340,15 +50340,15 @@\n The tool settings can only be changed in LinuxCNC after homing and when the motion controller is\n idle.\n The display and entry will change between metric and imperial based on LinuxCNC\u2019s current G20/G21\n setting.\n The current in-use tool will be highlighted, and the current selected tool will be highlighted in a\n different color.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1148 / 1290\n \n The checkbox beside each tool can be used to select too for an action that depends on extra code\n added either to a combined widget, like the toolOffsetView dialog or the screens handler code.\n Typical actions are load selected tool, delete selected tools, etc.\n Clicking on the columns and rows allows one to adjust the settings.\n@@ -50388,30 +50388,30 @@\n delete_tools()\n Deletes the currently checkbox selected tools.\n get_checked_list()\n Returns a list of tools selected by checkboxs.\n set_all_unchecked()\n Uncheck all selected tools.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \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 12.7.2.32 BasicProbe - Simple Mill Probing Widget\n \n Figure 12.95: QtVCP BasicProbe: Simple Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n \n 1149 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1150 / 1290\n \n 12.7.2.33 VersaProbe - Mill Probing Widget\n \n Figure 12.96: QtVCP VersaProbe: Mill Probing Widget\n Widget for probing on a mill. Used by the QtDragon screen.\n@@ -50429,15 +50429,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1151 / 1290\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@@ -50478,15 +50478,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1152 / 1290\n \n PLAYALERT\n Sound to play if sound is available, i.e., SPEAK <spoken_message> .\n When using STATUS \u2019s request-dialog function, the default launch name is MESSAGE.\n It is based on PyQt\u2019s QMessagebox.\n@@ -50496,15 +50496,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1153 / 1290\n \n 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget\n \n Figure 12.98: QtVCP FileDialog: Load and Save File Chooser Widget\n This is used to load G-code files.\n@@ -50520,15 +50520,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1154 / 1290\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@@ -50540,15 +50540,15 @@\n \n Figure 12.99: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1155 / 1290\n \n 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget\n \n Figure 12.100: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget\n This widget allows one to modify Tool offsets directly in a dialog form.\n@@ -50568,61 +50568,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1156 / 1290\n \n 12.7.3.9 CalculatorDialog - Calculator Dialog Widget\n \n Figure 12.101: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget\n \n Figure 12.102: 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 1157 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1158 / 1290\n \n 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget\n \n Figure 12.103: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1159 / 1290\n \n 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget\n \n Figure 12.104: 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1160 / 1290\n \n 12.7.4.1 NurbsEditor - NURBS Editing Widget\n \n Figure 12.105: QtVCP NurbsEditor: NURBS Editing Widget\n The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert\n@@ -50631,15 +50631,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1161 / 1290\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@@ -50676,15 +50676,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1162 / 1290\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@@ -50722,15 +50722,15 @@\n \n 12.7.4.3 WebWidget\n This widget will create a html/pdf viewing page using the QtWebKit or QtWebEngine libraries. The\n newer QtWebEngine is preferred if both are on the system.\n If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in\n Qesigner. This will be replaced with the QtWebEngine widget at run time.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1163 / 1290\n \n 12.7.5 BaseClass/Mixin Widgets\n These widgets are used to combine different properties and behaviours into other widgets.\n You will see them as a collapsible header in the Qt Designer properties column.\n 12.7.5.1 IndicatedPushButtons\n@@ -50759,15 +50759,15 @@\n Indicated_PushButton #button_estop{\n qproperty-on_color: black;\n qproperty-off_color: yellow;\n }\n \n Options IndicatedPushButton have exclusive options:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1164 / 1290\n \n indicator_HAL_pin_option\n Adds a halpin, named <buttonname>-led that controls the button indicator state.\n indicator_status_option\n Makes the LED indicate the state of these selectable LinuxCNC status:\n@@ -50809,15 +50809,15 @@\n }\n \n Here is how you specify a particular widget by its objectName in Qt Designer:\n ActionButton #estop button [isEstopped=false] {\n color: yellow;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1165 / 1290\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@@ -50857,15 +50857,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1166 / 1290\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@@ -50886,15 +50886,15 @@\n You can also specify subroutines to be pre-opened in tabs.\n [DISPLAY]\n # NGCGUI subroutine path.\n # This path must also be in [RS274NGC] SUBROUTINE_PATH\n NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib\n # pre selected programs tabs\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1167 / 1290\n \n # specify filenames only, files must be in the NGCGUI_SUBFILE_PATH\n NGCGUI_SUBFILE = slot.ngc\n NGCGUI_SUBFILE = qpocket.ngc\n \n@@ -50918,15 +50918,15 @@\n (info: feedrate -- simple example for setting feedrate)\n o<feedrate> sub\n #<feedrate>\n = #1 (= 6 Feed Rate) ; comments in brackets will be shown in ngcui\n f#<feedrate>\n o<feedrate> endsub\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1168 / 1290\n \n 12.7.6.6 Qt PDF\n Allows adding loadable PDFs to a screen.\n 12.7.6.7 Qt Vismach\n Use this to build/add OpenGl simulated machines.\n@@ -50959,15 +50959,15 @@\n For example, you can catch machine on and off messages.\n \n The example below shows the two common ways of connecting signals, one of them using lambda.\n lambda is used to strip off or manipulate arguments from the status message before calling the\n function. You can see the difference in the called function signature: The one that uses lambda does\n not accept the status object - lambda did not pass it to the function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1169 / 1290\n \n \u2022 Place these commands into the [INITIALIZE] section of the Python handler file:\n STATUS.connect(\u2019state-on\u2019, self.on_state_on)\n STATUS.connect(\u2019state-off\u2019, lambda: w, self.on_state_off())\n \n@@ -51012,15 +51012,15 @@\n GET_JOG_FROM_NAME = {\u2019X\u2019:0,\u2019Y\u2019:1,\u2019Z\u2019:2}\n NO_HOME_REQUIRED = False\n HOME_ALL_FLAG\n JOINT_TYPE = self.INI.find(section, \u201dTYPE\u201d) or \u201dLINEAR\u201d\n JOINT_SEQUENCE_LIST\n JOINT_SYNC_LIST\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1170 / 1290\n \n JOG_INCREMENTS = None\n ANGULAR_INCREMENTS = None\n GRID_INCREMENTS\n DEFAULT_LINEAR_JOG_VEL = 15 units per minute\n@@ -51064,15 +51064,15 @@\n \n 12.8.2.4 Helpers\n There are some helper functions - mostly used for widget support:\n \n get_error_safe_setting(_self_, _heading_, _detail_, default=_None_) , convert_metric_to_mac\n Get filter extensions in Qt format.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1171 / 1290\n \n 12.8.2.5 Usage\n \u2022 Import Info module\n Add this Python code to your import section:\n ############################\n@@ -51107,15 +51107,15 @@\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.core import Action\n \n \u2022 Instantiate Action module\n Add this Python code to your instantiate section:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n ACTION = Action()\n \n \u2022 Access ACTION commands\n@@ -51156,15 +51156,15 @@\n ACTION.ZERO_G92_OFFSET()\n ACTION.ZERO_ROTATIONAL_OFFSET()\n ACTION.ZERO_G5X_OFFSET(num)\n ACTION.RECORD_CURRENT_MODE()\n \n 1172 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n ACTION.RESTORE_RECORDED_MODE()\n ACTION.SET_SELECTED_AXIS(jointnum)\n ACTION.DO_JOG(jointnum, direction)\n ACTION.JOG(jointnum, direction, rate, distance=0)\n ACTION.TOGGLE_FLOOD()\n ACTION.SET_FLOOD_ON()\n@@ -51202,15 +51202,15 @@\n 12.8.4 Tool\n This library handles tool offset file changes.\n \n LinuxCNC doesn\u2019t handle third party manipulation of the tool file well.\n \n 1173 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1174 / 1290\n \n 12.8.4.1 Helpers\n \n GET_TOOL_INFO(_toolnumber_)\n This will return a Python list of information on the requested tool number.\n@@ -51246,15 +51246,15 @@\n LinuxCNC supports tool wear by adding tool wear information into tool entries above 10000.\n \n This also requires remap code to add the wear offsets t tool change time.\n \n 12.8.5 Path\n Path module gives reference to important files paths.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 12.8.5.1 Referenced Paths\n \n PATH.PREFS_FILENAME\n The preference file path.\n PATH.WORKINGDIR\n The directory QtVCP was launched from.\n@@ -51293,15 +51293,15 @@\n PATH.PLUGIN\n The QtVCP widget plugin folder.\n PATH.VISMACHDIR\n Directory where prebuilt Vismach files are found.\n \n 1175 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1176 / 1290\n \n Not currently used:\n PATH.LOCALEDIR\n Locale translation folder.\n PATH.DOMAIN\n@@ -51335,15 +51335,15 @@\n \u2022 Import VCPWindow module\n Add this Python code to your import section:\n ############################\n # **** IMPORT SECTION **** #\n ############################\n from qtvcp.qt_makegui import VCPWindow\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1177 / 1290\n \n \u2022 Instantiate VCPWindow module+ Add this Python code to your instantiate section:\n ###########################################\n # **** INSTANTIATE LIBRARIES SECTION **** #\n ###########################################\n@@ -51382,15 +51382,15 @@\n Load Calibration program:\n AUX_PRGM.load_calibration()\n \n keyboard_onboard()\n Load onboard/Matchbox keyboard\n AUX_PRGM.keyboard_onboard(<ARGS>)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1178 / 1290\n \n 12.8.7.2 Usage\n \u2022 Import Aux_program_loader module\n Add this Python code to your import section:\n ############################\n@@ -51424,15 +51424,15 @@\n \n Keylookup requires code under the processed_key_event function to call KEYBIND.call().\n Most handler files already have this code.\n \n In the handler file, under the initialized function use this general syntax to create keybindings:\n KEYBIND.add_call(\u201dDEFINED_KEY\u201d,\u201dFUNCTION TO CALL\u201d, USER DATA)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Here we add a keybinding for F10, F11 and F12:\n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # at this point:\n # the widgets are instantiated.\n@@ -51482,15 +51482,15 @@\n Qt.Key_Shift: \u201dKey_Shift\u201d,\n Qt.Key_Control: \u201dKey_Control\u201d,\n Qt.Key_Meta: \u201dKey_Meta\u201d,\n # Qt.Key_Alt: \u201dKey_Alt\u201d,\n \n 1179 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_AltGr: \u201dKey_AltGr\u201d,\n Qt.Key_CapsLock: \u201dKey_CapsLock\u201d,\n Qt.Key_NumLock: \u201dKey_NumLock\u201d,\n Qt.Key_ScrollLock: \u201dKey_ScrollLock\u201d,\n Qt.Key_F1: \u201dKey_F1\u201d,\n Qt.Key_F2: \u201dKey_F2\u201d,\n@@ -51549,15 +51549,15 @@\n Qt.Key_Asterisk: \u201dKey_Asterisk\u201d,\n Qt.Key_Plus: \u201dKey_Plus\u201d,\n Qt.Key_Comma: \u201dKey_Comma\u201d,\n Qt.Key_Minus: \u201dKey_Minus\u201d,\n \n 1180 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n Qt.Key_Period: \u201dKey_Period\u201d,\n Qt.Key_Slash: \u201dKey_Slash\u201d,\n Qt.Key_0: \u201dKey_0\u201d,\n Qt.Key_1: \u201dKey_1\u201d,\n Qt.Key_2: \u201dKey_2\u201d,\n Qt.Key_3: \u201dKey_3\u201d,\n@@ -51600,15 +51600,15 @@\n _DETAIL\n Text hidden unless clicked on.\n _PINNAME\n Basename of the HAL pin(s).\n \n 1181 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1182 / 1290\n \n _TYPE\n Specifies whether it is a: Status message - shown in the status bar and the notify dialog.\n Requires no user intervention. OK message - requiring the user to click OK to close the dialog.\n OK messages have two HAL pins:\n@@ -51651,15 +51651,15 @@\n 12.8.10 Notify\n Notify module is used to send messages that are integrated into the desktop.\n It uses the pynotify library.\n Ubuntu/Mint does not follow the standard so you can\u2019t set how long the message stays up for.\n I suggest fixing this with the notify-osd package available from this PPA (DISCONTINUED due to\n move of Ubuntu to Gnome).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1183 / 1290\n \n Notify keeps a list of all the alarm messages since starting in self.alarmpage.\n If you click \u2019Show all messages\u2019 in the notify popup, it will print them to the terminal.\n The ScreenOptions widget can automatically set up the notify system.\n Typically STATUS messages are used to sent notify messages.\n@@ -51692,15 +51692,15 @@\n \u2022 play sounds using the beep library (currently blocks while beeping),\n \u2022 speak words using the espeak library (non blocking while speaking).\n There are default alert sounds using Mint or FreeDesktop default sounds.\n You can play arbitrary sounds or even songs by specifying the path.\n STATUS has messages to control Player module.\n The ScreenOptions widget can automatically set up the audio system.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1184 / 1290\n \n 12.8.12.1 Sounds\n Alerts There are default alerts to choose from:\n \u2022 ERROR\n \u2022 READY\n@@ -51734,15 +51734,15 @@\n 12.8.12.3 Example\n To play sounds upon STATUS messages, use these general syntaxes:\n STATUS.emit(\u2019play-alert\u2019,\u2019LOGOUT\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019BEEP\u2019)\n STATUS.emit(\u2019play-alert\u2019,\u2019SPEAK This is a test screen for Q t V C P\u2019)\n STATUS.emit(\u2019play-sound\u2019, \u2019PATH TO SOUND\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1185 / 1290\n \n 12.8.13 Virtual Keyboard\n This library allows you to use STATUS messages to launch a virtual keyboard.\n It uses Onboard or Matchbox libraries for the keyboard.\n \n@@ -51769,15 +51769,15 @@\n # **** instantiate libraries section **** #\n ###########################################\n TOOLBAR = ToolBarActions()\n \n 12.8.14.4 Examples\n \u2022 Assigning Tool Actions To Toolbar Buttons\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1186 / 1290\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -51818,15 +51818,15 @@\n Some require HAL pins to be connected for movement.\n From a terminal (pick one):\n qtvcp vismach_mill_xyz\n qtvcp vismach_scara\n qtvcp vismach_millturn\n qtvcp vismach_5axis_gantry\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1187 / 1290\n \n 12.8.15.2 Primitives Library\n Provides the basic building blocks of a simulated machine.\n Collection\n A collection is an object of individual machine parts.\n@@ -51866,15 +51866,15 @@\n \n Track\n Move and rotate an object to point from one capture() \u2019d coordinate system to another.\n Base object to hold coordinates for primitive shapes.\n CylinderX, CylinderY, CylinderZ\n Build a cylinder on the X, Y or Z axis by giving endpoint (X, Y, or Z) and radii coordinates.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1188 / 1290\n \n Sphere\n Build a sphere from center and radius coordinates.\n \n TriangleXY, TriangleXZ, TriangleYZ\n@@ -51913,15 +51913,15 @@\n # **** IMPORT SECTION **** #\n ############################\n import mill_xyz as MILL\n \n Instantiate and use the simulation widget Instantiate the simulation widget and add it to the\n screen\u2019s main layout:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1189 / 1290\n \n ##########################################\n # Special Functions called from QtVCP\n ##########################################\n # At this point:\n@@ -51940,30 +51940,30 @@\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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1190 / 1290\n \n Figure 12.107: QtVismach 3D Viewport\n The Vismach 3D viewport view can be manipulated as follows:\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 A Vismach model takes the form of a Python script and can use standard Python syntax.\n This means that there is more than one way to lay out the script, but in the examples given in this\n document the simplest and most basic of them will be used.\n The basic sequence in creating the Vismach model is:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1191 / 1290\n \n 1. Create the parts\n 2. Define how they move\n 3. Assemble into movement groups\n \n@@ -52032,15 +52032,15 @@\n |\n |---tool\n |\n |---tooltip\n |\n |---(tool cylinder function)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1192 / 1290\n \n As you can see, the lowest parts must exist first before those can be grouped with others into an\n assembly. So you build upwards from lowest point in tree and assemble them together.\n The same is applicable for any design of machine: look at the machine arm example and you will see\n that it starts with the tip and adds to the larger part of the arm, then it finally groups with the base.\n@@ -52077,15 +52077,15 @@\n part = AsciiOBJ(data=\u201dv 0.123 0.234 0.345 1.0 ...\u201d)\n \n \u2022 STL model parts are added to the Vismach space in the same locations as they were created in the\n STL or OBJ space, i.e. ideally with a rotational point at their origin.\n \n It is much easier to move while building if the origin of the model is at a rotational pivot point.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1193 / 1290\n \n 12.9.5.2 Build from Geometric Primitives\n Alternatively parts can be created inside the model script from a range of shape primitives.\n Many shapes are created at the origin and need to be moved to the required location after creation.\n \n@@ -52120,15 +52120,15 @@\n 12.9.6.1 Translating Model parts\n part1 = Translate([part1], x, y, z)\n Move part1 the specified distances in x, y and z.\n 12.9.6.2 Rotating Model Parts\n part1 = Rotate([part1], theta, x, y, z)\n Rotate the part by angle theta [degrees] about an axis between the origin and x, y, z.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1194 / 1290\n \n 12.9.7 Animating Parts\n To animate the model controlled by the values of HAL pins there are four functions: HalTranslate,\n HalRotate, HalToolCylinder and HalToolTriangle.\n For parts to move inside an assembly they need to have their HAL motions defined before being\n@@ -52167,15 +52167,15 @@\n Defines the axis of rotation from the origin the point of coordinates (x,y,z).\n When the part is moved back away from the origin to its correct location, the axis of rotation\n can be considered to remain \u201dembedded\u201d in the part.\n angle_scale\n Rotation angles are in degrees, so for a rotary joint with a 0-1 scaling you would need to use\n an angle scale of 360.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1195 / 1290\n \n 12.9.7.3 HalToolCylinder\n \n tool = HalToolCylinder()\n Make a cylinder to represent a cylindrical mill tool, based on the tool table and current loaded\n@@ -52206,15 +52206,15 @@\n \u2022 Move the head to the spindle or spindle to the head.\n \u2022 Create the draw bar.\n \u2022 Define the motion of the draw bar.\n \u2022 Assemble the three parts into a head assembly.\n \u2022 Define the motion of the head assembly.\n In this example the spindle rotation is indicated by rotation of a set of drive dogs:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1196 / 1290\n \n #Drive dogs\n dogs = Box(-6,-3,94,6,3,100)\n dogs = Color([1,1,1,1],[dogs])\n dogs = HalRotate([dogs],c,\u201dspindle\u201d,360,0,0,1)\n@@ -52256,15 +52256,15 @@\n For example [1,0,0,0.5] for a 50% opacity red.\n myhud = Hud()\n Creates a heads-up display in the Vismach GUI to display items such as axis positions, titles, or\n messages.\n myhud = Hud()\n myhud.show(\u201dMill_XYZ\u201d)\u2018\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1197 / 1290\n \n myhud = HalHud()\n A more advanced version of the Hud that allows HAL pins to be displayed:\n myhud = HalHud()\n myhud.set_background_color(0,.1,.2,0)\n@@ -52306,15 +52306,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52357,15 +52357,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 1198 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1199 / 1290\n \n 12.9.12 Builtin Vismach Sample Panels\n QtVCP builtin Vismach Panels\n \n 12.10 QtVCP: Building Custom Widgets\n@@ -52393,15 +52393,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1200 / 1290\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@@ -52454,15 +52454,15 @@\n #\n \n 2\n \n y\n 3y\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1201 / 1290\n \n In this case we need access to:\n y\n \n PyQt\u2019s QtWidgets library,\n@@ -52534,15 +52534,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n from qtvcp.core import Status\n ###########################################\n # **** instantiate libraries section **** #\n ###########################################\n STATUS = Status()\n ##########################################\n@@ -52592,15 +52592,15 @@\n def reset_is_on(self):\n self.is_on = False\n #######################################\n # Qt Designer properties\n \n 1202 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1203 / 1290\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@@ -52670,15 +52670,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -52739,15 +52739,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1205 / 1290\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@@ -52794,15 +52794,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1206 / 1290\n \n #######################################\n # Qt Designer properties\n #######################################\n invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, \u2190reset_invert_state)\n@@ -52842,15 +52842,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1207 / 1290\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@@ -52893,15 +52893,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1208 / 1290\n \n ##############################\n # required class boiler code #\n ##############################\n def __getitem__(self, item):\n@@ -52948,15 +52948,15 @@\n HomeLabel[homed=true] {\n color: green;\n }\n HomeLabel[homed=false] {\n color: red;\n }\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53001,15 +53001,15 @@\n return Lcnc_GridLayout(parent)\n def name(self):\n return \u201dLcnc_GridLayout\u201d\n def group(self):\n \n 1209 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53058,15 +53058,15 @@\n def domXml(self):\n return \u2019<widget class=\u201dSystemToolButton\u201d name=\u201dsystemtoolbutton\u201d />\\n\u2019\n def includeFile(self):\n return \u201dqtvcp.widgets.system_tool_button\u201d\n \n 1210 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1211 / 1290\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@@ -53112,15 +53112,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -53161,15 +53161,15 @@\n self.setWindowTitle(self.tr(\u201dSet Options\u201d))\n def updateWidget(self):\n formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget)\n if formWindow:\n \n 1212 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1213 / 1290\n \n formWindow.cursor().setProperty(\u201destop_action\u201d,\n QtCore.QVariant(self.c_estop.isChecked()))\n self.accept()\n class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension):\n@@ -53208,15 +53208,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1214 / 1290\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@@ -53251,15 +53251,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1215 / 1290\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@@ -53303,15 +53303,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1216 / 1290\n \n This catches all general messages so it must check the dialog type and id code to confirm it\u2019s our\n dialog. In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we\n know the message is for us. ENTRY or CALCULATOR dialogs return a float number.\n \n@@ -53346,15 +53346,15 @@\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 \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-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1217 / 1290\n \n Instantiate ToolBarActions module in the INSTANTIATE LIBRARY SECTION\n TOOLBAR = ToolBarActions()\n \n Configure submenus and actions in the SPECIAL FUNCTIONS SECTION Under the def initialized_\n@@ -53401,15 +53401,15 @@\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 self.w.filemanager.load()\n elif tab == self.w.tab_mdi:\n self.w.mditouchy.run_command()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1218 / 1290\n \n This function assumes there is a Tab widget, named mainTab, that has tabs with the names tab_auto,\n tab_graphics, tab_filemanager and tab_mdi.\n In this way the cycle start button works differently depending on what tab is shown.\n This is simplified - checking state and error trapping might be helpful.\n@@ -53448,15 +53448,15 @@\n \u2022 Call it btn_toggle_continuous.\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 See Using Qt Designer To Add Slots section for more information.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1219 / 1290\n \n Then add this code snippets to the handler file under the initialized__ function:\n # at this point:\n # the widgets are instantiated.\n # the HAL pins are built but HAL is not set ready\n@@ -53501,15 +53501,15 @@\n We can \u201dclass patch\u201d the library to redirect the function call. In the IMPORT SECTION add:\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 2. Redirect the class to call our custom function (2) in the handler file instead.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1220 / 1290\n \n ##########################################\n # Special Functions called from QtVCP\n #\n ##########################################\n@@ -53555,15 +53555,15 @@\n #####################\n # GENERAL FUNCTIONS #\n #####################\n def our_load(self,fname):\n print(fname)\n self.w.filemanager.super__load(fname)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1221 / 1290\n \n 12.11.11 Adding Widgets Programmatically\n In some situation it is only possible to add widgets with Python code rather then using the Qt\n Designer editor.\n When adding QtVCP widgets programmatically, sometimes there are extra steps to be taken.\n@@ -53605,15 +53605,15 @@\n def __init__(self,halcomp,widgets,paths):\n self.hal = halcomp\n self.w = widgets\n self.PATHS = paths\n STATUS.connect(\u2019actual-spindle-speed-changed\u2019, \\\n lambda w,speed: self.update_spindle(speed))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1222 / 1290\n \n Add the widgets to the tab We need to make sure the Qt Designer widgets are already built before\n we try to add to them. For this, we add a call to self.make_corner_widgets() function to build our\n extra widgets at the right time, i.e. under the initialized__() function:\n ##########################################\n@@ -53718,15 +53718,15 @@\n 4\n \n This sets it as green when on.\n This is the extra function call required with some QtVCP widgets.\n If HAL_NAME is omitted it will use the widget\u2019s objectName if there is one.\n It gives the special widgets reference to:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1223 / 1290\n \n self.HAL_GCOMP\n the HAL component instance\n self.HAL_NAME\n This widget\u2019s name as a string\n@@ -53819,15 +53819,15 @@\n 12.11.12 Update/Read Objects Periodically\n Sometimes you need to update a widget or read a value regularly that isn\u2019t covered by normal\n libraries.\n Here we update an LED based on a watched HAL pin every 100 ms.\n We assume there is an LED named led in the Qt Designer UI file.\n Load the Qhal library for access to QtVCP\u2019s HAL component In the IMPORT SECTION add:\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1224 / 1290\n \n from qtvcp.core import Qhal\n \n Instantiate Qhal In the INSTANTIATE LIBRARY SECTION add:\n QHAL = Qhal()\n@@ -53869,15 +53869,15 @@\n ########################\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 # directly select ZMQ message receiving\n self.w.screen_options.setProperty(\u2019use_receive_zmq_option\u2019,True)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1225 / 1290\n \n This allows an external program to call functions in the handler file.\n Add a function to be called on ZMQ message reception Let\u2019s add a specific function for testing.\n You will need to run LinuxCNC from a terminal to see the printed text.\n #####################\n@@ -53936,15 +53936,15 @@\n \n 1\n \n You will need to know the signature of the function you wish to call. Also note that the message is\n converted to a JSON object. This is because ZMQ sends byte messages not Python objects. json\n converts Python objects to bytes and will be converted back when received.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1226 / 1290\n \n 12.11.13.2 ZMQ Messages Writing\n You may also want to communicate with an external program from the screen.\n In the ScreenOptions widget, you can select the property use_send_zmq_message. You can also set\n this property directly in the handler file, as in this sample.\n@@ -53988,15 +53988,15 @@\n topic, message = sock.recv_multipart()\n print(\u2019{} sent message:{}\u2019.format(topic,json.loads(message)))\n \n 12.11.14 Sending Messages To Status Bar Or Desktop Notify Dialogs\n There are several ways to report information to the user.\n A status bar is used for short information to show the user.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1227 / 1290\n \n Not all screens have a status bar.\n \n Status bar usage example\n self.w.statusbar.showMessage(message, timeout * 1000)\n@@ -54036,15 +54036,15 @@\n #####################\n # general functions #\n #####################\n def focusInChanged(self, widget):\n if isinstance(widget.parent(),type(self.w.gcode_editor.editor)):\n print(\u2019G-code Editor\u2019)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1228 / 1290\n \n elif isinstance(widget,type(self.w.gcodegraphics)):\n print(\u2019G-code Display\u2019)\n elif isinstance(widget.parent(),type(self.w.mdihistory) ):\n print(\u2019MDI History\u2019)\n@@ -54087,15 +54087,15 @@\n # if the -o option has \u2019camnumber=\u2019 in it, assume it\u2019s the camera number \u2190to use\n elif \u2019camnumber=\u2019 in self.w.USEROPTIONS_[num]:\n try:\n number = int(self.w.USEROPTIONS_[num].strip(\u2019camnumber=\u2019))\n except Exception as e:\n #\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1229 / 1290\n \n print(\u2019Error with cam_align camera selection - not a number - using \u21900\u2019)\n # set the camera number either as default or if -o option changed the \u2019number\u2019\n variable, to that number.\n self.w.camview._camNum = number\n@@ -54127,15 +54127,15 @@\n \u2022 the .ui file,\n \u2022 the handler file, and\n \u2022 possibly the .qss theme file.\n \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 \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1230 / 1290\n \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@@ -54169,15 +54169,15 @@\n CONFIGPATH\n Path of the launched configuration\n BASEDIR\n General path, used to derive all paths\n BASENAME\n Generic name used to derive all paths\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1231 / 1290\n \n LIBDIR\n Path of QtVCP\u2019s Python library\n HANDLER\n Path of handler file\n@@ -54213,15 +54213,15 @@\n \n Keybinding is always a difficult-to-get-right-in-all-cases affair.\n \n Custom keybinding functions are to be defined in the handler file.\n Most importantly widgets that require regular key input and not jogging, should be checked for in the\n processed_key_event__ function.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1232 / 1290\n \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@@ -54252,15 +54252,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1233 / 1290\n \n Chapter 13\n \n User Interface Programming\n 13.1 Panelui\n@@ -54287,15 +54287,15 @@\n A typical HAL file will have these commands added:\n # commands needed for panelui loading\n #\n # sampler is needed for panelui\n # cfg= must always be u for panelui. depth sets the available buffer\n loadrt sampler cfg=u depth=1025\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1234 / 1290\n \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@@ -54337,15 +54337,15 @@\n HAL Prefix\n [HAL_PREFIX]\n NAME= Yourname\n \n This allows one to change the prefix of the HAL pins from panelui to an arbitrary name.\n ZMQ Messaging Setup\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1235 / 1290\n \n [ZMQ_SETUP]\n TOPIC = \u2019QTVCP\u2019\n SOCKET = \u2019tcp://127.0.0.1:5690\u2019\n ENABLE = True\n@@ -54398,15 +54398,15 @@\n STATUS_PIN = True\n TRUE_STATE = 20\n TRUE_COMMAND = NONE, NONE\n FALSE_COMMAND = NONE, NONE\n FALSE_STATE = 0\n DEFAULT = false\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1236 / 1290\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@@ -54451,15 +54451,15 @@\n There are a number of internal commands you may use.\n home_selected\n \u2022 required argument: axis number (int)\n unhome_selected\n \u2022 required argument: axis number (int)\n spindle_forward_adjust\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1237 / 1290\n \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@@ -54486,15 +54486,15 @@\n \u2022 required arguments: axis number (int), direction (int), distance (float)\n quill_up\n \u2022 optional arguments: machine Z axis absolute position (float)\n \u2022 Description: Move Z axis to the given machine position\n feed_hold\n \u2022 required argument: state (bool 0 or 1)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n feed_override\n \u2022 required argument: rate (float)\n rapid_override\n \u2022 required argument: rate (float 0-1)\n spindle_override\n \u2022 required argument: rate (float)\n@@ -54515,15 +54515,15 @@\n \u2022 Description: records the current mode, calls commands and then returns to mode.\n mdi\n \u2022 required argument: G-code command(s)\n \u2022 Description: sets mode to MDI, calls commands.\n \n 1238 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1239 / 1290\n \n 13.1.5 ZMQ Messages\n Panelui can send ZMQ based messages on button presses.\n In this way panelui can interact will other programs such as QtVCP screens.\n [TOGGLE_BUTTONS]\n@@ -54564,15 +54564,15 @@\n # linuxcnc_stat: is the python status instance of LinuxCNC\n # linuxcnc_cmd: is the python command instance of LinuxCNC\n # commands: is the command instance so one can call the internal routines\n # master: give access to the master functions/data\n def __init__(self, linuxcnc_stat, linuxcnc_cmd, commands, master):\n self.parent = commands\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1240 / 1290\n \n self.current_mode = 0\n # command functions are expected to have this layout:\n # def some_name(self, widget_instance, arguments from widget):\n # widget_instance gives access to the calling widget\u2019s function/data\n@@ -54616,15 +54616,15 @@\n and monitor results by observing the LinuxCNC status structure, as well as the error reporting channel.\n Programmatic access to NML is through a C++ API; however, the most important parts of the NML\n interface to LinuxCNC are also available to Python programs through the linuxcnc module.\n Beyond the NML interface to the command, status and error channels, the linuxcnc module also\n contains:\n \u2022 support for reading values from INI files\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1241 / 1290\n \n 13.2.2 Usage Patterns for the LinuxCNC NML interface\n The general pattern for linuxcnc usage is roughly like this:\n \u2022 import the linuxcnc module\n \u2022 establish connections to the command, status and error NML channels as needed\n@@ -54661,15 +54661,15 @@\n acceleration\n (returns float) - default acceleration, reflects the INI entry [TRAJ]DEFAULT_ACCELERATION.\n active_queue\n (returns integer) - number of motions blending.\n actual_position\n (returns tuple of floats) - current trajectory position, (x y z a b c u v w) in machine units.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1242 / 1290\n \n adaptive_feed_enabled\n (returns boolean) - status of adaptive feedrate override (0/1).\n ain\n (returns tuple of floats) - current value of the analog input pins.\n@@ -54710,15 +54710,15 @@\n dtg\n (returns tuple of floats) - remaining distance of current move for each axis, as reported by trajectory planner.\n echo_serial_number\n (returns integer) - The serial number of the last completed command sent by a UI to task. All\n commands carry a serial number. Once the command has been executed, its serial number is\n reflected in echo_serial_number.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1243 / 1290\n \n enabled\n (returns boolean) - trajectory planner enabled flag.\n estop\n (returns integer) - Returns either STATE_ESTOP or not.\n@@ -54761,15 +54761,15 @@\n (returns boolean) - machine-in-position flag.\n input_timeout\n (returns boolean) - flag for M66 timer in progress.\n interp_state\n (returns integer) - current state of RS274NGC interpreter. One of INTERP_IDLE, INTERP_READING,\n INTERP_PAUSED, INTERP_WAITING.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1244 / 1290\n \n interpreter_errcode\n (returns integer) - current RS274NGC interpreter return code. One of INTERP_OK, INTERP_EXIT,\n INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. see\n src/emc/nml_intf/interp_return.hh\n@@ -54813,15 +54813,15 @@\n \n One of TRAJ_MODE_COORD,\n \n motion_type\n (returns integer) - The type of the currently executing motion. One of:\n \u2022 MOTION_TYPE_TRAVERSE\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1245 / 1290\n \n \u2022 MOTION_TYPE_FEED\n \u2022 MOTION_TYPE_ARC\n \u2022 MOTION_TYPE_TOOLCHANGE\n \u2022 MOTION_TYPE_PROBING\n@@ -54862,15 +54862,15 @@\n settings\n (returns tuple of floats) - current interpreter settings. settings[0] = sequence number, settings[1]\n = feed rate, settings[2] = speed, settings[3] = G64 P blend tolerance, settings[4] = G64 Q naive\n CAM tolerance.\n spindle\n \u2019 (returns tuple of dicts) \u2019 - returns the current spindle status, see The spindle dictionary\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1246 / 1290\n \n spindles\n (returns integer) - number of spindles. Reflects [TRAJ]SPINDLES INI value.\n state\n (returns integer) - current command execution status. One of RCS_DONE, RCS_EXEC, RCS_ERROR.\n@@ -54911,15 +54911,15 @@\n max_position_limit\n (returns float) - maximum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MAX_LIMIT.\n min_position_limit\n (returns float) - minimum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n velocity\n (returns float) - current velocity.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1247 / 1290\n \n 13.2.3.3 The joint dictionary\n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n s = linuxcnc.stat()\n@@ -54957,15 +54957,15 @@\n max_soft_limit\n non-zero means max_position_limit was exceeded, int\n min_ferror\n (returns float) - configuration parameter, reflects [JOINT_n]MIN_FERROR.\n min_hard_limit\n (returns integer) - non-zero means min hard limit exceeded.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1248 / 1290\n \n min_position_limit\n (returns float) - minimum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MIN_LIMIT.\n min_soft_limit\n (returns integer) - non-zero means min_position_limit was exceeded.\n@@ -54998,15 +54998,15 @@\n override\n (returns float) - spindle speed override scale.\n override_enabled\n (returns boolean) - value of the spindle override enabled flag.\n speed\n (returns float) - spindle speed value, rpm, > 0: clockwise, < 0: counterclockwise.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1249 / 1290\n \n 13.2.4 Preparing to send commands\n \n Some commands can always be sent, regardless of mode and state; for instance, the linuxcnc.command.abor\n method can always be called.\n@@ -55043,15 +55043,15 @@\n c.auto(linuxcnc.AUTO_RESUME)\n c.brake(linuxcnc.BRAKE_ENGAGE)\n c.brake(linuxcnc.BRAKE_RELEASE)\n c.flood(linuxcnc.FLOOD_ON)\n c.flood(linuxcnc.FLOOD_OFF)\n c.home(2)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n c.jog(linuxcnc.JOG_STOP,\n c.jog(linuxcnc.JOG_CONTINUOUS,\n c.jog(linuxcnc.JOG_INCREMENT,\n \n 1250 / 1290\n \n@@ -55093,15 +55093,15 @@\n error_msg(string)\n sends a operator error message to the screen. (max 254 characters)\n feedrate(float)\n set the feedrate override, 1.0 = 100%.\n flood(int)\n turn on/off flooding.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1251 / 1290\n \n Syntax\n flood(command)\n flood(linuxcnc.FLOOD_ON)\n flood(linuxcnc.FLOOD_OFF)\n@@ -55146,15 +55146,15 @@\n mist(linuxcnc.MIST_OFF)\n Constants\n MIST_ON\n MIST_OFF\n mode(int)\n set mode (MODE_MDI, MODE_MANUAL, MODE_AUTO).\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1252 / 1290\n \n override_limits()\n set the override axis limits flag.\n program_open(string)\n open an NGC file.\n@@ -55190,15 +55190,15 @@\n \u2022 Wait_for_speed: if 1 motion will wait for speed before continuing, defaults to not.\n \n MDI commands will ignore this. \u201dS1000\u201d after this will turn the spindle off.\n \n text_msg(string)\n sends a operator text message to the screen. (max 254 characters)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1253 / 1290\n \n #!/usr/bin/env python3\n import linuxcnc\n c = linuxcnc.command()\n # Increase speed of spindle 0 by 100rpm. Spindle must be on first.\n@@ -55237,15 +55237,15 @@\n 13.2.6 Reading the error channel\n To handle error messages, connect to the error channel and periodically poll() it.\n Note that the NML channel for error messages has a queue (other than the command and status\n channels), which means that the first consumer of an error message deletes that message from the\n queue; whether your another error message consumer (e.g. Axis) will see the message is dependent\n on timing. It is recommended to have just one error channel reader task in a setup.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n #!/usr/bin/env python3\n # -*- coding: utf-8 -*import linuxcnc\n e = linuxcnc.error_channel()\n error = e.poll()\n if error:\n kind, text = error\n@@ -55283,15 +55283,15 @@\n import linuxcnc\n stat = linuxcnc.stat()\n stat.poll()\n inifile = linuxcnc.ini(stat.ini_filename)\n \n 1254 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1255 / 1290\n \n # See example above for usage of \u2019inifile\u2019 object\n \n 13.2.8 The linuxcnc.positionlogger type\n Some usage hints can be gleaned from src/emc/usr_intf/gremlin/gremlin.py.\n@@ -55320,15 +55320,15 @@\n #!/usr/bin/env python3\n import hal, time\n h = hal.component(\u201dpassthrough\u201d)\n h.newpin(\u201din\u201d, hal.HAL_FLOAT, hal.HAL_IN)\n h.newpin(\u201dout\u201d, hal.HAL_FLOAT, hal.HAL_OUT)\n h.ready()\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1256 / 1290\n \n 13.3.2 Functions\n component\n +\n The component itself is created by a call to the constructor hal.component. The arguments are\n@@ -55365,15 +55365,15 @@\n set_msg_level\n Set the current Realtime msg level. used for debugging information.\n connect\n Connect a pin to a signal.\n Example\n hal.connect(\u201dpinname\u201d,\u201dsignal_name\u201d)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n disconnect\n Disconnect a pin from a signal.\n Example\n hal.disconnect(\u201dpinname\u201d)\n \n get_value\n@@ -55410,15 +55410,15 @@\n \n pin_has_writer\n Does the specified pin have a driving pin connected.\n Returns True or False.\n \n 1257 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n h.in.pin_has_writer()\n \n get_name\n Get the HAL object name.\n Return a string.\n h.in.get_name()\n@@ -55455,15 +55455,15 @@\n set_p\n Set a pin value of any pin in the HAL system.\n Example\n hal.set_p(\u201dpinname\u201d,\u201d10\u201d)\n \n 1258 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1259 / 1290\n \n 13.4 GStat Python Module\n 13.4.1 Intro\n GStat is a Python class used to send messages from LinuxCNC to other Python programs. It uses\n GObject to deliver messages, making it easy to listen for specific information. This is referred to\n@@ -55499,15 +55499,15 @@\n import hal\n from hal_glib import GStat\n GSTAT = GStat()\n # callback to change HAL pin state\n def mode_changed(obj, data):\n h[\u2019g20\u2019] = not data\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1260 / 1290\n \n h[\u2019g21\u2019] = data\n # Make a component and pins\n h = hal.component(\u201dmetric_status\u201d)\n h.newpin(\u201dg20\u201d, hal.HAL_BIT, hal.HAL_OUT)\n@@ -55546,15 +55546,15 @@\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 def update_estate_label(self,text):\n self.builder.get_object(\u2019e_state_label\u2019).set_label(\u201dE State: %s\u201d % (text))\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1261 / 1290\n \n def update_interp_label(self,text):\n self.builder.get_object(\u2019interp_state_label\u2019).set_label(\u201dInterpreter State: %s\u201d % ( \u2190text))\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,builder,useropts)]\n@@ -55587,15 +55587,15 @@\n def get_handlers(halcomp,builder,useropts):\n return [HandlerClass(halcomp,widgets,paths)]\n \n 13.4.3 Messages\n periodic\n (returns nothing) - sent every 100 ms.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1262 / 1290\n \n state-estop\n (returns nothing) - Sent when LinuxCNC is goes into estop.\n state-estop-reset\n (returns nothing) - Sent when LinuxCNC comes out of estop.\n@@ -55633,15 +55633,15 @@\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 interp-waiting\n (returns nothing) - Sent when LinuxCNC\u2019s interpreter is waiting.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1263 / 1290\n \n jograte-changed\n (returns float) - Sent when jog rate has changed.\n LinuxCNC does not have an internal jog rate.\n This is GStat\u2019s internal jog rate.\n@@ -55685,15 +55685,15 @@\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 current-feed-rate\n (returns float) - Sent when the current feed rate changes.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1264 / 1290\n \n current-x-rel-position\n (returns float) - Sent every 100 ms.\n current-position\n (returns pyobject, pyobject, pyobject, pyobject) - Sent every 100 ms.\n@@ -55737,15 +55737,15 @@\n radius-mode\n (returns bool) - Sent when G8 status changes\n display X in radius mode\n diameter-mode\n (returns bool) - Sent when G7 status changes\n display X in Diameter mode\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1265 / 1290\n \n flood-changed\n (returns bool) - Sent when flood coolant state changes.\n mist-changed\n (returns bool ) - Sent when mist coolant state changes.\n@@ -55786,15 +55786,15 @@\n \u2022 y (string): Y extents (bounds) 1\n \u2022 y_zero_rxy (string): Y extents without rotation around z (bounds) 1\n \u2022 z (string): Z extents (bounds) 1\n \u2022 z_zero_rxy (string): Z extents without rotation around z (bounds) 1\n \u2022 machine_unit_sys (string): Machine units (Metric or Imperial)\n \u2022 gcode_units (string): Units in G-code file (mm or in)\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1. See the images\n better understanding.\n \n 1266 / 1290\n \n and\n@@ -55840,15 +55840,15 @@\n (returns integer) - intended to be sent when requesting a DRO widget to change its reference.\n 0 = machine, 1 = relative, 3 = distance-to-go\n This depends on the widget/libraries used.\n show-preferences\n (returns None) - intended to be sent when requesting the screen preferences to be displayed.\n This depends on the widget/libraries used.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1267 / 1290\n \n shutdown\n (returns None) - intended to be sent when requesting LinuxCNC to shutdown.\n This depends on the widget/libraries used.\n error\n@@ -55888,15 +55888,15 @@\n (Nothing) - x = GSTAT.get_jograte() would return GSTAT\u2019s current internal jograte (float).\n set_jograte_angular\n (float) get_jograte_angular\n (None) set_jog_increment_angular\n (float, string) get_jog_increment_angular\n (None) -\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1268 / 1290\n \n set_jog_increments\n (float, string) get_jog_increments\n (None) is_all_homed\n (nothing) - This will return the current state of all_homed (BOOL).\n@@ -55932,15 +55932,15 @@\n \u2022 false if mode is 0\n \u2022 false if machine is busy\n \u2022 true if LinuxCNC is in the requested mode\n \u2022 None if possible to change, but not in requested mode\n get_current_mode\n (nothing) - returns integer: the current LinuxCNC mode.\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1269 / 1290\n \n set_selected_joint\n (integer) - records the selected joint number internally.\n requests the joint to be selected by emitting the\n joint-selection-changed message.\n@@ -55969,30 +55969,30 @@\n state-tags branch.\n \n 13.5 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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1270 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1271 / 1290\n \n \u2022 Define how they move.\n \u2022 Assemble into movement groups.\n \n 13.5.1 Start the script\n@@ -56032,15 +56032,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1272 / 1290\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@@ -56078,15 +56078,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1273 / 1290\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@@ -56127,15 +56127,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1274 / 1290\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@@ -56176,15 +56176,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\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@@ -56195,23 +56195,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 1275 / 1290\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1276 / 1290\n \n Part III\n \n Glossary, Copyright & History\n \n-\fLinuxCNC V2.9.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1277 / 1290\n \n Chapter 14\n \n Overleaf\n \n@@ -56231,15 +56231,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1278 / 1290\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@@ -56273,15 +56273,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1279 / 1290\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@@ -56326,15 +56326,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1280 / 1290\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@@ -56377,15 +56377,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1281 / 1290\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -56429,15 +56429,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1282 / 1290\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -56479,28 +56479,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1283 / 1290\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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1284 / 1290\n \n Chapter 16\n \n Copyright\n 16.1 Legal Section\n@@ -56528,15 +56528,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1285 / 1290\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@@ -56585,15 +56585,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1286 / 1290\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@@ -56639,15 +56639,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1287 / 1290\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@@ -56688,15 +56688,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1288 / 1290\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@@ -56724,15 +56724,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1289 / 1290\n \n Chapter 17\n \n LinuxCNC History\n 17.1 Origin\n@@ -56764,15 +56764,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.3, 25 Jan 2025\n+\fLinuxCNC V2.9.3, 26 Jan 2025\n \n 1290 / 1290\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Getting Started V2.9.3, 25 Jan 2025'\n+Title: 'Getting Started V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Getting Started V2.9.3, 25 Jan 2025\n+Getting Started V2.9.3, 26 Jan 2025\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 About LinuxCNC\n \n 1\n@@ -115,15 +115,15 @@\n \n 9\n \n 3.2.3 Command line - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iii\n \n 3.2.4 Command line - MacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 9\n \n@@ -267,15 +267,15 @@\n 7.2 GNU Free Documentation License\n \n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 30\n 30\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n iv\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@@ -293,15 +293,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 1 / 34\n \n Chapter 1\n \n About LinuxCNC\n 1.1 The Software\n@@ -328,15 +328,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 2 / 34\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@@ -369,15 +369,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 3 / 34\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@@ -387,15 +387,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 4 / 34\n \n Chapter 2\n \n System Requirements\n 2.1 Minimum Requirements\n@@ -420,15 +420,15 @@\n for details on the Live CD you\u2019re using. Older hardware may benefit from selecting an older version\n of the Live CD when available.\n If you plan not to rely on the distribution of readily executable programs (\u201dbinaries\u201d) but aim at contributing to the source tree of LinuxCNC, then there is a good chance you want a second computer to\n perform the compilation. Even though LinuxCNC and your developments could likely be executed at\n the same time with respect to disk space, RAM and even CPU speed, a machine that is busy will have\n worse latencies, so you are unlikely to compile your source tree and produce chips at the same time.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 5 / 34\n \n 2.2 Kernel and Version requirements\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@@ -466,24 +466,24 @@\n compile from source to do this.\n \n 2.3 Problematic Hardware\n 2.3.1 Laptops\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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 6 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 7 / 34\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@@ -510,15 +510,15 @@\n This section describes some methods for downloading the Live/Install image.\n \n 3.1.1 Normal Download\n Software for LinuxCNC to download is presented on the project\u2019s Downloads page. Most users\n will aim for the disk image for Intel/AMD PCs, the URL will resemble https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso.\n For the Raspberry Pi, multiple images are provided to address differences between the RPi4 and RPi5.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 8 / 34\n \n Do not use the regular Raspbian distribution for LinuxCNC that may have shipped with your RPi starter\n kit - that will not have the real-time kernel and you cannot migrate from Raspbian to Debian\u2019s kernel\n image.\n \n@@ -555,15 +555,15 @@\n but there are alternatives. More information can be found at: How To MD5SUM\n \n 3.2 Write the image to a bootable device\n The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB\n storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a\n CD.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 9 / 34\n \n 3.2.1 Raspberry Pi Image\n The Raspbery Pi image is a completes SD card image and should be written to an SD card with the\n [Raspberry Pi Imager App](https://www.raspberrypi.com/software/).\n \n@@ -598,15 +598,15 @@\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 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 10 / 34\n \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@@ -637,15 +637,15 @@\n At the time of writing the Live Image is only available with the preempt-rt kernel and a matching\n LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental\n version available using the RTAI realtime kernel which will often give better latency.\n \n 3.4 Installing LinuxCNC\n To install LinuxCNC from the Live CD select Install (Graphical) at bootup.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 11 / 34\n \n 3.5 Updates to LinuxCNC\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@@ -727,15 +727,15 @@\n \n Preempt-RT kernels The Preempt-rt kernels are available for Debian from the regular debian.org\n archive. The package is called linux-image-rt-*. Simply install the package in the same way as any\n other package from the Synaptic Package manager or with apt-get at the command-line.\n RTAI Kernels The RTAI kernels are available for download from the linuxcnc.org debian archive. The\n apt source is:\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 12 / 34\n \n \u2022 Debian Bookworm: deb http://linuxcnc.org bookworm base\n \u2022 Debian Bullseye: deb http://linuxcnc.org bullseye base\n \u2022 Debian Buster: deb http://linuxcnc.org buster base\n LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving\n@@ -769,15 +769,15 @@\n this document.\n 4. Add the LinuxCNC Archive Signing Key to your apt keyring by downloading [the LinuxCNC installer script](https://www.linuxcnc.org/linuxcnc-install.sh) You will need to make the script executable to run it:\n chmod +x linuxcnc-install.sh\n \n Then you can run the installer:\n sudo ./linuxcnc-install.sh\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 13 / 34\n \n 3.7.2 Installing on Debian Bookworm (with experimental RTAI kernel)\n 1. This kernel and LinuxCNC version can be installed on top of the Live DVD install, or alternatively\n on a fresh Install of Debian Bookworm 64-bit as described above.\n 2. You can add the LinuxCNC Archive signing key and repository information by downloading and\n@@ -792,15 +792,15 @@\n Reboot the machine, ensuring that the system boots from the new 5.4.258-rtai kernel.\n \n 3.7.3 Installing on Raspbian 12\n Don\u2019t do that. The latencies are too bad with the default kernel and the PREEMPT_RT (the RT is\n important) kernel of Debian does not boot on the Pi (as of 1/2024). Please refer to the images provided\n online. You can create them yourself following the scripts provided online.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 14 / 34\n \n Chapter 4\n \n Running LinuxCNC\n 4.1 Invoking LinuxCNC\n@@ -827,15 +827,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 craftsman - Touch Screen GUI (no longer maintained ???)\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 15 / 34\n \n \u2022 gmoccapy - Touch Screen GUI\n \u2022 gscreen - Touch Screen GUI\n \u2022 pyvcp_demo - Python Virtual Control Panel\n \u2022 qtaxis - Touch Screen GUI, axis lookalike\n@@ -866,15 +866,15 @@\n \u2022 tormach\n A complete system may be required to use these configurations.\n The apps items are typically either:\n 1. utilities that don\u2019t require starting linuxcnc\n 2. demonstrations of applications that can be used with linuxcnc\n \u2022 info - creates a file with system information that may be useful for problem diagnosis.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 16 / 34\n \n \u2022 gladevcp - Example GladeVCP applications.\n \u2022 halrun - Starts halrun in an terminal.\n \u2022 latency - Applications to investigate latency\n \u2013 latency-histogram-1 - histogram for single servo thread\n@@ -891,15 +891,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 17 / 34\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@@ -926,15 +926,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 18 / 34\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@@ -966,15 +966,15 @@\n \n You should be running on Debian Buster, Bullseye or Bookworm or Ubuntu 20.04 \u201dFocal Fossa\u201d or\n newer. LinuxCNC 2.9.y will not run on older distributions than these.\n You will also need to check which realtime kernel is being used:\n uname -r\n 6.1.0-10-rt-amd64\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 19 / 34\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. RTAI packages are available for Bookworm and Buster but not currently for Bullseye.\n@@ -1011,29 +1011,29 @@\n Repository\n deb https://linuxcnc.org buster base 2.9-uspace\n deb https://linuxcnc.org buster base 2.9-rt\n deb https://linuxcnc.org bullseye base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-uspace\n deb https://linuxcnc.org bookworm base 2.9-rt\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 20 / 34\n \n Figure 5.1: Figure with a screenshot of the repository configuration of the synaptic package manager.\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 Now your computer knows where to get the new version of the software, next we need to install it.\n The process again differs depending on your platform.\n 5.1.2.1 Debian Buster, Bullseye and Bookworm\n Debian uses the Synaptic Package Manager.\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 21 / 34\n \n \u2022 Open Synaptic using the instructions in Setting apt sources above.\n \u2022 Click the Reload button.\n \u2022 Use the Search function to search for linuxcnc.\n \u2022 The package is called \u201dlinuxcnc\u201d for RTAI kernels and \u201dlinuxcnc-uspace\u201d for preempt-rt.\n@@ -1070,15 +1070,15 @@\n sudo dpkg -i linuxcnc_2.9.2.deb\n \n 5.3 Updating Configuration Files for 2.9\n 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 \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 22 / 34\n \n A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting.\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 Since 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@@ -1114,25 +1114,25 @@\n qtplasmac-setup sim-torch svd-ps_vfd\n \n 5.5.2 Realtime\n \n anglejog div2 enum filter_kalman flipflop hal_parport homecomp limit_axis mesa_uart millturn scaled_s32_su\n tof ton\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 23 / 34\n \n 5.6 New Drivers\n A framework for controlling ModBus devices using the serial ports on many Mesa cards has been\n introduced. http://linuxcnc.org/docs/2.9/html/drivers/mesa_modbus.html\n \n A new GPIO driver for any GPIO which is supported by the gpiod library is now included: http://linuxcnc.org/docs/2.9/html/drivers/hal_gpio.html\n \n-\fGetting Started V2.9.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 24 / 34\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@@ -1166,15 +1166,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 25 / 34\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@@ -1219,15 +1219,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 26 / 34\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@@ -1270,15 +1270,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 27 / 34\n \n kernel-space\n Code running inside the kernel, as opposed to code running in userspace. Some realtime systems (like RTAI) run realtime code in the kernel and non-realtime code in userspace, while other\n realtime systems (like Preempt-RT) run both realtime and non-realtime code in userspace.\n Kinematics\n@@ -1322,15 +1322,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 28 / 34\n \n Real-time\n Software that is intended to meet very strict timing deadlines. On Linux, in order to meet these\n requirements it is necessary to install a realtime kernel such as RTAI or Preempt-RT, and build\n the LinuxCNC software to run in the special real-time environment. Realtime software can run\n@@ -1372,28 +1372,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 29 / 34\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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 30 / 34\n \n Chapter 7\n \n Legal Section\n Translations of this file provided in the source tree are not legally binding.\n@@ -1420,15 +1420,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 31 / 34\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@@ -1477,15 +1477,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 32 / 34\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@@ -1531,15 +1531,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 33 / 34\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@@ -1580,15 +1580,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.3, 25 Jan 2025\n+\fGetting Started V2.9.3, 26 Jan 2025\n \n 34 / 34\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"}]}, {"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:20250126081318Z'\n Creator: 'DBLaTeX-0.3.12'\n Producer: 'xdvipdfmx (20240305)'\n-Title: 'Integrator Information V2.9.3, 25 Jan 2025'\n+Title: 'Integrator Information V2.9.3, 26 Jan 2025'\n"}, {"source1": "pdftotext {} -", "source2": "pdftotext {} -", "unified_diff": "@@ -1,10 +1,10 @@\n-Integrator Information V2.9.3, 25 Jan 2025\n+Integrator Information V2.9.3, 26 Jan 2025\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n ii\n \n Contents\n 1 Stepper Information\n \n 1\n@@ -125,15 +125,15 @@\n \n 18\n \n 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n \n 18\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 1 / 18\n \n Chapter 1\n \n Stepper Information\n 1.1 Stepper Motor Operation\n@@ -152,15 +152,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -179,15 +179,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -232,15 +232,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -378,15 +378,15 @@\n support/motorcontrolmanuals/stepperdrives/g201rev16.html\n \n 1000\n \n Falling\n Edge\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 7 / 18\n \n Gecko\n@@ -479,15 +479,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 8 / 18\n \n Gecko\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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n 9 / 18\n \n *Motion\n@@ -858,15 +858,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n www.cncdrive.com\n Dugong\n \n Step\n@@ -1105,15 +1105,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n Manufacturer\n Model\n \n Step\n Time\n 1500\n@@ -1292,15 +1292,15 @@\n 5000\n \n Rising\n Edge\n \n http://cnc4you.co.uk/resources/CW5045.pdf\n \n-\fIntegrator Information V2.9.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\n \n 12 / 18\n \n Chapter 3\n \n Best Wiring Practices\n 3.1 Electrical Noise\n@@ -1329,15 +1329,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1378,15 +1378,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1424,15 +1424,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1472,15 +1472,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1515,15 +1515,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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@@ -1557,15 +1557,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.3, 25 Jan 2025\n+\fIntegrator Information V2.9.3, 26 Jan 2025\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.3-2_amd64.deb", "source2": "linuxcnc-uspace_2.9.3-2_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 2025-01-26 08:13:18.000000 debian-binary\n--rw-r--r-- 0 0 0 111796 2025-01-26 08:13:18.000000 control.tar.xz\n--rw-r--r-- 0 0 0 25459464 2025-01-26 08:13:18.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 111776 2025-01-26 08:13:18.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 25458196 2025-01-26 08:13: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": "@@ -4531,174 +4531,174 @@\n -rw-r--r-- 0 root (0) root (0) 1014 2025-01-26 08:13:18.000000 ./usr/share/man/man1/xhc-hb04-accels.1.gz\n -rw-r--r-- 0 root (0) root (0) 3950 2025-01-26 08:13:18.000000 ./usr/share/man/man1/xhc-hb04.1.gz\n -rw-r--r-- 0 root (0) root (0) 8219 2025-01-26 08:13:18.000000 ./usr/share/man/man1/xhc-whb04b-6.1.gz\n -rw-r--r-- 0 root (0) root (0) 1069 2025-01-26 08:13:18.000000 ./usr/share/man/man1/xyzac-trt-gui.1.gz\n -rw-r--r-- 0 root (0) root (0) 1069 2025-01-26 08:13:18.000000 ./usr/share/man/man1/xyzbc-trt-gui.1.gz\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/man/man9/\n -rw-r--r-- 0 root (0) root (0) 504 2025-01-26 08:13:18.000000 ./usr/share/man/man9/abs.9.gz\n--rw-r--r-- 0 root (0) root (0) 495 2025-01-26 08:13:18.000000 ./usr/share/man/man9/abs_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 505 2025-01-26 08:13:18.000000 ./usr/share/man/man9/and2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 494 2025-01-26 08:13:18.000000 ./usr/share/man/man9/abs_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 506 2025-01-26 08:13:18.000000 ./usr/share/man/man9/and2.9.gz\n -rw-r--r-- 0 root (0) root (0) 1396 2025-01-26 08:13:18.000000 ./usr/share/man/man9/anglejog.9.gz\n -rw-r--r-- 0 root (0) root (0) 195 2025-01-26 08:13:18.000000 ./usr/share/man/man9/at_pid.9.gz\n--rw-r--r-- 0 root (0) root (0) 790 2025-01-26 08:13:18.000000 ./usr/share/man/man9/axistest.9.gz\n+-rw-r--r-- 0 root (0) root (0) 789 2025-01-26 08:13:18.000000 ./usr/share/man/man9/axistest.9.gz\n -rw-r--r-- 0 root (0) root (0) 421 2025-01-26 08:13:18.000000 ./usr/share/man/man9/bin2gray.9.gz\n -rw-r--r-- 0 root (0) root (0) 987 2025-01-26 08:13:18.000000 ./usr/share/man/man9/biquad.9.gz\n -rw-r--r-- 0 root (0) root (0) 549 2025-01-26 08:13:18.000000 ./usr/share/man/man9/bitslice.9.gz\n -rw-r--r-- 0 root (0) root (0) 471 2025-01-26 08:13:18.000000 ./usr/share/man/man9/bitwise.9.gz\n--rw-r--r-- 0 root (0) root (0) 5540 2025-01-26 08:13:18.000000 ./usr/share/man/man9/bldc.9.gz\n+-rw-r--r-- 0 root (0) root (0) 5539 2025-01-26 08:13:18.000000 ./usr/share/man/man9/bldc.9.gz\n -rw-r--r-- 0 root (0) root (0) 584 2025-01-26 08:13:18.000000 ./usr/share/man/man9/blend.9.gz\n -rw-r--r-- 0 root (0) root (0) 3633 2025-01-26 08:13:18.000000 ./usr/share/man/man9/carousel.9.gz\n--rw-r--r-- 0 root (0) root (0) 754 2025-01-26 08:13:18.000000 ./usr/share/man/man9/charge_pump.9.gz\n--rw-r--r-- 0 root (0) root (0) 796 2025-01-26 08:13:18.000000 ./usr/share/man/man9/clarke2.9.gz\n--rw-r--r-- 0 root (0) root (0) 700 2025-01-26 08:13:18.000000 ./usr/share/man/man9/clarke3.9.gz\n+-rw-r--r-- 0 root (0) root (0) 755 2025-01-26 08:13:18.000000 ./usr/share/man/man9/charge_pump.9.gz\n+-rw-r--r-- 0 root (0) root (0) 795 2025-01-26 08:13:18.000000 ./usr/share/man/man9/clarke2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 699 2025-01-26 08:13:18.000000 ./usr/share/man/man9/clarke3.9.gz\n -rw-r--r-- 0 root (0) root (0) 640 2025-01-26 08:13:18.000000 ./usr/share/man/man9/clarkeinv.9.gz\n -rw-r--r-- 0 root (0) root (0) 1209 2025-01-26 08:13:18.000000 ./usr/share/man/man9/classicladder.9.gz\n -rw-r--r-- 0 root (0) root (0) 723 2025-01-26 08:13:18.000000 ./usr/share/man/man9/comp.9.gz\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-26 08:13:18.000000 ./usr/share/man/man9/constant.9.gz\n--rw-r--r-- 0 root (0) root (0) 443 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 442 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz\n -rw-r--r-- 0 root (0) root (0) 411 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_bit_s32.9.gz\n -rw-r--r-- 0 root (0) root (0) 411 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_bit_u32.9.gz\n--rw-r--r-- 0 root (0) root (0) 538 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 538 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_float_u32.9.gz\n--rw-r--r-- 0 root (0) root (0) 508 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz\n--rw-r--r-- 0 root (0) root (0) 442 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 512 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 537 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 537 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_float_u32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 507 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz\n+-rw-r--r-- 0 root (0) root (0) 441 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz\n+-rw-r--r-- 0 root (0) root (0) 511 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz\n -rw-r--r-- 0 root (0) root (0) 508 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_u32_bit.9.gz\n -rw-r--r-- 0 root (0) root (0) 442 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_u32_float.9.gz\n--rw-r--r-- 0 root (0) root (0) 512 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz\n--rw-r--r-- 0 root (0) root (0) 1041 2025-01-26 08:13:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz\n+-rw-r--r-- 0 root (0) root (0) 511 2025-01-26 08:13:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1042 2025-01-26 08:13:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz\n -rw-r--r-- 0 root (0) root (0) 1025 2025-01-26 08:13:18.000000 ./usr/share/man/man9/counter.9.gz\n--rw-r--r-- 0 root (0) root (0) 464 2025-01-26 08:13:18.000000 ./usr/share/man/man9/dbounce.9.gz\n+-rw-r--r-- 0 root (0) root (0) 463 2025-01-26 08:13:18.000000 ./usr/share/man/man9/dbounce.9.gz\n -rw-r--r-- 0 root (0) root (0) 614 2025-01-26 08:13:18.000000 ./usr/share/man/man9/ddt.9.gz\n -rw-r--r-- 0 root (0) root (0) 514 2025-01-26 08:13:18.000000 ./usr/share/man/man9/deadzone.9.gz\n -rw-r--r-- 0 root (0) root (0) 821 2025-01-26 08:13:18.000000 ./usr/share/man/man9/debounce.9.gz\n -rw-r--r-- 0 root (0) root (0) 826 2025-01-26 08:13:18.000000 ./usr/share/man/man9/demux.9.gz\n -rw-r--r-- 0 root (0) root (0) 535 2025-01-26 08:13:18.000000 ./usr/share/man/man9/differential.9.gz\n -rw-r--r-- 0 root (0) root (0) 618 2025-01-26 08:13:18.000000 ./usr/share/man/man9/div2.9.gz\n -rw-r--r-- 0 root (0) root (0) 633 2025-01-26 08:13:18.000000 ./usr/share/man/man9/edge.9.gz\n -rw-r--r-- 0 root (0) root (0) 2502 2025-01-26 08:13:18.000000 ./usr/share/man/man9/encoder.9.gz\n -rw-r--r-- 0 root (0) root (0) 1213 2025-01-26 08:13:18.000000 ./usr/share/man/man9/encoder_ratio.9.gz\n -rw-r--r-- 0 root (0) root (0) 1806 2025-01-26 08:13:18.000000 ./usr/share/man/man9/enum.9.gz\n--rw-r--r-- 0 root (0) root (0) 1779 2025-01-26 08:13:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1778 2025-01-26 08:13:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz\n -rw-r--r-- 0 root (0) root (0) 972 2025-01-26 08:13:18.000000 ./usr/share/man/man9/estop_latch.9.gz\n -rw-r--r-- 0 root (0) root (0) 537 2025-01-26 08:13:18.000000 ./usr/share/man/man9/feedcomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 1289 2025-01-26 08:13:18.000000 ./usr/share/man/man9/filter_kalman.9.gz\n -rw-r--r-- 0 root (0) root (0) 465 2025-01-26 08:13:18.000000 ./usr/share/man/man9/flipflop.9.gz\n--rw-r--r-- 0 root (0) root (0) 1190 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gantry.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1189 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gantry.9.gz\n -rw-r--r-- 0 root (0) root (0) 281 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gantrykins.9.gz\n -rw-r--r-- 0 root (0) root (0) 809 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gearchange.9.gz\n -rw-r--r-- 0 root (0) root (0) 169 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gentrivkins.9.gz\n -rw-r--r-- 0 root (0) root (0) 695 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gladevcp.9.gz\n--rw-r--r-- 0 root (0) root (0) 432 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gray2bin.9.gz\n+-rw-r--r-- 0 root (0) root (0) 431 2025-01-26 08:13:18.000000 ./usr/share/man/man9/gray2bin.9.gz\n -rw-r--r-- 0 root (0) root (0) 845 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hal_bb_gpio.9.gz\n -rw-r--r-- 0 root (0) root (0) 4046 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hal_parport.9.gz\n--rw-r--r-- 0 root (0) root (0) 1015 2025-01-26 08:13:18.000000 ./usr/share/man/man9/histobins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1014 2025-01-26 08:13:18.000000 ./usr/share/man/man9/histobins.9.gz\n -rw-r--r-- 0 root (0) root (0) 1619 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_7i43.9.gz\n -rw-r--r-- 0 root (0) root (0) 1370 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_7i90.9.gz\n -rw-r--r-- 0 root (0) root (0) 3831 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_eth.9.gz\n -rw-r--r-- 0 root (0) root (0) 600 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_pci.9.gz\n -rw-r--r-- 0 root (0) root (0) 3760 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_rpspi.9.gz\n -rw-r--r-- 0 root (0) root (0) 1625 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hm2_spi.9.gz\n -rw-r--r-- 0 root (0) root (0) 1184 2025-01-26 08:13:18.000000 ./usr/share/man/man9/homecomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 21331 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hostmot2.9.gz\n -rw-r--r-- 0 root (0) root (0) 448 2025-01-26 08:13:18.000000 ./usr/share/man/man9/hypot.9.gz\n--rw-r--r-- 0 root (0) root (0) 1015 2025-01-26 08:13:18.000000 ./usr/share/man/man9/ilowpass.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1014 2025-01-26 08:13:18.000000 ./usr/share/man/man9/ilowpass.9.gz\n -rw-r--r-- 0 root (0) root (0) 514 2025-01-26 08:13:18.000000 ./usr/share/man/man9/integ.9.gz\n -rw-r--r-- 0 root (0) root (0) 586 2025-01-26 08:13:18.000000 ./usr/share/man/man9/invert.9.gz\n -rw-r--r-- 0 root (0) root (0) 973 2025-01-26 08:13:18.000000 ./usr/share/man/man9/joyhandle.9.gz\n -rw-r--r-- 0 root (0) root (0) 4375 2025-01-26 08:13:18.000000 ./usr/share/man/man9/kins.9.gz\n -rw-r--r-- 0 root (0) root (0) 598 2025-01-26 08:13:18.000000 ./usr/share/man/man9/knob2float.9.gz\n--rw-r--r-- 0 root (0) root (0) 858 2025-01-26 08:13:18.000000 ./usr/share/man/man9/latencybins.9.gz\n+-rw-r--r-- 0 root (0) root (0) 857 2025-01-26 08:13:18.000000 ./usr/share/man/man9/latencybins.9.gz\n -rw-r--r-- 0 root (0) root (0) 3198 2025-01-26 08:13:18.000000 ./usr/share/man/man9/lcd.9.gz\n -rw-r--r-- 0 root (0) root (0) 446 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit1.9.gz\n--rw-r--r-- 0 root (0) root (0) 570 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit2.9.gz\n--rw-r--r-- 0 root (0) root (0) 801 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit3.9.gz\n--rw-r--r-- 0 root (0) root (0) 1270 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit_axis.9.gz\n+-rw-r--r-- 0 root (0) root (0) 569 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit2.9.gz\n+-rw-r--r-- 0 root (0) root (0) 802 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit3.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1271 2025-01-26 08:13:18.000000 ./usr/share/man/man9/limit_axis.9.gz\n -rw-r--r-- 0 root (0) root (0) 1025 2025-01-26 08:13:18.000000 ./usr/share/man/man9/lincurve.9.gz\n -rw-r--r-- 0 root (0) root (0) 808 2025-01-26 08:13:18.000000 ./usr/share/man/man9/lineardeltakins.9.gz\n -rw-r--r-- 0 root (0) root (0) 1211 2025-01-26 08:13:18.000000 ./usr/share/man/man9/logic.9.gz\n -rw-r--r-- 0 root (0) root (0) 883 2025-01-26 08:13:18.000000 ./usr/share/man/man9/lowpass.9.gz\n -rw-r--r-- 0 root (0) root (0) 1720 2025-01-26 08:13:18.000000 ./usr/share/man/man9/lut5.9.gz\n -rw-r--r-- 0 root (0) root (0) 398 2025-01-26 08:13:18.000000 ./usr/share/man/man9/maj3.9.gz\n -rw-r--r-- 0 root (0) root (0) 530 2025-01-26 08:13:18.000000 ./usr/share/man/man9/match8.9.gz\n -rw-r--r-- 0 root (0) root (0) 1760 2025-01-26 08:13:18.000000 ./usr/share/man/man9/matrix_kb.9.gz\n -rw-r--r-- 0 root (0) root (0) 1101 2025-01-26 08:13:18.000000 ./usr/share/man/man9/max31855.9.gz\n -rw-r--r-- 0 root (0) root (0) 945 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mesa_7i65.9.gz\n -rw-r--r-- 0 root (0) root (0) 1056 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mesa_pktgyro_test.9.gz\n -rw-r--r-- 0 root (0) root (0) 1225 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mesa_uart.9.gz\n -rw-r--r-- 0 root (0) root (0) 910 2025-01-26 08:13:18.000000 ./usr/share/man/man9/message.9.gz\n--rw-r--r-- 0 root (0) root (0) 881 2025-01-26 08:13:18.000000 ./usr/share/man/man9/millturn.9.gz\n--rw-r--r-- 0 root (0) root (0) 467 2025-01-26 08:13:18.000000 ./usr/share/man/man9/minmax.9.gz\n+-rw-r--r-- 0 root (0) root (0) 880 2025-01-26 08:13:18.000000 ./usr/share/man/man9/millturn.9.gz\n+-rw-r--r-- 0 root (0) root (0) 468 2025-01-26 08:13:18.000000 ./usr/share/man/man9/minmax.9.gz\n -rw-r--r-- 0 root (0) root (0) 6774 2025-01-26 08:13:18.000000 ./usr/share/man/man9/motion.9.gz\n -rw-r--r-- 0 root (0) root (0) 3122 2025-01-26 08:13:18.000000 ./usr/share/man/man9/moveoff.9.gz\n -rw-r--r-- 0 root (0) root (0) 438 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mult2.9.gz\n -rw-r--r-- 0 root (0) root (0) 1176 2025-01-26 08:13:18.000000 ./usr/share/man/man9/multiclick.9.gz\n--rw-r--r-- 0 root (0) root (0) 703 2025-01-26 08:13:18.000000 ./usr/share/man/man9/multiswitch.9.gz\n+-rw-r--r-- 0 root (0) root (0) 702 2025-01-26 08:13:18.000000 ./usr/share/man/man9/multiswitch.9.gz\n -rw-r--r-- 0 root (0) root (0) 1079 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mux16.9.gz\n -rw-r--r-- 0 root (0) root (0) 488 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mux2.9.gz\n -rw-r--r-- 0 root (0) root (0) 604 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mux4.9.gz\n -rw-r--r-- 0 root (0) root (0) 655 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mux8.9.gz\n -rw-r--r-- 0 root (0) root (0) 1781 2025-01-26 08:13:18.000000 ./usr/share/man/man9/mux_generic.9.gz\n -rw-r--r-- 0 root (0) root (0) 598 2025-01-26 08:13:18.000000 ./usr/share/man/man9/near.9.gz\n -rw-r--r-- 0 root (0) root (0) 393 2025-01-26 08:13:18.000000 ./usr/share/man/man9/not.9.gz\n--rw-r--r-- 0 root (0) root (0) 512 2025-01-26 08:13:18.000000 ./usr/share/man/man9/offset.9.gz\n+-rw-r--r-- 0 root (0) root (0) 511 2025-01-26 08:13:18.000000 ./usr/share/man/man9/offset.9.gz\n -rw-r--r-- 0 root (0) root (0) 1535 2025-01-26 08:13:18.000000 ./usr/share/man/man9/ohmic.9.gz\n -rw-r--r-- 0 root (0) root (0) 787 2025-01-26 08:13:18.000000 ./usr/share/man/man9/oneshot.9.gz\n -rw-r--r-- 0 root (0) root (0) 1142 2025-01-26 08:13:18.000000 ./usr/share/man/man9/opto_ac5.9.gz\n -rw-r--r-- 0 root (0) root (0) 478 2025-01-26 08:13:18.000000 ./usr/share/man/man9/or2.9.gz\n--rw-r--r-- 0 root (0) root (0) 1262 2025-01-26 08:13:18.000000 ./usr/share/man/man9/orient.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1261 2025-01-26 08:13:18.000000 ./usr/share/man/man9/orient.9.gz\n -rw-r--r-- 0 root (0) root (0) 5662 2025-01-26 08:13:18.000000 ./usr/share/man/man9/pid.9.gz\n--rw-r--r-- 0 root (0) root (0) 4359 2025-01-26 08:13:18.000000 ./usr/share/man/man9/plasmac.9.gz\n+-rw-r--r-- 0 root (0) root (0) 4358 2025-01-26 08:13:18.000000 ./usr/share/man/man9/plasmac.9.gz\n -rw-r--r-- 0 root (0) root (0) 1969 2025-01-26 08:13:18.000000 ./usr/share/man/man9/pwmgen.9.gz\n -rw-r--r-- 0 root (0) root (0) 673 2025-01-26 08:13:18.000000 ./usr/share/man/man9/rosekins.9.gz\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sample_hold.9.gz\n -rw-r--r-- 0 root (0) root (0) 1980 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sampler.9.gz\n -rw-r--r-- 0 root (0) root (0) 433 2025-01-26 08:13:18.000000 ./usr/share/man/man9/scale.9.gz\n -rw-r--r-- 0 root (0) root (0) 546 2025-01-26 08:13:18.000000 ./usr/share/man/man9/scaled_s32_sums.9.gz\n -rw-r--r-- 0 root (0) root (0) 561 2025-01-26 08:13:18.000000 ./usr/share/man/man9/select8.9.gz\n -rw-r--r-- 0 root (0) root (0) 940 2025-01-26 08:13:18.000000 ./usr/share/man/man9/serport.9.gz\n -rw-r--r-- 0 root (0) root (0) 1909 2025-01-26 08:13:18.000000 ./usr/share/man/man9/setsserial.9.gz\n -rw-r--r-- 0 root (0) root (0) 1312 2025-01-26 08:13:18.000000 ./usr/share/man/man9/siggen.9.gz\n--rw-r--r-- 0 root (0) root (0) 1276 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1277 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz\n -rw-r--r-- 0 root (0) root (0) 1295 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_encoder.9.gz\n--rw-r--r-- 0 root (0) root (0) 712 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz\n--rw-r--r-- 0 root (0) root (0) 501 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz\n--rw-r--r-- 0 root (0) root (0) 1152 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_parport.9.gz\n+-rw-r--r-- 0 root (0) root (0) 711 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz\n+-rw-r--r-- 0 root (0) root (0) 500 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1153 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_parport.9.gz\n -rw-r--r-- 0 root (0) root (0) 635 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sim_spindle.9.gz\n--rw-r--r-- 0 root (0) root (0) 613 2025-01-26 08:13:18.000000 ./usr/share/man/man9/simple_tp.9.gz\n--rw-r--r-- 0 root (0) root (0) 485 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sphereprobe.9.gz\n+-rw-r--r-- 0 root (0) root (0) 612 2025-01-26 08:13:18.000000 ./usr/share/man/man9/simple_tp.9.gz\n+-rw-r--r-- 0 root (0) root (0) 484 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sphereprobe.9.gz\n -rw-r--r-- 0 root (0) root (0) 1871 2025-01-26 08:13:18.000000 ./usr/share/man/man9/spindle.9.gz\n--rw-r--r-- 0 root (0) root (0) 520 2025-01-26 08:13:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz\n+-rw-r--r-- 0 root (0) root (0) 519 2025-01-26 08:13:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz\n -rw-r--r-- 0 root (0) root (0) 6157 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sserial.9.gz\n -rw-r--r-- 0 root (0) root (0) 3748 2025-01-26 08:13:18.000000 ./usr/share/man/man9/stepgen.9.gz\n -rw-r--r-- 0 root (0) root (0) 806 2025-01-26 08:13:18.000000 ./usr/share/man/man9/steptest.9.gz\n -rw-r--r-- 0 root (0) root (0) 1943 2025-01-26 08:13:18.000000 ./usr/share/man/man9/streamer.9.gz\n -rw-r--r-- 0 root (0) root (0) 515 2025-01-26 08:13:18.000000 ./usr/share/man/man9/sum2.9.gz\n -rw-r--r-- 0 root (0) root (0) 831 2025-01-26 08:13:18.000000 ./usr/share/man/man9/supply.9.gz\n -rw-r--r-- 0 root (0) root (0) 1369 2025-01-26 08:13:18.000000 ./usr/share/man/man9/thc.9.gz\n -rw-r--r-- 0 root (0) root (0) 1281 2025-01-26 08:13:18.000000 ./usr/share/man/man9/thcud.9.gz\n -rw-r--r-- 0 root (0) root (0) 1035 2025-01-26 08:13:18.000000 ./usr/share/man/man9/threads.9.gz\n -rw-r--r-- 0 root (0) root (0) 388 2025-01-26 08:13:18.000000 ./usr/share/man/man9/threadtest.9.gz\n--rw-r--r-- 0 root (0) root (0) 1207 2025-01-26 08:13:18.000000 ./usr/share/man/man9/time.9.gz\n--rw-r--r-- 0 root (0) root (0) 608 2025-01-26 08:13:18.000000 ./usr/share/man/man9/timedelay.9.gz\n--rw-r--r-- 0 root (0) root (0) 805 2025-01-26 08:13:18.000000 ./usr/share/man/man9/timedelta.9.gz\n--rw-r--r-- 0 root (0) root (0) 476 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tof.9.gz\n+-rw-r--r-- 0 root (0) root (0) 1206 2025-01-26 08:13:18.000000 ./usr/share/man/man9/time.9.gz\n+-rw-r--r-- 0 root (0) root (0) 609 2025-01-26 08:13:18.000000 ./usr/share/man/man9/timedelay.9.gz\n+-rw-r--r-- 0 root (0) root (0) 804 2025-01-26 08:13:18.000000 ./usr/share/man/man9/timedelta.9.gz\n+-rw-r--r-- 0 root (0) root (0) 475 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tof.9.gz\n -rw-r--r-- 0 root (0) root (0) 537 2025-01-26 08:13:18.000000 ./usr/share/man/man9/toggle.9.gz\n -rw-r--r-- 0 root (0) root (0) 690 2025-01-26 08:13:18.000000 ./usr/share/man/man9/toggle2nist.9.gz\n -rw-r--r-- 0 root (0) root (0) 474 2025-01-26 08:13:18.000000 ./usr/share/man/man9/ton.9.gz\n -rw-r--r-- 0 root (0) root (0) 494 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tp.9.gz\n -rw-r--r-- 0 root (0) root (0) 912 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tpcomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 479 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tristate_bit.9.gz\n -rw-r--r-- 0 root (0) root (0) 510 2025-01-26 08:13:18.000000 ./usr/share/man/man9/tristate_float.9.gz\n -rw-r--r-- 0 root (0) root (0) 668 2025-01-26 08:13:18.000000 ./usr/share/man/man9/updown.9.gz\n -rw-r--r-- 0 root (0) root (0) 1303 2025-01-26 08:13:18.000000 ./usr/share/man/man9/userkins.9.gz\n -rw-r--r-- 0 root (0) root (0) 967 2025-01-26 08:13:18.000000 ./usr/share/man/man9/watchdog.9.gz\n -rw-r--r-- 0 root (0) root (0) 540 2025-01-26 08:13:18.000000 ./usr/share/man/man9/wcomp.9.gz\n -rw-r--r-- 0 root (0) root (0) 780 2025-01-26 08:13:18.000000 ./usr/share/man/man9/weighted_sum.9.gz\n--rw-r--r-- 0 root (0) root (0) 814 2025-01-26 08:13:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz\n+-rw-r--r-- 0 root (0) root (0) 813 2025-01-26 08:13:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz\n -rw-r--r-- 0 root (0) root (0) 518 2025-01-26 08:13:18.000000 ./usr/share/man/man9/xor2.9.gz\n -rw-r--r-- 0 root (0) root (0) 896 2025-01-26 08:13:18.000000 ./usr/share/man/man9/xyzab_tdr_kins.9.gz\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/metainfo/\n -rw-r--r-- 0 root (0) root (0) 766 2025-01-26 06:36:50.000000 ./usr/share/metainfo/linuxcnc-uspace.metainfo.xml\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/mime/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-26 08:13:18.000000 ./usr/share/mime/packages/\n -rw-r--r-- 0 root (0) root (0) 305 2024-07-06 08:41:36.000000 ./usr/share/mime/packages/linuxcnc-uspace.xml\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 Sun Jan 26 20:27:40 -12 2025\n+# on Mon Mar 2 05:43:00 +14 2026\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 Sun Jan 26 20:27:40 -12 2025\n+# on Mon Mar 2 05:43:00 +14 2026\n #\n \n export LANG=C\n \n GREP=/usr/bin/grep\n PS=/usr/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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH PI500_VFD \"1\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THERMISTOR \"1\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH WJ200_VFD \"1\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ABS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ABS_S32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH AND2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ANGLEJOG \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH AXISTEST \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BIN2GRAY \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BIQUAD \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BITSLICE \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BITWISE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BLDC \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH BLEND \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CAROUSEL \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CHARGE_PUMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKE2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKE3 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CLARKEINV \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH COMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONSTANT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_FLOAT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_S32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_BIT_U32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_FLOAT_S32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_FLOAT_U32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_BIT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_FLOAT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_S32_U32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_BIT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_FLOAT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH CONV_U32_S32 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH COREXY_BY_HAL \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DBOUNCE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DDT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DEADZONE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DEMUX \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DIFFERENTIAL \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH DIV2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH EDGE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH EOFFSET_PER_ANGLE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ESTOP_LATCH \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FEEDCOMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FILTER_KALMAN \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH FLIPFLOP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GANTRY \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GEARCHANGE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH GRAY2BIN \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HISTOBINS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HOMECOMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH HYPOT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ILOWPASS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH INTEG \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH INVERT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH JOYHANDLE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH KNOB2FLOAT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LATENCYBINS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT1 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT3 \"9\" \"2026-03-02\" \"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/limit_axis.9.gz", "source2": "./usr/share/man/man9/limit_axis.9.gz", "unified_diff": null, "details": [{"source1": "limit_axis.9", "source2": "limit_axis.9", "unified_diff": "@@ -2,15 +2,15 @@\n .\\\"*******************************************************************\n .\\\"\n .\\\" This file was extracted from hal/components/limit_axis.comp using halcompile.g.\n .\\\" Modify the source file.\n .\\\"\n .\\\"*******************************************************************\n \n-.TH LIMIT_AXIS \"9\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LIMIT_AXIS \"9\" \"2026-03-02\" \"LinuxCNC Documentation\" \"HAL Component\"\n .SH NAME\n \n limit_axis \\- Dynamic range based axis limits\n .SH SYNOPSIS\n .HP\n .B loadrt limit_axis [count=\\fIN\\fB|names=\\fIname1\\fB[,\\fIname2...\\fB]] [personality=\\fIP1,P2,...\\fB]\n .SH DESCRIPTION\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LINCURVE \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LOGIC \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LOWPASS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH LUT5 \"9\" \"2026-03-02\" \"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,13 +1,13 @@\n .\\\" -*- mode: troff; coding: utf-8 -*-\n .\\\"******************************************************************* .\\\" .\\\"\n This file was extracted from hal/components/lut5.comp using halcompile.g. .\\\"\n Modify the source file. .\\\"\n .\\\"******************************************************************* .TH LUT5\n-\"9\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\" .SH NAME lut5 \\-\n+\"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MAJ3 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MATCH8 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MAX31855 \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_7I65 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_PKTGYRO_TEST \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESA_UART \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MESSAGE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MILLTURN \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MINMAX \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MOVEOFF \"9\" \"2026-03-02\" \"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=\\fIP1,P2,...\\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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULT2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULTICLICK \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MULTISWITCH \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX16 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX4 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH MUX8 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH NEAR \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH NOT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OFFSET \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OHMIC \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ONESHOT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH OR2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH ORIENT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH PLASMAC \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SAMPLE_HOLD \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SCALE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SCALED_S32_SUMS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SELECT8 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SERPORT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_AXIS_HARDWARE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_HOME_SWITCH \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_MATRIX_KB \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_PARPORT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIM_SPINDLE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SIMPLE_TP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPHEREPROBE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPINDLE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SPINDLE_MONITOR \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH STEPTEST \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH SUM2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THC \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THCUD \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH THREADTEST \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIME \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIMEDELAY \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TIMEDELTA \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOF \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOGGLE \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TOGGLE2NIST \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TON \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TPCOMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TRISTATE_BIT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH TRISTATE_FLOAT \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH UPDOWN \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH USERKINS \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH WCOMP \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XHC_HB04_UTIL \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XOR2 \"9\" \"2026-03-02\" \"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\" \"2025-01-26\" \"LinuxCNC Documentation\" \"HAL Component\"\n+.TH XYZAB_TDR_KINS \"9\" \"2026-03-02\" \"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"}]}]}]}]}]}